SSH是如何防御重放攻击的?

2019 年 5 月 14 日 黑客技术与网络安全
来自:车小胖谈网络(微信号:chexiaopangnetwork)

问题描述

SSH之所以能够保证安全,原因在于它采用了公钥加密。

整个过程是这样的:

(1)远程主机收到用户的登录请求,把自己的公钥发给用户。

(2)用户使用这个公钥,将登录密码加密后,发送回来。

(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

如果中间人在用户第二个步骤获取到这个请求,这个请求里面就包括了公钥加密密码后的字符信息。中间人发送这个请求到远程主机,远程主机就会用自己的私钥解密然后验证成功。请问这思路是正确的吗,如果是这样SSH还会是安全的吗?

正文

题主的问题严格审视,好像没有一个点说的是对的!

我在知乎收集计算机网络、网络安全的问题整整三年,终于明白为什么很多学生始终无法入门的原因,那是因为看到“假”的书。

西安看兵马俑的游客,稍不留意就会被带入一个山寨版的秦始皇兵马俑,浑然不知看的竟然是假的兵马俑。

对于想以网络安全为职业的读者,最好去阅读权威的RFC文档,尽管刚开始会困难一点,但是至少不会走到了一个错误的地方。如果觉得读RFC实在困难,那就看看我的文章。我帮大家理理思路,等有一天大家有能力自学了,可以再去翻阅权威文档,那是走向另一个职业高度必然的选择!

SSH是一个什么样的存在?

SSH类似于TLS,站在TCP 端口22上,TLS站在TCP 端口443上。

所以,这两者是平起平坐的,都可以提供安全加密服务。对SSH不熟悉的同学,可以用TLS的知识来学习SSH。

网络安全有一个经典口号,不造轮子,只使用轮子!

什么意思呢?

私自造轮子,本来想提供安全的通信,可是考虑不周全,引入了更多的安全漏洞,得不偿失。

使用酒精考验的轮子,经历了全人类不断捶打的轮子,使用起来更放心!

所以,SSH和TLS尽管名称不同,安全的三要素是相同的套路。


  • 认证对方

  • 分发密钥

  • 加密数据

SSH与TLS认证方式有一点区别,TLS采用第三方CA认证,而SSH为了简化,没有采用第三方的CA,而是采用双方互相认证。

SSH公钥认证

当客户端与服务器完成TCP三次握手,紧接着就是SSH双方开始了握手协商的过程。

服务器会将自己的公钥以明文的方式推送给客户端,为了避免被第三方篡改,公钥的尾部报文还附带服务器私钥的签名保护。

客户端获得服务器的公钥,用公钥解密签名,可以解开,说明公钥完好。解不开说明公钥被篡改。

这里有一个问题,客户端永远都不知道公钥是不是服务器的,对吗?

服务器出示一张名片,上面赫然写着“马云”,客户端就相信这个是马云了?


客户端尽管傻,但是设计SSH人并不傻,设计人员是这么想的。

假如客户端与服务器第一次通信,是在一个安全的局域网里,双方如同在一个小会议室见面,然后双方交换名片,以后双方即使在互联网上通信,依然只认在小会议室交换的名片,是不是就可以避免被第三方欺骗?

这是一个好主意,SSH其实也是这么用的,希望用户第一次登录SSH服务器,要处在一个安全的局域网环境。

完成了服务器认证,接下来的过程和TLS没有任何区别,可以使用RSA分发密钥、DHE分发密钥,然后双方就可以愉快地通信了!

重放攻击

所谓重放攻击,就是第三方捕获了双方的历史通信报文,在合适的时间重新发送一次或多次不等。

如何防止重放攻击?

安全协议为了应对这个挑战,通常会在报文头里嵌入一个序列号,从0开始单向增长的整数,接收方维护着一个类似TCP滑动窗口,不在窗口以内的序列号统统抛弃。即使在窗口内,也要比较接收序列号与缓存的序列号是否相同,如果相同,一样抛弃处理!

写这样没有几个人能看懂的文章,不会有几个赞。但我还是写了,因为读者群里有一部分向往安全的朋友,必须掌握这些基础知识!

看不懂的同学也不要气馁,罗马不是一天建成的,只要坚持看,一定可以看懂的!



编号863,输入编号直达本文

●输入m获取文章目录

推荐↓↓↓
 

Linux学习

更多推荐25个技术类微信公众号

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

登录查看更多
0

相关内容

Secure Shell(SSH)为创建在应用层和传输层基础上的安全协议。
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【综述】基于图的对抗式攻击和防御,附22页论文下载
专知会员服务
68+阅读 · 2020年3月5日
专知会员服务
36+阅读 · 2019年12月13日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
AWVS12 V12.0.190530102 windows正式版完美破解版
黑白之道
29+阅读 · 2019年8月24日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
被动DNS,一个被忽视的安全利器
运维帮
11+阅读 · 2019年3月8日
IPSec | IKE密钥交换原理
计算机与网络安全
18+阅读 · 2018年12月23日
DataCanvas周晓凌:如何为用户提供最佳体验的实时推荐系统
DataCanvas大数据云平台
5+阅读 · 2018年11月12日
Arxiv
35+阅读 · 2019年11月7日
Arxiv
10+阅读 · 2019年2月19日
Arxiv
3+阅读 · 2018年4月3日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【综述】基于图的对抗式攻击和防御,附22页论文下载
专知会员服务
68+阅读 · 2020年3月5日
专知会员服务
36+阅读 · 2019年12月13日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
相关资讯
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
AWVS12 V12.0.190530102 windows正式版完美破解版
黑白之道
29+阅读 · 2019年8月24日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
被动DNS,一个被忽视的安全利器
运维帮
11+阅读 · 2019年3月8日
IPSec | IKE密钥交换原理
计算机与网络安全
18+阅读 · 2018年12月23日
DataCanvas周晓凌:如何为用户提供最佳体验的实时推荐系统
DataCanvas大数据云平台
5+阅读 · 2018年11月12日
Top
微信扫码咨询专知VIP会员