DHの最小ビット数を指定できるようにする
https://twitter.com/ttdoda/status/603009285451157504
https://twitter.com/ttdoda/status/603357818582732800
DH-GEX では使用するグループのサイズの条件として、クライアントが 最小(min) / 希望(req) / 最大(max) の値を通知する。
サーバはこの要求に合ったグループ(p)を返す。p のサイズとしてはクライアントの要求値の他に、プロトコルとして 1024 <= sizeof(p) <= 8192 という条件もある。
現状ではサーバが返してきた p のサイズが要求した条件に合っているか確認していないが、これをチェックするように変更する。
pのサイズで条件分けを考えると、
の 6 パターンが考えられる。
別案として、min の指定の他に、受け取った p の値が一定値(設定変更可)より小さかったら警告&続行確認をするというのも考えられる。
こちらの方がユーザが動作を制御しやすいか?
DH-GEXの min の指定は r5900で実装済。
サーバから受け取った p が要求と合っているかのチェックについては仕様検討中。
古いサーバではmoduliに含まれるグループが4096(OpenSSH 3.9p1)/6144(OpenSSH 4.7p1)までしか含まれず、また共通暗号方式でAES256-CTRを使うと8192を要求する為、sizeof(p)<reqが普通に起きる。
最終的に、以下のとおりとした。
https://twitter.com/ttdoda/status/603009285451157504
https://twitter.com/ttdoda/status/603357818582732800
DH-GEX では使用するグループのサイズの条件として、クライアントが 最小(min) / 希望(req) / 最大(max) の値を通知する。
サーバはこの要求に合ったグループ(p)を返す。p のサイズとしてはクライアントの要求値の他に、プロトコルとして 1024 <= sizeof(p) <= 8192 という条件もある。
現状ではサーバが返してきた p のサイズが要求した条件に合っているか確認していないが、これをチェックするように変更する。
pのサイズで条件分けを考えると、
の 6 パターンが考えられる。
別案として、min の指定の他に、受け取った p の値が一定値(設定変更可)より小さかったら警告&続行確認をするというのも考えられる。
こちらの方がユーザが動作を制御しやすいか?