ヒント
ヒント 1見る
Aから秘密の指数aを求めれば、s = B^a mod p で共有鍵がわかります。これは離散対数問題です
ヒント 2見る
aを順に試す総当たりは最大2^36回かかり、Pythonでは終わりません
ヒント 3見る
ベビーステップ・ジャイアントステップ法を使います。m = ceil(sqrt(p)) として g^j を辞書に入れ、A×(g^-m)^i が辞書にあるかを調べます
Cryptanalysis - Diffie-Hellman with a Small Prime
古いIoT機器が36ビットしかない素数pでDiffie-Hellman鍵共有をしていました。handshake.txtには p, g, A = g^a mod p, B = g^b mod p と、共有鍵から作った鍵ストリームで暗号化された設定データがあります。離散対数を解いて共有鍵を求め、設定データに含まれるフラグを取り出してください。鍵ストリームの作り方はREADME.mdにあります。
Aから秘密の指数aを求めれば、s = B^a mod p で共有鍵がわかります。これは離散対数問題です
aを順に試す総当たりは最大2^36回かかり、Pythonでは終わりません
ベビーステップ・ジャイアントステップ法を使います。m = ceil(sqrt(p)) として g^j を辞書に入れ、A×(g^-m)^i が辞書にあるかを調べます