证书——为公钥加上数字签名

公钥证书(Public-Key Certificate,PKC)其实和驾照很相似,里面记有姓名、组织、邮箱地址等个人信息,以及属于此人的公钥,并由认证机构(Certification Authority)施加数字签名。只有看到公钥证书,我们就可以知道认证机构认定该公钥的确属于此人。

公钥证书也简称为证书(Certificate)。

认证机构就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织。认证机构中有国际性组织和政府所成立的组织,也有通过提供认证服务来盈利的一般企业,此外个人也可以成立认证机构。世界上最有名的认证机构当属VeriSign(verisign.com)公司。

证书的应用场景

下面通过证书的代表性应用场景来理解证书的作用。

下图展示了Alice向Bob发送密文的场景,在生成密文时所使用的Bob的公钥是通过认证机构获取的。

认证机构必须是可信的,对于“可信的第三方”,以Trent来表示,

在这里插入图片描述证书的内容
证书是由认证机构颁发的,使用者需要对证书进行验证,因此如果证书的格式千奇百怪那就不方便了。于是人们制定了证书的标准规范,其中使用最广泛的是由ITU(International Telecommunication Union,国际电信联盟)和ISO(International Organization for Standardization,国际标准化组织)制定的X.509规范。很多应用程序都支持X.509并将其作为证书生成和交换的标准组织。

X.509证书大体上包括一下三个部分:

  • 签名前的证书——签名对象的信息
    (1)版本
    (2)证书序列号
    (3)数字签名算法
    (4)证书颁发者
    (5)有效期起始时间
    (6)有效期结束时间
    (7)公钥所有人
    (8)公钥算法
    (9)公钥内容
  • 数字签名算法——对证书签名时所使用的算法
  • 数字签名——对证书施加的数字签名

公钥基础设施(PKI)
公钥基础设施(Public-Key Infrastructure)是为了能够有效地运用公钥而制定的一系列规范和规格的总称。

PKI的组成要素

主要有以下3个:

  • 用户——使用PKI的人
  • 认证机构——颁发证书的人
  • 仓库——保存证书的数据库
  • 用户
    用户包括两种:一种是希望使用PKI注册自己公钥的人,另一种是希望使用已注册的公钥的人
  • 认证机构CA
    认证机构CA是对证书进行管理的人,其具体所执行的操作如下:
    (1)生成密钥对(也可以由用户生成)
    (2)在注册公钥时对本人身份进行认证
    (3)生成并办法证书
    (4)作废证书
  • 仓库
    仓库(repository)是一个保存证书的数据库,PKI用户在需要的时候可以从中获取证书。

在这里插入图片描述证书的层级结构

到这里为止,认证机构已经对用户的公钥进行了数字签名,并生成了证书。接下来用户需要使用认证机构的公钥,对证书上的数字签名进行验证。

那么,对于用来验证数字签名的认证机构的公钥,怎样才能判断它是否合法呢?对于认证机构的公钥,可以由其他的认证机构施加数字签名,从而对认证机构的公钥进行验证,即生成一张认证机构的公钥证书

一个认证机构来验证另一个认证机构的公钥,这样的关系可以迭代好几层。这样一种认证机构之间的层级关系,可以用行政单位的层级来类比

在这里插入图片描述
证书信任链验证过程

假设Bob是村委会的一个成员,他的公钥是由村委会认证机构颁发的

对于村委会认证机构的公钥,则由乡政府认证机构颁发证书

对于乡政府认证机构的公钥,则由县政府认证机构颁发证书,依次类推。

不过这个链条不能无限延伸,总要有一个终点,如果这个终点就是县政府认证机构的话,该认证机构一般就称为根CA(Root CA)。

而对于县政府认证机构,则由县政府认证机构自己来颁发证书,这种对自己的公钥进行数字签名的行为称为自签名(self-signature)

现在假设Alice要验证村委会成员Bob的数字签名,那么Alice需要执行如下步骤。

首先从最高级的认证机构(根CA开始)。如果连根CA的公钥都不合法的话,那么就无法验证证书了,因此我们假设Alice所持有的县政府认证机构的公钥是合法的。

接下来,Alice取得乡政府认证机构的公钥证书,这个证书上面带有县政府认证机构的数字签名。Alice用合法的县政府认证机构的公钥对数字签名进行验证。
如果验证成功,则说明Alice获得了合法的乡政府认证机构的公钥。

再接下来,Alice取得村委会认证机构的公钥证书,这个证书上面带有乡政府认证机构的数字签名。Alice用合法的乡政府认证机构的公钥对数字签名进行验证。
如果验证通过,则说明Alice取得了合法的村委会认证机构的公钥。

最后,Alice取得村委会成员Bob的公钥证书,这个证书上面带有村委会认证机构的数字签名。Alice用合法的村委会认证机构的公钥对数字签名进行验证。
如果验证通过,则说明Alice获得了合法的村委会成员Bob的公钥。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值