Skip to content

Possible Bug: Miss constraint #117

@autoDetector

Description

@autoDetector

Vulnerable File: circuits/aes-gcm/ghash_gmul.circom
commit: 65f823fc5606fca74440fb0de939ae07a3c39a80

Wrong reduction condition in Mulx

For the right-shift GHASH algorithm, the reduction by the irreducible polynomial must be conditioned on the LSB of V before the shift, not the MSB. Your Mulx uses mux.s <== blockRightShift.msb, which applies the 0xE1 reduction when the MSB is 1. This yields a different field multiplication than GHASH (x^128 + x^7 + x^2 + x + 1) and will accept invalid values if this is used to verify AES-GCM/GMAC computations.
Fix: drive the selector with the pre-shift LSB of V; i.e., use lsb(V) as the condition when doing a right shift with R = 0xE1 in the most significant byte. Alternatively, switch to the left-shift variant with MSB gating and R = 0x87 at the least-significant byte.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions