首页 百科知识 密钥分配与管理

密钥分配与管理

时间:2022-10-04 百科知识 版权反馈
【摘要】:密码系统的两个基本要素是加密算法和密钥管理。随着密码学的发展,大部分加密算法已经公开,人们可以通过各种途径得到它,因此信息的保密性在很大程度依赖于密钥的保密,如何通过安全的渠道对密码进行分配就成为关键的问题,事实上,加密信息的安全性依赖于密钥分配与管理。①用户A以明文方式向密钥分配中心KDC发送一个请求,说明他需要申请会话密钥SK用于与用户B进行通信。

密码系统的两个基本要素是加密算法和密钥管理。加密算法是一些公式和法则,它规定了明文和密文之间的变换方法,由于密码的反复使用,仅靠加密算法已难于保证信息的安全。随着密码学的发展,大部分加密算法已经公开,人们可以通过各种途径得到它,因此信息的保密性在很大程度依赖于密钥的保密,如何通过安全的渠道对密码进行分配就成为关键的问题,事实上,加密信息的安全性依赖于密钥分配与管理。

密钥分配最简单的办法是生成密钥后通过安全的渠道送给对方,这种方式对于密钥量不大的通信是合适的,但是随着网络通信量的不断增加,密钥量也随之增大,密钥的传送与分配成为严重的负担,必须采用一种方法自动实现网络通信中的密码传送与分配。

密钥分配技术一般要满足两方面的要求,即实现密钥的自动分配和减少系统中的密钥驻留量。为了满足这两个要求,目前有两种类型的密钥分配方式,即集中式和分布式密钥分配方式。集中式分配方式是建立一个密钥分配中心KDC(Key Distribution Center),由KDC来负责密钥的产生并分配给通信双方。分布式分配方案是指网络中通信的各方具有相同的地位,它们之间的密钥分配取决于它们之间的协商,即每个通信方都既可以是密钥分配方,也可以是被分配密钥方。

10.3.1 密钥分配的基本办法

密钥分配可以有以下几种方法:

①密钥由A选定,然后通过物理方法(如密钥封装在信封中)安全地传送给B;

②密钥由可信赖的第三方C选定,并通过物理方法安全地传送给A和B;

③如果A和B事先已有一密钥,那么其中一方选取新密钥后,用自己的密钥加密新密钥发送给另一方;

④如果A和B都有一个与可信赖的第三方C建立的保密信道,那么C就可以为A和B选取密钥后安全地发送给A和B;

⑤如果A和B都在可信赖的第三方C发布自己公开的密钥,那么它们用彼此的公开密钥进行通信。

显然,前两种方法是人工方式,不适合于现代通信需要的,第三种方法由于要对所有用户分配初始密钥,代价也很大,也有应用的局限性。第四种方法通过可信赖的第三方密钥分配中心KDC进行密钥分配,常用于对称密码技术的密钥分配。第五种方法通过可信赖的第三方证书授权中心CA进行密钥分配,常用于非对称密码技术的公钥分配。

用一个密钥来分配其他密钥的方案对应于第三种情况,这种方法是DES的密钥分配方法,它适用于任何密钥密码体制。这种方法有两种密钥,即主密钥和会话密钥。主密钥的作用是用来加密会话密钥,并通过它间接地保护报文内容,会话密钥是只在会话通信时暂时使用的一次性密钥。

假设用户A与用户B建立一个需通信信道进行通信,首先用户A与用户B协商好了共同使用主密钥Kab,然后用户A完成选择会话密钥SK,使用主密钥Kab对会话密钥SK加密后发送给用户B;用户B收到此加密报文后,使用主密钥Kab解密出报文,即解密出会话密钥SK,此时用户B获得会话密钥SK。在获得会话密钥的情况下,双方使用会话密钥SK进行加密通信,通信结束后,用户A和用户B销毁会话密钥SK。第三种方法的工作过程如图10-6所示。

图10-6 第三种方法的工作过程

这种密钥分配是对称的,无论是用户A或是用户B可请求一个会话,选取一个会话密钥或终止使用的会话密钥。在此种方式中,主密钥必须精心保护,当用户很多时,对这么多主密钥的秘密保密和传送是很困难的。解决密钥分配与传送的办法是设立一个大家都信任的密钥分配中心KDC,每个用户都与密钥分配中心建立一个对称密钥。

10.3.2 对称密钥分配方案

集中式对称密钥分配方案是设立一个大家都信任的密钥分配中心KDC,由KDC负责密钥的产生并分配给通信的双方。在这种方式下,用户不需要保存大量的会话密钥,只需保存与KDC通信的加密密钥。

集中式对称密钥分配对应于密钥分配方法的第四种情况,即如果A和B都有一个可信赖的第三方密钥分配中心KDC建立的保密信道,KDC为A和B选取密钥并将选取的密钥后安全地发送给A和B。集中式对称加密的工作原理示意如图10-7所示。

图10-7 集中式对称加密的工作原理示意

①用户A以明文方式向密钥分配中心KDC发送一个请求,说明他需要申请会话密钥SK用于与用户B进行通信。该请求消息由两个数据项组成,一个是A和B的身份IDa和IDb,一个是时间戳T,时间戳是为了标识本次业务和保证收到证书的时间有效性。即

A→KDC:M=(IDa,IDb,T)

②KDC收到请求后,从用户专用密钥文件中找出为用户A和用户B传输会话密钥使用的加密密钥Ka和Kb,同时产生供用户A和用户B通信使用的一次性会话密钥SK。然后使用用户A的主密钥Ka对SK进行加密后并加上时间戳将该消息传送给用户A,A收到这一报文后,使用自己的主密钥进行解密获得一次性会话密钥SK(由于这个信息是用A的主密钥加密的,所以只有用户A能解密)。同时,KDC也将一次性会话密钥SK以及A的身份IDa使用B的主密钥Kb加密后传送给用户A,该信息将由A转发给B,该信息用于建立A和B之间的连接并用于向B证明A的身份。即

KDC→A:M=EKa[SK,IDa,IDb,T,EKb(SK,IDa,T)]

③A将信息EKb(SK,IDa,T)传送给B,B收到这一报文后,使用自己的主密钥对密文进行解密获得一次性会话密钥SK。即

A→B:M=EKb(SK,IDa,T)

④至此,用户A和用户B均已获得会话密钥SK,可以进入会话通信,于是双方使用SK进行加密通信,通信结束后,用户A和用户B销毁一次性会话密钥SK。

由于KDC可以为每一对用户的通信产生一个一次性会话密钥SK,从而使得破译密文更为困难,安全性更好。在这种方式中,主密钥是用来保护会话密钥的,所以主密钥也不能长期使用而不进行更换。

在集中式对称密钥分配方式中,由于报文中的Ka和Kb是KDC与用户A和用户B共同使用的主密钥,所以当用户A收到EKa[SK,IDa,IDb,T,EKb(SK,IDa,T)]这一报文时,便知这一报文来自KDC,同样,当用户B收到EKb(SK,IDa,T)这一报文时,就可以确定这是从用户A发来的报文,也就是说该报文可以起到向B证明自己就是用户A的作用。因此,可以认为该报文是由KDC签发给用户A用于向用户B证明其身份的证书。

证书可以在一段时间内重复使用,在这一段时间内用户A与用户B,不必每次都要向KDC申请密钥,从而减轻KDC的工作量,提高网络效率。证书的有效时间可由日期T和给定的有效期决定,例如,每个证书用一小时,那么从T开始以后的一小时内证书是有效的。

10.3.3 非对称密钥分配方案

非对称密码技术的密钥分配和对称密码技术的密钥分配有着本质的差别,在对称密钥分配方案中,要求将密钥从通信的一方发送到另一方,只有通信双方知道密钥,而其他任何方都不知道密钥。而在非对称密钥分配方案中,要求私钥只有通信的一方知道,而其他任何方都不知道,与私钥匹配使用的公钥则是像电话号码那样是公开的,一个用户只要查到另一个用户的公开密钥,他们就可以实现安全通信了。但是由于密钥的更换,增加和删除,公开密钥的完整性保护等都是十分复杂的工作,人工进行是很困难的,所以仍然要进行密钥自动分配。

目前,通过证书授权中心CA进行密钥分配和管理已经是一种公认的有效的方法。每个用户只要保存自己的私钥和KDC的公钥,用户在与其他用户进行通信时,可以通过证书授权中心CA(Certification Authority)获得其他用户的公钥。而CA使用私钥对为其他用户分配公钥的信息进行加密,用户使用CA的公钥解密信息,获得分配的公钥。通过证书授权中心CA进行密码分配的工作原理示意如图10-8所示。

图10-8 通过证书授权中心CA进行密码分配的工作原理示意

在非对称密钥分配方式中,CA为了和其他用户进行保密通信,它也需要一对公开密钥PKca和会话密钥SKca。每个用户在通信前先向CA申请一个证书,CA收到申请后,使用自己的私钥进行证书发放,并使用会话密钥SKca进行传输加密,证书的数据项包含了申请用户的公钥PK、用户身份ID和时间戳T等。如用户A和用户B要进行通信,它们向CA申请获得的证书分别为:

CA→A Ca=Esk ca(IDA,PKa,T)

CA→B Cb=Esk ca(IDb,PKb,T)

当用户A和用户B进行保密通信时,用户A将自己的证书Ca送给用户B,B使自己保存的CA的公钥PKkdc对证书加以验证,由于只有用CA的公钥才能解密读出证书,这样B就验证了证书确实是CA发放的。同时用户B还获得了A的公钥PKa和用户A的身份标识IDA。即

A→B M=EPKkdc(CA,T)

当用户B收到A的证书后,B将自己的证书Cb和由自己产生的会话密钥SK使用A的公钥加密后送给A,用户A收到后使用自己的私钥解密后获得了B的公钥PKb和用户B的身份标识IDB以及会话密钥SK。即

B→A M=EPKa(CA,SK,T)

经过这样的交互,A,B双方都已获得了共享的会话密钥SK,双方使用该会话密钥SK进行加密通信,通信结束后,用户A和用户B销毁SK。

非对称加密的密钥分配过程既具有保密性,又具有认证性,因此既可以防止被动攻击,又可以防止主动攻击。他的这种特性使得非对称加密的密钥分配被广泛使用于安全要求较高的场合中。

10.3.4 报文鉴别

报文鉴别MA(Message Authentication)对于开放的网络中的各种信息的安全性具有重要作用,是防止网络攻击的重要技术之一。报文鉴别的目的是鉴别报文的真实性和完整性,使接收方能够鉴别出接收到的报文是发送方发来的,而不是冒充的,能够验证报文在传输和存储的过程中,没有被发生篡改、重放、延迟。

(1)报文鉴别的办法

报文鉴别的实现需要加密技术,目前,报文鉴别中多使用报文摘要MD(Message Digest)算法来实现。具体过程如下:

①发送方和接收方首先确定报文摘要H(m)的固定长度;

②发送方通过散列函数(Hash Function)将要发送的报文进行报文摘要处理得到报文摘要H(m);

③发送方对得到的报文摘要H(m)进行加密,得到密文Ek[H(m)];

④发送方将Ek[H(m)]追加在报文m后面发送给接收方;

⑤接收方将成功接收到Ek[H(m)]和报文m后,先给Ek[H(m)]解密得到H(m),然后再对报文m进行同样的报文摘要处理得到报文摘要H(m)1;

⑥接收方将H(m)与H(m)1进行比较,如果结果是H(m)=H(m)1,则可以断定收到的报文是真实的,否则报文m在传输过程中被进行了篡改或伪造。

报文摘要的报文鉴别办法由于报文是明文方式传输,报文摘要算法也较为简单,系统只需对报文摘要进行加密、解密操作,所以这种鉴别方式对系统的要求较低,很适合于Internet的应用。

(2)报文摘要算法MD5

在RFC1321中规定的报文摘要MD5算法已经得到广泛的应用。MD5算法的特点是可以对任意长度的报文进行运算处理,得到的报文摘要长度均为128位。MD5算法的实现过程如下:

①先将报文按照模2、64计算其余数(64位),并将结果追加到报文后面;

②为使数据的总长度为512的整数倍,可以在报文和余数之间填充1~512位,但填充比特的首位应该是1,后面是0;

③将追加和填充后的报文分割为一个个512位的数据块,每一个512的数据块又分成4个128位的小数据块,然后依次送到不同的散列函数进行4轮计算,每一轮又按32位更小的数据块进行复杂的运算,最后得到MD5报文摘要。

(3)安全散列算法(SHA)

目前MD5的应用已经很广泛,而同样另一个应用较为广泛的标准是由美国国家技术标准和技术协议机构(NIST)提出的安全散列算法SHA(Secure Hash Algorithm)。SHA与MD5在总体上的技术思想很相似,也是任意长度的报文作为输入,并按照512位长度的数据块进行处理,二者的主要差别如下:

①SHA的报文摘要长度为160位,而MD5的报文摘要长度为128位;

②SHA每轮有20步操作运算,而MD5仅有4轮;

③SHA与MD5所使用的运算函数不同。

SHA比MD5更加安全,但SHA对系统的要求较高。

(4)Hash函数

Hash函数就是把任意长度的报文通过散列算法压缩成固定长度的输出(函数值),该输出就是散列值。简单地说,Hash函数就是一种将任意长度的报文压缩到某一固定长度的消息摘要的函数。Hash函数的思想是把函数值看成输入报文的报文摘要,当输入报文中的任何一个二进制位发生变化时都将引起Hash函数值的变化,其目的就是产生文件、消息或其他数据块的“指纹”。Hash函数能够接受任意长度的消息输入,并产生定长的输出。

使用一个散列函数可以很直观的检测出数据在传输时发生的错误。在数据的发送方,对将要发送的数据应用散列函数,并将计算的结果同原始数据一同发送。在数据的接收方,同样的散列函数被再一次应用到接收到的数据上,如果两次散列函数计算出来的结果不一致,那么就说明数据在传输的过程中某些地方有错误了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈