Cryptography is the science of secrecy. It corresponds to the techniques ensuring that information can be exchanged securely, even in the presence of an adversary capable of listening to it.
All electronic communications need to be secured, and the amount of data that needs to be encrypted is enormous: from banking credentials to private messages, all this information is secured using sophisticated computer algorithms such as block ciphers and hash functions. We now have reliable algorithms of each of these types, so we can secure communications by ensuring their confidentiality (an eavesdropper cannot obtain any useful information), their integrity (a modification made while the information is transmitted will be detected), and their authentication (we can be sure that the information was produced by the correct person or entity). For example, when logging into a website, cryptographic algorithms are used to process the password (so that it cannot be intercepted), to authenticate the website (so that a hacker cannot impersonate it to steal information), and then to secure the rest of the communication.
However, our ever growing reliance on digital tools demands a new type of security: beyond communications, we now need to secure *computations*. What does "securing a computation" mean? For example, it could mean devising algorithms that can operate on encrypted data in order to perform meaningful operation without decrypting it. This is called *Fully Homomorphic Encryption (FHE)*, and will be used in the future for instance for automated medical diagnosis: an AI model will be evaluated on an encrypted X-ray image and return a diagnosis without decrypting it, meaning that it would be impossible for the service provider to know the content of the X-ray (or indeed the diagnosis). Only the patient would have the cryptographic keys needed to make sense of this data. Similarly, *zero-knowledge protocols* can prove that an online service has performed an agreed upon set of operation on secret data to derive a specific result without revealing either said secret data, or what the result is: they would simply guarantee that the result, which ever it is, is correct.
Unfortunately, a wide-scale deployment of such protocols remains difficult at this stage: they correspond to complex pieces of software that rely on an array of cryptographic sub-blocks (so-called primitives) of different types for their security. These primitives then need to be fast on top of being secure, which turns out to be a bottleneck in practice.
The aim of the ReSCALE project is to investigate some of the primitives needed for such protocols. The aim is then twofold: we need to better understand the security they provide, and how to design them. Of course, the second point depends on the first since new primitives need to be secure. This study is made all the more complicated by a specific consequence of integration with advanced protocols like FHE and zero-knowledge proofs: the mathematical alphabet on which the algorithms operate is different. Primitives used to secure communications are optimized to encrypt bit-strings, i.e. long sequences of 0 and 1. On the other hand, these protocols use elementary operations that are defined over large integers, and their number needs to be minimized. Thus, in order to perform the analysis of these new primitives, we need to build the necessary mathematical tools from scratch. The purpose of ReSCALE is thus to. rescale our tools from the binary size to an arbitrary size, and to use those to ensure the security of a wide array of cryptographic mechanisms.