A large number of SCA papers that talk about ECDSA mention the need for blinding/randomisation of the signing process, typically with a single-sentence comment about replacing the projective coordinates (X,Y,Z) with randomised ones (lambda^2X,lambda^3Y,lambda*Z) and declaring the problem solved, but nothing really seems to provide any detail of what specific steps are required. In particular looking at the implementation in various crypto libraries like mbedTLS, BearSSL, FLECC and similar they all seem to do it differently and in each case it's very deeply tied into the internal bignum representation and implementation. Given the portion of the ECDSA process that this affects:

$$\mathtt{(x,y) = k * G}$$ $$\mathtt{r = x\mod n}$$ $$\mathtt{s = k^{-1} (h+dr\mod n)}$$

is there some explanation of what operations to perform to randomize the process against SCA in a manner that's not dependent on the internal details of a particular bignum library implementation?



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.