[LLVMdev] Adding diversity for security (and testing)
Stephen Crane
sjcrane at uci.edu
Mon Aug 26 22:22:52 PDT 2013
Hi Nick,
On 08/26/2013 02:01 PM, Nick Kledzik wrote:
> How is the "diverse population" of binaries generated and delivered?
> The tradition software development model is to qualify one “golden
> master” which is then duplicated to all customers. -Nick
Yes indeed. Adding diversity at compilation requires that the code
producer create a population of variants. However, by introducing
diversity at compile-time, we have much greater freedom in transforming
the end result with lower performance impact. In addition, producing
variants during distribution allows the distributor to use diversity to
provide a certain amount of watermarking and protection against
client-side tampering (jailbreaking, etc).
We initially forsee that this could be especially used where security
was of the utmost concern. Open-source end users often have the option
of compiling from source, and could create their own diversified
versions, especially for criticial services. We think this would be an
ideal situation to begin adopting diversity for security.
Of course, in the testing use-case, creating various versions is fairly
trivial. These versions could then be compared for testing for
micro-architectural and compiler corner cases, as well as performance.
Finally, for wide-spread adoption, we are currently researching ways to
cache the bulk of the compilation effort and create many variants for
distribution in a cost-effective manner using cloud compilation. In
addition, error reporting can be normalized with knowledge of the secret
random seed by regeneration of the particular binary.
Hope this helps to explain our ideas in more clarity.
- stephen
More information about the llvm-dev
mailing list