密码学摘要
这学期学了密码学,虽然也是一门打水课,但是不记点什么确实就真的是水过去了...好歹对称密钥算法,公钥算法,数字签名什么的要简单记述一下,别人问的时候至少要知道说些什么。。。
——————————————————————————————————
对称密钥算法:
对称密钥加密和解密时使用的密钥是同一个密钥,其优点是加密速度快,缺点是不能作为身份验证,密钥发放困难。常见的对称加密算法有RC2,RC4,DES,3DES,IDEA,SDBI等。
当然,还会导致每一对通信放都要保存一对密钥,导致密钥管理困难。
公开密钥算法:
公开密钥加密和解密使用的密钥是不同的密钥,分别称为公钥和私钥,公钥可以公开,私钥则必须保密只能归密钥所有者拥有。其缺点是对大容量的信息加密速度慢,优点是可以作为身份认证,而且密钥发送方式比较简单安全。
关于公钥与私钥的加密与解密:私钥加密公钥可以解密;公钥加密私钥也可以解密。分别用于加密与签名。
你只要想:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出加密时公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出签名时私钥负责签名,公钥负责验证。
其中,RSA算法基于大整数因数分解的困难性,ElGamal算法基于有限域内求离散对数的困难性。
RSA算法:
原文为m,公钥为(e, n), 私钥为(d, n),其中n = pq (两个大质数乘积)
c = me mod n, (加密)
m = cd mod n = med mod n = m, (解密)
已知(e, n)如何计算d?
ed mod phi(n) = ed mod (p-1)(q-1) = 1
d与e在 (p-1)(q-1) 下互为逆元
已知e, p, q, 可以对数时间计算d
困难在于大质数乘积n的分解
——————————————————————————————————
零知识:A向B证明A掌握某事,但不想让B知道这件事的内容。
Feige-Fiat-Shamir身份验证体制:仲裁人选择一个随机数n为两个大素数的乘积,分别产生公钥与私钥。甲有公钥与私钥,乙有公钥,通过t次协议验证甲有私钥。
Diffie-Hellman:最早的公开密钥算法,用于分配密钥,不能用于加密与解密。
甲选择一个数x,向乙发送X = g^x mod n,
乙选择一个数y,向甲发送Y = g^y mod n;
甲计算k = Y^x mod n,
乙计算k' = X^y mod n;
Shamir的三次通过协议:甲乙双方不用交换任何秘密密钥或公开密钥就可以安全通信。
一个可交换的对称密码: EA( EB(M) ) = EB( EA(M) ); (有点类似于Diffie-Hellman啊......)
——————————————————————————————————
学会了什么呢。。。。学完后其实也就是巩固了一下初等数论而已,明白了以前还不是很明白的一些知识... 囧