为什么要用公钥/私钥而不是密码去做SSH身份验证
浏览:4699次 出处信息
SSH提供了很多种不同的身份验证,其中最常用的两种便是密码验证和基于公钥/私钥的身份验证。
基于公钥/私钥的身份验证有非常多的优点。
首先,公钥/私钥可以从根本上挫败监听来截取验证信息的企图。
公钥/私钥验证本质上是一种 零知识证明。即,在身份验证的过程中,服务器并不需要知道用户的私钥是什么。【注:公钥/私钥验证并不是零知识证明,感谢 snnn 指正。】
公钥/私钥验证在身份验证的过程中,服务器只需要知道用户的公钥,而用户则使用自己的私钥对一组数据签名,并在服务器端进行验证。服务器并不需要知道用户的私钥。目前为止,还没有有效的方法能从这些信息推导出私钥。
与密码相比,这种方法有显著的优点:在验证身份的那一方,没有任何办法可以拿到用户的私钥,即使获得了那台机器的root权限。验证信息只能使用一次----这意味着,也没有办法把这个验证信息用于在其他地方再次验证身份。
其次,公钥/私钥要比密码长的多,因而可以挫败通过穷举的方式破解的可能性。
典型的密码是8位字符,假设可以使用大小写字母、数字和特殊符号,可选的范围无非是96^8而已,我们不妨算它128^8。典型的私钥有2048个bit,如果按7个来分组的话,有128^(2048/7)。当然,最高位和最低位一定是1,但向下取整,也有128^292种。
最后,除了吃点带宽之外,SSH口令穷举对于仅采用公钥/私钥验证的服务器安全不构成任何威胁。
通过适当的配置sshd,可以让其直接明确地告诉对方此处不支持口令验证,并且能够容易地将攻击者记录在案,并将数据反馈给防火墙来减少带宽的占用。
建议继续学习:
- Linux shell脚本使用while循环执行ssh的注意事项 (阅读:6647)
- RSA 公钥格式转换之PHP实现 (阅读:5003)
- 在ssh服务里使用chroot (阅读:4865)
- 懒人连ssh不输密码若干大法 (阅读:4498)
- ssh连接超时解决办法 (阅读:4485)
- 如何让ssh登录更加安全 (阅读:4497)
- ssh命令 (阅读:4227)
- SSH无密码登录 (阅读:4265)
- 公钥私钥加密解密数字证书数字签名详解 (阅读:4018)
- 共享会话的ssh连接配置 (阅读:3591)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:Levenshtein distance相似度算法
后一篇:用 sscanf 解析字符串时结尾的判断 >>
文章信息
- 作者:Xin LI 来源: 车东[Blog^2]
- 标签: SSH 公钥 私钥
- 发布时间:2010-08-02 10:07:45
建议继续学习
近3天十大热文
- [51] Oracle MTS模式下 进程地址与会话信
- [49] 图书馆的世界纪录
- [49] IOS安全–浅谈关于IOS加固的几种方法
- [49] 如何拿下简短的域名
- [45] android 开发入门
- [44] 【社会化设计】自我(self)部分――欢迎区
- [42] 界面设计速成
- [42] 读书笔记-壹百度:百度十年千倍的29条法则
- [41] 视觉调整-设计师 vs. 逻辑
- [40] Go Reflect 性能