基于智能卡系统的密钥管理举例
这里我们将叙述一个基于智能卡系统的密钥管理之例。其目的是用一个比较容易理解集中事例来进一步说明前面所叙述的原则。和这个例子相比,真正大型系统经常的安排更复杂些而且有几个 结构层次。小型的系统通常不需要任何密钥层次,因为一个秘密的全局密钥叮用于所有的卡。此处所给出 的系统处於大型系统和结构简单的系统的中间位置,因此是个很好的例子。
图1举之例中,供装入或支付的密钥可用于电子钱包,它们用对称加密方法,在系统中这些密钥在 任何情况下都是重要的,因为它们都比较好地由所述的密钥层次予以保护。各个导出功能在此处不做详述 ,但DES或3重DES算法总是可用于它们的。密钥的长度也未做详细讨论,但它们确实是可变的。为了安全起 见,在层次顶层的密钥通常用比其较低层的密钥更强有力的加密功能导出。
图1 智能卡系统和对称加密算法的密钥层次举例
位于顶层的密钥被称为通用主密钥,对于整个一代的密钥只有一个这样的密钥。例如,—代可在一年内保 持有效,在相继的年份可用新一代来替换,这就是新一代的通用主密钥了。这个密钥是整个系统中对安全 最敏感的密钥。如果它被知道了,则所有属于它这一代的密钥都可算出,系统的这一代被攻破。主密钥可 由随机数产生,也可以设想使通用主密钥由数个人各自单独掷骰子得出之值来形成,其中每个人只知道密 钥的部分值,通用主密钥应当绝对不会由任何单独的个人完全知道,而在它的一代中必须不具各可以复制 出来的条件。
每项功能的单独主密钥由通用主密钥导出,密钥的功能可以是对一个电子钱包的装人或支付。一个单向函 数,诸如变型的DES算法,在此例中可用来导出各个功能的主密钥,这使得应用逆向计算过程由主密钥来计 算通用主密钥是不可能的。如果不是用单向函数去导出主密钥,尽管有各种安全方法,如果一个主密钥变 成了已知的,若也知道了导出参数,那么就可以算出通用主密钥来。这里使用单向函数的理由是假定在这 个想像的电子钱包系统中,主密钥将位于本地终端的安全模块之中。这就是说,比起总是位于后台系统的 通用主密钥来,它们就更易于受到攻击。
导出密钥形成了密钥层次中的下一层,它们是位于智能卡中的密钥。每张卡含有一组导出密钥,它们是按 照其功能和朝“代”数分开的。如果这样的一张卡用于终端,则立足于导出该密钥时所用的参数终端可为 它本身计算导出密钥。当然,终端首先要从卡读取导出参数。一旦导出密钥是可用的,则按下列步骤去计 算动态密钥,它对于一次单独的会话是专用的。此密钥仅在一单独的会话期间有效。在绝大多数智能卡应用中,会话期持续时间的范围可从数百毫秒到数秒,会话结束后不再使用此动态密钥。
这项电子钱包系统的密钥层如图2所示。
00000000图2 电子钱包系统的密钥举例
乍看此例中的系统似乎有点复杂,但比起实际的系统来它还是比较简单的。这个例子的目的是表明在一个系统中的所有密钥是如何产生的。它同时也暗示了如果一个密钥被知道了必须采取的方法。如果通用主密钥被知道了,就必须转换至新的一代以便系统能够运行而不必考虑安全的风险。另一方面,如果一个导出密钥被知道了,所需要的是闭锁有关的卡,对密钥管理的任何其他改变都是不适宜的。所有这些方法假定的前提是能够确定一个(或数个)密钥被知道了,就在以后能予以防范。
给出这种密钥层次,很明显是要在智能卡中产生与存储很多密钥。当然,为了节约存储空间总能指定几项功能共用一个密钥,也完全可以设想不同的密钥层次安排。这当然在很大程度上取决于对系统的密钥管理。