おなじみのLinuxの人がそのSSHを知っている必要があります。SSHはのためのリモートサーバへのセキュアなアクセスのためのネットワークプロトコルです。これは、クライアントと暗号化によって保護されたサーバー間でのメッセージは、それが盗まれたり改ざんすることはできないだろう。そして、それはセキュリティがそれを達成する方法ですか?
:SSHを理解するために、最初の2つの重要な概念を導入するための対称暗号化と非対称暗号化を。
対称暗号化:
対称暗号化では、クライアントとサーバーのデータが暗号化と復号化に同じ鍵を使用して。この方法の利点は、それがブレークすることは困難である、高い暗号強度です。デメリットは、キー自体が簡単に漏れることは明らかです。そのため、キーを保存する方法を重要な課題となっています。非対称暗号化:第2の抽出暗号そう。
非対称暗号化:
二つの鍵、公開鍵と非対称暗号化秘密鍵があります。鍵ペアの生成と使用の両方。データはパブリックで暗号化され、対応する秘密鍵缶のロックを解除するために使用する必要があります。また、秘密鍵は、公開することによって得ることができません。秘密鍵を安全に保存する必要がありつつ、公開鍵は、公開されてすることができます。
SSHでは、非対称暗号化は、セッション初期化フェーズでの通信相手のためのセッションキーを交渉するために使用されます。非対称暗号化計算はオーバーヘッドが比較的大きいため、その両方のセッションキーのネゴシエーションが完了すると、その後の暗号化対称暗号化が実行されること。
次に、我々は、SSHセッション確立の過程を見てみましょう。
1.クライアントは、TCP接続を開始し、デフォルトのポート番号は22です。
サーバーの後2.接続要求を受けて、クライアントへのキーメッセージの一部。この情報が含まれています:
- 公共サービス側:クライアントは、公開を受けた後、自分の「のknown_hosts」ファイル内の検索を行います。あなたが同じ公開鍵を見つけた場合、それは、サーバーに接続されていました。見つからない場合は、警告メッセージは、ユーザーが端末に接続されて継続するかどうかを決定するために、しばらく表示されます。
coderunner@geekyshacklebolt:~$ ssh geekyshacklebolt The authenticity of host 'geekyshacklebolt (192.168.42.222)' can't be established. ECDSA key fingerprint is SHA256:Ql/KnGlolY9eCGuYK3OX3opnSyJQzsbtM3DW/UZIxms. Are you sure you want to continue connecting (yes/no)?
- 服务器所支持的加密算法列表:客户端根据此列表来决定采用哪种加密算法。
3. 生成会话密钥。此时,客户端已经拥有了服务端的公钥。接下来,客户端和服务端需要协商出一个双方都认可的密钥,并以此来对双方后续的通信内容进行加密。
密钥协商是通过Diffie - Hellman算法来实现的。具体过程是:
1)服务端和客户端共同选定一个大素数,叫做种子值;
2)服务端和客户端各自独立地选择另外一个只有自己才知道的素数;
3)双方使用相同的加密算法(如AES),由种子值和各自的私有素数生成一个密钥值,并将这个值发送给对方;
4)在收到密钥值后,服务端和客户端根据种子值和自己的私有素数,计算出一个最终的密钥。这一步由双方分别独立进行,但是得到的结果应该是相同的。
5)双方使用上一步得到的结果作为密钥来加密和解密通信内容。
4. 接下来,客户端将自己的公钥id发送给服务端,服务端需要对客户端的合法性进行验证:
1)服务端在自己的“authorized_keys”文件中搜索与客户端匹配的公钥。
2)如果找到了,服务端用这个公钥加密一个随机数,并把加密后的结果发送给客户端。
3)如果客户端持有正确的私钥,那么它就可以对消息进行解密从而获得这个随机数。
4)客户端由这个随机数和当前的会话密钥共同生成一个MD5值。
5)客户端把MD5值发给服务端。
6)服务端同样用会话密钥和原始的随机数计算MD5值,并与客户端发过来的值进行对比。如果相等,则验证通过。
至此,通信双方完成了加密信道的建立,可以开始正常的通信了。
总结:
SSH巧妙地利用了对称加密与非对称加密各自的特点,实现了一套安全保密的远程控制协议。
文章:
https://baijiahao.baidu.com/s?id=1612411213158569988&wfr=spider&for=pc