为了防止信息在传递过程中被盗用或篡改,数千年来人们用了很多方法。从恺撒密码到藏头诗,从隐性墨水到火漆封印,这些传统的方法不断被发现和破解。真正使得密码成为一个学科的,是克劳德·香农(Claude Elwood Shannon,1916-2001)在1949年发表一篇非常著名的论文“Communication Theory of Secret System”,建立对称密码系统理论基础,“密码学”才成为科学,成为可以用数学公式来证明的安全模型。到了1977年,三个在美国麻省理工学院的数学家Rivest, Shamir, Adleman提出RSA算法,代表着密码学迎来新纪元。从这个时候起,各厂商开始在民用方面进行密码研究,开始充分发挥它的商用价值和社会价值。这种转变也促使了密码学的空前高速发展。到现在,我们其实每一天都涉及到密码学。如使用浏览器时出现的https网页、使用无线路由器时选择的加密方式以及网上银行的各种应用,都和密码学密不可分。
RSA算法有一个重要的理论就是要通讯的双方均使用两把钥匙。一把可以公开(公钥),一把只有自己知道(私钥)。用其中一把用来加密,那另外一把就用来解密。由于公钥是一串无实际意义的数字,这就引来一个问题,谁能证明这把公钥是谁的?于是诞生了PKI密码体系。今天要谈到的IBC密码技术,就是PKI体系的新发展成果。
PKI是一种遵循标准的密钥管理平台,它能够为所有网络应用透明地提供采用加密和数字签名等密码服务所必需的密钥和证书管理。PKI必须具有认证机构(CA)、证书库、密钥备份及恢复系统、证书作废处理系统、客户端证书处理系统等基本部件。
PKI体系其实是目前我们生活中接触到多的一个密码体系了。很多用过网银的用户都有这样的经历:到银行的窗口,提交了自己的身份证信息,签署若干文件之后,银行发一个USBkey,然后就可以用来做网银交易了。这个USBKey,就是重要的一个身份,因为里面存放了储户的私钥和证书。所谓证书,就是经过一个受信任的第三方确认过的公钥。用KEY在网上的操作,就代表了储户个人的签字。
这个过程涉及三个角色:储户、银行、发证书的机构(即受信任的第三方认证中心,Certificate Authority简称CA)。这个过程中,储户和银行之间的密码操作,如果发生什么纠纷,就可以通第三方的机构来证明。只是在国内,申请第三方的证书往往要收费,所以银行和发证书机构往往合二为一,这也是为什么各大银行的KEY不能互用的重要原因之一。
银行和储户在进行信息交流和金融操作的时候,假设储户要确认某一个操作,这些信息就会用KEY里面的私钥进行加密和签名,同时把证书一起提交到银行确认。银行会先验证证书是不是真的,再用来验鉴和解密数据看是否成功,就可以证明这个操作确实是这个储户确认的,反之亦然,储户也可以用这样的方法确认银行的操作。
很复杂吧?每一次信息发送方(无论是用户发出的信息还是银行发出的信息)在发送信息前都需要获取接收方的证书。而且还会去验证证书是不是真的?从安全的角度来看,这个流程并没有问题。但问题是,在即将到来的物联网时代、移动互联网时代,用户的大量增加,这个流程需要CA中心拥有极其庞大的运算、存储与通信能力,·因为全国可能进行的交互式身份验证的量级会是非常庞大的,由此带来的申请、管理、查询、交互等操作,要求CA的建设和投入必须极其巨大。这样的情况下,IBC就诞生了。