服务器证书、数字证书和加解密算法
背景:
项目上需要对接外部银行,涉及到服务器、数字证书、加解密算法等方面的内容,结合开发经历,做一个总结分享。
整体流程可以概括为:依次搞定服务器证书、企业证书,申请加解密的密钥,按照报文协议、加解密算法对接。
SSL/TLS 和服务器证书的重要性
在现代互联网通信中,SSL/TLS协议和服务器证书是确保数据传输安全的重要工具。它们能够有效防止数据在客户端和服务器之间的传输过程中被窃听、篡改或伪造,保护通信的隐私性和完整性。
1. SSL/TLS 协议概述
SSL(Secure Sockets Layer)和其后继者TLS(Transport Layer Security)是广泛使用的网络安全协议,主要用于:
-
数据加密:确保数据传输的隐私性。
-
身份认证:验证通信双方的身份。
-
数据完整性:防止数据被篡改。
随着TLS的发展,目前TLS 1.3成为主流协议,提供更高的安全性和更简洁的握手流程。
2. SSL/TLS 握手过程
在SSL/TLS握手过程中,客户端和服务器会进行一系列的信息交换,以协商加密算法、生成密钥等。这个过程通常包括以下步骤:
-
客户端发起连接:客户端向服务器发送一个“hello”消息,包含客户端支持的SSL/TLS版本和加密套件。
-
服务器响应:服务器回应一个“hello”消息,选择一个加密套件,并发送其证书。
-
客户端验证证书:客户端验证服务器的证书,确保其有效性和可信度。
-
密钥交换:使用选定的加密算法(如RSA、ECDHE等),客户端和服务器交换密钥材料,生成会话密钥。
-
加密通信:使用会话密钥,客户端和服务器开始加密通信。
3. SSL/TLS 的常用算法
SSL/TLS协议结合了多种密码学算法,为安全通信提供全面保障。
3.1 对称加密算法
-
AES(高级加密标准):支持多种密钥长度(128位、192位、256位),性能与安全性优异。
-
ChaCha20:一种高效且安全的对称加密算法,特别适合移动设备。
3.2 非对称加密算法
-
RSA:传统的公钥加密算法,广泛用于数字证书和密钥交换。
-
ECC(椭圆曲线密码学):相比RSA,提供同等安全性的同时密钥更短,效率更高。
3.3 哈希算法
-
SHA-256:确保数据完整性,广泛用于数字签名。
3.4 密钥交换算法
-
ECDHE:基于椭圆曲线的密钥交换协议,支持前向安全性。
4. 服务器证书
4.1 定义
服务器证书是一种用于加密通信的安全凭证,用于验证服务器身份并确保与客户端之间的通信是受保护的。它是由权威的证书颁发机构(CA)或者自签名证书来签发的,其中包含了服务器的公钥以及与该公钥相关联的标识信息。
4.2 作用
HTTPS 中的“S” 指的是“Secure(安全)”,它代表着在 HTTP 协议之上使用了 SSL/TLS 加密通信。而服务器证书则是用于建立安全通信的重要组成部分。
在建立 HTTPS 连接时,客户端和服务器之间的通信将会通过 SSL/TLS 加密来保护数据的安全性。而服务器证书则是用于验证服务器身份,并协商加密参数的一种机制。当客户端发起连接请求时,服务器会将自己的证书发送给客户端,客户端通过验证服务器证书的合法性,确认连接的目标身份,并且利用服务器证书中的公钥来建立安全通信所需的加密参数。
4.3 申请和颁发流程
-
根据自身信息,生成证书DN: CN=117.xx.xx.xxx,OU=SSL-RSA,O=公司名称xx,L=Beijing,ST=Beijing,C=CN
-
通过以上证书DN, 使用OpenSSL 等工具生成CSR(P10)证书
-
填写《服务器证书申请表》,邮件向CFCA提交申请
-
CFCA 收到申请表后,向参与机构经办人发送“序列号” 和“授权码”(两码)
-
参与机构收到两码后,登录 CFCA 数字证书下载平台,申请并下载 SSL 证书
-
将核实通过的 SSL 证书公钥导入 SSL 设备,完成服务器证书配置
名词解释:
什么是DN?
DN(Distinguished Name) 是 证书 中用来唯一标识实体(如个人、组织、设备等)的 名字。它是 X.500 标准的一部分,并广泛应用于 X.509证书 中,作为标识主体(Subject)和颁发者(Issuer)的方式。DN 是证书中一个非常重要的部分,用于区分不同的证书持有者。
DN 是由一系列 属性-值对 组成的,通常使用 逗号 分隔。每个属性代表一个标识符,而值则是该标识符的具体值。常见的属性和它们的值包括:
-
CN(Common Name):常见名称,通常指的是证书持有者的名字或设备的名称。例如,网站的域名
www.example.com
。 -
O(Organization):组织,证书持有者所属的公司或组织的名称。例如,
Example Inc.
。 -
OU(Organizational Unit):组织单位,指的是组织内部的部门或单位。例如,
IT Department
。 -
L(Locality):位置,通常是城市的名称。例如,
Beijing
。 -
ST(State):省份或州。例如,
Beijing
。 -
C(Country):国家,使用两字母国家代码表示。例如,
CN
表示中国。 -
E(Email):电子邮件地址,证书持有者的电子邮件地址(在某些证书中可能包含)。
什么是P10证书?
P10证书实际上指的是 PKCS#10 格式的证书请求文件。PKCS#10(Public Key Cryptography Standards #10)是一个标准,定义了 公钥证书请求(Certificate Request) 的格式。它并不是一个已经签发的证书,而是一个用于向证书颁发机构(CA)申请证书的请求文件。
5. 总结
SSL/TLS协议和服务器证书是确保网络安全通信的关键技术。通过使用适当的加密算法和密钥交换机制,可以保护数据的隐私和完整性,防止数据在传输过程中被截获或篡改。
国密算法
国密算法,全称为国家密码管理局认定的国产密码算法,是一套由中国自主研发的密码技术标准,包括了对称加密算法、非对称加密算法以及杂凑算法等多种算法。具体包括了SM1、SM2、SM3、SM4等算法 。
优点
-
安全性更高:国密算法如SM2提供了与RSA相当的安全级别但所需密钥长度更短,从而提供更高的安全性和更小的计算开销 。
-
效率更高:SM2算法的加密和解密速度通常比RSA快,适合于高并发场景 。
-
国产自主:国密算法是我国自主设计的密码算法,符合国家密码管理政策,有利于保障国家信息安全 。
-
算法公开:部分国密算法如SM2、SM3、SM4等是公开的,便于国内外研究者进行研究和应用 。
需注意的点
尽管国密算法具有上述优点,但在某些情况下仍然可能选择使用国际算法,原因可能包括:
-
国际通用性:国际算法如RSA、AES等在全球范围内得到了广泛的应用和认可,对于一些需要跨国合作或国际标准化的场景,可能会优先选择使用国际算法。
-
成熟度和生态:国际算法由于存在时间较长,拥有成熟的生态系统和广泛的硬件、软件支持。
-
兼容性:现有的许多系统和设备可能已经基于国际算法构建,使用国密算法可能需要进行额外的适配或升级工作。
SM2withSM3
SM2withSM3算法结合了SM2椭圆曲线公钥密码算法和SM3密码哈希算法,主要用于提供数字签名、密钥交换和数据加密等功能,同时确保数据的安全性和完整性。
SM2(非对称加密)
SM2是一种基于椭圆曲线密码(ECC)的非对称加密算法,其安全性基于椭圆曲线离散对数难题。它包括数字签名算法(SM2-1)、密钥交换协议(SM2-2)和公钥加密算法(SM2-3)。SM2算法推荐了一条256位的曲线作为标准曲线,其性能通常快于RSA算法,且在相同的安全强度下,所需的密钥长度更短 。
加解密
1. 密钥生成:
首先生成一对密钥,包括私钥和公钥。私钥必须保密,而公钥可以公开分享 。
2. 加密过程:
使用公钥加密:文本信息通过公钥加密,转换为密文。
加密数据通常转换为特定格式(如Base64编码)以便于存储和传输 。
3. 解密过程:
使用私钥解密:接收方使用私钥对密文进行解密,恢复原始信息。
解密过程需要确保私钥的安全性 。
SM3(哈希算法、杂凑算法)
SM3是一种密码哈希算法,适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成。它对输入长度小于2的64次方的比特消息,生成长度为256比特的哈希值。SM3算法的安全性要高于MD5算法和SHA-1算法,因为它的输出长度更长,且设计更为复杂
签名验签
1. 签名过程:
发送方使用自己的私钥对数据(或数据的哈希值-SM3)进行加密,生成数字签名。
签名随数据一起发送给接收方 。
-
流程:
数据 → [杂凑算法] → 摘要值
→ [私钥加密] → 签名值
→ 数据 + 签名值 → 发送给接收方
2. 验签过程:
接收方使用发送方的公钥对签名进行解密。
如果解密结果与原始数据的哈希值匹配,则验证成功,证明数据未被篡改且确实来自声称的发送者 。
-
流程:
接收方接收 (数据 + 签名值)
→ [杂凑算法] → 重新计算摘要值
→ [公钥解密签名值] → 解密摘要值
→ 比较两个摘要值 → 验证结果
总结:
私钥:签名、解密
公钥:验签、加密
-
tips:
-
平台给我们提供密钥时,一般不会直接提供密钥明文,而是提供一个密钥文件,需要用对应的解密方法解密,才能得到正在的密钥。
-
SM4(对称加密)
SM4是中国国家密码管理局推出的一种对称加密算法,它是一种基于字节的块加密算法,加密和解密过程相同,都是将数据块作为操作单元进行处理。
加解密
1. 密钥生成
密钥长度固定为128位,保证了足够的安全性;将密钥提供给接收方
2. 加密
发送方使用密钥对数据进行加密
3. 解密
接收方使用相同密钥对数据解密
数字信封
数字信封是一种结合了对称加密和非对称加密的加密技术,用于安全地传输数据。
其核心思想是使用非对称加密来保护对称加密的密钥,然后使用这个对称密钥来加密实际的数据。这种方法结合了两种加密方式的优点,提高了数据传输的安全性和效率。
既然已经用了SM2非对称加密,为什么不直接使用SM2加密传输的数据,反而使用SM4加密数据,然后又使用SM2加密SM4的密钥,使步骤更繁琐呢?
主要还是出于性能方面的考虑。
SM4是一种对称加密算法,其加密和解密速度快,适合大量数据的快速处理。
SM2是一种非对称加密算法,其加密和解密过程相对较慢,特别是当数据量较大时,性能比对称加密差。
使用SM4对称加密来保护数据,并将对称密钥通过SM2非对称加密作为数字信封传递,是一种平衡了安全性、性能和灵活性的解决方案。这种方式既利用了对称加密的高效率来处理大量数据,又利用了非对称加密的安全性来保护密钥的传输。这种组合方法在实际应用中被广泛采用,以确保数据传输的安全性和效率。