最近看银行密钥管理系统,对密钥分散这一步搞得一头雾水。问题陈列如下,请高手指教。 

1. 从 GMPK 到 BMPK 再到 MPK,经过一系列的发散过程,那么这三者之间有什么关系呢? 
2. 有资料说,密钥发散机制的优点在于即使破解了密钥,也不会对同级和上级的密钥产生威胁,那即是分散算法是不可逆的了。以IC卡为例,用户卡的消费密钥也是经过分散后产生的,每个用户卡的密钥不同,但是在消费时,POS机具如何识别用户卡的消费密钥是合法的呢? 
3. 如果分散算法可逆,通过密钥可以获得一级密钥,那么银行的消费密钥逐级分散就没有意义了。
--------------------------------------------------------------------
POS机在对用户卡操作时,先获取用户卡的序列号,这时是明文传送的。POS机通过其内部的PSAM卡对该序列号进行DES运算,计算出用户卡的密钥。该密钥结合后续相互认证时产生的随机数作为此次消费的会话密钥。所以每次的会话密钥是随机的,不相同的。 

对于一个大系统来说,可以分为省,市、县等几个级别,由一个根密钥发散出省密钥,该省密钥发散出对应的市密钥,该市密钥发散出对应的县密钥。如果仅攻破了某个县的密钥,则该县发散出的用户卡需全部作费,但其它县的用户卡没有关系。目前用的发散算法就是3DES。 

DES算法是公开的,关键是密钥的保密。攻破了一个县的密钥,是不能推算出其它县的密钥,除非你知道了市的密钥。 
--------------------------------------------------------------------
银行CA用的是RSA算法,有公钥和私钥,是常规计算机非常难破解的。所以不存在倒推能得知所有密钥一样。 

有兴趣的可以看一下RSA算法,非对称密钥; 

以前的des,3des都是对称算法,相对不是最安全。
--------------------------------------------------------------------
目前银行的UKEY,U盾采用了RSA算法,试点的银行IC卡也使用了RSA算法。这种做法的主要目的是避免了密钥发散的问题,而这问题在对称算法中是不可避免的。RSA和DES是两种不同体制的算法,安全的强度与该算法采用的密钥长度相关的。
--------------------------------------------------------------------
密钥分散是上级的密钥与本级的特征相结合形成本级的密钥, 
方法很简单,encry(merkey,ywdm,sessionkey); 
其中encry是加密算法,merkey是上级密钥,ywdm是与本级有关的业务代码,密钥学称之为分散因子, 
用merkey对ywdm加密后的结果sessionkey就是本级分散后的密钥. 
密钥管理体系做法不一样,但原理相通.