当前位置 博文首页 > 司夏的博客:信息摘要和数字签名、公钥基础设施及数字证书

    司夏的博客:信息摘要和数字签名、公钥基础设施及数字证书

    作者:[db:作者] 时间:2021-07-29 09:49

    信息摘要和数字签名

    使用高强度的密码技术可以保证数据的机密性。然而,密码算法的运行速度较慢,如果数据的价值(比如卫星拍摄的视频、图像或声音等数据)不值得用密码技术对其进行保护,而只需保证其完整性时,人们迫切需要一种技术能实现高速的完整性鉴别。同时,为了防止发送信息的一方否认曾经发送过信息,也需要一种技术来鉴别信息确实发送自某个密钥持有者。信息摘要和数字签名可以满足这两方面的需求。

    信息摘要

    信息摘要的目的是将信息鉴别与数据保密分开,其基本设想是:发送者用明文发送信息,并在信息后面附上一个标签,允许接收者利用这个标签来鉴别信息的真伪。

    用于鉴别信息的标签必须满足以下两个条件:
    第一,能够验证信息的完整性,即能辨别信息是否被修改;
    第二,标签不可能被伪造。

    为了辨别信息是否被修改,可以将一个散列函数作用到一个任意长的信息m上,生成一个固定长度的散列值H(m),这个散列值称为该信息的数字指纹,也称信息摘要(MesaeDigest, MD)。信息的发送者对发送的信息计算一个信息摘要M1,和信息一起发给接收者:接收者对收到的信息也计算一个消息摘要M2,如果M2等于M1,则验证了信息的完整性,否则就证明了信息被篡改了。为了保证标签不可能被伪造,发送方可以用密码技术对信息摘要M1进行加密保护,得到加密后的信息摘要C,接收方对C进行解密恢复M1,再与信息摘要M2比较,从而判断信息的完整性。加密后的信息摘要也称为信息鉴别标签。

    用于信息鉴别的散列函数H必须满足以下特性:

    1. H能够作用于任意长度的数据块,并生成固定长度的输出。
    2. 对于任意给定的数据块x,H(x)很容易计算。
    3. 对于任意给定的值h,要找到一个x满足H(x)=h,在计算上是不可能的(单向性)。这一点对使用加密散列函数的信息鉴别很重要。
    4. 对于任意给定的数据块x,要找到一个yx并满足H(v)=H(x),在计算上是不可能的,这一点对使用加密算法计算信息鉴别标签的方法很重要。
    5. 要找到一对(x,y)满足H)=H(x),在计算上是不可能的。

    目前使用最多的两种散列函数是MD5和SHA序列函数。MD5的散列码长度为128位。SHA序列函数是美国联邦政府的标准,如SHA-1散列码长度为160位,SHA-2散列码长度为256位、384位和512位。

    数字签名

    数字签名(Digital Signature)是指用户用自己的私钥对原始数据的信息摘要进行加密所得的数据,即加密的摘要。信息接收者使用信息发送者的公钥对附在原始信息后的数字签名进行解密后获得信息摘要M1,并与原始数据产生的信息摘要M2对照,便可确信原始信息是否被篡改。这样就保证了信息来源的真实性和数据传输的完整性。

    数字签名算法常用RSA公钥算法实现。保证信息完整信的数据签名及完整性验证过程如图所示。

    为了对信息保密,通常将公钥密码技术和对称密码技术结合起来使用。在发送方A随机生成一个对称密码算法的密钥K,然后用K对信息加密得到密文C并生成密文的数字摘要M,接着用A的私钥对K和M签名,将密文C和签名发送给接收方B。接收方B进行相反的操作,就可以实现信息的保密传输及完整性验证。

    公钥基础设施及数字证书

    为了在Internet上广泛使用密码技术,必须保证密钥能够通过公共网络安全地传输到通信的各方。公钥密码体制是传递密钥的最佳方式,其前提是确信拥有了对方的公钥。然而,通信双方很难确信获得了对方的公钥。

    考虑如下场景:

    1. B和A生成一对公/私钥,各自保存私钥,通过网络把公钥发送给对方;
    2. B用A的公钥加密一个文件并发送给A;
    3. A用私钥解密文件,获得原始文件。

    问题: 如果人侵者监视B和A之间的网络通信,把B和A的公钥保存下来,并伪造B和A的公/私钥,将伪造的公钥分别发送给A和B,则B和A都以为获得了对方的公钥。然而,真实的情况是:A与B拥有的是入侵者伪造的公钥,A与B之间的通信内容被人侵者窃取了。

    为了解决该问题,可以使用基于可信第三方的公开密钥基础设施(Public Key Infrastructure)方案。公开密钥基础设施简称公钥基础设施,即PKI。PKI通过数字证书数字证书认证机构(Certificate Authority,CA)确保用户身份和其持有公钥的一致性,从而解决了网络空间中的信任问题。

    PKI的定义和组成

    PKI是一种利用公钥密码理论和技术建立起来的、提供信息安全服务的基础设施。PKI的目的是从技术上解决网上身份认证、电子信息的完整性和不可抵赖性等安全问题,为网络应用(如浏览器、电子邮件、电子交易)提供可靠的安全服务。PKI的核心是解决网络空间中的信任问题,确定网络空间中各行为主体身份的唯一性和真实性。

    PKI系统主要包括以下6个部分:证书机构(CA)、注册机构(RA)、数字证书库、密钥备份及恢复系统、证书作废系统、应用接口(API)。

    (1)证书机构证

    书机构也称为数字证书认证中心(或认证中心),是PKI应用中权威的、可信任的、公正的第三方机构,必须具备权威性的特征,它是PKI系统的核心,也是PKI的信任基础,它管理公钥的整个生命周期。CA负责发放和管理数字证书,其作用类似于现实生活中的证件颁发部门,如护照办理机构。

    (2)注册机构

    注册机构(也称注册中心)是CA的延伸,是客户和CA交互的纽带,负责对证书申请进行资格审查。如果审核通过,那么RA向CA提交证书签发申请,由CA颁发证书。

    (3)数字证书库

    证书发布库(简称证书库)集中存放CA颁发的证书和证书撤销列表(Certificate RevocationList, CRL)。证书库是网上可供公众查询的公共信息库。公众查询目的通常有两个:得到与之通信的实体的公钥;验证通信对方的证书是否在黑名单中。
    为了提高证书库的使用效率,通常将证书和证书撤销信息发布到一个数据库中,并用轻量级目录访问协议(LDAP)进行访问。

    (4)密钥备份及恢复系统

    数字证书可以仅用于签名,也可仅用于加密。如果用户申请的证书是用于加密的,则可请求CA备份其私钥。当用户丢失密钥后,通过可信任的密钥恢复中心或CA完成密钥的恢复。

    (5)证书撤销系统证书

    由于某些原因需要作废时,如用户身份姓名的改变、私钥被窃或泄露、用户与所属企业关系变更等,PKI需要使用一种方法警告其他用户不要再使用该用户的公钥证书,这种警告机制被称为证书撤销。证书撤销的主要实现方法有以下两种:一是利用周期性发布机制,如证书撤销列表(Certificate Revocation List,CRL);二是在线查询机制,如在线证书状态协议(Online Certificate Status Protocol,OCSP)。

    (6)应用接口

    为了使得各种各样的应用能够以安全、一致、可信的方式与PKI交互,PKI提供了一个友好的应用程序接口系统。通过API,用户不需要知道公钥、私钥、证书或CA机构的细节,也能够方便地使用PKI提供的加密、数字签名等安全服务,从而确保安全网络环境的完整性和易用性,同时降低管理维护成本。

    数字证书及其应用

    数字证书是用户身份和其公钥的有机结合,实际上是一个计算机文件。目前最常用的证书是X.509格式的证书,其结构如下图所示。

    在这里插入图片描述

    X.509证书有3个版本,后续版本比前一版本增加了若干个字段,目前使用的是第3个版本。

    1. 版本:标明X.509公钥证书所使用的版本。
    2. 序列号:列出证书序列号码,它在同一个证书机构内不能重复使用。
    3. 签名算法名称:列出证书机构给证书加密所使用的算法名称,如shaIRSA表明证书机构将用SHA-1散列函数求出公钥证书的散列值,然后用RSA将散列值加密。
    4. 签发者:列出证书签发者的标准名称。
    5. 有效期:列出证书的有效期,它包含起始日期和终止日期两个日期。
    6. 用户名:列出证书拥有者的姓名或名称。
    7. 用户公钥信息:列出公钥的算法名称和公钥值。
    8. 签发者唯一ID(仅第2版)。
    9. 用户唯一ID(仅第2版)。
    10. 扩展项目:列出其他有关信息(仅第3版)。
    11. 数字签名:列出经证书机构私钥加密的证书散列值。

    对于大规模的应用,数字证书的签发和验证一般采用层次化的CA,如图所示。

    在这里插入图片描述

    用户Alice和Bob的数字证书从第三级CA获得。若Alice要向Bob发送加密的信息,则首先从证书库(或Bob)中获得Bob的证书,然后按上图b的步骤验证证书的真伪。比如,Bob的证书是B11签发的,为了验证Bob的证书,需要获得B11的公钥证书以验证Bob证书的签名是有效的,这又涉及B11的公钥证书的验证,依次类推,验证过程在根CA中结束。根CA的证书是自签名的证书,该证书内置在操作系统中,或通过可信的途径导人(比如,开通建设银行的网银从柜台获得一个U盘,通过该U盘的软件导人网银证书),自签名的证书不必验证。

    通过证书的逆向验证可以验证双方数字证书的真伪,从而可以确信自己获得了对方的公钥,这就建立了可靠的信任关系,以后的通信就以双方的公钥为基础,从而建立起安全的通信环境。

    cs