关于电子保单的那些事儿

年过三十,骤感人生无常,于是上网买了一份保险,保险公司随即发了一份电子保单给我,本以为纸档保单随后就会邮递过来,但好长一段时间过去却始终没有看到,担心受骗之余又查看了一下保险公司的相关说明,原来为了节约成本,这款产品根本就不发纸档保单,说是电子档保单里附有电子签名,具有相同的法律效力。好吧,虽然大概知道有这么个技术,但毕竟与真金白银相关,还是花了点时间详细了解了下原理。

一些概念

  • RSA加密算法:RSA算法生成一对密钥——公钥和私钥,公钥加密的信息只有私钥可以解密,私钥加密的内容则需要通过公钥解开。搞清具体的原理比较烧脑,不做深究,总之,RSA算法是可靠的加密算法;
  • Hash算法:Hash算法将任意长的二进制值转化成固定长度的二进制值,也是一种加密算法,但它有1)不可逆即无法解密;2)明文与密文唯一对应,即两段不同的值(哪怕差异很小)必然生成不同的密文;3)密文紧凑,哪怕1G的文件加密后也只有几个字节。基于以上特点,Hash算法可以生成类似文件指纹(或摘要)的信息。
  • CA:CA机构是中立的用于认证身份的权威机构

电子签名

保险公司为了让用户放心,需要在电子保单上加上电子签名,大概的过程是这样的:

  1. 生成一对密钥(公钥和私钥);
  2. 用Hash算法生成保单的摘要,然后将摘要信息使用私钥加密后与公钥一起附在保单后发给用户;发送给客户的信息实际上包括下列内容:1)保单原文;2)摘要密文;3)解密公钥;
  3. 用户收到保单后用公钥解密密文,然后与保单原文Hash后的信息对照是否一致。

单单完成上面的过程并没有什么作用,因为人人都可以冒充保险公司生成这样一份保单,保险公司大可以不承认。为了解决这个问题,就需要引入CA了,CA认证的过程是这样的:

  1. CA机构也生成一对密钥(公钥和私钥)并将公钥放在自己的官网或者其它权威位置;
  2. 保险公司提供自己的公钥给到CA机构;
  3. CA机构审核确认了保险公司的身份后将保险公司的公钥用CA机构的私钥加密后还给保险公司;
  4. 保险公司将提供给客户的保单中的解密公钥替换成经过CA机构加密之后的公钥。

用户在收到保单上首先需要到网上下载CA机构的公钥,因为这个公钥是公开的所以无法伪造;然后先用CA机构的公钥解密保险公司的公钥,再用解密后得到的公钥解密保单摘要的密文,最后Hash保单原文与解密后的内容对照;这个过程的有效性就保证了保单的来源有效以及内容的完整性。

整个流程就是这样,实际上CA的证书(公钥)通常都内置在操作系统中,用户验证签名的过程也仅仅通过软件自动验证就完成了。