SSH鍵の暗号化方式を強化してみた。@ayurinaそこはかとない日常を綴るブログです。主にはゲーム、ガジェットレビュー、ドライブ記録です。Linux»SSH鍵の暗号化方式を強化してみた。コンピューターtwitterfacebookhatenabookmarklinessh使ってますか?公開鍵認証使ってますか?クラウドサービスやVPSサービスでリモートログインする際、セキュリティを強化するために使われる公開鍵認証ですが、鍵の作り方(暗号化方式)にいくつか種類があります。この暗号化方式でちょっと困ったことがあったので、セキュリティ強化の意味も込めて、設定を見なおしてみることにしました。SSHでログイン出来ないんです。16.04環境に、sshログインできない。何度も環境作りなおしたんですが、上手く行かず、何が起きているのか分からずに悩むこと数時間。最終的に、公開鍵を作りなおすことで、ログインできるようになりました。何がダメだったかというと、元々使っていた公開鍵がdsa形式だったため。rsaに変更したら、ログインできました。[preauth]なんと。「PubkeyAcceptedKeyTypes」なる設定で引っかかってる。types.これは利用可能なSSH鍵のタイプを制限するもので、dsa(ssh-dss)はデフォルトでは使えなくなったらしい。OpenSSHのバージョンはこちらです。2016セキュリティ強化のため、ssh-dssはデフォルト無効になっているこの変更はどうやらOpenSSHのバージョン7.0辺りから反映されているようです。ssh-dssはセキュリティ的な脆弱性(鍵長が固定で今となっては短い)から無効化されたとのことです。残念なのが、このssh-dss(キータイプdsa)については、ssh2対応のとき、当時セキュリティ強化のために使うようになったという経緯があることです。意外に古くからsshを使っている人ほど、「ssh2ならdsa」と思っていることが多いのではないかと(少なくとも私はそうだった・・・)。dsa」という常套句を使っていたりしました。いう訳で、SSH鍵の暗号化について調べてみようと思いました。合わせて、脱dsaを進めてみようかな、と。typeについてssh-keygenで指定できるキータイプには、rsa1、dsa、ecdsa、ed25519、rsaがあります。v1で使える方式だが、脆弱性があるため奨励されない。v1しか使えない環境で使う。4251に規定されており、接続性が高い。ssh-keygenで作成できる鍵長が1024bit固定なため、あまり強力とは言えなくなっている。rsa・・・現状のデファクト。4251に定義されているわけではないので、接続性に問題がある場合があるかもしれない。ecdsa・・・楕円曲線DSA。楕円曲線暗号は、RSAよりも解読が困難でありbit効率が良くて処理も早いとか。分からないが、なんだか凄いらしい。ポストRSAとして期待されている。ed25519・・・同じく楕円曲線暗号を用いた方式で、ecdsaより処理が速い。いう訳で、正直暗号の細かな話になってしまうと良く分かりませんが、流石に楕円曲線暗号を用いた方式は技術的にも新しくて、安全性も性能も高くて良い感じです。4251の規定があるので、とはいえdsaが有利なようですが、実際rsaやecdsaでも困ることは無いと思います(少なくとも私は困ったことは無いです)。key-pairは何を使うかじゃぁ、DSAを捨てて、rsa、ecdsa、ed25519にしていきましょうか、という話になるわけですが、opensshの場合、これらの鍵ファイルのデフォルトファイル名はすべて別になるようになっていますので、とりあえず全部作っておいて、使えるものの中で一番強いものから、公開鍵を配布していく、という対応が実現可能です。クライアント環境はMac(10.11.5)です。当然ながら、opensshのバージョンによっては、ed25519に対応しない、などの制限があります(CentOSが非対応。だいたいecdsaには対応しているようです)。RSAは鍵長を長いほうがより安全ですのでとりあえず4096bitにしてみます。4096ecdsaについては、bit長として、256bit、384bit、521bitが使えるので、一番長い521bitを使ってみます。521ed25519についてはbit長が指定できそうに見えますが固定長(256bit)です。ed25519これで、~/.ssh以下に以下のファイルができます。id_dsaid_dsa.pubid_ecdsaid_ecdsa.pubid_ed25519id_ed25519.pubid_rsaid_rsa.pubid_dsaは元々あったdsaキー、それ以外が、各々の暗号化方式で作成した鍵です。rsa1のidentityは流石に作ってません。ecdsaでログインしてみる早速ですが、dsa以外の公開鍵をサーバーに設定してログインしてみます。鍵の入れ替え時は、ログイン不可になる事態をさけるため、設定を変更するセッションと、ログインを試すセッションと、2枚準備して作業を行います。やることは暗号化方式にかかわらず、authorized_keysに公開鍵を追記するだけです。当然ながら、サーバーが対応していない暗号化方式は使えませんので、適宜ed25519、ecdsa、rsaの順に使えるものを設定していきます(いや、本当はどれか1つにしたほうが良いのかな、と思いつつ)。現状では多くのサーバーがecdsaまでしか対応しないので、ed25519で実際繋がったのはubuntuのサーバーくらいでしたが、ちゃんとdsa以外の鍵でも繋がることが確認できました。安全になって良かった実際のところ、キータイプを変えたからと言って、何か使用感が変わるようなことは全く無いのですが、やっぱり安全で新しい方式でログインするのは、気持ちの良いものです(苦笑)。何より、これまで何も考えずにdsaを使ってきたのですが、今回の一件で、いろいろ見直すことができて良かったです。古くからsshを使っている人ほど、これ、意外にハマってるじゃないかなぁ、と思います。hnwの日記やっぱり意識高い人居るのね(笑)。Pro(2015)のケースをAgrado製ケースに変更した俺のブログサーバーがこんなに遅いわけがない4。Cacheのほうが速い・・・MacでVagrantを動かしてみる。食わず嫌いな人に送る、Vagrantで出来ること。Containerか・・・nginxでwordpressをSSLサイト化しようとした話。6で3.10カーネルを使ってみるPHP7でphp-fpmで、APCuのパラメータ見極め継続中。自宅サーバーのHDDが壊れたので交換した話。SSH鍵の暗号化方式を強化してみた。ssh-dssはデフォルト無効になっている目から鱗でした。久しぶりにFreeBSDサーバのバージョンあげて、パスワード認証で繋いだスーパーユーザーから設定いじっては別のターミナルやSFTPで繋がらず。繰り返しを丸二日やってました。今にも切れそうなSSH一本の火を消さないように。DSA、記事拝見して3分で解決しました。ありがとうございました!おかげでようやく接続切ることができました。コメントデータの処理方法の詳細はこちらをご覧ください。Watchを1年使った感想。Watch無しでは生きていけない。WatchもSpigenで固める。ラギッド・アーマーと保護シートを装着。Watchで安いミラネーゼループバンドを買って1ヶ月ほど使ってみた感想。