A system for securely performing elliptic curve scalar multiplication, the system comprising an unsecure processor, a memory device and an secure processor separate from the unsecure processor,
- the secure processor including secure memory, the secure processor configured to:
- split a secure scalar K into m2 random values ki, where i is an integer index;
- randomly select m1 -m2 values ki , for the indices m2<i≤m1;
- select ml mask values δi;
- compute m1 residues ci based upon random residues ai, δπ(i)−1, and kπ(i), wherein π(i) is a random permutation;
- compute m1 elliptic curve points Gi based upon random residues ai and an elliptic point to be multiplied;
- and
- the unsecure processor in communication with the memory device, wherein the unsecure processor receives the computationally intensive computations for the elliptic curve scalar multiplication to boost the system's computation performance, the unsecure processor being configured to:
- receive, from the secure processor, the m1 residues ci and elliptic curve points Gi;
- compute mielliptic curve points Pi based upon the m1 residues ci and elliptic curve points Gi;
- and
- send the m1elliptic curve points Pi to the secure processor, wherein the secure processor, receives the m1, elliptic curve points and computes the elliptic curve scalar multiplication by combining a portion of the received elliptic curve points and by removing the mask values δi from the portion of the received elliptic curve points.