第4章 公钥密码算法
- 格式:ppt
- 大小:976.00 KB
- 文档页数:84
公钥密码算法
公钥密码算法是一种非对称加密算法,它使用一对公钥和私钥来加密和解密信息。
公钥密码算法的基本原理是:用户A将
要发送的信息使用用户B的公钥进行加密,然后发送给用户B,用户B收到信息后,使用自己的私钥进行解密,从而获得
原始信息。
公钥密码算法的安全性主要取决于公钥和私钥的安全性,因此,在使用公钥密码算法之前,需要先生成公钥和私钥。
一般来说,生成公钥和私钥的过程可以分为以下几个步骤:
1. 选择一个大质数p和一个小质数q,并计算出n=pq;
2. 选择一个大于1小于n的整数e,使得e与(p-1)(q-1)互质;
3. 计算出d,使得ed=1 mod (p-1)(q-1);
4. 将公钥(n,e)和私钥(n,d)发布出去。
在使用公钥密码算法进行加密时,可以使用以下步骤:
1. 将要发送的信息m转换成一个整数M,使得0<M<n;
2. 计算出密文C,C=M^e mod n;
3. 将密文C发送给接收方。
在使用公钥密码算法进行解密时,可以使用以下步骤:
1. 接收方收到密文C后,计算出明文M,M=C^d mod n;
2. 将明文M转换成原始信息m。
公钥密码算法的安全性取决于公钥和私钥的安全性,因此,在使用公钥密码算法时,应该采取有效的措施来保护公钥和私钥,以防止被攻击者破解。
例如,可以采用数字签名技术来验证公钥和私钥的真实性,以及采用加密技术来保护公钥和私钥,以防止被攻击者窃取。
RSA公钥密码算法RSA公钥密码算法是一种常见的加密算法,常用于网络通信、数据传输等领域,它采用公钥与私钥相结合的方式进行加密解密,具有高度的安全性和可靠性。
下面我们将详细介绍RSA公钥密码算法的原理和实现。
RSA公钥密码算法中,每个用户都有一对不同的密钥,公钥和私钥。
公钥是公开的,可以向所有人公开,而私钥只有用户本人知道,保密性极高。
加密时使用公钥进行加密,解密时使用私钥进行解密。
RSA公钥密码算法的原理主要涉及到以下几个方面:1. 随机选择两个素数p和qRSA公钥密码算法的核心是基于数学难题,即大数分解问题。
在算法中,首先需要随机选择两个大质数p和q,它们是算法的核心秘密。
p和q不能太小,否则易被破解,也不能太大,否则计算量太大。
通常,取素数的位数越多,安全性越高。
当p和q选好后,计算N=pq。
2. 计算N和欧拉函数在算法中,N和欧拉函数φ(N)是两个重要的参数。
N=pq是两个质数的积,φ(N)表示小于N的正整数中与N互质的数目。
当p和q是不同的质数时,φ(N)=(p-1)(q-1)。
在实际应用中,我们通常选择的是越大的质数越好。
3. 选择加密密钥e在算法中,需要选定一个加密密钥e,它必须满足1<e<φ(N),且e与φ(N)互质。
加密密钥e可以公开,任何人都可以知道。
4. 计算解密密钥d在算法中,需要计算一个解密密钥d,它必须满足ed mod φ(N)=1。
解密密钥d只有用户本人知道,保密性极高。
根据扩展欧几里得算法,可以求得模φ(N)下e的逆元d。
5. 加密和解密过程在加密时,明文M先被转化为一个整数m,然后计算出密文C=me mod N,其中e是加密密钥,N是公钥中的参数。
在解密时,密文C首先被解密为明文m=Cd mod N,其中d是解密密钥,N是公钥中的参数。
6. 安全性分析RSA公钥密码算法基于大质数分解问题,因此,只有在分解N为p和q这两个质数的乘积时,才有可能破解该算法。
公钥密码算法公钥密码算法是现代密码体系最通用的加密算法,称为非对称加密方式,公钥和私钥总是成对出现的,用公钥加密则私钥可以用来解密,或者反过来。
标准的RSA的加密算法利用的是大数质因数分解困难的特点,其数学原理十分简单。
{(XQ−1)P−1≡1(modP)(XP−1)Q−1≡1(modQ)⇒X(P−1)×(Q −1)≡1(modPQ)⇒XM≡1(modN)⇒XE×D≡X(modN)⇒YD≡X(mod N)其中密文Y、公钥E和大数N都是公开的,但是没有私钥D就无法得到X,破解需要对N进行质因数分解反推出P和Q,因为大数质因数分解需要穷举,因此密码在很长的时限内都是安全的。
从原理可以看出,加密和解密是完全对称的,如果用私钥加密,而用公钥解密的过程称为电子签名,因为别人没有私钥,就无法伪造签名者的消息和身份信息了。
一般网银和网上交易等金融相关的密码体系采用加密和电子签名相结合的方式,对用户密码用银行等服务端的公钥加密后再和用户名等信息一起用用户的私钥进行电子签名,服务端再分别用用户的公钥和银行的私钥解密,用数字证书的方式传递公钥。
而一般的网站登录多采用MD5值来存储和比对密码,虽然理论上从MD5值无法得到密码的明文,但仍然存在撞库的风险,黑客收集普通人常用的一些密码组合转换为MD5值来反推,因此尽量不要使用电话号码、名字缩写、生日组合之类的简单密码,网银密码用单独的密码不要和其他网站的密码一样。
RSA是目前最常用的公钥加密算法,但并没有从理论上证明破译RSA的难度与大数分解难度等价,有数学家认为RSA密码存在漏洞,而且在计算能力越来越强的计算机面前,仍然需要寻找更安全的加密方式。
ECC(Elliptic Curves Cryptography椭圆曲线密码)也是一种公钥密码算法,ECC能用更短的密钥长度来提供同等或更高的安全级别,其数学原理比较复杂,简单的说是利用椭圆曲线上点群的离散对数问题的困难性(并不懂这句话的意思),有机会再慢慢学习吧。
公钥密码算法学号:0900250114 姓名:李荣亮摘要:古往今来,通信中的安全保密问题一直受到广泛关注。
历史上,交战双方在通信安全、保密和密码破译方面的优势均被认为是取得战争胜利的关键因素之一。
今天,随着互联网的发展,人类进入信息化时代,现代通信涉及各个行业,信息安全已成为人人都关心的问题,敏感信息的安全传输越来越受到人们的关注,这就促使密码学揭去了神秘的面纱,为更广泛的领域和大众服务。
一、公钥密码学概述。
公开密钥密码算法的提出是整个密码学历史上最大的而且也许是最唯一真正的变革。
从最初一直到现代,几乎所有密码系统都建立在基本的替代和置换工具的基础上。
在用了数千年的本质上可以手算完成的算法之后,常规的密码学随着转轮加密/解密机的发展才出现了一个重大进步。
机电式变码旋转软件使得极其复杂的密码系统被研制出来。
有了计算机后,更加复杂的系统被设计出来。
但是不管是转轮机还是后来的DES(数据加密标准),虽然代表了重要的进展,却仍然依赖于替代和置换这样的基本工具。
公钥密码学则与以前的所有方法都截然不同。
一方面公开密钥算法基于数学函数而不是替代和置换,更重要的是,公开密钥密码学是非对称的,它用到两个不同的密钥,而对称的常规加密则只使用一个密钥。
使用两个密钥对于保密通信,密钥分配和鉴别等领域都有着深远的影响。
公钥密码算法中的密钥依性质划分,可分为公钥和私钥两种。
用户或系统产生一对密钥,将其中的一个公开,称为公钥;另一个自己保留,称为私钥。
任何获悉用户公钥的人都可用用户的公钥对信息进行加密与用户实现安全信息交互。
由于公钥与私钥之间存在的依存关系,只有用户本身才能解密该信息,任何未受授权用户甚至信息的发送者都无法将此信息解密。
在近代公钥密码系统的研究中, 其安全性都是基于难解的可计算问题的。
如:(1)大数分解问题;(2)计算有限域的离散对数问题;(3)平方剩余问题;(4)椭圆曲线的对数问题等。
基于这些问题, 于是就有了各种公钥密码体制。
密码学中的公钥密码算法及其应用密码学是一门研究通信安全和信息保密的科学,而公钥密码学算法则是其中最为重要的一种算法。
公钥密码学算法是指在加密和解密过程中,使用不同的密钥来实现。
本文将介绍公钥密码学算法的基本概念和应用。
一、公钥密码学算法概述公钥密码学算法也称为非对称密码学算法,它是一种使用两个密钥来进行加密和解密的算法。
这两个密钥是一对,一个称为公钥,一个称为私钥。
其中,公钥是公开的,任何人都可以知道,私钥则是秘密的,只有拥有者才会知道。
公钥密码学算法的加密过程是这样的:发送方使用接收方的公钥对数据进行加密,接收方使用自己的私钥对加密数据进行解密。
这样,就可以保证通信内容的安全性和保密性。
二、公钥密码学算法的分类公钥密码学算法分为两种类型:基于离散对数问题的算法和基于椭圆曲线问题的算法。
1、基于离散对数问题的算法基于离散对数问题的算法包括RSA和DH两种算法。
RSA算法是由三位数学家Rivest、Shamir和Adleman于1977年发明的。
它主要是利用了大数分解的难度来保证信息的安全性,而公钥就是由两个大素数的乘积得出的。
DH算法是Diffie和Hellman在1976年提出来的,它主要是利用数论中离散对数问题的难度来保证信息的安全性,而公钥则是通过一定计算得出的。
2、基于椭圆曲线问题的算法基于椭圆曲线问题的算法包括ECIES和ECDSA两种算法。
ECIES算法是可扩展加密标准中的一种,它主要是利用椭圆曲线上的点运算来实现加密和解密,公钥就是椭圆曲线上的一个点。
ECDSA算法是可扩展数字签名算法中的一种,它主要是利用椭圆曲线上的点运算来实现数字签名的生成和验证。
三、公钥密码学算法的应用公钥密码学算法在信息安全领域有着广泛的应用,下面介绍几个常见的应用场景。
1、TLS/SSL协议TLS/SSL协议是一种用于保护互联网通信安全的协议。
在TLS/SSL协议中,使用公钥密码学算法来实现通信内容加密和身份认证的过程,从而保证通信的安全性和保密性。