【密码学原理】公钥密码学简介

公钥算法是基于数学函数而不是基于代替和置换,与只使用一个密钥的对称密码不同,公钥密码是非对称的,它使用两个独立的密钥。

公钥密码的提出,主要用于解决两个问题:密钥分配问题和数字签名问题。

公钥算法依赖于一个加密密钥和一个与之相关的解密密钥:

  • 仅根据密码算法和加密密钥来确定解密密钥在计算上是不可行的,也就是说加密密钥与解密密钥相互独立
  • 两个密钥中的任何一个都可以用于加密,另一个用于解密
  • 公钥密码体制中有:明文,加密算法,公钥和私钥,密文,解密算法。

在加密的时候,Bob拥有Alice等多人的公钥,如果要给Alice发送消息,就用Alice的公钥对消息加密,然后将密文发送给Alice。在Alice接收到Bob发送过来的密文后,用Alice自己的私钥进行解密,得到明文。

在这个加密和解密过程中,与对称密码不同的是,加密密钥和解密密钥是不同的两个值,加密的密钥(公钥)是公开的,所有人都可以知道,但是解密的密钥(私钥)是接收方才可以拥有的,是受保护的。即使知道公钥也不能解密密文,这是公钥加密的特点,只有拥有私钥才能解密密文,确保了密文的安全传输。

Bob用自己的私钥给明文加密,然后将密文发送给Alice,Alice通过Bob的公钥解密。这里解密输出的明文,是大家都可以知道,因为Bob的公钥是公开的,所以任何人都可以解密,所以不具有保密性。为什么要用Bob的私钥加密?

Bob的私钥只有Bob自己拥有,其他任何人都不会拥有,所以如果能够用Bob的公钥对密文解密,那么这个密文就应该是Bob加密,这就可以用于数字签名。类似于手写的签名,自己笔迹似乎只有自己才能写出来,自己的笔迹就相当于私钥,别人模仿不了。

公钥密码应该满足:

  • 密钥对的生成在计算上是容易的
  • 已知公钥和明文,发送方生成相应的密文在计算上是容易的
  • 接收方用私钥对接收到的密文解密恢复明文在计算上是容易的
  • 已知公钥,攻击者要确定对应的私钥,在计算上是困难的
  • 已知公钥和密文,攻击者要恢复明文在计算上是困难的
  • 加密和解密函数的顺序可以交换(非必须)

在公钥密码学提出后,目前只有几个满足条件的算法(RSA,椭圆曲线,DH,DSS) ,说明满足条件不容易。要满足这些条件就是要找到一个单向陷门函数:每个函数值都存在唯一的逆,并且就是函数值是容易的,但是求逆是困难的。

  • 若k和X已知,计算Y=f_k(X)是容易的
  • 若k和Y已知,计算X=f_k^{-1}Y是容易的
  • 若Y已知,k未知,就是X=f_k^{-1}Y是困难的

和对称密码一样,公钥密码也容易受到穷举攻击,解决办法就是增长密钥长度。另一种就是给定公钥,计算私钥,但是这种方法还没有得到证明。 

猜你喜欢

转载自blog.csdn.net/m0_50984266/article/details/108909262