在密码技术机密性、完整性、真实性、不可否认性四大功能中,从实现技术角度来看,密小白认为实现方式最丰富、涉及技术种类最多、而且应用也最广泛的,算是身份鉴别功能了。当然,基于对称密码、杂凑密码、零知识等密码技术都可以进行身份鉴别,但基于非对称密码(也称公钥密码)进行身份认证在当下最为常见,因此,我们会来聊一聊基于公钥的身份鉴别。
一、身份鉴别方式概述
身份鉴别的实质就是证明“你就是你”。宏观上讲,身份鉴别的方式有以下几类:
所知(What you know):也就是通过只有你知道,而别人不知道的信息来验证你的身份。比如“天王盖地虎,宝塔镇河妖”这样的口谕,比如你的互联网邮箱的口令。在基于所知进行身份鉴别,除了平常要保管好“所知”之外,技术的关键还在于如何保证既能通过出示“所知”来证实自己身份,而这个“所知”又不会被窃取。
所有(What you have):也就是通过只有你才持有的东西来验证你的是身份。比如:你持有的信用卡、身份证等。基于“所有”进行身份鉴别,首先要避免“所有“的丢失,同时鉴别技术要能防止“所有”被假冒。
所是(What you are):也就是“天生具有”的东东来证实你的身份。比如指纹、人像、声纹、DNA等各种生物特征。基于“所是”进行身份鉴别,需特别关注一个问题,由于“所是”往往与生俱来,难以再造,因此,需特别防止在鉴别过程中泄露“所是”信息。
某种技术的复合运用,或者以上二者或三者的组合运用。
无论采用哪种方式,密码技术在其中几乎都不可或缺。“所知”和“所是”方式中,密码是保护口令和生物特征的重要手段,也是不出示“所知”但能向对方证明自己“所知”的独门绝技(零知识证明技术);在“所有”方式中,几乎全部身份鉴别协议都是基于密码技术来进行的。因此,可以说当今网络信息系统中,几乎所有身份鉴别方式都离不开密码技术。
从密码技术自身来看,基于对称密码、杂凑密码、零知识等密码技术都可以进行身份鉴别,但基于非对称密码(也称公钥密码)进行身份鉴别在当下最为常见。
二、基于公钥的身份鉴别基本原理
在公钥密码体制中,一个用户有两把钥匙:一把为公钥,可以公开;另一把为私钥,用户私有。在基于公钥的身份鉴别技术中,用户是通过自己掌握的一把私钥来证明自己是谁。
不过,虽然一把私钥仅对应一把公钥,但这把公钥代表的身份信息是什么呢?也就是上图中的第2步,如何将用户的公钥跟身份标识和信息对应起来呢?这个方法就很有讲究了,不同的对应方法,就是不同的基于公钥的身份鉴别技术。
三、基于证书的身份鉴别
本号已经对基于证书的PKI体系进行了简介,有需要的请参加“专题汇集四:聊聊CA系统”。
PKI体系中将用户公钥与身份标识和信息绑定的方法,就是找一个可信的CA中心把两者放一起进行签名,然后以身份证书的形式发出来,这样,只要验证了CA签名的真实性,就能确信证书里面的公钥的确是某用户所有,从而验证用户私钥所代表的身份。而且,身份证书中不仅包括公钥和用户身份标识,还可以包含用户身份相关的属性信息。逻辑联系如图所示:
基于数字证书进行身份验证,需要以下内容进行验证:
证书合法性:用自己信任的CA公钥证书验证,确认该证书是你信任的CA签发的;
证书有效性:确认证书在有效期内,该信息通常包含在证书里面;确认该证书是否被撤销,需要到CA系统中进行在线查询CRL吊销列表;
用户真实性:确认用户是否持有该公钥对应的私钥。
基于数字证书的身份鉴别体系,在证书申请阶段,证书里面绑定的身份信息需要审核;在系统管理维护阶段,需要对用户信息/证书撤销等内容进行管理;在应用阶段,身份验证的技术环节较多,且不太直观,要求应用开发者具备一定的密码专业知识。另外,由于运营CA系统的建设运营要求比较严格,因此,很多用户都认为基于PKI的CA系统是公钥认证体系中相对复杂的路线。
四、标识公钥 VS 身份公钥
为了降低公钥系统中密钥管理和使用的复杂性,Shamir在1984年提出了基于标识的密码技术(Identity-Based Cryptography – IBC):即用户的标识就可以当作用户的公钥,更加准确地说,用户的公钥可以从用户的标识和系统指定的一个方法计算得出。这样,用户公钥自身就可以代表用户标识,不需要其它的技术手段来进行绑定。逻辑联系如图所示:
标识公钥的技术细节,密小白也不擅长。下面仅从应用角度对对二者特点进行比较:
序号 | 特征点 | 标识公钥IBC | 证书公钥PKI |
1 | 公钥与身份标识的绑定方式 | 公钥即身份标识本身,比如邮箱地址、手机号、身份证号等唯一标识 | 由可信第三方CA对“公钥+身份标识+其它信息”进行签名 |
2 | 公钥的分发 | 双方在信息交互过程中已经获知对方的身份标识,无需通过其它途径来分发公钥 | 信息交互双方要验证对方身份,需要通过证书交换、证书查询、证书导入等分发方式得到对方的公钥证书 |
3 | 用户私钥的产生 | 必须由密管中心产生,然后再分发给用户。因此,用户必须无条件信任密管中心。 | 私钥可以由用户自己产生,CA只需要知道用户的公钥,就可以对签发用户证书。用户知道即使是CA中心的密管中心也不知道用户私钥,不可能假冒自己。 |
4 | 密钥对的撤销方式 | 当发生私钥泄露等安全风险时,直接废弃原身份标识符就相当于撤销了原公钥。通常不需要一个中心统一发布撤销的标识符信息,由应用在信息交互时沟通身份标识符相关信息。 | 通过证书吊销列表的方式来发布证书撤销信息,因此,需要一个在线的证书查询服务来提供支撑。这也是基于证书的身份验证过程中为什么离不开在线服务的主要原因。 |
5 | 身份标识符的撤销 | 过程同上。此时,原身份标识符撤销停用,原用户如果在系统中申请新的密钥对,则需要使用新的身份标识符。 | 原证书撤销时并不等同于废止了用户原身份标识符。用户在申请新证书时,可以使用原身份标识符,也可以使用新的身份标识符。 |
6 | 密钥对更换(原身份标识符保留) | 不具有该能力。 | 用户可以继续沿用原身份标识符,重新申请一个数字证书。 |
以上是密小白当前阶段对IBC和PKI技术特性的理解。从应用场景来说,有以下认识,不一定正确和全面,欢迎各位继续探讨:
(1) 由于上表的特点1和4,PKI需要一个在线的查询服务来对证书的在用状态提供支撑,因此,被认为PKI证书的管理过程复杂,对离线应用的支持也不好;而IBC具有特点2的无需分发公钥的优势,在用户的标识符管理上就简便很多;
(2) 根据上表的特点3,IBC的私钥由中心产生,因此,IBC的应用场景需要对中心无条件的信任,也就是无条件地相信中心不会滥用私钥,比如组织内部的电子邮件加密系统。PKI在应用中私钥可以由用户端产生,中心也无法获知,因此,互联网上的电子邮件系统更适合选用PKI;
(3) 根据上表的特点5和特点6场景,IBC无法在保留原身份标识符的前提下实现用户密钥对的撤销或更新,也就是说换密钥就需要换用户标识符。当用户是物品时,一般只需要知道真伪即可,很少有更换密钥的需求;但当用户是人员时,更换人员的身份标识符(比如手机号)是非常不方便的,有时(比如身份证号)甚至是不可行的。因此,IBC更适合物联网场景下对物品身份真伪的鉴别。
五、无证书公钥
1、无证书公钥的提出
从应用上看,虽然标识公钥不需要繁琐的证书管理,但由于私钥托管、换密钥就必须换标识符(具体分析参见上篇)的使用特点,使得标识公钥的应用场景受到了一定的限制。
为了克服私钥托管问题,密码学家2003年首次提出了“无证书(Certificateless)”公钥密钥的概念,同样不需要证书,但也克服了私钥托管的弊端。随后有系列“无证书“公钥密码方案被设计出来。
2、无证书公钥的原理探讨
这么神奇的无证书公钥,既不需要证书来绑定标识符和公钥,又能避免中心知道私钥,它是怎么做到的呢?
先说公钥与标识符的关系:无证书公钥中,一个实体的公钥由两部分组成,除了实体标识符之外,还需要密管中心分发的一个可公开的个性化参数。也就是说,标识符只是公钥的一部分,实体密钥丢失后,不换标识符,也可以完成密钥的更新。不过,在网络通信中,由于还需要一个个性化的公钥参数才能算出完整公钥,因此,这个公钥参数该如何分发管理呢?是不是也有点繁琐?
再说私钥的组成:一个实体的私钥也是两部分组成,一部分必须由密管中心产生,另一部分可以由实体自己产生并保存。也就是说,即使密管中心,也无法获得实体的完整私钥。
3、无证书公钥的应用特点
看到这儿,您一定会问,“无证书公钥“似乎兼具标识公钥和证书公钥的优点,又避开了二者的缺点。看上去很完美啊,这么好的一个技术,2003年就提出来了,为什么现在仍然没有大规模普及应用呢?为什么我们最常见的仍然是证书公钥密码体制的相关产品和系统呢?
本想列表对三类公钥密码的应用特点再次进行分析,但考虑到分析结果可能会与“百度“出来的很多文章有较大差异,并可能涉及厂商产品,因此,密小白仅笼统地说点个人分析体会。
没有一种技术是完美的,“尺有所长、寸有所短“的道理是普世的。证书公钥、标识公钥和无证书公钥,三者各有长短,离开应用场景的上下文来独立评述它们的优劣,是不客观不可取的。稳妥的做法是分析既有和扩展应用场景中的身份鉴别和业务保护相关需求,结合现有安全基础和管理维护条件,开展有针对性的设计。
声明:本文来自商密知识,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。