密码学笔记5 非对称密钥算法
来源:互联网 发布:c语言二级证书有用吗 编辑:程序博客网 时间:2024/06/03 13:30
一、引
1976年麻省理工学院数学系毕业的W.Diffie 和M. Hellman等人发表了《密码这新方向》(New Directions in Cryptography),该论文提出加密和解密可以用两把不同的密钥,一把公钥,可以公开;一把私钥,必须严格保密。
论文里以数学方法实现了不念密钥交换协议,称为Diffie-Hellman密钥交换协议。
1977年,R. Rivest、A.Shamir和L.Adleman利用整数分解问题设计了一个单向陷门函数,并构建了RSA密码系统。
公钥密码学还可以用于认证。由于私钥只有主人才拥有,所以用私钥来加密消息的话,这个消息就有了主人的身份信息。
U盾工作过程
二、一些数学概念
欧拉函数
在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)
例如φ(8)=4,因为1,3,5,7均和8互质。
离散对数困难性问题
Discrete Logarithm Problem,DLP
对于比较大的整数y,g,p,求出一个整数x满足
是非常困难的。
整数因子分解困难问题
IFP
给定一个大整数,要将它分解成两个素数因子的乘积,这是一个非常困难的问题。
三、RSA
RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。
今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战和质疑。
RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
RSA的算法涉及三个参数,n、e1、e2。
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)(q-1))=1。
(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。[1]
RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2 mod n;B=A^e1 mod n;(公钥加密体制中,一般用公钥加密,私钥解密)
e1和e2可以互换使用,即:
A=B^e1 mod n;B=A^e2 mod n;
RSA的速度比对应同样安全级别的对称密码算法要慢1000倍左右。
——百度百科
四、 RSA攻击进度
1. 共模攻击
2. 低指数攻击
3. 旁道攻击
4. 量子计算的威胁
五、 椭圆曲线方程(ECC Elliptic Curves Cryptography)
1637年前后,法国数学家费马在阅读巴歇校订注释的丢番图的《算术》第2卷第8题,即求
的正整数解时,在书的空白处写道:“另一方面,将一个立方数分成两个立方数,一个四次幂分为两个四次幂,或者一般地将一个高于二次的幂分为两个同次的幂,这是不可能的。关于此,我已发现一种美妙的证法,可惜这里空白的地方太小写不下”。
即当整数n>2时,方程
1985年,德国数学家格哈德 费赖 第一次创造性地指出如果费马定理有整数解,则必定存在一条与之对应的椭圆曲线,进而打开了由椭圆曲线证明费马大定理的大门,引发了人们对椭圆曲线研究的重视。同年,Neal Koblitz和Victor Miller分别独立地提出将椭圆曲线应用在密码学中,提出了椭圆曲线密码系统(Elliptic Curve Cryptography,简称ECC),它具有良好的特征(密钥短、安全性高)
椭圆曲线有多种表示形式,有各自的用场,这里介绍其中的一种:
这里要求曲线上的每个点都是非奇异(或光滑)的,即曲线上任意一点都存在切线,数学上的定义是曲线上任意一点的偏导数
不能同时为0.
椭圆曲线的形状并不是椭圆,它只是类似于计算一个椭圆周长的方程。而实数集并不适合密码技术,所以研究整数集上的椭圆曲线,这样椭圆曲线就变成了离散的点。椭圆曲线
会构成一个个离散的点,这些点组成一个有限集,我们在这个有限集上定义加法:PQ的加法是PQ与椭圆曲线交点,它的对称点记为和R。对两个一样的点,需要沿该点做一条切线。
如果椭圆曲线上的三个点A、B、C,处于同一条直线上,那么他们的和等于零元,即A+B+C= O∞
椭圆曲线离散对数问题ECDLP
若已知椭圆曲线上的两个点P和Q满足关系Q=kP,要求出整数k是非常困难的。
现有的实验证明,160位的整数的椭圆曲线离散对数问题的难度,就相当于1024位整数的分解问题难度。实际应用中,公开的参数和密钥长度至少是256bits。
SM2
我国在2010年12月颁布了我们自己的椭圆曲线密码算法标准《SM2椭圆曲线公钥密码算法》。
这篇文章对椭圆曲线介绍非常详细:
http://www.pediy.com/kssd/pediy06/pediy6014.htm
- 密码学笔记5 非对称密钥算法
- 密码学笔记4 对称密钥算法
- 非对称算法-密钥磋商算法-DH
- [密码学]保密密钥对称加密算法之DES算法
- 对称密码学的密钥交换
- 一些网上密码学资源(3)-非对称算法
- 一些网上密码学资源(3)-非对称算法
- "对称/非对称密钥"加密算法
- "对称/非对称密钥"加密算法
- 对称|非对称密钥&完整性
- 密码学---非对称密码的加密解密采用公钥还是密钥
- 对称密钥、非对称密钥,HTTPS
- 对称密钥、非对称密钥,HTTPS
- 1、对称密钥和非对称密钥
- 对称密钥和非对称密钥
- 加密解密---非对称密钥/对称密钥
- 对称密钥与非对称密钥
- 对称密钥与非对称密钥
- [绍棠_swift] Swift中的结构体
- 个人知识管理的方法
- linux dd命令小结
- python入门系列——第2篇
- Python起步之文件案例
- 密码学笔记5 非对称密钥算法
- 微信小程序开发之网络请求(GET请求)
- 培训心得--做人做事方式
- 匈牙利算法,二分图的最大匹配
- 程序的健壮性和鲁棒性
- javascript获取当前页面的url
- java-JDBC-ResultSet详解(java数据库操作)
- 使用Keytool工具生成证书Keystore和证书签名请求文件
- RESTful