Replies: 3 comments 2 replies
-
フィードバックありがとうございます。 Re: ssh-rsaの廃止一般的に署名アルゴリズムというのは電子署名アルゴリズム自体だけでなく署名対象データを「要約」するハッシュ・アルゴリズム等を組み合わせた暗号スイートです。アナウンスにあった
でいう署名アルゴリズムはは RSA+SHA1 の組み合わせを指すと思ったのですが(man コマンドで "“ssh-rsa” (SHA1 signatures, not recommended)" とありましたし),実際には同じ "ssh-rsa" 鍵でも OpenSSH のバージョンによって署名時の動作が異なるという解釈でいいのでしょうか。それはそれで問題があるような気がしますが... あぁ,だから「予告」なのかな? ちなみに鍵指紋については全く気にしていませんでしたw CA認証とかで証明書を付けるというのなら気になるところでしょうが,あれはどちらかと言うと X.509 側の話ですし。 Re: SSHでのDSA鍵これは私が迂闊でした。 man コマンドにも
とありました。つまり OpenSSH は FIPS 186-3 以降の DSA には対応してないってことですかね。これは記事の方を訂正します。ご指摘ありがとうございます。 Re: Ed25519とEdDSA私が引っかかったのは鍵種別(key type)の指定が ECDSA では電子署名アルゴリズム名なのに何で EdDSA のほうは 楕円曲線名なんだろうという点でした。どっちかに統一すれば今後の拡張もしやすいだろうに,という感じです。 そういえば,これも man コマンドを見直して気がついたのですが ecdsa-sk だと鍵長の指定が出来ない(無視される)んですね。こういうところが大雑把で分かりにくいなぁ,と思ってしまいますw ちなみに GnuPG は,いつだったかのバージョンで,楕円曲線名表記に統一されました。 |
Beta Was this translation helpful? Give feedback.
-
Re: ssh-rsaの廃止ようやく納得できました。
という表示を見て いろいろとアドバイスをありがとうございます。 OpenSSH に対する理解がちょっと深まりました。勢い余って以下の記事も書いてみたのでご笑覧ください。 |
Beta Was this translation helpful? Give feedback.
-
ssh-copy-id コマンド の利用
と書かれていますが、 ssh-copy-id -i public-key user@hostname |
Beta Was this translation helpful? Give feedback.
-
OpenSSH 鍵をアップグレードする(さようなら SHA-1)に幾つか気になった点が有ったのでその事についての指摘です。
ssh-rsaの廃止
OpenSSH 8.2以降のRelease Notesで予告されているssh-rsaの廃止ですが、これへの対処としてRSA鍵を再生成する必要は有りません。(鍵の生成に使ったバージョンは関係無い)
ssh-rsaという名前は、大雑把に分けると以下の二つで使われています。
廃止(デフォルト設定での無効化)が予告されているのは
とあるように2の署名方式の方です。
1の鍵データの生成にはSHA-1等のハッシュアルゴリズムは使われていないので、廃止の対象では有りません。
この事はssh-rsa(署名方式)の代替方式として先頭に挙げられているrsa-sha2-256/512の説明で
というようにssh-rsaと同じ種類の鍵を使う(つまり同じ鍵データが使える)のが利点としている事からも判ると思います。
この件でユーザが行う必要が有るのは、利用するソフトをrsa-sha2-256/512に対応したバージョン(OpenSSHの場合7.2以降)にバージョンアップするか、対応している他のソフトに乗り換える事ですね。
クライアント、およびサーバの双方がrsa-sha2-256/512に対応していれば自動で検出してこれらを使います。
ただしサーバ側がOpenSSH 7.4の場合はバグで自分がrsa-sha2-256/512に対応していると通知しないので、サーバ側はOpenSSH 7.4を避ける必要が有ります。
(RHEL7/CentOS7付属のOpenSSHは7.4ですが、この問題に対するパッチがあたっているので問題ありません)
鍵生成時のSHA256表示
前述したとおり、鍵データの生成自体ではSHA256等のハッシュアルゴリズムは使われていません。
ssh-keygenで鍵を生成した時にSHA256と表示されるのは、fingerprintの表示でSHA256を使ったという事です。
fingerprintは公開鍵(主にホスト鍵)の同一性を人間が判断しやすくする為にあり、SSH通信自体では使われていません。(通信の中でfingerprintは流れない)
なのでSSH公開鍵認証でSHA-1が使われるかの判別にはこの表示は使えません。
そもそもOpenSSHのfingerprintで使えるアルゴリズムはMD5とSHA256の二つだけでSHA-1は使えません。
SSHでのDSA鍵
SSHではDSA鍵は1024ビットの物のみが正しい鍵です。
例えばOpenSSHのssh-keygenはDSA鍵の鍵長として1024ビットのみを受け付けます。
サーバとクライアントの組み合わせによってはそれ以外の鍵長でも認証が行える事が有りますが、それはたまたま使えているだけで有り、使える事が保証されているわけでは有りません。
なので、問題無い鍵種別と鍵長の組み合わせにはDSA鍵は入れるべきでは無いと思います。
また、最近のOpenSSHではデフォルト設定ではDSA鍵が使えなくなっています。
この面からもDSA鍵を表に入れない方がいいでしょう。
Ed25519とEdDSA
Ed25519は楕円曲線名ではなく、Curve25519(と双有理同値なツイストエドワーズ曲線)を使ったEdDSAの実装と考えた方がいいと思います。少なくともRFC8709ではこの扱いになっています。
楕円曲線暗号ではご存じの通りどの曲線を使うかが重要です。どの曲線を使うかという事が特定出来なければ使えません。
なのでSSHでは使う曲線毎にecdsa-sha2-nistp256/384/521と別の鍵種別/署名方式名が割り当てられています。
EdDSAでもssh-ed25519とssh-ed448というように曲線毎に別の鍵種別/署名方式名が割り当てられています。
なので、ed25519の方がSSH本来の鍵種別名に近いと思います。
個人的にはssh-keygenで鍵種別をecdsaとして鍵長でどの曲線を使うかを指定する方式は、同じ鍵長の他の曲線を指定出来ない(しづらい)という点からあまり良い方法では無いと思っています。
まあRFC5656には256/384/521ビットの他の曲線は含まれていないので杞憂でしか無いのですが。
Beta Was this translation helpful? Give feedback.
All reactions