SSHの本当の役割
Splyncは、スマートフォンとサーバー間の通信をHTTPSで保護していますが、ユーザーデータの安全を確保するためには、サーバー自体も保護する必要があります。アプリ開発者やシステム管理者は、そのサーバーに安全にアクセスして更新を維持する方法が必要です。そこで登場するのがSSH(セキュアシェル)です。これは、信頼できないネットワークを通じても安全にリモートコンピュータにログインできるプロトコルです。SSHは、ユーザー名やパスワードを平文で送信するTelnetのような古い、非安全な方法に取って代わります。
“鍵”の背後にある考え方
SSHは一般的なパスワードに依存せず、公開鍵と秘密鍵というペアである暗号鍵を使用します。それらを互いにしか合わない鍵と錠前として考えてみてください。公開鍵はサーバーにあり、秘密鍵はユーザーが持っています。接続時に、サーバーは秘密鍵を持っていることを証明するよう要求しますが、鍵自体を見せることはありません。これにより、誰かが盗聴してもなりすますことはほぼ不可能です。従来のパスワードは推測されたり漏洩されたり再利用されたりしますが、SSH鍵は長いランダムな暗号文字列で、推測は実質不可能です。誰かが接続を盗聴したとしても見えるのは暗号化されたノイズだけです。SSH鍵はネットワーク上に送信されることがないため、転送中に盗まれるものは何もありません。
SSHキーの実際の姿
SSHキーを見たことがないと、抽象的に聞こえるかもしれませんが、実際には長いテキストブロックです。公開鍵は通常数百文字で、秘密鍵は1000文字を超えることもあります。両方ともテキストファイルとして保存されますが、中身はランダムなノイズ、つまり文字、数字、記号の組み合わせに見えます。公開鍵はサーバーに錠前をかけるようなもので、安全に共有できます。一方、秘密鍵はあなたのユニークなデジタルIDであり、共有してはいけません。コンピュータにローカルで保存され、鍵自体を明かすことなく、あなたの身元を証明するためだけに使用されます。
公開鍵と秘密鍵
公開鍵は家につけた錠前のようなものです。通りから誰でも見ることができますが、その見た目から開け方を知ることはできません。つまり、誰でも見ることはできますが、正しい鍵だけが錠を開けられます。一方、秘密鍵はその鍵で、あなたが安全に持っている必要があります。もし誰かがあなたの秘密鍵を手に入れたら、その人はあなたの家にあなたのように入ることができます。ですから、秘密にしておく必要があります。
SSHの仕組み
公開鍵と秘密鍵はユニークな1対1のペアを形成します。それらは数学的プロセスで一緒に生成され、対応する公開鍵に合うのはその特定の秘密鍵だけです。それらは共に鍛造された特注の鍵と錠前のようなものです。同じアルゴリズム(RSAやEd25519など)を使用して他のペアを生成しても、内部の数字は完全に異なります。2つを結びつける数学は一方向で、秘密鍵から公開鍵を簡単に導出できますが、逆に公開鍵から秘密鍵を見つけることは実質不可能です。だから、すべてのSSH鍵ペアはユニークで安全なのです。
SSHがあなたの身元を証明する方法
SSHでサーバーにログインするとき、秘密鍵はコンピュータを離れることがありません。代わりに、サーバーはランダムなチャレンジ、いわば一度限りのパズルを送ります。それは秘密鍵だけが解けるものです。コンピュータはそのチャレンジを数学的に署名し、サーバーが公開鍵を使って確認できる短い答えを生成します。答えが合えば、サーバーは正しい秘密鍵を持っていると認識します。これは現代暗号の魔法であり、秘密を明かさずに身元を証明できます。SSH認証は、秘密鍵が公開鍵を導出するためのすべての情報を含んでいるために機能しますが、その逆は実質不可能です。
開発者が実践するSSHの使い方
開発者がコードをデプロイしたり、データベースを更新したり、サービスを再起動したりするたびに、SSHを介してリモートサーバーに接続することがよくあります。認証後、安全なコマンドライン接続を確立します。そこから、ファイルを管理したり、サービスを再起動したり、ログを確認したりできます。すべてがエンドツーエンドで暗号化されています。Splyncの場合、SSHはクラウドサーバーを安全に管理する手段です。すべての管理作業—アップデートのデプロイ、ログの確認、データのバックアップ—は、暗号鍵で保護されたSSH接続を通じて行われます。正しい秘密鍵がなければ誰もサーバーにアクセスできません。たとえ誰かが私たちのIPアドレスを知っていても、その鍵がなければ扉は開きません。
次回予告:サーバー内部の暗号化
SSHはサーバーへの入り口を保護し、HTTPSは通信中のデータを保護します。しかし、データがデータベース内に入った後はどうやって安全を保つのでしょうか。それがハッシュ化と暗号化の出番です—最後の防衛ラインです。