1.公钥私钥
公钥加密 (public-key cryptography),或非对称密钥加密 (asymmetric key cryptography) 是一类广泛使用的加密算法。这类算法使用一对密钥即公钥 (public key) 和私钥(private key)。其中公钥可以随便分发,只用于加密 (encryption),私钥则只由一人持有,只用于解密。任何一个信息用公钥加密之后,用私钥解密即可得到原来的信息,反之则不一定。
公钥加密的关键点在于,一方面,公钥加密是可逆的,但是不能用公钥推断出私钥。显然数学上,已知一个公钥是能够算出对应私钥的,但是只要设计足够好的加密算法(以及使用足够复杂的密钥对),使得不能在可以接受的时间内破译即可。
RSA 是一种常见的公钥加密算法。RSA 的工作原理依赖于如下事实:破译 RSA 私钥需要对某些极大的整数进行因数分解,而目前尚未找到快速的对极大整数作因数分解的算法。换言之,如果有人找到了这样的算法,那么全世界的 RSA 加密都会失效。
RSA是由Ron Rivest, Adi Shamir, Leonard Adleman三人在1978年首次提出的。三人并因此项工作荣获了2002年Turing Award。周时,Rivest还是算法导论的作者之一,书中在31章对RSA系统的原理进行了简要说明,系统实现中利用到了数论中的Euler-Fermat theorem。
COMMENT: 但不管怎么,极大整数的因数分解还是可能的。RSA_Laboratories举办过多次悬赏破译 RSA 的活动,更多信息可以看看 RSA_Secret-Key_Challenge。
尽管随着密码学的发展,RSA 的安全性已经越来越受到威胁,但是未来能诞生可以在多项式时间内破译 RSA 的可能性还是非常小的。也就是说,除了军方、金融等高危目标之外,RSA 还是适用的。
2.SSH key认证过程
简单归纳下:
第一步 客户端和服务都有一对私钥,同时客户端的公钥放在服务端。
第二步 客户端生成sessionKey,通过服务端的public key加密,服务端通过自己的私钥解密,但是怎么确定两个人的session key相同呢?所以也就有了第三步。
第三步 服务端通过客户端的公钥给客户端发送测试消息,客户端通过自己的私钥解密,同时使用session key加密,服务端收到消息与自己通过session key的加密测试消息对比,这样就能验证客户端是否和自己的session key一致了。
第四步 当然就是服务端和客户端通过session key来加密通信啦!
所谓的公钥认证,实际上是使用一对加密字符串,一个称为公钥(public key),任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密。通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。
ssh 的公钥认证就是使用了这一特性。服务器和客户端都各自拥有自己的公钥和密钥。为了说明方便,以下将使用这些符号。
Ac | 客户端公钥 |
Bc | 客户端密钥 |
As | 服务器公钥 |
Bs | 服务器密钥 |
在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。
认证过程分为两个步骤。
- 会话密钥(session key)生成
- 客户端请求连接服务器,服务器将 As 发送给客户端。
- 服务器生成会话ID(session id),设为 p,发送给客户端。
- 客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
- 客户端将 r 用 As 进行加密,结果发送给服务器。
- 服务器用 Bs 进行解密,获得 r。
- 服务器进行 r xor p 的运算,获得 q。
- 至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。
- 认证
- 服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
- 客户端使用 Bc 解密 S(x) 得到 x
- 客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
- 服务器计算 q + x 的 md5 值 m(q+x)
- 客户端将 n(q+x) 发送给服务器
- 服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功
相关推荐
### Solaris SSH配置与原理详解 #### 一、引言 在现代网络安全环境中,使用SSH(Secure Shell)作为远程管理工具已经成为业界标准。Solaris操作系统虽然默认开启的是Telnet服务,但从安全角度来看,SSH提供了更为...
#### 一、SSH Key 的基本概念与原理 SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录。通过SSH,可以在非安全的网络环境中提供安全的远程登录服务,其安全性主要依靠密钥对进行验证。 在SSH中,每个...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他...在实际应用中,熟悉SSH协议的工作原理以及如何正确使用SSH Secure File Transfer Client将极大地提升工作效率和系统的安全性。
首先,我们需要理解SSH密钥对的工作原理。SSH密钥对是基于非对称加密技术的,私钥是保密的,保存在本地计算机,用于解密远程服务器发送过来的加密信息;公钥则可以公开,通常会放在远程服务器的`~/.ssh/authorized_...
具体来说,每台主机都会生成一对密钥:公钥(public key)和私钥(private key)。公钥可以自由分发,而私钥必须妥善保存。 当A想要登录到B时,流程如下: 1. **A主机**生成一对密钥:公钥和私钥。 2. **A主机**将公钥...
SSH原理详解 SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录或文件传输方式,例如 Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着...
#### 二、SSH Key认证原理 SSH Key认证基于公钥加密技术,主要涉及两个密钥:公钥(Public Key)和私钥(Private Key)。公钥用于加密数据,而私钥用于解密数据。在SSH Key认证过程中,服务器保存用户的公钥,用户...
upload-ssh-keyupload ssh key to hostInstall[sudo]npm install -g sktUsageskt deploy@127.57.222.30原理如果有~/.ssh/id_rsa.pubssh myhost 'mkdir -p .ssh && cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_...
在IT行业中,SSH(Secure Shell)是一种广泛使用的网络协议,用于在不安全的网络上提供安全的远程登录和其他服务...在实际项目中,可以根据需求选择合适的语言和库,结合SSH协议的原理,实现高效、安全的网络通信功能。
1. **SSH原理**:SSH通过加密技术建立一个安全通道,保护数据在网络中的传输。它包括服务器认证、用户身份验证、数据加密和完整性检查等多个环节,确保通信的安全性。 2. **公钥与私钥**:SSH使用非对称加密,公钥...
标题中的“使用public/...标签“源码”和“工具”表明这篇内容可能涉及到了SSH协议的源码原理和Puttygen作为工具的使用方法。在实际应用中,了解这些工具和概念对于进行远程服务器管理、自动化部署等工作至关重要。
在Ubuntu系统中,SSH(Secure ...总之,安装和配置SSH服务器是Ubuntu系统管理的重要部分,理解其工作原理和常见问题的解决方法,对于远程运维和开发工作至关重要。通过排查上述问题,你应能解决大多数SSH连接错误。
首先,让我们深入了解SSH密钥的工作原理。SSH使用非对称加密技术,即公钥和私钥是一对匹配的密钥。公钥可以公开,任何人都可以获取,而私钥必须严格保密。当你尝试连接到服务器时,服务器会用你的公钥加密一个随机...
1. **SSH基础**:理解SSH的基本原理,包括客户端和服务端的概念,以及它们如何通过公钥和私钥进行身份验证。公钥用于加密,私钥用于解密,这种非对称加密方式保证了通信的安全。 2. **安装SSH**:在Linux系统中,...
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加未知主机key策略 ssh.connect('hostname', username='username', password='password') # 连接服务器 stdin, stdout, stderr = ssh.exec_...
通过理解其工作原理和正确使用方法,开发者可以快速地在自己的应用程序中集成SSH功能,实现安全的远程通信。不过,使用过程中需要注意版本兼容性、错误处理以及安全性,确保软件的稳定性和安全性。
使用这些文件来开发SSH功能时,需要了解SSH协议的工作原理,如握手过程、身份验证、加密和完整性保护机制。此外,还需要熟悉libssh2库的API,如何初始化会话、建立连接、执行命令、处理SFTP操作等。在实际应用中,...