SSH的简单使用基础过程及原理分析

SSH 到底是如何保证安全的呢?既然 Public Key 加密的内容只有 Private Key 能解密,那客户端发给服务端的消息怎么解密呢?

 

SSH 的连接分为两步:

  • 客户端和服务端建立连接
  • 用户身份鉴权

客户端和服务端建立连接

  1. 客户端联系服务端,双方沟通自己支持的 SSH 协议的版本,约定使用某个共同支持的版本。
  2. 服务端将自己的 Host Key 、加密方法和其他一些参数发给客户端。
  3. 客户端通过 Host Key 验证服务端身份,双方用服务端发来的参数和 Diffie-Hellman 算法生成 Session Key。
  4. 加密通道建立完成。

出现了两个 Key:Host Key 和 SessionKey。

Host Key 分为 Public 和 Private 两种。服务端拥有 Public Key 和 Private Key,并将 Public Key 发送给客户端。客户端用 Public Host Key 验证这台服务器确实是自己要连接的服务器后,双方使用 Diffie-Hellman 算法生成一致的 SessionKey。

Host Key 由 SSH 自行生成,不需要用户做什么。如果客户端通过 Host Key 发现从来没有连接过这台服务器,会询问用户是否要继续连接,用户回答 yes 之后会在本地的 known_hosts 文件记录这台服务器,下次连接时客户端就不会再次询问。由于仅靠服务端下发 Host Key 的方法无法防范中间人攻击,后来又出现了 Public Key Certificates,由一个可靠的第三方机构给服务端签发证书,从而确保了安全性。

Session Key 用于之后通讯时对消息进行加密解密。这个 Session Key 的机制被称作对称加密(Symmetric Encryption),也就是两端使用的相同的 Key 来加密和解密信息。可以看出 SSH 信息的加密解密时并不是用大家自己生成的 Public/ Private Key,而是用双方都一致的 Session Key。

生成 Session Key 的步骤大致如下:

preview

 

  1. 客户端和服务端使用沟通时的信息,协商加密算法以及一个双方都知道的数字。
  2. 双方各自生成只有自己才知道的 private 密码,并使用上一步中的数字进行加密,再次生成密码。
  3. 双方交换再次加密后的密码。
  4. 双方在对方发来的密码基础上,加上第二步自己的 private 密码再次加密。本次加密之后得到的结果就是在双方处都相同的 Session Key。

从这个算法中,可以看出客户端和服务端没有直接传输自己在第二步生成的密码,而是通过加密互换再加密的方式来生成 Session Key,从而保障了 Session Key 无法被泄露。

用户身份鉴权

当客户端和服务端之间建立起加密链接后,进入到身份鉴权的步骤。在身份鉴权这一步除了使用 Key 登录外,还能使用密码登录,这里我们只讲 Key 方式的登录。

工作中我们在客户端生成的 Public/Private Key,就是指用来身份鉴权的 Authorized Key。客户端拥有 Private 和 Public Key,提前将 Public Key 放到服务端用于登录。登录时的具体步骤如下:

 

 

  1. 客户端用 Private Key 生成签名向服务器发起登录请求。
  2. 服务端验证签名,检查自己有没有和这个签名匹配的 Public Key,如果有,则进入下一步。
  3. 服务端生成一串随机字符串,用 Public Key 加密后发送给客户端。
  4. 客户端用相应的 Private Key 解密这串字符串,再使用 MD5 hash 和 Session Key 加密该字符串,将结果发送给服务端。
  5. 服务端使用同样的 MD5 hash 和 Session Key 计算这串字符的加密结果,并和客户端发来的结果做比对,如果结果一样,则允许客户端登录。

Public/Private Key 的加密方式被称作不对称加密(Asymmetry Encryption),就是说使用不同的 Key 来对信息进行加密解密。客户端使用 Private Key 可以解密服务端使用 Public Key 加密的信息,服务端使用 Public Key 无法解密客户端使用 Private Key 发来的加密信息。登录完成后,Authorized Key 的任务也就完成了。

SSH 完成连接,在接下来的通讯过程中,双方将持续使用 Session Key 进行通讯。

总结

SSH 分为两大步,第一步是客户端和服务端建立连接,最终生成双方都一致的 Session Key。第二步使用 Authorized Key 进行登录,登录过程使用 Public/Private Key 验证身份。连接建立完成后,在通讯过程中使用 Session Key 对信息进行加密解密。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
稀缺资源 iOS应用逆向工程: 分析与实战是iOS应用逆向工程方面的权威著作,三位作者都是iOS领域内的专家,拥有扎实的理论知识和丰富的实践经验。本书内容以工具+代码的形式全面、系统地展开知识点,由浅入深,图文并茂地带着读者一步步探索常规iOS App之外的世界。 《iOS应用逆向工程:分析与实战》分为四大部分,分别是概念、工具、理论和实战。前三部分介绍iOS逆向分析领域的背景、知识体系,以及相应的工具集、理论知识;第四部分则通过4个实际案例来将前面的知识以实战的方式展开。第一部分为概念篇,简单介绍iOS逆向分析的概念以及iOS平台系统架构。第二部分为工具篇,介绍一系列基于Mac和iOS平台的配套工具,并且重点讲解其中的class-dump、Theos、Reveal、IDA、GDB等5个工具的使用方法,前3个侧重于使用,后2个侧重于分析。第三部分为理论篇,主要讲述iOS逆向/越狱方向的进阶必备理论知识。第四部分为实战篇,通过对3个App Store App及1个系统App进行逆向分析的实战操作,让读者能够了解并同步实践已掌握的知识。 iOS应用逆向工程:分析与实战 目录: 推荐序一 推荐序二 自序 前言 第一部分 概念篇 第1 章  iOS 逆向工程简介 2 1.1  iOS 软件逆向工程的要求 2 1.2  iOS 软件逆向工程的作用 2 1.2.1  与安全相关的iOS 逆向工程 4 1.2.2  与开发相关的iOS 逆向工程 5 1.3  iOS 软件逆向工程的一般过程 6 1.3.1  系统分析 7 1.3.2  代码分析 7 1.4  iOS 软件逆向工程用到的工具 8 1.4.1  监测工具 8 1.4.2  开发工具 9 1.4.3  反编译器 9 1.4.4  调试器 10 1.5  小结 11 第2 章 越狱iOS 平台简介 12 2.1  iOS 系统架构 12 2.1.1  iOS 目录结构 13 2.1.2  iOS 文件权限 15 2.2  iOS 程序类型 16 2.2.1  Application 16 2.2.2  Dynamic Library 19 2.2.3  Daemon 19 2.3  小结 20 第二部分 工具篇 第3 章 Mac 工具集 22 3.1  class-dump 22 3.1.1  class-dump 介绍及下载 22 3.1.2  class-dump 使用演示 23 3.1.3  关于class-dump 的补充说明 25 3.2  Theos 25 3.2.1  Theos 简介 25 3.2.2  Theos 安装及编译 26 3.2.3  Theos 用法简介 28 3.2.4  Theos 开发tweak 示例 47 3.3  Reveal 49 3.3.1  Reveal 简介 49 3.3.2  Reveal 安装及功能扩展 50 3.4  IDA 55 3.4.1  IDA 简介 55 3.4.2  IDA 使用说明 56 3.4.3  IDA 分析示例 65 3.5  其他工具 68 3.5.1  iTools 68 3.5.2  dyld_decache 69 3.5.3  MesaSQLite 69 3.6  小结 70 第4 章 iOS 工具集 71 4.1  SBSettings 71 4.2  MobileSubstrate 72 4.3  OpenSSH 73 4.4  GDB 74 4.4.1  GDB 简介 74 4.4.2  GDB 的使用说明 74 4.5  Cycript 85 4.6  其他常用工具 88 4.6.1  BigBoss RecommendedTools 88 4.6.2  AppCrackr 88 4.6.3  iFile 89 4.6.4  MobileTerminal 89 4.6.5  Vi IMproved 90 4.6.6  SQLite 90 4.6.7  top 91 4.6.8  syslogd 92 4.7  小结 92 第三部分 理论篇 第5 章  Objective-C 相关的iOS逆向理论基础 94 5.1  tweak 的作用原理 94 5.1.1  Objective-C 语言的特性 94 5.1.2  MobileSubstrate 96 5.2  tweak 的编写套路 97 5.2.1  灵感的来源 98 5.2.2  分析文件,寻找切入点 99 5.2.3  定位目标函数 102 5.2.4  测试函数功

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值