zoukankan      html  css  js  c++  java
  • 私钥加密公钥解密或者公钥加密私钥解密有意义吗?

    "1、如果是私钥加密,公钥解密的话,因为公钥是公开出来的,所以拿到公钥的人 ,是可以解密报文的,我认为这种加密方式没意义。"

     你理解有误. 这种场景是用作签名的, 就是校验信息发送者身份. 只有通过特定私钥的的信息才能被公开出来的公钥解密. 这就唯一确定了信息发送者, 达到签名(不可抵赖)的目的. 

    "2、如果是公钥加密,私钥解密的话,因为公钥是公开出来的,所以系统是无法识别请求就是指定系统发送的,也就是别人是可以模拟你的报文,请求你的系统。"

    这种场景是做信息加密用. 发送者A通过公钥加密信息, 只有持有私钥的人C才能解密. 保证了被发送的信息不会被第三方知晓. 而B通过模拟报文的攻击方式并不是修改了A的信息, 而是B"假扮"A向系统发信息. 这种情况并不是A的密文被破解, 而是B在欺骗C, 所以不属于RSA算法漏洞. 

    同时, 要预防这类欺骗只需利用场景1的方式, 由A使用另外一套RSA密钥对信息签名即可. 此时B即使知晓了A要发送的原文, 由于没有A的密钥 C也无法使用公钥解密出数据. 达到了既不可篡改, 又不可抵赖的目的.

    3.如果我知道你的报文结构,因为公钥是公开的,我可以使用公钥加密模拟报文请求你的系统,并不是说要篡改数据

    所以需要签名啊. 使用场景1 的方式签名就可以防止这种欺骗了. 一共有两套密钥. 第一套做签名, 第二套做加密. 这样无论第三者是否知道报文格式, 都无法欺骗到系统了.

    即便第三者知道报文格式, 通过公钥仿制一个报文请求系统, 这种情况也不是RSA的问题. RSA还是很好的保护了通信者之间的信息. 第三方如无密钥, 无法得知通信内容. 签名只是对RSA的活用,相当于对密文的再次加密. 要解决这种欺骗问题, 还可以通过诸如约定token来实现. 因为通信内容不可被第三方获取, 故可在报文中加入身份验证信息token来实现防骗.
      
     

    肯定时有意义的,只不过PKI应用的场景不一样,首先私钥受介质保护(UKey私钥受PIN码或指纹保护等),只能够自己使用,公钥是公开的。密钥对用于互操作,以下列举加解密的几个场景:

    - 私钥加密(也较签名),公钥解密(也叫验签):一般应用于对一段摘要(通过计算原文获取,因为私钥加密长度有限制,而且摘要运算速度比签名快)进行签名,由对方来负责验证是签名,该操作的目的具有验证数据完成性,不可抵赖性,可用于银行转账的报文。签名操作用在终端(手机或电脑),确认操作在银行服务器(验证签名的可靠性)。
    - 公钥加密,私钥解密:一般用于加密通信,例如:加密电子邮件,我用B的公钥加密一段数据,然后发送给B,只有B的私钥可以解密我发送的原文,可以在公网上传输,被中间者攻击也无所谓,反正也解不出原文,但是一般使用当中不直接使用公钥加密消息,因为有长度限制,通常会先生成一个对称密钥,用对称密钥加密消息,然后在用公钥加密对称密钥。

  • 相关阅读:
    Educational Codeforces Round 58 A,B,C,D,E,G
    Codeforces Round #530 (Div. 2) F (树形dp+线段树)
    Codeforces Round #530 (Div. 2) A,B,C,D
    bzoj 3262: 陌上花开
    bzoj 2653: middle (主席树+二分)
    费马小定理的证明
    分组背包
    二维费用的背包问题
    luoguP1164 小A点菜(背包问题)
    完全背包问题
  • 原文地址:https://www.cnblogs.com/makai/p/11231081.html
Copyright © 2011-2022 走看看