In the EdDSA for more curve paper the authors defines:
Keys
An EdDSA secret key is a $b$-bit string $k$. The hash $H(k) = (h_0, h_1, ... , h_{2b−1})$ determines an integer $s = 2^n+\sum_{c≤i<n} 2^ih_i$ , which in turn determines the multiple $A = sB$. The corresponding EdDSA public key is $A$.
Note that $B$ is defined to be a point of order $l$ where the cardinality of the curve is $\#E(p)=2^cl$
Signature
The signature of a message $M$ under key $k$ is created as:
- Define $r = H(h_b, ...., h_{2b-1},M) \in \{0,1,...,2^{2b}-1\}$.
- Define $R = rB$.
- Define $S = (r + H(\underline{R},\underline{A},M)s) \mod l$
Output: $(\underline{R},\underline{S})$ (note that underline is a byte encoding of points or integers which doesn't matter for this question)
Verification
Verification of a signature $(\underline{R},\underline{S})$ of a message $M$ is defined as:
$2^cSB = 2^cR+2^cH(\underline{R},\underline{A},M)A$
Cofactorless Verification
Cofactorless verification of a signature $(\underline{R},\underline{S})$ of a message $M$ is defined as: $SB = R+H(\underline{R},\underline{A},M)A$
They comment that:
Any alleged signature that passes cofactorless verification will also pass verification. The signature of a message will pass cofactorless verification, so it will also pass verification. However, a signer using a secret key outside the above signing procedure can create strings that pass verification without passing cofactorless verification.
I can't really understand the above comment and I have a few questions.
- What does it mean "secret key outside the above signing procedure" ? Does it mean that $s$ is a string without a leading nth-bit set and not multiple of $2^c$ ?
- How does the $2^c$ factor affects the verification compared to cofactorless verification?
- Can you provide me an example/way of generating a secret key "outside the above signing procedure" that generates a signature that pass verification without passing cofactorless verification ?