codes and their traces T are exactly the same mod-
ulo the encrypted values in them. There are no col-
lisions, certainly not between program constants and
runtime data, as condition (4) maintains, so each com-
piled code C and trace T consists of different values
never repeated internally or between different pairs C ,
T . All codes C are the same length and form and
all traces T are the same length and form (they all
branch the same way at the same points). The method
F applied to different C and T has nothing to cause it
to give different answers except incidental features of
the encrypted values (such as the total number of 7s in
the decimal representations, perhaps) and its own in-
ternal spins of a coin that result in it saying 1 a propor-
tion p of the time, and 0 a proportion 1−p of the time.
Both those are at least statistically independent of the
truth of if the bit is 1 or 0, as the encryption is secure
in the first case and because of causal independence
in the second case, which justifies the calculation (*).
That is semantic security at runtime for object
code from an ‘obfuscating compiler’,
7
following The-
orem 2, modulo the assumption that encryption is se-
cure and conditions (1-4) hold. Has data obfuscation
as defined in Section 1 been obtained? Yes. The flat
distribution of possible data values under the encryp-
tion means no information can be gained from traces.
CONCLUSION
This paper has considered privacy and security of data
on platforms for encrypted computing against the op-
erator or operating system as an adversary, assuming
the encryption is secure in its own right.
Conditions on the processor and machine code ar-
chitecture have been defined such that a compiler may
obfuscate the runtime data under the encryption, pro-
ducing uniformly distributed variations across differ-
ent compilations, at every point in the program. That
eliminates attacks based on the use by a human author
of small numbers in program or data. No unencrypted
data value can then be statistically inferred from code
and trace, making a known plaintext attack on the en-
cryption impossible. That also amounts to semantic
security of an integrated system for encrypted com-
puting consisting of a processor with an instruction
set satisfying the conditions set out, plus an ‘obfuscat-
ing compiler’, modulo the security of the encryption.
7
Haskell source code for a prototype obfuscating C
compiler following our design may be downloaded from
nbd.it.uc3m.es/∼ptb/obfusc comp-0 9a.hs. The compiler
produces generic ‘fused operate and add’ instructions.
ACKNOWLEDGEMENTS
Zhiming Liu wishes to thank the Chinese NSF for
support from research grant 61672435, and South-
west University for research grant SWU116007. Peter
Breuer wishes to thank Hecusys LLC (hecusys.com)
for continued support in KPU development.
REFERENCES
Barak, B., Goldreich, O., Impagliazzo, R., Rudich, S.,
Sahai, A., Vadhan, S., and Yang, K. (2001). On
the (im)possibility of obfuscating programs. In Kil-
ian, J., editor, Proc. 21st Annu. Int. Cryptol. Conf.
(CRYPTO’01), Adv. Cryptol., pages 1–18. Springer.
Breuer, P. T. and Bowen, J. P. (2014). Towards a work-
ing fully homomorphic crypto-processor: Practice and
the secret computer. In J
¨
orjens, J., Pressens, F., and
Bielova, N., editors, Proc. Int. Symp. Eng. Sec. Softw.
Syst. (ESSoS’14), volume 8364 of LNCS, pages 131–
140, Berlin/Heidelberg. Springer.
Breuer, P. T. and Bowen, J. P. (2016). A fully encrypted
microprocessor: The secret computer is nearly here.
Procedia Comp. Sci., 83:1282–1287.
Breuer, P. T., Bowen, J. P., Palomar, E., and Liu, Z. (2016).
A practical encrypted microprocessor. In Callegari,
C., van Sinderen, M., Sarigiannidis, P., Samarati, P.,
Cabello, E., Lorenz, P., and Obaidat, M. S., editors,
Proc. 13th Int. Conf. Sec. Cryptog. (SECRYPT’16),
volume 4, pages 239–250, Portugal. SCITEPRESS.
Conway, J. H. (1987). Fractran: A simple universal pro-
gramming language for arithmetic. In Open Problems
in Commun. & Comput., pages 4–26. Springer.
Daemen, J. and Rijmen, V. (2002). The Design of Rijndael:
AES – The Advanced Encryption Standard. Springer.
Fletcher, C. W., van Dijk, M., and Devadas, S. (2012). A
secure processor architecture for encrypted computa-
tion on untrusted programs. In Proc. 7th Scal. Trust.
Comput. Workshop (STC’12), pages 3–8, NY. ACM.
Hada, S. (2000). Zero-knowledge and code obfuscation. In
Okamoto, T., editor, Proc. 6th Int. Conf. Theor. Appli-
cat. Cryptol. Inform. Sec. (ASIACRYPT’00), number
1976 in LNCS, pages 443–457. Springer.
Ostrovsky, R. and Goldreich, O. (1992). Comprehensive
software protection system. US Pat. 5,123,045.
Paillier, P. (1999). Public-key cryptosystems based on com-
posite degree residuosity classes. In Proc. EURO-
CRYPT’99, Adv. Cryptol., pages 223–238. Springer.
Patterson, D. (1985). Reduced instruction set computers.
Commun. ACM, 28(1):8–21.
Tsoutsos, N. and Maniatakos, M. (2015). The HEROIC
framework: Encrypted computation without shared
keys. IEEE Trans. CAD IC Syst., 34(6):875–888.
van Dijk, M. and Juels, A. (2010). On the impossibility of
cryptography alone for privacy-preserving cloud com-
puting. HotSec, 10:1–8.
Wang, Z. and Lee, R. B. (2006). Covert and side chan-
nels due to processor architecture. In Proc. 2nd Annu.
Comp. Sec. Applic. Conf. (ACSAC’06), pages 473–
482. IEEE.
Zhang, C., Wei, T., Chen, Z., Duan, L., Szekeres, L., McCa-
mant, S., Song, D., and Zou, W. (2013). Practical con-
trol flow integrity and randomization for binary exe-
cutables. In Symp. Sec. Priv., pages 559–573. IEEE.
SECRYPT 2017 - 14th International Conference on Security and Cryptography
254