公开密钥密码体制是现代密码学的最重要的发明和进展。一般理解密码学(Cryptography)就是保护信息传递的机密性。在公钥体制中,加密密钥不同于解密密钥。人们将加密密钥公之于众,谁都可以使用;而解密密钥只有解密人自己知道。
公开密钥密码体制是现代密码学的最重要的发明和进展。一般理解密码学(Cryptography)就是保护信息传递的机密性。
公钥密码
简介
这仅仅是当今密码学主题的一个方面。对信息发送与接收人的真实身份的验证、对所发出/接收信息在事后的不可抵赖以及保障数据的完整性是现代密码学主题的另一方面。
公开密钥密码体制对这两方面的问题都给出了出色的解答,并正在继续产生许多新的思想和方案。在公钥体制中,加密密钥不同于解密密钥。人们将加密密钥公之于众,谁都可以使用;而解密密钥只有解密人自己知道。迄今为止的所有公钥密码体系中,RSA 系统是最著名、使用最广泛的一种。
概念
公钥体系结构中的一些基本概念与结构组成。
密钥对在基于公钥体系的安全系统中,密钥是成对生成的,每对密钥由一个公钥和一个私钥组成。在实际应用中,私钥由拥有者自己保存,而公钥则需要公布于众。为了使基于公钥体系的业务(如电子商务等)能够广泛应用,一个基础性关键的问题就是公钥的分发与管理。
公钥本身并没有什么标记,仅从公钥本身不能判别公钥的主人是谁。
在很小的范围内,比如 A 和 B 这样的两人小集体,他们之间相互信任,交换公钥,在互联网上通讯,没有什么问题。这个集体再稍大一点,也许彼此信任也不成问题,但从法律角度讲这种信任也是有问题的。如再大一点,信任问题就成了一个大问题。
算法
介绍
公开密钥算法是在 1976 年由当时在美国斯坦福大学的迪菲(Diffie)和赫尔曼(Hellman)两人首先发明的(论文”New Direction in Cryptography”)。但目前最流行的 RSA 是 1977 年由 MIT 教授 Ronald L.Rivest,Adi Shamir 和 Leonard M.Adleman 共同开发的,分别取自三名数学家的名字的第一个字母来构成的。
1976 年提出的公开密钥密码体制思想不同于传统的对称密钥密码体制,它要求密钥成对出现,一个为加密密钥(e),另一个为解密密钥(d),且不可能从其中一个推导出另一个。自 1976 年以来,已经提出了多种公开密钥密码算法,其中许多是不安全的, 一些认为是安全的算法又有许多是不实用的,它们要么是密钥太大,要么密文扩展十分严重。多数密码算法的安全基础是基于一些数学难题, 这些难题专家们认为在短期内不可能得到解决。因为一些问题(如因子分解问题)至今已有数千年的历史了。
公钥加密算法也称非对称密钥算法,用两对密钥:一个公共密钥和一个专用密钥。用户要保障专用密钥的安全;公共密钥则可以发布出去。公共密钥与专用密钥是有紧密关系的,用公共密钥加密的信息只能用专用密钥解密,反之亦然。由于公钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大简化了密钥管理。除加密功能外,公钥系统还可以提供数字签名。
产生
1. 选择两个大素数,p 和 q ,计算出 n=qp,n 称为 RSA 算法的模数。p,q 必须保密,一般要求 p,q 为安全素数,n 的长度大于 1024bit ,这主要是因为 RSA 算法的安全性依赖于因子分解大数问题。
2. 计算 n 的欧拉数
φ(n)=(p-1)(q-1)
φ(n)定义为不超过 n 并与 n 互质的数的个数。
3. 然后随机选择加密密钥 e,从[0,φ(n)-1]中选择一个与φ(n)互质的数 e 作为公开的加密指数。
4. 最后,利用 Euclid 算法计算解密密钥 d, 满足 de≡1(mod φ(n))。其中 n 和 d 也要互质。数 e 和 n 是公钥,d 是私钥。两个素数 p 和 q 不再需要,应该丢弃,不要让任何人知道。
5.得到所需要公开密钥和秘密密钥:
公开密钥(即加密密钥) PK=(e,n)
秘密密钥(即解密密钥) SK=(d,n)