加密解密、签名验签、数字签名与数字证书:原理与概念

前言

随着信息技术的飞速发展,数据的安全性、完整性和可用性变得至关重要。在网络安全领域,加密解密、签名验签、数字签名和数字证书等技术被广泛应用,以确保数据的机密性、完整性和可验证性。

CIA三要素

CIA三要素是信息安全领域的核心概念,也是我们在信息社会中必须重视和遵守的基本原则,信息安全领域的专业人员需要综合运用加密技术、访问控制、数据验证、备份与恢复等手段,全面提升信息系统的安全性。

  • 保密性(Confidentiality):确保在数据处理的每一个交叉点上都实施了必要级别的安全防护,并阻止未经授权的信息披露。这是指信息不泄露给未授权的个人、实体、进程,或不被其利用的特性。简而言之,保密性的意义在于保证内容不能泄露,不能被他人所知晓,仅有有权限的人才能够接触到这些信息。

  • 完整性(Integrity):保证信息和系统的准确性和可靠性,并禁止对数据的非授权更改,保持信息内部一致性和外部一致性。完整性是指保卫资产准确和完整的特性,用户、进程或者硬件组件具有能力,能够验证所发送或传送的东西的准确性,并且进程或硬件组件不会被以任何方式改变。

  • 可用性(Availability):指确保服务保持可用状态,已授权实体一旦需要就可以访问和使用的数据或资源的特性。也是在某个考察时间内,系统能够正常运行的概率或时间占有率期望值。

数据在网络传输中的三大风险

  • 窃听:指在网络通信过程中,未经授权的第三方通过技术手段截取、监听和记录传输中的数据。现代计算机网络建立在TCP/IP协议族提供的传输能力上,数据在传输链路上的每个环节都可能被窃听。一旦敏感数据被窃取,可能会导致严重的隐私泄露、商业机密被窃取等问题。

  • 篡改:篡改风险是指数据在传输过程中被修改或破坏的风险。这种风险可能导致数据的完整性和准确性受损,进而影响数据的正常使用。黑客可以利用网络监听、中间人攻击等手段截获并篡改传输中的数据,使其失去原有的意义和价值。例如,在电子商务交易过程中,攻击者可能篡改交易金额或收货地址等信息,导致买卖双方遭受经济损失。

  • 伪装:伪装风险是指攻击者通过伪造身份或冒用他人身份来进行网络攻击或欺诈的风险。攻击者可以伪装成合法的用户或系统管理员,骗取用户的信任并获取敏感信息。例如钓鱼攻击就是一种常见的伪装攻击手段,攻击者通过伪造电子邮件或网站来诱骗用户输入个人信息或进行转账操作。

为了保障数据的保密性、完整性和可用性,需要采取一系列的安全措施和技术手段来防范这些风险。例如数据加密、签名验签、数字签名、数字证书、摘要、哈希函数等技术的应用,本文将初步介绍这些技术。

一、加密解密

原理与概念

加密解密是一种保护数据机密性的技术。加密是将明文信息(即原始数据)通过加密算法转换为密文信息的过程,使得未经授权的用户无法读懂其中的内容。解密则是将密文信息通过解密算法还原为明文信息的过程。

举例

假设A和B需要进行一次安全的通信。A可以使用加密算法将一条消息加密成密文,然后发送给B。B收到密文后,使用相应的解密算法将其还原为原始消息。由于只有A和B知道加密和解密的密钥,因此即使第三方截获了密文,也无法读懂其中的内容,从而确保了通信的机密性。

对称加密

对称加密指的是加密和解密用的是同一个密钥。常见的对称加密算法有:DES、AES、RC5等。

优点: 算法公开,计算量小,加解密速度快,效率高。
缺点: 密钥的分发和保存,也就是在建立安全传输通道之前,如何安全地把密钥分享给接收方,双方需妥善保存密钥。一旦密钥被第三方劫持或泄露,会对数据传输造成风险。

非对称加密

非对称加密是由一对密钥组成,公钥(PublicKey)和私钥(PrivateKey)。 可以用私钥加密,用公钥解密;或者用公钥加密,用私钥解密。非对称加密的通信双方都有自己的密钥对,一般自己会保存私钥,而把公钥分享给接收方。常见的非对称加密算法有:RSA、ECC、DSA等。

优点: 安全性强,公钥传输和管理简便。
缺点: 加解密速度慢,效率低,不适应于大量数据的加解密。

二、哈希(散列)算法 与 摘要

哈希算法(Hash Algorithm)是一种数学函数或者算法,它可以将一段数据或一个文件转换为指定长度的字符串(称为"哈希值"或者简称"摘要")。哈希算法的主要特性包括一致性、高效性、不可逆性和抗碰撞性。常见的摘要算法有MD5、SHA等。

摘要算法的主要用途有:

  • 消息完整性验证(防篡改):发送消息时,将数据与MD5值一起发送,接收者可以通过MD5值来验证接收到的消息是否完整。
  • 安全访问认证:如数据库存储登录密码的MD5值,这样可以保证管理员无法查看到用户密码。
  • 数字签名:常见的场景有对接口参数进行签名,来实现服务端对客户端传输数据的可靠性验证。

需要注意的是,单纯依靠哈希算法不能严格地验证数据真实性。因为在非安全信道中,数据和摘要都存在篡改风险,攻击者在篡改数据时也可以篡改摘要。因此,摘要算法需要配合加密算法才能严格验证真实性。

三、签名验签

原理与概念

签名验签是一种确保数据完整性和可验证性的技术。签名是数据的发送者使用私钥对数据进行加密处理的过程,生成一个独特的签名值。验签则是数据的接收者使用公钥对签名值进行解密处理,以验证数据的完整性和来源。通常签名验签会搭配摘要来使用,因为如果要对一份文件进行签名,加解密处理的时间会很长,效率低,因此通常将文件提取摘要,再对摘要进行签名。

举例

  假设A向B发送一份重要的合同文件。A首先用哈希算法对文件提取摘要值hashA,再使用A的私钥hashA进行签名,生成一个签名值signature,并将签名值与合同文件一起发送给B。

  B收到合同文件和签名值后,用同样的哈希算法对文件提取摘要值hashB,使用A的公钥 对签名值signature进行验签得到验签结果,即hashA。如果hashAhashB匹配,则验签成功,说明合同文件在传输过程中没有被篡改,且确实来自A,从而确保了数据的完整性和来源的真实性。

四、数字签名

原理与概念

数字签名是签名验签技术在各领域的具体应用。其原理主要基于非对称加密技术和数字摘要技术,通过公钥和私钥的配对来实现对数据的签名和验签。数字签名具有鉴权、防篡改、不可伪造性、不可否认性和身份验证等特点。

举例

数字签名在多个领域都有广泛的应用,如电子商务、网上银行、数字文档和电子邮件等。在电子商务领域,数字签名被广泛应用于交易双方的身份验证和交易数据的完整性验证。例如,在支付过程中,消费者可以使用私钥对支付指令进行数字签名,以确保支付指令的真实性和完整性。商家收到支付指令后,使用消费者的公钥进行验签,以验证支付指令的来源和完整性。这样可以防止支付指令被篡改或伪造,确保交易的安全性。

五、数字证书

防止伪装

假如现在有个用户X,他也有一对公私钥,X也可以把公钥分发给接收方,然后和接收方进行通讯,接收方用该公钥去验签解密,一样可以验签成功。那么这种情况,接收方如何确认信息的来源是用户X还是用户A呢?

此时需要引入一个新的概念,数字证书

原理与概念

数字证书是一种由权威的证书颁发机构(CA)颁发的电子证书,用于证明某个公钥与某个实体(如个人、组织或设备等)的身份绑定关系。数字证书包含了公钥、证书持有者的身份信息、证书颁发机构的签名等信息。

数字证书通常包含以下信息:

  • 证书持有者的身份信息:如名称、电子邮件地址、组织信息等。
  • 证书持有者的公钥:用于非对称加密和数字签名验证。
  • 颁发机构(CA)的信息。
  • 版本:证书的版本信息。
  • 有效期限:证书的生效日期。
  • 证书序列号:唯一标识证书的编号。
  • 数字签名:证书颁发机构(CA)使用自己的私钥对证书进行的签名,以确保证书的真实性。
  • 签名算法:用于对数字证书进行签名的哈希算法。

属性

  • 证书DN,X.509证书使用DN(Distinct Name)来标识一个实体,其功能类似于我们平常使用的ID,可以在制证过程中和证书属性中查看
  • 证书SN(Serial Number),证书序列号是证书的唯一标识。和DN的区别是,当发生换证、补发情况时,DN是相同的,而SN是不同的。
  • 证书CN

举例

在SSL/TLS协议中,数字证书被用于实现安全的网络通信。当客户端与服务器建立SSL/TLS连接时,服务器会向客户端发送其数字证书。客户端通过验证证书的签名和证书颁发机构的信任链来确认服务器的身份和公钥的有效性。一旦验证通过,客户端和服务器就可以使用公钥密码学技术进行安全的通信,确保数据的机密性、完整性和可验证性。

证书颁发过程

  1. 证书申请者(持有者)生成一对密钥(公钥私钥)。
  2. 准备证书签名请求(CSR),其中包含公钥和身份信息。
  3. 生成CSR后,将其提交给选择的证书颁发机构(CA)。
  4. CA会验证CSR中的信息,并使用CA的私钥对证书的摘要进行签名,生成数字签名,以确保证书的真实性。
  5. CA将数字签名附加到数字证书上,颁发给证书申请者。

证书验证过程

  1. 证书使用者通过某种途径(持有者提供)获取该证书,其中包括证书元数据和数字签名,使用相同的哈希算法对证书元数据生成摘要hashA
  2. 通过安全的方式获取CA的公钥,用此公钥对数字签名进行验签,获得解密后的hashB
  3. 对比两个摘要hashAhashB,如果相同,表示证书合法,可以信任并使用该证书中的信息(如持有者的公钥)。

如何安全得获取CA公钥

CA也有可能被伪装,我们如何确保获取的CA的公钥是真实安全的?

根证书: 是由权威的机构 Root CA 自签名生成的,通常直接安装在操作系统内,对根证书是无条件信任,否则信任链无法终止。

证书链: 证书一层套一层的链式关系,上层证书给下层证书颁发证书和数字签名,下层证书找上层证书认证,最后认证到根证书。

证书使用者可以通过根证书获取下层证书的公钥,再通过下层证书的公钥验签得到安全的次下层公钥,通过CA颁发证书的层级认证,直至验证证书持有者的证书(最终实体证书)。

六、Ukey

原理与概念

Ukey又称USBKey,结合了现代密码学技术、智能卡技术和USB技术,是新一代身份认证产品。UKey作为数字证书的存储介质,可以保证数字证书不被复制,并可以实现所有数字证书的功能。

USBKEY具备随机数生成、对称/非对称密钥生成、对称/非对称加解密计算、消息鉴别码计算、HASH计算等功能。本质上,USBKEY是提供了一个安全容器,用于保护密钥及实现密钥的安全计算。

总结

在实际应用中,数据传输通常会将非对称加密和数字签名搭配使用,发送方A 使用 接收方B 的公钥B-PublicKey对原始数据进行加密(防窃听)得到加密数据,同时使用自己的私钥A-PrivateKey对原始数据的摘要进行签名(身份认证和防篡改),并将加密数据和数字签名一同发送给接收方。接收方在收到数据后,使用接收方的私钥B-PrivateKey将加密数据进行解密得到原始数据,接收方使用CA公钥对数字证书进行解密得到发送方公钥A-PublicKey,如何使用A-PublicKey对数字签名进行验签。此举防范了上文提到的三大风险,加密数据防窃听,数字签名防篡改,数字证书防伪装。

总结来说,加密解密、签名验签、数字签名和数字证书等技术在网络安全领域发挥着至关重要的作用。它们通过保护数据的机密性、完整性和可验证性等,为网络通信、电子商务等应用提供了坚实的安全保障。

相关推荐
小小小小宇10 分钟前
LLM 长期记忆构建
前端
lichenyang45322 分钟前
从 Express 老项目到 NestJS + Docker:一次车辆管理系统的渐进式重构
前端
Momo__2 小时前
VueUse createReusableTemplate —— 单文件组件内的模板复用神器
前端·vue.js
程序员小富2 小时前
我开源了一个开发者专属的智能 JSON 工具,得到了媳妇高度认可
前端·vue.js·后端
小小小小宇2 小时前
程序员如何给 LLM 装工具以及看懂推理过程
前端
写代码的皮筏艇2 小时前
React中的forwardRef
前端·react.js·面试
槑有老呆2 小时前
花三个月工资请了个 AI 程序员,结果它连青岛啤酒股价都查不了
前端
风骏时光牛马2 小时前
Verilog开发常见问题汇总解析
前端
子兮曰2 小时前
AI Coding Method Map:一张图看懂 AI 编程的完整链路
前端·人工智能·后端