SSH学习的心得,请指正

由 tower 在 05-22-2003 10:07 发表:

SSH学习的心得,请指正

看了一下howto,只是讲如何操作,不讲原理,所以不知为何这么做,为何有好几种认证方法。man了一下午,终于有所体会,希望大家看看,指出其中的错误

一、RSA,DSA都是非对称加密方法,DES,3DES,blowfish等都是对称加密方法,md5,sha是hash单向算法;凡是用公钥加密,只能被相应私钥解开

二、网上要安全通信,关键是交换数据要加密,为何不用直接公钥加密,私钥解密呢?比如双方相互交换公钥,发送方用对方公钥加密要发送数据,接收方用相应私钥解密,很简单么?但是用公钥加密数据的计算量巨大,不适合批量数据,所以采取对话建立时利用公私钥来传送一个对称加密方法的key,以后的通信都是用这个对称加密法和这个确定的key加密来进行的

三、具体大致如下(忽略协商版本等细节):设 S erver S lient 要通信

1、C -----------------------------> S

C提出要和S加密通信

host_key.pub

cookie

2、C <----------------------------- S

S把自己的公钥(host_key.pub)、一个随机的cookie数给C

加密的session_key

3、C ------------------------------> S

C利用cookie和收到的公钥计算一个session_id ,

C自己产生一个session_key,用公钥加密,传给S

利用session_key加密的数据

4、C <-----------------------------> S

S用私钥解开session_key

S用cookie和公钥同样计算session_id,应该和C计算出的一致

S用session_key和C开始在唯一session上加密数据通信

不知我这样是否理解对了,请大虾们指点

另外有2个问题,从上面过程来看,

虽然从4开始CS之间就是安全的了,但并不能保证第4阶段里C就是第1阶段的C,很明显看2、3,并不能保证C就是第一个的C,只要能伪装IP就可以顶替了

所以ssh2协议里除了一个用public key authentication的办法

就是C也向S提供自身的key.pub用来验证是否是真正想通信的用户,比用口令验证更加好些

另外当利用public key方式进行用户认证时,也会问密码,这个密码是ssh-keygen时输入的passphrase,我的理解这个密码并没有通过网络传送,而是在本地验证,目的是来保护这个存在客户端的private key的,而通过password方式认证时,password是加密后在网上传送的, 对吗?

凡是私钥, 如 host_rsa_key,host_dsa_key,$home/.ssh/id_rsa,id_dsa 的属性都必须是600,

而公钥 如 host_rsa_key.pub $/HOME/.ssh/id_rsa.pub等属性必须是644,sshd才能正常工作,不符合,sshd拒绝认证,这点man中并不清楚,我是错了好些次,在检查log时发现的


由 doooom 在 05-22-2003 14:09 发表:


呵呵,不错

最上面红色得client写错了。


发行版再好,不如自己做的lfs好。

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus