Re: [PATCH] MPI helper of comparison, Least Leak Intended

Jacob Bachmeyer via Gcrypt-devel <[email protected]>
Newsgroups gmane.comp.encryption.gpg.libgcrypt.devel
Message-ID <[email protected]>
On 2/7/25 20:05, NIIBE Yutaka via Gcrypt-devel wrote:
> NIIBE Yutaka<[email protected]> wrote:
>> I think that this implementation could be improved.
> I should use ct_limb_gen_inv_mask function instead of directly use unary
> minus operator.

Could it make more sense to write:

result &= ct_limb_gen_inv_mask (gt) & ct_limb_gen_inv_mask (lt);
result |= gt | -lt;

Assuming that ct_limb_gen_inv_mask returns all-bits-set if its argument 
is zero and all-bits-clear otherwise, the first line clears result if a 
previous value is to be overwritten and the second sets the new value.

I also still suggest considering an alternate encoding for the 
comparison result.  The Hamming distance between 0 and 1 is 1, but the 
Hamming distance between 0 and -1 is the maximum on a 2's complement 
machine, which means that any information leakage on the power rail will 
be at its strongest when the comparison result is "less than".

A one-hot encoding would have a constant Hamming distance (of 2) between 
any pair of valid values.

I remember reading a paper some years ago by an academic research group 
that was able to recover private keys by observing noise on a laptop's 
ground (a USB port shield connection, if I recall correctly).


-- Jacob

_______________________________________________
Gcrypt-devel mailing list
[email protected]
https://lists.gnupg.org/mailman/listinfo/gcrypt-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.