to look but not to see
play

To look but not to see In this talk I will relate recent successes - PowerPoint PPT Presentation

To look but not to see In this talk I will relate recent successes in compilation for Encrypted Computing to code obfuscation Of importance in Encrypted Computing is a proof ... Adversary has no method to decipher run-time data code


  1. To look but not to see ● In this talk I will relate recent successes – in compilation for Encrypted Computing – to code obfuscation

  2. Of importance in Encrypted Computing is a proof ... Adversary has no method to decipher run-time data code trace x=E[16] 0: if x[<]E [ 15 ] goto 8 x=E[17] 4: x  x[+]E [ 1 ] 8: ...

  3. To adversary (who cannot read the encryption) it looks like … x=E[ █ ] 0: if x[<]E [█] goto 8 x=E[ █ ] 4: x  x[+]E [█] 8: ... Slide 2

  4. Thought experiment … Add 7 to run-time data and adjust program constants code trace x=E[23] 0: if x[<]E [22] goto 8 x=E[24] 4: x  x[+]E [1] 8: ... Slide 3

  5. That looks same as before to adversary x=E[ █ ] 0: if x[<]E [█] goto 8 x=E[ █ ] 4: x  x[+]E [█] 8: ... Unchanged code structure, trace! Slide 4

  6. Deduce ... ● Different data underneath, but codes and traces look the same to adversary ● The method for deciphering data must give different answer from same observations ● So adversary's method cannot exist. QED

  7. Further examination of proof ... 1. Shows runtime data offset “+7” can be varied – per each instruction input, output, per instruction – per memory location, per instruction – Independently, with uniform flat distribution – Then No stochastic decryption attack can be right more than chance (Goldwasser&Micali cryptographic semantic security ) 2. Requires – `Obfuscating’ compiler varies arithmetic instructions ● maximally – Encryption is independently secure

  8. Pause for summary ● Each program can be read many ways by changing mind on what the variables stand for ● There are many ways to write the same program by changing the actual offset of the data at each point ● I can RE-compile each program many ways ● Re-compiler iO is indistinguishability obfuscator

  9. Limited Indistinguishability ● Indistinguishability obfuscator preserves function – fun[iO( C)] = fun[C] ● Possible recompilations C1,C2 of one program – There is no way to tell iO(C1) from iO(C2) – Runtime traces have the same structure – Program codes have the same structure – Runtime trace data and program constants differ

  10. Can this be leveraged? ● Indistinguishability obfuscation should camouflage any (within reason) programs with same function ● Not just variations f(x+A)+B of f(x) !

  11. Crazy Idea ● Any finite state transformation – Is representable as a constant vector (f(0),f(1),…) ● To get f(x) just lookup the xth entry – Differs by constant B from any other constant ● Then any two state transformations are the same program with different embedded constant ● iO recompiler equates any such state transforms

  12. What’s wrong with that idea? ● Takes exponentially many operations to find the constant vector that makes any state transform program into a lookup function ● But … There may be classes of programs that take only polynomial time to transform to a common programmatic form, differing only in constants ● Those would be equated by the iO recompiler – E.g. variants of AES encryption

  13. Memory addresses are random, uniformly distributed ● Hardware must support that ● To maintain entropy, address of memory location is changed before every write ● Any obfuscatable class of programs must share same memory access patterns ● W1 W2 R1 R2 R1 W3 … ● Best to rewrite every memory location after read, avoiding read trains RRR

  14. Conclusion 1. Obfuscation must happen at machine code level • Source code obfuscation useless with clever compiler 2. Processor hardware can help with obfuscation • E.g. by internally shuffling registers/offsetting them • Using pseudorandom sequence, seed known to compiler • My own processor helps by working encrypted • Full range random memory addressing requires special support 3. Have prototype obfuscating (re)compiler: HAVOC

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend