SSH的两种验证方式

来源:互联网 发布:网络教育学校有区别吗 编辑:程序博客网 时间:2024/06/06 20:20

准备知识

对称加密:双方使用同一个密钥,既可以加密又可以解密,也称单密钥加密。
优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用。
缺点:如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。

非对称加密:一对密钥由公钥和私钥组成。一个公钥对应一个私钥。私钥只有自己知道,公钥大家都知道。如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
优点:安全。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人–银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。
缺点:加密解密速度慢。

加密:是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。
身份认证:是用来判断某个身份的真实性。

非对称加密的两种应用情况:

  • 公钥用于加密,私钥用于解密:如果加密密钥是公开的,这用于客户给私钥所有者上传加密的数据,这被称作为公开密钥加密(狭义)。例如,网络银行的客户发给银行网站的账户操作的加密数据。
  • 公钥用于解密,私钥用于解密:如果解密密钥是公开的,用私钥加密的信息,可以用公钥对其解密,用于客户验证持有私钥一方发布的数据或文件是完整准确的,接受者由此可知这条信息确实来自于拥有私钥的某人,这被称为数字签名,公钥的形式就是数字证书。例如,从网上下载的安装程序,一般都带有程序制作者的数字签名,可以证明该程序的确是该作者发布的而不是第三方伪造的且未被篡改过(身份认证)。

基于公开密钥的加密过程:比如有两个用户A和B,A想把一段明文通过非对称加密的技术发送给B,B有一对公钥和私钥,那么加密解密的过程如下:
* B将他的公钥传送给A。
* A用B的公钥加密他的信息,然后传送给B。
* B用他的私钥解密A的信息。

基于公开密钥的认证过程:主要用于鉴别用户的真伪,这里只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。A想让B知道自己是真实的A,而不是假冒的,因此A只要使用私钥对文件签名然后发送给B,B使用A的公钥对文件进行解密,如果可以解密成功,则证明A的私钥是正确的,因而就完成了对A的身份鉴别。

  • A用他的私钥对文件加密,从而对文件签名。
  • A将签名的文件传送给B。
  • B用A的公钥解密文件,从而验证签名。

SSH(安全外壳协议),是Secure Shell的缩写。
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。
SSH提供两种级别的安全验证。

基于口令的安全验证

这里写图片描述

(1) 当客户端发起ssh请求,服务器会把自己的公钥发送给用户;

(2) 用户会根据服务器发来的公钥对密码进行加密;

(3) 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功。

基于秘钥的登陆方式

这里写图片描述

(1) 首先在客户端生成一对密钥(ssh-keygen);

(2) 并将客户端的公钥ssh-copy-id 拷贝到服务端;

(3) 当客户端再次发送一个连接请求,包括ip、用户名;

(4) 服务端得到客户端的请求后,会到authorized_keys中查找,如果有相应的IP和用户,就会随机生成一个字符串,例如:qwer;

(5) 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端;

(6) 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端;

(7) 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录。

参考博客

[ SSH 两种验证方式原理 ] - 陌阡博客 - CSDN博客
http://blog.csdn.net/zhaoxuejie/article/details/54925099

公钥和私钥解释 - 凡的世界 - 博客园
http://www.cnblogs.com/Impulse/p/3974480.html

SSH HTTPS 公钥、秘钥、对称加密、非对称加密、 总结理解 - 我不会编程,但不是完全不会,我会一点点 - CSDN博客
http://blog.csdn.net/a1232345/article/details/44594867

原创粉丝点击