- Category: Crypto
- Score: 500/500
- Solves: 3/247
I rolled my own public-key encryption scheme using Elliptic-curve cryptography, but my friend said there is a critical implementation mistake that compromise the security. Can you find it?
這題在 secp256k1 上用了一個類似 ElGamal 或 IES 的方法對 flag 字元一個一個加密,其中 nonce
的部分是使用 itertools.count(randbelow(secp256k1.q), randbelow(secp256k1.q))
生成的。
顯然 nonce
是一個未知的等差數列,為了方便把它記為
如果要解密的話關鍵在於 s = nonce * pk
那個點,把 pk
記為 P
的話各個加密的 s
會是
利用等差數列的性質可得 s
了。
不過要達成這個的前提是要知道 AIS3{
的這個事實1可以回推前面幾個 s
的 s.x
,再利用 secp256k1 的等式用二次剩餘能算出對應的 s.y
2,也就能知道