SSHの公開鍵を秘密にしておくべき、という主張
SSHの公開鍵認証で使われる鍵ペアのうち、秘密鍵(プライベート鍵)を秘密にしておくのは当然ですが、時々公開鍵も秘密にしておくべきだという主張を見かけます。新機軸を見かけたので検討してみます。
どのような主張か
- 公開鍵を一般に公開してしまうとその鍵を偽サーバに仕掛けることができる
- その偽サーバに接続すると偽サーバだと気づかずにログインできてしまう(公開鍵が登録されていなければ認証に失敗するなりパスワードを求められたりするのでおかしいと気づく)
- ホスト鍵のチェックでは気づかない可能性がある
何がおかしいか
偽サーバにログインさせるのに公開鍵は不要
偽サーバにログインさせることが目的なのであれば、攻撃者にはもっと簡単な方法があります。パスワード無しでのログインを許可してしまえば良いのです。
[foo@host1 ~]$ ssh host2
Last login: Fri Jul 3 16:26:15 2015 from 192.168.1.1
公開鍵認証でパスワードを求められなかったのか、それともパスワードなしでログインしただけなのか、区別を付けることは不可能です
ホスト鍵の検証に気づかないという前提は無意味
クライアントがサーバを検証する方法は、ホスト鍵の検証という仕組みでSSHに最初から備わっています。これが信用できないのであれば、同様に「オレオレ認証」だって信用できません。「オレオレ認証」が信用できるのであればホスト鍵の検証で十分です。
結論
上記の主張は、論理的にも技術的にも成立しません