密码学(cryptography)一词源自希腊语,意思为“隐藏”及“消息”。它的诞生,早是因为战争中需要传递军事信息而不想被敌人发觉。早在距今两千多年前的罗马战场上,恺撒就用移动字母位置(如本来是A的位置移动到C的位置)的方式来传递军事情报,所以这种加密方法被称为恺撒密码。随着时代的发展,普通人和密码学的关系不再只是从战争片或特工片里观赏,而是逐渐和我们的工作、生活息息相关。尤其是在现实的商业领域中,它作为保护商业机密的利器,越来越被企业所重视。
为了防止信息在传递过程中被盗用或篡改,数千年来人们用了很多方法。从恺撒密码到藏头诗,从隐性墨水到火漆封印,这些传统的方法不断被发现和破解。真正使得密码成为一个学科的,是克劳德·香农(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就诞生了。
IBC,Identity-Based Cryptograph的缩写,就是基于标识的密码体系。IBC是在传统的PKI(公开密钥基础设施)基础上发展而来,除了保有PKI的技术优点外,主要解决了在具体安全应用中,PKI需要大量交换数字证书的问题,使安全应用更加易于部署和使用。
其实早在1984年,以色列科学家Shamir(就是RSA中的那个S)就看到了公开密钥体系比较繁琐的这个问题,早提出了基于标识的密码系统的概念(IBC)。在基于标识的密码系统中,每个实体具有一个标识,比如Email地址或者是身份证号码。用这个标识对应一个公钥,就无需去时刻查询和验证对方的身份了。这样极大地简化了管理密码系统的复杂性。在提出IBC概念的同时,Shamir提出了一个采用RSA算法的基于标识的签名算法(IBS)。但是长时期以来,基于标识的加密算法(IBE)未能找到有效解决方法。
直到2001年,D.Boneh和M.Franklin提出的IBC(BF-IBC)的安全性可以证明,并且有较好的效率,所以让IBC技术开始引起业界的极大反响。随后,基于标识的密码技术在过去几年中得到快速发展。研究人员设计了大量的新密码系统。随着应用的逐渐广泛,相应算法的标准化工作也在逐步展开。IEEE P1363.3的基于标识的密码技术工作组正在进行相关算法的标准化工作,而ISO/IEC已经标准化了两个基于标识的签名算法。
由于IBC的这些特点,美国在金融支付和电子邮件加密、文档加密方面大量已经使用了IBC的相关技术;在国内,中国国家密码管理局2007年组织了国家标识密码体系IBC标准规范的编写和评审工作,形成了中国的自有IBC算法。由多位院士和来自党政军、科研院所的密码专家组成了专家组,对该标准规范在安全性、可靠性、实用性和创新性等方面进行了多次严格审查。2007年12月16日,国家IBC算法标准正式通过了评审。专家们一致认定,该标准拥有独立知识产权,属于国内首创,达到了国际领先水平,并已逐步开始应用在智能密钥、加密邮件、网络安全设备等产品中。
那么,相对于PKI来说,IBC的优势在哪里呢?首先,IBC大大降低了管理成本。如果用PKI系统,拥有10000个用户的一家组织要创建及维护用户的10000个证书。在所有密码操作中,每个用户都可能和证书服务器进行申请、吊销、查询、验证等等工作,同时服务器还要存储这些证书,当持有证书的用户吊销后,甚至可能还需要保留他原来的证书一段时间。这些都给管理中心带来设备、人力即配套的各种投入;而IBC允许用户选择具有唯一性的身份标识(如Email地址、身份证或网络帐号)来作为公钥,并通过可信的中央服务器统一发放私钥,所以即使管理上亿用户,也仅仅是保存一份服务器的私钥即可,所以管理成本大大降低。
IBC技术中发送加密邮件的过程
其次,IBC还具备基于属性的加密的技术特色。企业使用IBC进行安全数据通信时,应用范围可以更加广泛,包括终端到终端,终端到应用,应用到应用的情况。在实际的IBC系统中,公钥可以不仅仅是用户的身份标识,还可以加入用户身份的策略信息来做公钥。下面的例子可以让大家更加清楚地了解这一点:
例如,Alice想发送信息给Bob,但要求只有Bob完成工作项目A之后,才可以解密阅读消息。于是,Alice把她的要求和bob的标识作为公钥加密发送给当Bob。Bob解密时候需要按照Alice制定的策略才能申请获得解密的钥匙。
再举一个有趣的例子。假设征婚网站也用IBC体系构建,某人发出征婚广告的时候,他可以按照诸如“25岁、重庆、女”的标识进行加密,于是只有满足这些条件人才能解密。由此可见,密码学其实也不是一个完全神秘的学科。
第三,IBC的还有一个大优势就是可以做离线的加解密操作。
由于标识即公钥,那么需要和对方通讯的时候,知道对方的标识就可以了。不需要去验证证书的过程,所以可以广泛用在很多没有办法在线查询的场合。试想一下,假设我们的身份证也使用IBC体系构建,那么验证身份证的真伪就无需再联网到公安机关,而直接可以用密码学的方式来验证真伪了。同理,这样的方式可以应用在数字产权保护、文档加密、电子地图等等方面。
不难看出,PKI和IBC各有其技术特点。如果是在需求签署文件之类的操作,交易双方都认为需要找一个公正机构来证明,PKI无疑是好的选择;但如果交易双方是为了加密传递信息,那无疑IBC的方便性就非常明显了。例如在加密电子邮件、加密短信和云安全存储、物联网安全方面,IBC的技术特点将具备不可替代的优势。长远来看,两个体系必将长期共存,相互补充。
IBC是否是必须通过一个中间服务器来发放解密私钥呢?用户双方只需要提供证明身份的标识(公钥)?那如果A知道B的Email,是否就可以获得私钥解密呢?
深圳市奥联科技有限公司副总经理蔡先勇先生
1.IBC必须有一个可信中心来统一管理和发放每个用户的私钥和系统参数。
2.以电子邮件为例,申请IBC的钥匙必须先注册,可信中心会发一封确认邮件到这个邮箱中,激活之后才能下载私钥。
3.如果你只知道我的邮件地址,是不能解密我的邮件的。原因很简单,邮件地址是公钥,可以公开的,如果用公钥加密了,只有私钥才能解密,公钥是解不开的。而你虽然知道我的邮件,却没有我的私钥,除非你连我的邮箱密码都破解了,从中获得了私钥。