远程管理通道安全SSH协议主机验证过程

可以使用SSH协议进行远程管理通道安全保护,其中涉及的主要安全功能包括主机验证、数据加密性和数据完整性保护。

这里要注意的是【主机验证】和【身份验证】的区别,主机验证是客户端确认所访问的服务端是目标访问对象,比如从从客户端A(192.168.3.1)连接到服务端B(192.168.3.133)上,需要验证服务端B是真实的。当主机验证通过后,主机验证通过后,将进入身份验证阶段。SSH支持多种身份验证机制,它们的验证顺序如下:gssapi-with-mic,hostbased,publickey,keyboard-interactive,password,但常见的是密码认证机制(password)和公钥认证机制(public key)。

SSH客户端若是首次登录或者例如在windows注册表中删除【计算机\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys】中对应服务器端host key值。(例如Putty)使用ssh登录服务器,会弹出如下提示:

The host key is not cached for this server:

192.168.3.133 (port 22)

You have no guarantee that the server is the computer you think it is.

The server's ssh-ed25519 key fingerprint is:

ssh-ed25519 255 SHA256:gFoFqs17V915WdaNspPRsCPu8g9McWt5Hduo6RLhK5I

If you trust this host, press "Accept" to add the key to PuTTY's cache and carry on connecting.

If you want to carry on connecting just once, without adding the key to the cache, press "Connect Once".

If you do not trust this host, press "Cancel" to abandon the connection.

打开more info可以看到

Full text of host's public key

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAxMDpul0HDFVD4NAYw8rk0Ex1bDGsqWCDALE0FBzajw

SHA256 fingerprint gFoFqs17V915WdaNspPRsCPu8g9McWt5Hduo6RLhK5I

MD5 fingerprint 13:9d:92:62:1a:ca:7e:77:f7:ab:89:2e:f3:a0:1f:20

点击accept,在windows注册表中就会新增一个条目,数据值为

0x6e326c40573f5fffb8224daceab4ac24050a609ff50ce518e4a27cadc52a848d,0x70a8cd4141130b300896ca1ac356c7044dae3c8c010d3e54c570d0a59b0e4c0c

后续,在客户端将不再出现之前的提示,而是获得到从服务端B发来的公钥后与保持在本地的的公钥指纹进行比对,如果一致则验证成功。

此时,我们可以看下公钥及公钥指纹的对应关系,具体如下:

Base64编码服务端公钥(在客户端的提示窗口中可以找到,或者在服务端/etc/ssh目录中)

AAAAC3NzaC1lZDI1NTE5AAAAIAxMDpul0HDFVD4NAYw8rk0Ex1bDGsqWCDALE0FBzajw

对应HEX编码服务端公钥(base64 to hex)

0000000B7373682D65643235353139000000200C4C0E9BA5D070C5543E0D018C3CAE4D04C756C31ACA9608300B134141CDA8F0

对服务端公钥做SHA256 hash计算得到

805A05AACD7B57DD7959D68DB293D1B023EEF20F4C716B791DDBA8E912E12B92

转base64得到gFoFqs17V915WdaNspPRsCPu8g9McWt5Hduo6RLhK5I=,与putty窗口提示的SHA256公钥指纹一致。

对服务端公钥做MD5 hash计算得到139D92621ACA7E77F7AB892EF3A01F20,与putty窗口提示的MD5公钥指纹一致。

最后,通过抓包来看下服务端B的公钥是在哪条消息发功给客户端的,具体抓包信息如下。

在wireshark中查找0C4C十六进制数值,查找到在server发出的Key Exchange Reply消息中。可以看到EdDSA public key字段中的内容与HEX编码的公钥信息标黄部分完全一致,所以服务端公钥就是在此消息中完成发送给客户端的。

那么【0000000B7373682D6564323535313900000020】这部分是什么呢?把HEX转为ASCII码就是ssh-ed25519,也就是公私密钥对的生成算法。

相关推荐
腾视科技-AI8 小时前
腾视科技AIBOX双版本重磅发布!本地安全与全球适配,解锁视频智能新可能
大数据·人工智能·科技·安全·大模型·腾视科技·ai算力盒
迪康coolmu8 小时前
企业文档安全防护体系拆解:从备份、防勒索到全链路水印管控
安全
技术不好的崎鸣同学12 小时前
第一章:PEB结构解析与内存定位
windows·安全·系统安全
古养摩登原始人12 小时前
脑机接口合规最新发展:从政策到实践,构建安全可控的技术生态
人工智能·安全
Multipath71213 小时前
乾元通基于原生UDP时隙感知的多链路聚合方案
网络·网络协议·5g·安全·udp·智能路由器·实时音视频
liuyunshengsir15 小时前
Codex Harness 安全沙箱机制原理:AI 编程代理如何安全地执行命令
人工智能·安全
LorryJovens16 小时前
【LAAP论文】Chat GPT6来临:当一个强认知框架下的harness工程遇到强模型的安全对齐应对的调查研究
安全
Flynt17 小时前
Chrome 修了个零日漏洞,你的 VS Code 和 Cursor 可能还在裸奔
安全·electron·visual studio code
TechWayfarer17 小时前
做IP归属地查询时总是查不准?IP纯净度检测实战:从“查归属地“到识别“脏IP“的四个维度
服务器·网络·python·tcp/ip·安全·web安全
huizhulihuiwu17 小时前
高端大型会议会务系统 私有化部署:如何平衡安全、性能与成本?
大数据·安全·会议签到·智能会议·会务系统