最も人気のあるSSHクライアントPuTTYの1つがクリアテキストの資格情報をWindowsレジストリに保存していることを知って驚いた。
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\
パスワード、またはsshキーのパスも公開されているため、マルウェアだけでなく、 simple bat ファイルでも簡単に認証情報を盗むことができます。
資格情報を保存するためのより安全なアプローチは何ですか?私はすべて(暗号化など)をリバースエンジニアリングできることを知っていますが、少なくとも、その試みを少し難しくします。そのため、少しだけセキュリティが向上する(何にも比べて)とは言えません。
ポータブルモードでキティに切り替えました(したがって、情報はポータブルディレクトリにのみ保存され、マルウェアがそのフォルダーを直接見つけない限り、パスワードは少し見えます安全です...しかし、マルウェアもHDDをスキャンできるため、どちらもそれほど安全ではありません。ただし、プラグイン可能なUSBにそのディレクトリがある場合でも、PuTTYに比べるとまだ「安全」です。
Sshのコンテキストでは、「資格情報」には2つの意味があります。
クリアテキストパスワードをクリアテキストとして、つまり暗号化なしで登録することは、セキュリティの観点からは少なくとも悪い習慣です。ただし、それらを暗号化する正しくすることは単純に不可能です。PuTTYは、リモートサーバーでの認証時に何らかの方法でそれらにアクセスする必要があります。それを行うには、それを復号化する必要があります。それはどのように行われるかは問題ではありません。同じことが潜在的な攻撃者によって行われる可能性もあります。パスワードの暗号化は obcursityによるセキュリティ となるため、セキュリティはあまり向上しません。
同じ暗号化を使用するか、どういうわけかそれを回避する改良されたsshプロトコルを使用することは明らかに優れていますが、最初のスポットのように、差はそれほど大きくありません。
公開鍵はどこにでも送信でき、秘密は秘密にしておく必要があります。秘密鍵の場合、この場合もパスワードの場合と同じです。誰かが秘密鍵を読み取れる場合は、PuTTYプロセスを操作して、秘密鍵を抽出することもできます。
知っておくべき最も重要なこと:資格情報を取得するには、クライアントマシンへのアクセスが必要です(管理者アカウントまたはユーザーのアカウントとして)。このアクセス権があれば、たとえばキーロガーを使用したり、PuTTYプロセスをバイナリでハッキングしたりすることで、暗号化されたパスワードでも盗聴される可能性があります。
これは、すべてのパスワードまたはキーベースの認証システムに固有のセキュリティ上の弱点です。そのための唯一の解決策は、接続が開始された別のシステムによって、別のチャネルで認証が行われる場合です。 多要素認証 または Kerberos の複数のソリューションがあります。ほとんどのsshソフトウェア(PuTTYおよびopensshサーバーを含む)は2番目をサポートしますが、日常的に使用されることはめったにありません。
日常の習慣は、クライアントマシンへの誰からの物理的なアクセスも許可しないことです。彼らがアクセスできる場合、彼らはあなたのsshキー/パスワードだけではなく、はるかに多くにアクセスできます。
キティにも同じことが言えます。クリアテキストのパスワードまたはキーをレジストリに保持しない場合がありますが、それでも何らかの方法でパスワード/キーにアクセスする必要があります。それがあまり一般的ではない方法で保存されている場合でも、キティがそれらを復号化/アクセスするために行うことは、マルウェアも行うことができます(または変更されたキティバイナリが行うことができます)。したがって、キティはあなたのシステムのセキュリティをほんの少しだけ高めます。しかし、それは誤った安心感を与えるかもしれません。
マシン上で資格情報(秘密鍵、パスワードなど)を隠すために使用する暗号化方法が何であれ、ソフトウェアはその仕事をするために、ある時点でクリアテキストでそれらを必要とします。秘密鍵をパスワードで暗号化することは妥当ですが、パスワードでパスワードを暗号化することは無意味です。元のパスワードを最初から保存しないように、パスワードを入力する必要があります。
コンピュータが特定のパスワードを保存するのに十分に安全でない場合、それは一般にパスワードを入力するのに十分に安全ではありません。コンピューターにファイルアクセスできる人がキーロガーをインストールすることもできます。