SSH2暗号化方式のArcfourを格下げする
とりあえずデフォルトでは Arcfour 系は無効とした。
ただし、既にインストール済みの環境では動作は変わらない。
特にユーザ側で設定を変更していない場合は(バージョンによって変わる)推奨設定が使われるような仕組みが欲しい。
INI の CipherOrder の変更があったdiff(過去にデフォルトだった値)を追いかけたので載せておきます。
ありがとございます。
これで思い出したのですが、新しい暗号方式が追加された時に既存の設定が有る場合は追加された暗号方式が無効化された状態になりますよね。
極端に古い設定(AES-CTRサポート前)を使っていると最近のOpenSSHに接続できなくなります。これもなんとかしたいですね。
OpenSSH 7.0 では
blowfish-cbc cast128-cbc hmac-md5
もデフォルトで無効になったようですね。
過去にデフォルト値としてきた設定はデフォルトのまま変えていないと判断し、その場合は値を書き換える。
インストーラで上書きするように、r6034 の変更を入れました。
devel 2637
RFC7465 にてTLSでのRC4が禁止された。
また WikipediaでのRC4の記述でも安全性に問題が見つかっている事が書かれている。
他にも詳細はまだ不明だがRC4の通信を短時間で解読可能な方法が見つかったという情報も有る。 http://www.itmedia.co.jp/enterprise/articles/1507/17/news058.html
デフォルトではArcfour系は無効化する事を検討した方がいいと思われる。
デフォルト値を変えるのは簡単だがアップグレードインストール等で古い設定を使っている場合に変更が反映されないという問題がある。
これは大きく分けると以下の二つの問題に分けられる。
デフォルト値から未変更なのか判断が付かない問題
デフォルト値から変えずに使っている場合は変更を反映したい。 しかしユーザが意識して設定した場合にはそれを尊重したい。 しかし現状ではユーザが意識して設定したかの判断が難しい。
対策案1:
デフォルトの値を(現在の)推奨値そのものにするのではなく、デフォルトであるという事を表す値にする。例えば ""(空文字列) とか。
GexMinimalGroupSizeで試験的に採用した方式。 GexMinimalGroupSizeの正規の範囲は1024~8192だがデフォルトは0とし、値を評価する時に0ならば1024として扱うようにしている。 0の場合に実際に扱う値を変える事によってデフォルト設定のまま変えていない場合は推奨値が使われるようにした(つもり)。
ただしこの方式をCipherOrderにそのまま適用するのは困難かも。
また、既存の設定には影響を与えないのも欠点。これからの新規インストールへの対応となる。
対策案2:
過去にデフォルト値としてきた設定はデフォルトのまま変えていないと判断し、その場合は値を書き換える。
考察は後で。
新しく追加された方式が無効になる問題
設定ファイルから読み込んだ設定に無い方式はリストの最後にまとめて追加される。 追加された方式は結果としてSSH_CIPHER_NONEの後ろに来る為無効化された状態になる。
対策として考えられるのは、読み込んだ設定に無い方式はSSH_CIPHER_NONEの上に入るようにする。 ただしデフォルトで無効化した方式の場合は最後に追加する。