PKI基础内容介绍(2)

安全 数据安全
为解决Internet的安全问题,目前通用的办法是采用建立在PKI基础之上的数字证书,通过把要传输的数字信息进行加密和签名,保证信息传输的机密性、真实性、完整性和不可否认性,从而保证信息的安全传输。本文主要向大家介绍PKI基础内容中的部分内容,希望大家能够有所收获。

PKI基础之单钥密码算法(加密)

单钥密码算法,又称对称密码算法,是指加密密钥和解密密钥为同一密钥的密码算法。因此,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码)。在对称密钥密码算法中,加密运算与解密运算使用同样的密钥。通常,使用的加密算法比较简便高效,密钥简短,破译极其困难;由于系统的保密性主要取决于密钥的安全性,所以,在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题。最典型的是DES(Data Encryption Standard)算法。

DES(Data Encryption Standard,数据加密标准)算法,它是一个分组加密算法,它以64 bit位(8 byte)为分组对数据加密,其中有8 bit奇偶校验,有效密钥长度为56 bit。64位一组的明文从算法的一端输入,64位的密文从另一端输出。DES是一个对称算法,加密和解密用的是同一算法。DES的安全性依赖于所用的密钥。

密钥的长度为56位。(密钥通常表示为64位的数,但每个第8位都用作奇偶校验,可以忽略。)密钥可以是任意的56位的数,且可以在任意的时候改变。其中极少量的数被认为是弱密钥,但能容易地避开它们。所有的保密性依赖于密钥。简单地说,算法只不过是加密的两个基本技术--混乱和扩散的组合。

DES基本组建分组是这些技术的一个组合(先代替后置换),它基于密钥作用于明文,这是众所周知的轮(round)。DES有16轮,这意味着要在明文分组上16次实施相同的组合技术。此算法只使用了标准的算术和逻辑运算,而其作用的数也最多只有64位。

DES对64位的明文分组进行操作,通过一个初始置换,将明文分组分成左半部分和右半部分,各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中数据与密钥结合。经过16轮后,左、右半部分合在一起经过一个末置换(初始置换的逆置换),这样该算法就完成了。在每一轮中,密钥位移位,然后再丛密钥的56位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作与48位密钥结合,通过8个s盒将这48位替代成新的32位数据,再将其置换一次。这四步运算构成了函数f。然后,通过另一个异或运算,函数f输出与左半部分结合,其结果即成为新的右半部分,原来的右半部分成为新的左半部分。将该操作重复16次,便实现了DES的16轮运算。

假设Bi是第i次迭代的结果,Li和Ri是Bi的左半部分和右半部分,Ki是第i轮的48位密钥,且f是实现代替、置换及密钥异或等运算的函数,那么每一轮就是:

PKI基础之双钥密码算法(加密、签名)

双钥密码算法,又称公钥密码算法:是指加密密钥和解密密钥为两个不同密钥的密码算法。公钥密码算法不同于单钥密码算法,它使用了一对密钥:一个用于加密信息,另一个则用于解密信息,通信双方无需事先交换密钥就可进行保密通信。其中加密密钥不同于解密密钥,加密密钥公之于众,谁都可以用;解密密钥只有解密人自己知道。这两个密钥之间存在着相互依存关系:即用其中任一个密钥加密的信息只能用另一个密钥进行解密。若以公钥作为加密密钥,以用户专用密钥(私钥)作为解密密钥,则可实现多个用户加密的信息只能由一个用户解读;反之,以用户私钥作为加密密钥而以公钥作为解密密钥,则可实现由一个用户加密的信息而多个用户解读。前者可用于数字加密,后者可用于数字签名。

在通过网络传输信息时,公钥密码算法体现出了单密钥加密算法不可替代的优越性。对于参加电子交易的商户来说,希望通过公开网络与成千上万的客户进行交易。若使用对称密码,则每个客户都需要由商户直接分配一个密码,并且密码的传输必须通过一个单独的安全通道。相反,在公钥密码算法中,同一个商户只需自己产生一对密钥,并且将公开钥对外公开。客户只需用商户的公开钥加密信息,就可以保证将信息安全地传送给商户。

公钥密码算法中的密钥依据性质划分,可分为公钥和私钥两种。用户产生一对密钥,将其中的一个向外界公开,称为公钥;另一个则自己保留,称为私钥。凡是获悉用户公钥的任何人若想向用户传送信息,只需用用户的公钥对信息加密,将信息密文传送给用户便可。因为公钥与私钥之间存在的依存关系,在用户安全保存私钥的前提下,只有用户本身才能解密该信息,任何未受用户授权的人包括信息的发送者都无法将此信息解密。

RSA公钥密码算法是一种公认十分安全的公钥密码算法。它的命名取自三个创始人:Rivest、Shamir和Adelman。RSA公钥密码算法是目前网络上进行保密通信和数字签名的最有效的安全算法。RSA算法的安全性基于数论中大素数分解的困难性,所以,RSA需采用足够大的整数。因子分解越困难,密码就越难以破译,加密强度就越高。

RSA既能用于加密又能用于数字签名,在已提出的公开密钥算法中,RSA最容易理解和实现的,这个算法也是最流行的。RSA的安全基于大数分解的难度。其公开密钥和私人密钥是一对大素数(100到200个十进制数或更大)的函数。从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数之积。为了产生两个密钥,选取两个大素数,p和q。为了获得最大程度的安全性,两数的长度一样。计算乘积: ,然后随机选取加密密钥e,使e和(p-1)(q-1)互素。最后用欧几里得扩展算法计算解密密钥d,以满足

则,注意:d和n也互素。e和n是公开密钥,d是私人密钥。两个素数p和q不再需要,它们应该被舍弃,但绝不可泄露。

加密消息m时,首先将它分成比n小的数据分组(采用二进制数,选取小于n的2的最大次幂),也就是说,p和q为100位的素数,那么n将有200位,每个消息分组 应小于200位长。加密后的密文c,将由相同长度的分组 组成。加密公式简化为

解密消息时,取每一个加密后的分组ci并计算:

由于: ,全部(mod n)这个公式能恢复出明文。

公开密钥 n:两素数p和q的乘积(p和q必须保密) e:与(p-1)(q-1)互素

私人密钥

加密

解密

【编辑推荐】

  1. PKI基础内容介绍(1)
  2. PKI基础内容介绍(3)
  3. PKI基础内容介绍(4)
  4. PKI基础内容介绍(5)
  5. PKI基础内容介绍(6)
责任编辑:佚名 来源: 网络转载
相关推荐

2011-04-18 11:05:20

PKI密钥加密

2011-04-18 11:18:05

2011-04-18 10:51:29

PKI加密密钥

2011-04-18 10:38:52

2011-04-18 11:13:45

2010-05-11 14:19:52

MySQL 5.0

2010-01-06 17:20:38

.Net Framew

2011-06-30 09:49:40

JSPJ2EE

2010-11-01 06:43:21

PowerShell

2010-02-24 15:28:59

WCF ABC

2010-03-31 13:08:20

Oracle 基础知识

2009-09-28 10:24:58

Hibernate基础

2011-06-21 14:42:37

ECMAScriptJavaScript

2009-09-22 09:27:29

Hibernate P

2010-01-04 15:21:37

Silverlight

2010-04-06 14:58:38

Oracle透明网关

2010-02-23 14:41:28

Python模块

2009-09-09 18:15:53

CCNA考试

2009-12-30 16:37:42

Silverlight

2009-10-15 15:52:53

点赞
收藏

51CTO技术栈公众号