长期以来,密钥总是存储在一个防窜扰的硬件中,用户通过自己的生物特征或者自己设定的口令词来通过身份认证,进而获取密钥,进行相应的密码操作。但是道高一尺、魔高一丈,所有的硬件的防窜扰性能都不是绝对的,因此这样的密钥存储仍然有风险。如果根本不就不存储密钥,而是在使用时实时生成密钥,就消除了密钥存储的风险。所以当前密码学的一个研究热点是如何从用户的生物特征中实时地提取出密钥,这样就可以同时达到身份认证和密钥产生两个目的。
 
  信息安全指的是防止非授权用户对信息进行窃取和篡改。传统的方法包括:物理保护、人员管理、法律手段等。但是随着信息技术的发展和需要,我们需要寻求自动的管理和更高的技术方法,而密码学就是保障信息安全的重要技术手段之一。人类对密码学的研究和应用已有几千年的历史,它是一个古老但又不断发展进步的学科。随着电子时代的到来,电子商务的兴起,密码技术在国家科技发展中的位置越来越重要。它主要保障以下的安全需求:
 
  保密性(Confidentiality):防止非授权用户读取一些机密信息;
 
  数据完整性(Data Integrity):防止非授权用户篡改信息;
 
  认证性(Authenticity):防止非授权用户伪造消息、假冒合法用户发送信息;
 
  不可否认性(Non-repudiation):防止信息的发送者事后否认自己的行为;
 
  访问控制(Access Control):保证数据库存放信息的安全。
 

主要的密码技术

  1.单钥密码体制  又称对称密码体制。在单钥体制中,信息的发送方Alice和接收方Bob共享一个密钥,即:加密密钥和解密密钥是相同的(或者可以互相推算),只有拥有密钥的用户才可以对消息进行加密或解密。根据加密的方式又可分为分组密码和流密码,分组密码指的是将明文分成等长的块,分别对明文块进行加密,而流密码则是指明文按比特进行加密。单钥体制的优点是速度很快,但是,由于单钥体制要求任意两个用户间都必须共享密钥。那么,在一个具有n个用户的系统中则需要n(n-1)/2个密钥。密钥产生、分配、存储、销毁等密钥管理非常复杂。
 
  2.公钥密码体制  又称为双钥密码体制,或非对称密码体制。它克服了单钥体制中密钥管理代价太大的缺点,特别适用于网络体系中,它的出现是密码学研究的重大突破,是现代密码学诞生的标志之一。公钥密码体制中,系统的每个用户都具有两个密钥:一个是公钥,可以公开发布,另外一个是私钥,由用户自己保存。任何一个用户Alice都可以利用Bob发布的公钥对明文进行加密得到密文;而用Bob的公钥加密所得的密文也只有Bob的私钥可以解密。公钥密码体制的密钥管理相对单钥体制而言简单,但是一般的公钥算法的计算复杂度都很高,运行速度很慢。所以公钥密码体制只用来传送单钥密码体制中两个用户所共享的密钥。因此一般的用法是:对大量的数据采用单钥密码体制进行加密以保证速度,而单钥密码体制中所涉及的密钥则采用公钥密码体制来传送。
 
  3.数字签名体制  数字签名是处理电子文档签名的一个有效方法。它的运行机制类似于公钥密码体制,用户Alice对一个电子文档M进行签名时,首先将其用Hash函数进行压缩得到H(M),然后利用用户自己的私钥对Hash值H(M)进行签名,得到签名S。任何用户都可以利用Alice的公钥来验证Alice的签名S和原文档M之间的签名关系是否成立。数字签名可以保证数据来源的认证性,并保证数据的完整性,还可以保证发送方的不可否认性。但是其缺点与公钥加密体制一样,速度较慢。
 
 

利用:smart卡进行用户认证示例

 

利用用户模糊保密数据进行密钥提取

 

  4.密钥的产生和传递  密码学中著名的Kerckhoff准则说:“一个密码系统的安全性都应该基于密钥的安全性,而不是基于算法的细节的安全性”。因此,一个好的密码系统的算法细节应该是可以公开的,只要密钥保密就可以保证系统的安全性。问题是,什么样的数据才能充当密钥的角色呢?答案是随机数!只有敌人不能预测的随机数据才能充当密钥这一重要角色。然而如何产生可以充当密钥的随机数呢?任何确定性算法输出的数据都不可能是随机的,所以密码学的研究的一个重要方向就是设计一个能产生伪随机数的算法。“伪随机”指的并不是真正随机的,但是其统计特性与真正随机数不可区分。
 

基于生物特征的密钥保存

  在一个密码系统中,用户的密钥起着异乎寻常的重要地位:在加密系统中只有掌握合法密钥的用户才能执行解密操作;而在签名系统中也只有掌握合法私钥的用户才能产生有效签名。随着越来越多的密码组件开始应用于移动设备等安全性较差的环境中,密钥泄漏在所难免――与破译解密码系统相比,攻击者直接盗取用户的密钥要容易得多。对于一个密码系统说,密钥的泄漏是一个毁灭性的灾难,因为它意味着系统安全性的完全丧失。因此,密钥如何产生和保存是一个重要的研究方向。
 
  但是,并不是任意的数据都可以做密钥来用,只有概率均匀分布的字符串才能作为密钥使用。但是实际环境中,如何产生、存储、可靠地恢复密钥?这是比较难解决的一个实际问题。一个常见的解决方法是:将用户的密钥存在smart卡中,当用户要使用smart卡进行数据加密或数字签名等密码操作时,他可以利用其生物特征进行认证,或者利用用户口令进行认证。认证通过后,smart卡就可以代理他进行一系列的密码运算。利用人的生物特征如指纹、虹膜扫描、或者用户所设定的口令作为认证手段,在系统中认证个体,可以使合法的用户进行符合其权限的操作,见图1。
 

基于生物特征的密钥提取

  上面介绍的是一种应用极为普遍的认证方法,有如下的共同特征:(1)无论是指纹数据或者虹膜扫描数据,还是用户的口令词,都是保密数据,但是这些数据的概率分布并不均匀,因此我们称其为部分保密的数据(这样的数据不能直接用作密钥)。(2)指纹数据或者虹膜扫描数据等生物特征数据具有不可精确重现的性质,同一个用户每次产生的生物特征数据都不尽相同,误差不可避免。
 
  我们抛开了传统的密钥产生和存储方法,并不是将密钥预先产生后存储在硬件中,而是研究如何实现系统不存储密钥情况下,利用生物特征或口令词这种部分保密的而且是每次产生都有误差的“模糊保密数据”来实时地产生密钥。研究一种密钥生成系统,使得用户只需要提供一些部分保密的“模糊数据”,就可以从这些模糊数据中提取出自己的密钥。
 
  所谓的“模糊的保密数据”是指每次生成时都不能够精确再现的、但是具有一定保密性的数据。模糊保密数据包括用户自身的生物特征数据,或者用户的口令词,但并不仅限于此。在该密钥生成系统中,用户并不保存自己的密钥k。系统在密钥使用后就会马上销毁掉,从不保存密钥k。在系统里所保存的是一个可以公开的信息P。信息P是由用户的模糊保密数据生成的。下次使用密钥k时,用户再提供自己的模糊的部分保密数据,并在所保存的信息P的帮助下,恢复密钥k。系统需要保证:只要用户每次提供的模糊保密数据的误差在一定的范围,系统就可以恢复出同一个密钥k。见图2。
 
  基于生物特征的密钥提取的特点是:密钥的产生和用户的认证紧密结合,使认证和密钥产生这两个密码操作统一在一个密钥原语(cryptographic primitive)中实现,达到一石二鸟,一箭双雕的目的。此外,在系统中不必存储用户生物特征数据的模板,也不必存入用户的密钥k,而是存入一个可以公开的信息P。每次使用密钥k时,由数据P和生物特征数据w共同地实时恢复出密钥k。由于信息P可以公开,因此系统并不依赖于存储信息P的硬件的防窜扰性能。在道高一尺、魔高一丈的今天,这无疑是一个很大的亮点。

 

本文作者刘胜利来自上海交通大学计算机科学与工程系