HTTPS中的INV与VERI机制详解:加密与身份验证双向操作探讨
一、引言
随着互联网技术的飞速发展,网络安全问题日益突出。
HTTPS作为一种安全的通信协议,通过在HTTP上添加SSL/TLS加密层,确保了数据传输过程中的安全性。
在HTTPS中,涉及到两种重要的机制:INV(Invariant)机制和VERI(Verification)机制。
这两种机制在加密和身份验证方面发挥着重要作用。
本文将详细介绍这两种机制的工作原理及其在HTTPS中的应用。
二、HTTPS概述
HTTPS是一种通过计算机网络进行安全通信的协议,它在HTTP协议的基础上,使用了SSL(Secure Sockets Layer)或TLS(Transport LayerSecurity)协议来提供加密和安全保障。
HTTPS的主要目的是确保数据传输过程中的隐私和完整性,防止数据在传输过程中被截取或篡改。
三、INV机制详解
1. 定义与工作原理
INV机制是HTTPS中的不变性机制,它确保了在通信过程中,数据的内容、结构和格式保持不变。
在HTTPS的通信过程中,数据从发送方传输到接收方,无论经过何种网络路径,INV机制都确保数据始终保持原始状态。
2. INV机制的应用
INV机制在HTTPS中的应用主要体现在数据加密和完整性保护方面。
通过对数据进行加密处理,确保数据在传输过程中无法被窃取或篡改;同时,通过验证数据的完整性,确保接收方能够检测到数据在传输过程中是否发生错误或篡改。
四、VERI机制详解
1. 定义与工作原理
VERI机制是HTTPS中的验证机制,它用于验证通信双方的身份。
在HTTPS中,VERI机制通过数字证书、公钥和私钥等技术手段,验证通信双方的身份,确保数据的来源可靠、目的地准确。
2. VERI机制的应用
VERI机制在HTTPS中的应用主要体现在身份验证和授权方面。
通过验证通信双方的身份,确保只有合法的用户才能访问特定的资源;同时,通过授权机制,控制用户对资源的访问权限,防止未经授权的访问和操作。
五、INV与VERI机制的相互关系及在HTTPS中的应用
1. 相互关系
INV机制和VERI机制在HTTPS中相互协作,共同保障通信安全。
INV机制确保数据的完整性、隐私性和不变性,为通信双方提供数据的安全传输;而VERI机制则通过身份验证和授权,确保通信双方的身份合法、可靠。
两者共同构成了HTTPS的安全保障体系。
2. 在HTTPS中的应用
在HTTPS的通信过程中,INV机制和VERI机制的应用贯穿始终。
通过VERI机制验证通信双方的身份,确保参与通信的实体是合法和可信任的;通过INV机制对传输的数据进行加密和完整性保护,确保数据在传输过程中的安全性和可靠性。
同时,两者还相互验证,即通过对数据的加密和验证过程,反过来也验证了对方的身份。
六、结论
HTTPS中的INV机制和VERI机制是保障网络通信安全的重要手段。
通过对数据的加密、完整性保护、身份验证和授权等功能,确保了网络通信的安全性和可靠性。
随着互联网的不断发展,网络安全问题日益突出,对INV机制和VERI机制的研究和应用将越来越重要。
因此,我们需要深入理解和掌握这两种机制的工作原理和应用方法,以更好地保障网络通信安全。
HTTPS请求证书时候的握手是SSL/ TLS 还是TCP的握手?
1. HTTPS是基于SSL安全连接的HTTP协议。
HTTPS通过SSL提供的数据加密、身份验证和消息完整性验证等安全机制,为Web访问提供了安全性保证,广泛应用于网上银行、电子商务等领域。
此图为HTTPS在网上银行中的应用。
某银行为了方便客户,提供了网上银行业务,客户可以通过访问银行的Web服务器进行帐户查询、转帐等。
通过在客户和银行的Web服务器之间建立SSL连接,可以保证客户的信息不被非法窃取。
2.只需要验证SSL服务器身份,不需要验证SSL客户端身份时,SSL的握手过程为:(1) SSL客户端通过Client Hello消息将它支持的SSL版本、加密算法、密钥交换算法、MAC算法等信息发送给SSL服务器。
(2) SSL服务器确定本次通信采用的SSL版本和加密套件,并通过Server Hello消息通知给SSL客户端。
如果SSL服务器允许SSL客户端在以后的通信中重用本次会话,则SSL服务器会为本次会话分配会话ID,并通过Server Hello消息发送给SSL客户端。
(3) SSL服务器将携带自己公钥信息的数字证书通过Certificate消息发送给SSL客户端。
(4) SSL服务器发送Server Hello Done消息,通知SSL客户端版本和加密套件协商结束,开始进行密钥交换。
(5) SSL客户端验证SSL服务器的证书合法后,利用证书中的公钥加密SSL客户端随机生成的premaster secret,并通过Client Key Exchange消息发送给SSL服务器。
(6) SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。
(7) SSL客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已交互的消息)的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL服务器。
SSL服务器利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。
(8) 同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。
(9) SSL服务器计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL客户端。
SSL客户端利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。
SSL客户端接收到SSL服务器发送的Finished消息后,如果解密成功,则可以判断SSL服务器是数字证书的拥有者,即SSL服务器身份验证成功,因为只有拥有私钥的SSL服务器才能从Client Key Exchange消息中解密得到premaster secret,从而间接地实现了SSL客户端对SSL服务器的身份验证。
& 说明:l Change Cipher Spec消息属于SSL密码变化协议,其他握手过程交互的消息均属于SSL握手协议,统称为SSL握手消息。
l 计算Hash值,指的是利用Hash算法(MD5或SHA)将任意长度的数据转换为固定长度的数据。
HTTPS双向验证,如何设置
IIS服务器配置SSL双向认证方法:网页链接nginx配置ssl加密(单/双向认证、部分https):网页链接
如何通过HTTPS方式访问web service
web service在企业应用中常常被用作不同系统之间的接口方式。
但是如果没有任何安全机制的话,显然是难以委以重任的。
比较直接的web service加密方式就是使用HTTPS方式(SSL证书加密)加密连接,并且只允许持有信任证书的客户端连接,即SSL双向认证。
这样就保证了连接来源的可信度以及数据在传输过程中没有被窃取或篡改。
通过HTTPS加密方式访问web service具体方法如下:【准备工作】(1)检查JDK的环境变量是否正确。
本文使用JDK 1.6(2)准备web服务器,这里选用TOMCAT 6.0(3)准备web service服务端和客户端。
【生成证书】这里用到的文件,这里存放在D:/SSL/文件夹内,其中D:/SSL/server/内的文件是要交给服务器用的,D:/SSL/client/内的文件是要交给客户端用的。
1生成服务端证书开始-运行-CMD-在dos窗口执行下执行命令:keytool -genkey -v -aliastomcat -keyalg RSA -keystore D:/SSL/server/ -dnameCN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN -validity 3650-storepass zljzlj -keypass zljzlj说明:keytool 是JDK提供的证书生成工具,所有参数的用法参见keytool –help-genkey 创建新证书-v 详细信息-alias tomcat 以”tomcat”作为该证书的别名。
这里可以根据需要修改-keyalg RSA 指定算法-keystoreD:/SSL/server/ 保存路径及文件名-dnameCN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN 证书发行者身份,这里的CN要与发布后的访问域名一致。
但由于这里是自签证书,如果在浏览器访问,仍然会有警告提示。
真正场景中建议申请CA机构(wosign)签发的SSL证书更安全。
-validity 3650证书有效期,单位为天-storepass zljzlj 证书的存取密码-keypass zljzlj 证书的私钥2 生成客户端证书执行命令:keytool ‐genkey ‐v ‐aliasclient ‐keyalg RSA ‐storetype PKCS12 ‐keystore D:/SSL/client/client.p12 ‐dnameCN=client,OU=zlj,O=zlj,L=bj,ST=bj,C=CN ‐validity 3650 ‐storepassclient ‐keypass client说明:参数说明同上。
这里的-dname 证书发行者身份可以和前面不同,到目前为止,这2个证书可以没有任何关系。
下面要做的工作才是建立2者之间的信任关系。
3 导出客户端证书执行命令:keytool ‐export ‐aliasclient ‐keystore D:/SSL/client/client.p12 ‐storetype PKCS12 ‐storepass client‐rfc ‐file D:/SSL/client/说明:-export 执行导出-file 导出文件的文件路径4 把客户端证书加入服务端证书信任列表执行命令:keytool ‐import ‐aliasclient ‐v ‐file D:/SSL/client/ ‐keystoreD:/SSL/server/ ‐storepass zljzl说明:参数说明同前。
这里提供的密码是服务端证书的存取密码。
5 导出服务端证书执行命令:keytool -export -aliastomcat -keystore D:/SSL/server/ -storepass zljzlj -rfc -fileD:/SSL/server/说明:把服务端证书导出。
这里提供的密码也是服务端证书的密码。
6 生成客户端信任列表执行命令:keytool -import -fileD:/SSL/server/ -storepass zljzlj -keystoreD:/SSL/client/ -alias tomcat –noprompt说明:让客户端信任服务端证书【 配置服务端为只允许HTTPS连接】1 配置Tomcat 目录下的/conf/代码:<Connectorport=8443 protocol=HTTP/1.1 SSLEnabled=truemaxThreads=150 scheme=https secure=trueclientAuth=true sslProtocol=TLSkeystoreFile=D:/SSL/server/ keystorePass=zljzljtruststoreFile=D:/SSL/server/ truststorePass=zljzlj />说明:在里面这段内容本来是被注释掉的,如果想使用https的默认端口443,请修改这里的port参数。
其中的clientAuth=true 指定了双向证书认证。