深度解析:HTTPS中的RSA加密技术
一、引言
随着互联网技术的不断发展,网络安全问题日益受到关注。
在Web浏览过程中,如何确保数据传输的安全性成为了一个亟待解决的问题。
HTTPS(Hypertext Transfer Protocol Secure)作为一种安全通信协议,通过应用加密技术来保护数据传输的安全。
其中,RSA(Rivest-Shamir-Adleman)加密算法是HTTPS中重要的加密技术之一。
本文将详细介绍HTTPS中的RSA加密技术,包括其原理、工作流程、优势与不足等方面。
二、HTTPS与RSA加密技术概述
HTTPS是一种通过计算机网络进行安全通信的协议,它在HTTP协议的基础上加入了SSL/TLS(Secure Sockets Layer/Transport Layer Security)协议,以实现数据的加密传输。
而RSA加密技术是一种非对称加密算法,其核心思想是利用一对公钥和私钥进行加密和解密操作。
公钥用于加密信息,而私钥用于解密信息。
由于RSA算法具有很高的安全性,因此在HTTPS中被广泛应用。
三、RSA加密技术原理
RSA加密技术的原理主要基于大数分解质因子的困难性。
选取两个大质数p和q,计算它们的乘积n=pq。
找到两个整数e和d,满足e和d互质且与n的乘积模数为1的关系。
公钥为(n, e),私钥为(n, d)。
加密时,用公钥将明文加密成密文;解密时,用私钥将密文解密成明文。
由于大数分解质因子是极其困难的问题,因此即使攻击者获得公钥和密文,也很难破解出明文。
四、HTTPS中RSA加密技术的工作流程
在HTTPS通信过程中,RSA加密技术的工作流程如下:
1. 客户端向服务器发送请求时,服务器会生成一个随机的对称密钥(如AES密钥),用于加密后续的数据传输。
2. 服务器使用自己的私钥将对称密钥加密,生成一个密钥交换消息。服务器将该消息通过RSA公钥加密算法发送给客户端。
3. 客户端收到服务器发送的密钥交换消息后,使用服务器的公钥进行解密,获取对称密钥。此后,客户端和服务器之间便可以使用该对称密钥进行安全的数据传输。
4. 在数据传输过程中,数据通过RSA加密技术进行加密后传输,确保数据在传输过程中的安全性。
五、RSA加密技术的优势与不足
优势:
1. 安全性高:由于RSA算法基于大数分解质因子的困难性,使得其具有很高的安全性。在当前的计算能力下,破解RSA加密算法需要大量的时间和资源。
2. 应用广泛:RSA算法在非对称加密算法领域占据主导地位,广泛应用于HTTPS、数字签名、证书认证等方面。
不足:
1. 计算成本高:相比对称加密算法,RSA算法的计算成本较高,处理速度较慢。在大量数据的加密和解密过程中,性能会受到一定影响。
2. 密钥管理困难:RSA算法需要管理公钥和私钥,且私钥需要保密存储。在实际应用中,如何安全地管理和存储私钥是一个挑战。
六、结论
HTTPS中的RSA加密技术在保障网络安全方面发挥着重要作用。
虽然其计算成本高、密钥管理困难等不足需要在实践中加以注意和解决,但其安全性高、应用广泛等优势使其成为当前网络安全领域不可或缺的加密技术之一。
随着计算机技术的不断发展,RSA算法的优化和组合应用将成为未来的研究热点,为网络安全提供更加坚实的保障。
电子商务中,数字签名的作用
数字签字和认证机构是电子商务的核心技术。
数字签名作为目前Internet中电子商务重要的技术,不断地进行改进,标准化。
本文从数字签名的意义出发,详细介绍了数字签名中涉及到的内容与算法,并自行结合进行改进。
引言RSA密码系统是较早提出的一种公开钥密码系统。
1978年,美国麻省理工学院(MIT)的Rivest,Shamir和Adleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出了基于数论的非对称(公开钥)密码体制,称为RSA密码体制。
RSA是建立在“大整数的素因子分解是困难问题”基础上的,是一种分组密码体制。
对文件进行加密只解决了传送信息的保密问题,而防止他人对传输的文件进行破坏,以及如何确定发信人的身份还需要采取其它的手段,这一手段就是数字签名。
在电子商务安全保密系统中,数字签名技术有着特别重要的地位,在电子商务安全服务中的源鉴别、完整性服务、不可否认服务中,都要用到数字签名技术。
在电子商务中,完善的数字签名应具备签字方不能抵赖、他人不能伪造、在公证人面前能够验证真伪的能力。
实现数字签名有很多方法,目前数字签名采用较多的是公钥加密技术,如基于RSA Date Security 公司的PKCS(Public Key Cryptography Standards)、Digital Signature Algorithm、x.509、PGP(Pretty Good Privacy)。
1994年美国标准与技术协会公布了数字签名标准而使公钥加密技术广泛应用。
公钥加密系统采用的是非对称加密算法。
目前的数字签名是建立在公共密钥体制基础上,它是公用密钥加密技术的另一类应用。
它的主要方式是,报文的发送方从报文文本中生成一个128位的散列值(或报文摘要)。
发送方用自己的私人密钥对这个散列值进行加密来形成发送方的数字签名。
然后,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。
报文的接收方首先从接收到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公用密钥来对报文附加的数字签名进行解密。
如果两个散列值相同、那么接收方就能确认该数字签名是发送方的。
通过数字签名能够实现对原始报文的鉴别。
在书面文件上签名是确认文件的一种手段,其作用有两点:第一,因为自己的签名难以否认,从而确认了文件已签署这一事实;第二,因为签名不易仿冒,从而确定了文件是真的这一事实。
数字签名与书面文件签名有相同之处,采用数字签名,也能确认以下两点:第一,信息是由签名者发送的;第二,信息自签发后到收到为止未曾作过任何修改。
这样数字签名就可用来防止电子信息因易被修改而有人作伪,或冒用别人名义发送信息。
或发出(收到)信件后又加以否认等情况发生。
应用广泛的数字签名方法主要有三种,即:RSA签名、DSS签名和Hash签名。
这三种算法可单独使用,也可综合在一起使用。
数字签名是通过密码算法对数据进行加、解密变换实现的,用DES算去、RSA算法都可实现数字签名。
但三种技术或多或少都有缺陷,或者没有成熟的标准。
用RSA或其它公开密钥密码算法的最大方便是没有密钥分配问题(网络越复杂、网络用户越多,其优点越明显)。
因为公开密钥加密使用两个不同的密钥,其中有一个是公开的,另一个是保密的。
公开密钥可以保存在系统目录内、未加密的电子邮件信息中、电话黄页(商业电话)上或公告牌里,网上的任何用户都可获得公开密钥。
而私有密钥是用户专用的,由用户本身持有,它可以对由公开密钥加密信息进行解密。
RSA算法中数字签名技术实际上是通过一个哈希函数来实现的。
数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。
不同的文件将得到不同的数字签名。
一个最简单的哈希函数是把文件的二进制码相累加,取最后的若干位。
哈希函数对发送数据的双方都是公开的。
DSS数字签名是由美国国家标准化研究院和国家安全局共同开发的。
由于它是由美国政府颁布实施的,主要用于与美国政府做生意的公司,其他公司则较少使用,它只是一个签名系统,而且美国政府不提倡使用任何削弱政府窃听能力的加密软件,认为这才符合美国的国家利益。
Hash签名是最主要的数字签名方法,也称之为数字摘要法(Digital Digest)或数字指纹法(Digital Finger Print)。
它与RSA数字签名是单独的签名不同,该数字签名方法是将数字签名与要发送的信息紧密联系在一起,它更适合于电子商务活动。
将一个商务合同的个体内容与签名结合在一起,比合同和签名分开传递,更增加了可信度和安全性。
数字摘要(Digital Digest)加密方法亦称安全Hash编码法(SHA:Secure Hash Algorithm)或MD5(MD Standard For Message Digest),由RonRivest所设计。
该编码法采用单向Hash函数将需加密的明文“摘要”成一串128bit的密文,这一串密文亦称为数字指纹(Finger Print),它有固定的长度,且不同的明文摘要必定一致。
这样这串摘要使可成为验证明文是否是“真身”的“指纹”了。
只有加入数字签名及验证才能真正实现在公开网络上的安全传输。
加入数字签名和验证的文件传输过程如下:发送方首先用哈希函数从原文得到数字签名,然后采用公开密钥体系用发达方的私有密钥对数字签名进行加密,并把加密后的数字签名附加在要发送的原文后面;发送一方选择一个秘密密钥对文件进行加密,并把加密后的文件通过网络传输到接收方;发送方用接收方的公开密钥对密秘密钥进行加密,并通过网络把加密后的秘密密钥传输到接收方;接受方使用自己的私有密钥对密钥信息进行解密,得到秘密密钥的明文;接收方用秘密密钥对文件进行解密,得到经过加密的数字签名;接收方用发送方的公开密钥对数字签名进行解密,得到数字签名的明文;接收方用得到的明文和哈希函数重新计算数字签名,并与解密后的数字签名进行对比。
如果两个数字签名是相同的,说明文件在传输过程中没有被破坏。
如果第三方冒充发送方发出了一个文件,因为接收方在对数字签名进行解密时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,解密出来的数字签名和经过计算的数字签名必然是不相同的。
这就提供了一个安全的确认发送方身份的方法。
安全的数字签名使接收方可以得到保证:文件确实来自声称的发送方。
鉴于签名私钥只有发送方自己保存,他人无法做一样的数字签名,因此他不能否认他参与了交易。
数字签名的加密解密过程和私有密钥的加密解密过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。
数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密。
这是一个一对多的关系:任何拥有发送方公开密钥的人都可以验证数字签名的正确性,而私有密钥的加密解密则使用的是接收方的密钥对,这是多对一的关系:任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。
在实用过程中,通常一个用户拥有两个密钥对,一个密钥对用来对数字签名进行加密解密,一个密钥对用来对私有密钥进行加密解密。
这种方式提供了更高的安全性。
如何用Wireshark查看HTTPS消息里的加密内容
但是HTTPS的通讯是加密的,所以默认情况下你只能看到HTTPS在建立连接之初的交互证书和协商的几个消息而已,真正的业务数据(HTTP消息)是被加密的,你必须借助服务器密钥(私钥)才能查看。
即使在HTTPS双向认证(服务器验证客户端证书)的情况下,你也只需要服务器私钥就可以查看HTTPS消息里的加密内容。
1. 配置Wireshark选中Wireshark主菜单Edit->Preferences,将打开一个配置窗口;窗口左侧是一棵树(目录),你打开其中的Protocols,将列出所有Wireshark支持的协议;在其中找到SSL并选中,右边窗口里将列出几个参数,其中“RSA keys list”即用于配置服务器私钥。
该配置的格式为:,,,各字段的含义为: —- 服务器IP地址(对于HTTPS即为WEB服务器)。
—- SSL的端口(HTTPS的端口,如443,8443)。
—- 服务器密钥文件,文件里的私钥必须是明文(没有密码保护的格式)。
例如: 192.168.1.1,8443,http,C:/myserverkey/若你想设置多组这样的配置,可以用分号隔开,如:192.168.1.1,8443,http,C:/myserverkey/;10.10.1.2,443,http,C:/myserverkey/ req -newkey rsa:1024 -keyout -keyform PEM -out /-outform PEM -subj /O=ABCom/OU=servers/CN=servernameM而且你的服务器私钥文件还在,则可以这样导出服务器私钥明文文件:openssl rsa -in > 执行命令式需要输入私钥的保护密码就可以得到私钥明文文件了。
(2)若你已把丢了,但还有pkcs12格式的服务器证书库文件,该文件当初用类似于以下命令生成的:openssl pkcs12 -export -in -inkey /-out tomcat.p12 -name tomcat -CAfile $HOME/testca/ /-caname root -chain则,你可以用下面命令把服务器私钥从tomcat.p12(pkcs12格式)文件里导出来:openssl pkcs12 -in tomcat.p12 -nocerts -nodes -out 执行命令式需要输入pkcs12的保护密码。
RSA的加密技术
RSA是一种非对称加密技术,也就是说加密密钥和解密密钥是不一样的,而且不能互相推导,是基于大素数分解理论的一种算法。
常用于身份认证,数据签名等方面。
只要密钥不被泄露,到目前为止还无法破解。