一、PK
密钥使用方式:
对称加密:使用对称方式,使用同一个密钥进行加密与解密,密钥必须保密
非对称加密:使用非对称方式,使用两个密钥(加密密钥和解密密钥),其中一个密钥用于加密,其可对公众公开;另一个密钥用于解密,该密钥必须保密(私钥)
对称加密:是基于代换与置换操作,
非对称加密:是使用数学函数进行变换的。
性能:
对称加密:速度快,加解密所需要的计算量小;但密钥管理工作量很大
非对称加密:计算量很大;但密钥管理工作量很小
二、非对称加密需要满足的要点
1.一对密钥容易生成
2.从公开的密钥推出私有密钥来,在计算上是不可行的。(其思想与单向陷门有关,一般基于数学难题去设计生成密钥的算法;如著名的RSA非对称密码体制的安全性依赖于大整数分解的困难性;ELGamal非对称密码体制及其变种的安全性依赖于离散对数问题的困难性)
扩充:单向陷门函数 f:D->V
1) 任意给定 x∈D,计算 y=f(x) 是容易的。
2) 对于几乎所有任意给定y∈V,计算x∈D使得y=f(x),在计算上是困难的,即计算x=f﹣¹(y)是困难的。这里所谓困难是指有意义的时间要求之内计算是不可行的。
3) 存在陷门信息t,当已知t时,对给定的任何y∈V,若相应的x存在,则计算x使y=f(x)是容易的。
通俗得说,就是已知x很容易得出y,但是已知y很难得到x,但当已知一个信息t时,可以轻易的从y得到x;
这里t保密,用作解密密钥。加密函数是公开的,任何人可以将信息x加密成y=f(x);但只有拥有t的人,才能机密出信息x=f﹣¹(y)。
三、经典的非对称算法体制:RSA
密钥的生成:随机选择两个大素数p和q,计算N=pq和φ(N)=(p-1)(q-1);随机选择整数e,1<e<φ(N),满足gcd(e,φ(N))=1,并计算整数d满足ed≡1(modφ(N));公钥PK=(N,e),安全销毁p,q和φ(N),并秘密保存密钥SK=(d)
加密:发送消息m,首先获取对方的公钥PK=(N,e),然后计算密文c←m的e次方(modN),
解密:计算m←c的d次方(modN),得到消息m
相关知识:
欧拉函数:任意给定正整数n,计算在小于等于n的正整数之中,有多少个与n构成互质关系?计算这个值的方法就叫做欧拉函数,以φ(n)表示.
性质1.如果n可以分解成两个互质的整数之积,即n=p×q,则有:φ(n)=φ(pq)=φ(p)φ(q);
性质2.根据“大数是质数的两个数一定是互质数”可以知道:一个数如果是质数,则小于它的所有正整数与它都是互质数;所以如果一个数p是质数,则有:φ(p)=p-1
所以若我们知道一个数n可以分解为两个质数p和q的乘积,则有φ(n)=(p-1)(q-1)
欧拉定理与模反元素:欧拉函数的用处,在于欧拉定理“欧拉定理”指的是如果两个正整数a和n互质,则n的欧拉函数φ(n)可以让下面的等式成立:aφ(n)≡1(modn)
也就是说,a的φ(n)次方被n除的余数为1模反元素的推导过程如下根据欧拉定理,有:aφ(n)=a×aφ(n)−1≡1(modn)令b=aφ(n)-1,得:ab≡1(modn)b就是a的模反元素意即,如果两个正整数a和n互质,那么一定可以找到整数b使得ab-1被n整除,或者说ab被n除的余数是1