网络与信息安全IOS知识积累

公钥密码和数字签名

2018-05-12  本文已影响8人  Dreamsky_起航

公钥密码和数字签名

在目前网络通信的过程中,有两种加密方法被广泛使用:公钥加密数字签名;本文将对这两种方法进行分析和对比;


定义

公钥密码:也就是和我们常说的非对称加密,分为加密解密,消息发送者使用公钥加密,消息传输过程中以密文传输,接受者收到消息之后,用私钥进行解密,就可以拿到消息内容;
数字签名:分为签名验签;消息发送者使用私钥进行签名,消息传输过程中同样以密文传输,但是出来密文之外,还会发送一份消息的明文给接收方,以便接收方进行验签,接收方收到明文和密文之后,会用公钥进行解密,得到明文,然后对比解密后的结果和接收到的明文,一致则验签成功,不一致则证明消息被中途篡改过;

在公钥加密和数字签名过程中,都涉及到一个共同的东西---秘钥对(公钥和私钥);但是在使用过程中却又有一些区别:具体如下:

公钥密码 数字签名
公钥 发送者加密使用 接受者验签使用
私钥 接受者解密使用 发送者签名使用
公钥持有者 加密个人持有 需要验证签名的任何人都可以持有
私钥持有者 解密个人持有 签名人持有
传送内容 密文 密文 + 明文

过程和特点

过程

公钥密码使用过程如下:


公钥密码.jpg

数字签名使用过程如下:


数字签名.jpg

特点

公钥密码:公钥发送消息的人持有,私钥接收消息的人持有,均为私人持有;只要保证秘钥安全,就可以保证通信安全;
数字签名:公钥接受消息的人持有,所有人均可持有,私钥发送消息的人持有,私人持有;保证私钥安全就可保证签名的准确性;


应用场景

公钥密码
适用于:消息需要秘密传输;
案例:SSL层中,对称秘钥的传输就是应用了非对称加密进行传输;
数字签名
适用于:消息本身可以对外公开,但是需要验证发送方身份的消息;
案例:苹果手机验证APP是否为指定开发者开发;


一些问题:

1.公钥密码和数字签名看似是相反的流程,可不可以公私秘钥互换,在公钥密码过程中用私钥加密、公钥解密;在数字签名过程中用公钥签名、私钥验签;

答案是不一定的,应为在日常过程中,大多采用的非对称加密算法为RSA,而在RSA算法中,两个过程是可逆的,但是并不是所有非对称加密算法都是可逆的。所以,严格来说,这个过程是不可以的;

2.在公钥密码和数字签名的过程中,都会有一步发送秘钥的过程,那么在这一步有中间人将秘钥替换也是存在风险的;

这个是肯定的,对于这种中间人攻击,就不在数字签名和公钥密码的解决范围之内了,这个请参照数字证书及证书链的验证

3.公钥密码比较好理解,但是为什么私钥加密就可以作为签名?

在数字签名特点中,有一个是私钥只有发送者持有,正是因为这一特点,再加上公私秘钥的一个特点:“没有该私钥的人是不能生成对应公钥可以解开的密文的”,就有一个结论:持有公钥的人能解开的密文,就是该可信机构或人发出的消息;而私钥和私钥加密的信息就相当于该机构或人的签名

4.数字签名中,单项散列的作用?

消息体有可能为比较大的数据,而非对称加密的过程又是比较消耗性能,故在为防止对数据比较大的消息签名是消耗时间相对比较长,对消息进行了单向散列的操作,散列过后为固定长度字符串,签名速度相对来说要快很多;

上一篇 下一篇

猜你喜欢

热点阅读