拉宾公钥密码
- 格式:doc
- 大小:13.03 KB
- 文档页数:2
公钥密码学发展历史和脉络介绍如下:
公钥密码学是一种基于数学原理和算法的加密技术,它的发展历史可以追溯到20世纪70年代。
以下是公钥密码学发展的主要历史和脉络:
1.1976年,惠特菲尔德和迪菲发明了著名的迪菲-惠特菲尔德密钥交换协议,这是公钥密码学的开端。
2.1978年,拉宾在论文中首次提出了公钥加密算法,这是公钥密码学的里程碑之一。
3.1979年,麦克劳德和威尔逊在论文中提出了一种新的公钥加密算法——RSA算法。
4.1985年,埃尔加马尔和沙密尔发明了一种基于离散对数问题的公钥密码算法——DH算法。
5.1991年,埃尔加马尔、沙密尔和德斯特发明了一种基于椭圆曲线离散对数问题的公钥密码算法——ECC算法。
6.1997年,NIST发布了第一版数字签名标准——DSA标准。
7.1999年,NIST发布了第一版公钥密码标准——RSA标准。
8.2000年,NIST发布了第一版椭圆曲线公钥密码标准——ECC标准。
9.2001年,NIST发布了第一版身份认证标准——PKI标准。
10.2002年,NIST发布了第一版数字证书更新标准——OCSP标准。
11.2007年,NIST发布了第一版密码安全标准——SP800-131标准。
12.2013年,NSA泄露的“棱镜门”事件引发了公钥密码学安全问题的关注,开启了公钥密码学安全问题的新篇章。
总之,公钥密码学在过去几十年的发展中,不断推陈出新,逐步成为现代加密技术的核心。
随着网络技术的迅猛发展和信息安全问题的日益突出,公钥密码学的发展和应用将会更加广泛和深入。
数学知识点归纳数论与密码学的基础数学知识点归纳:数论与密码学的基础数论是数学的一个分支,研究的是整数及其性质。
而密码学是应用数论的一个领域,研究的是信息保密和安全通信的方法。
本文将就数论和密码学的基础知识进行归纳和总结。
一、数论的基础知识1. 整数和整除性质:整数是自然数、0和负整数的集合。
整除是指一个数能够整除另一个数,也可以说是被整除的那个数是另一个数的倍数。
2. 最大公约数和最小公倍数:最大公约数是两个数中最大的能够同时整除它们的数;最小公倍数是能够同时被两个数整除的最小的非零自然数。
3. 模运算:模运算是指将一个数对另一个数取余得到的结果,表示为a mod b。
常用于解决循环问题、计算机编程和密码学等领域。
4. 素数和合数:素数是指只能被1和自身整除的数,大于1的非素数称为合数。
二、RSA公钥密码体制RSA密码体制是一种基于数论的非对称加密算法,由三位数学家Rivest、Shamir和Adleman共同发明。
它利用了大数分解的困难性来提供安全性。
1. 密钥生成:RSA算法需要生成一对公私密钥。
首先选择两个不同的素数p和q,计算它们的乘积n=p*q。
选择一个与(p-1)*(q-1)互质的整数e作为公钥,计算私钥d使e*d ≡ 1(mod (p-1)*(q-1))。
2. 加密过程:将明文M转换为整数m,然后使用公钥(e,n)对明文进行加密,得到密文C ≡ m^e(mod n)。
3. 解密过程:使用私钥(d,n)对密文进行解密,得到明文M ≡C^d(mod n)。
三、素性测试素性测试是判断一个大数是否为素数的方法,其中最著名的是费马素性测试和米勒-拉宾素性测试。
1. 费马素性测试:根据费马小定理,如果p是素数且a是p的一个互质整数,那么 a^p-1 ≡ 1(mod p)。
因此,对于一个给定的大数n,若不等式a^n-1 ≡ 1(mod n)成立,那么n一定是合数。
费马素性测试虽然简单,但在实际应用中效果较差。
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它使用一对密钥(��钥和私钥)来加密和解密数据。
公钥用于加密数据,私钥用于解密数据。
RSA算法的基本原理是基于大素数的乘法和取模运算。
下面是RSA算法的基本步骤:
1. 选择两个大素数p和q,并计算它们的乘积n=p*q。
2. 计算欧拉函数φ(n)=(p-1)*(q-1)。
3. 选择一个整数e,使得1<e<φ(n),且e与φ(n)互质。
e称为公钥。
4. 计算整数d,使得d ≡e^(-1) (mod φ(n))。
d称为私钥。
5. 公钥是(n, e),私钥是(n, d)。
6. 加密消息m:c ≡m^e (mod n)。
7. 解密密文c:m ≡c^d (mod n)。
RSA算法的安全性依赖于大素数分解的困难性,即从n=p*q中分解出p和q的困难性。
因此,RSA算法的安全性取决于选择足够大的素数p和q。
RSA算法被广泛应用于加密通信、数字签名、身份认证等领域,是目前最常用的公钥密码算法之一。
拉宾公钥密码是一种基于大数质因数分解问题的公钥密码体制,其安全性依赖于大数质因数分解的难度。
在Python中实现拉宾公钥密码需要使用一些数学库,如Python标准库中的math和random,以及第三方库如pycrypto等。
下面是一个简单的Python代码示例,演示了如何使用Python实现拉宾公钥密码的基本原理:python复制代码import randomimport math# 生成大素数p和qp = random.randint(10**10, 10**20)q = random.randint(10**10, 10**20)n = p * qphi = (p - 1) * (q - 1)# 生成随机整数e,满足1 < e < phi,且gcd(e, phi) = 1e = random.randint(2, phi - 2)while math.gcd(e, phi) != 1:e = random.randint(2, phi - 2)# 计算私钥d,满足d * e ≡ 1 (mod phi)d = pow(e, -1, phi)# 公钥和私钥的生成public_key = (n, e)private_key = (n, d)# 明文加密和解密函数def encrypt(plain_text):cipher_text = pow(plain_text, e, n)return cipher_textdef decrypt(cipher_text):plain_text = pow(cipher_text, d, n)return plain_text在上面的代码中,我们首先生成两个大素数p和q,然后计算它们的乘积n和欧拉函数phi。
接着,我们生成一个随机整数e,并计算对应的私钥d。
最后,我们定义了明文加密和解密函数encrypt和decrypt。
在encrypt函数中,我们将明文m的每个比特分别计算对应的密文c,即c = m^e mod n。
拉宾公钥密码
有些密码,如:“爱因斯坦全质能公式”的密文是“ E=MC2=0”,即每个方程的左边为自然数,右边是一个质量为1、物体速度为光速的假想物体;“拉宾公钥密码”的密文是“ Q=LMS=LSS”,即其中每一个方程的左边为自然数,右边是相应的由32位数据组成的“公钥密码”。
有人说,拉宾将密码的设计带进了一个新时代——他是人类历史上第一个提出并实践了一种公钥密码的人,被誉为“现代密码之父”。
拉宾密码技术首创了二元对立密码体制,将“消息认证”和“加密解密”合二为一,从而成功地解决了传统加密和数字签名所面临的两大难题。
在加密方面,拉宾的发明确保了机密信息的安全性,为后来的各项技术开辟了道路。
在解密方面,拉宾密码首次将密文还原成明文,开创了信息认证的新方法。
“拉宾公钥密码”就是由这样的二元对立关系组成的。
它以拉宾的名字命名,也因此被称为拉宾密码。
这个二元对立的体制可以概括为:其一,每一个非对称密钥都有相应的对称密钥;其二,任何一个密钥对可以用多个公钥来表示。
对称密钥是不可替代的,这与一般的二元对立密码完全不同。
其三,公钥的密文只能用来产生私钥。
其四,除了自身外,公钥对任何事物都是不可见的。
任何使用密码的人,要想推导出私钥,必须首先找到公钥。
“拉宾公钥密码”是一种密码体制,但它与传统密码体制有很大区别。
传统的秘密分享与认证模式有很大缺陷,而“拉宾公钥密码”
克服了这些缺陷。
这个密码体制比较简单,非常容易掌握,而且应用方便,已经在政府机关、银行、军事等许多领域得到广泛应用。
以银行的网络服务为例,许多银行现在利用一个固定的密钥对来提供信用卡交易服务,而每一个客户都可以拥有自己的一把专属密钥,他们在自己的电脑上输入卡号和密码就可以使用这个服务。
这个二元对立的体制就是基于拉宾的实践经验,用来保护各种各样的关键资料的一个标准方案。
拉宾的贡献远远超过密码学本身,因为正是他建立起了一套行之有效的资料加密方法。
拉宾的理论思想,既是密码学发展的一个重要源泉,也是密码学研究的重要方向。
他的成果在今天仍有很高的参考价值。