证书

4 1月

证书(certificate)也叫“公钥证书”

为公钥加上数字签名就成了证书,公钥证书(Public-Key Certificate,PKC)就像驾照,由认证机构(Certification Authority,Certifying Authority,CA)施加数字签名。

公钥密码中,接收者生成的私钥公钥对,并不是直接将公钥给发送者,而是到认证机构注册然后将公钥交给认证机构,认证机构给机构打上个数字签名。发送者从认证机构得到带有数字签名的公钥,使用认证机构的公钥来验证数字签名来确认公钥是否合法。

第一步生成密钥对,可由本地软件(如PGP)生成,也可以由认证机构代为生成公钥,通常是到网站上邮箱注册,后续步骤通过网站发送的邮件来完成(相当于用户身份确认)。

证书需要公钥基础设施(Public-Key Infrastructure,PKI),由一些基本要素构成:

  • 用户:包括注册公钥的人,他需要生成密钥对(也可以由认证机构生成),在认证机构注册公钥,向认证机构申请证书,申请作废已注册公钥,解密接收到的密文,对消息进行数字签名。也包括使用已注册公钥的人,他需要验证数字签名,将消息加密后发送给接收者。
  • 认证机构(CA):管理证书,它需要生成密钥对(也可以由用户生成),对注册公钥的用户进行身份验证,颁发证书,作废证书
  • 仓库(repository):保存证书的数据库,也叫证书目录

证书需要有标准规范:

世界上有无数PKI机构,所以证书需要有层级结构:一根认证机构来验证另一个认证机构的公钥,这种关系可以迭代好几层,但总需要一个根CA(root CA),根CA是自签名的(self-signature)。例如:中国总公司(root CA) → 华东区域分公司 → 上海办事处 → 员工A

员工A需要上海办事处颁发的证书,需要从root CA开始,先取得华东区域分公司的证书,带有root CA的数字签名。验证通过后,再取得上海办事处的证书,带有华东区域分公司的数字签名。验证通过后,该证书才有效。

因为证书实际上就是基于数字签名技术,因此针对数字签名的攻击方式对证书攻击仍旧有效,例如中间人攻击,攻击者可以在用户注册时伪造用户注册,例如Jack去注册,攻击者拦截注册请求将名字改成jack(通常是改下大小写或加点下划线等不易被察觉的字符)去注册。但使用认证机构颁发的公钥证书可以降低“中间人攻击”的风险,但世界上不存在绝对的安全,我们会基于多个可信的情报源来判断是否安全。否则深究下去就会引出“信任是如何产生的”这种哲学问题。现实生活中我们都知道银行也可能会破产,但我们仍旧选择将将储蓄存银行,因为不这么做社会就无法运转。

发表评论

邮箱地址不会被公开。 必填项已用*标注