PKI原理
PKI 即公共密钥体系。它利用公共密钥算法的特点,建立一套证书发放、管理和使用的体系,来支持和完成网络系统中的身份认证、信息加密、保证数据完整性和抗抵赖性。PKI 体系可以有多种不同的体系结构、实现方法和通信协议。
公共(非对称)密钥算法使用加密算法和一对密钥:一个公共密钥(公钥,public key)和一个私有密钥(私钥,private key)。其基本原理是:由一个密钥进行加密的信息内容,只能由与之配对的另一个密钥才能进行解密。公钥可以广泛地发给与自己有关的通信者,私钥则需要十分安全地存放起来。使用中,甲方可以用乙方的公钥对数据进行加密并传送给乙方,乙方可以使用自己的私钥完成解密。公钥通过电子证书与其拥有者的姓名、工作单位、邮箱地址等捆绑在一起,由权威机构(CA, Certificate Authority)认证、发放和管理。把证书交给对方时就把自己的公钥传送给了对方。证书也可以存放在一个公开的地方,让别人能够方便地找到和下载。
公共密钥方法还提供了进行数字签名的办法:签字方对要发送的数据提取摘要并用自己的私钥对其进行加密;接收方验证签字方证书的有效性和身份,用签字方公钥进行解密和验证,确认被签字的信息的完整性和抗抵赖性。
公共密钥方法通常结合使用对称密钥(单密钥)方法,由计算效率高的对称密钥方法对文件和数据进行加密。
目前在 Internet 上主要使用 RSA 公共密钥方法,密钥长度 512 或 1024 位,是广泛使用的 SSL/TLS 和S/MIME 等安全通信协议的基础。
加密
数据加密技术从技术上的实现分为在软件和硬件两方面。按作用不同,数据加密技术主要分为数据传输、数据存储、数据完整性的鉴别以及密钥管理技术这四种。
在网络应用中一般采取两种加密形式:对称密钥和公开密钥,采用何种加密算法则要结合具体应用环境和系统,而不能简单地根据其加密强度来作出判断。因为除了加密算法本身之外,密钥合理分配、加密效率与现有系统的结合性,以及投入产出分析都应在实际环境中具体考虑。
对于对称密钥加密。其常见加密标准为DES等,当使用DES时,用户和接受方采用64位密钥对报文加密和解密,当对安全性有特殊要求时,则要采取IDEA和三重DES等。作为传统企业网络广泛应用的加密技术,秘密密钥效率高,它采用KDC来集中管理和分发密钥并以此为基础验证身份,但是并不适合Internet环境。
在Internet中使用更多的是公钥系统。即公开密钥加密,它的加密密钥和解密密钥是不同的。一般对于每个用户生成一对密钥后,将其中一个作为公钥公开,另外一个则作为私钥由属主保存。常用的公钥加密算法是RSA算法,加密强度很高。具体作法是将数字签名和数据加密结合起来。发送方在发送数据时必须加上数据签名,做法是用自己的私钥加密一段与发送数据相关的数据作为数字签名,然后与发送数据一起用接收方密钥加密。当这些密文被接收方收到后,接收方用自己的私钥将密文解密得到发送的数据和发送方的数字签名,然后,用发布方公布的公钥对数字签名进行解密,如果成功,则确定是由发送方发出的。数字签名每次还与被传送的数据和时间等因素有关。由于加密强度高,而且并不要求通信双方事先要建立某种信任关系或共享某种秘密,因此十分适合Internet网上使用。
常规密钥密码体制
所谓常规密钥密码体制,即加密密钥与解密密钥是相同的。
在早期的常规密钥密码体制中,典型的有代替密码,其原理可以用一个例子来说明:
将字母a,b,c,d,…,w,x,y,z的自然顺序保持不变,但使之与D,E,F,G,…,Z,A,B,C分别对应(即相差3个字符)。若明文为student则对应的密文为VWXGHQW(此时密钥为3)。
由于英文字母中各字母出现的频度早已有人进行过统计,所以根据字母频度表可以很容易对这种代替密码进行破译。
数据加密标准DES
DES算法原是IBM公司为保护产品的机密于1971年至1972年研制成功的,后被美国国家标准局和国家安全局选为数据加密标准,并于1977年颁布使用。ISO也已将DES作为数据加密标准。
DES对64位二进制数据加密,产生64位密文数据。使用的密钥为64位,实际密钥长度为56位(有8位用于奇偶校验)。解密时的过程和加密时相似,但密钥的顺序正好相反。
DES的保密性仅取决于对密钥的保密,而算法是公开的。DES内部的复杂结构是至今没有找到捷径破译方法的根本原因。现在DES可由软件和硬件实现。美国AT&T首先用LSI芯片实现了DES的全部工作模式,该产品称为数据加密处理机DEP。
公开密钥密码体制
公开密钥(public key)密码体制出现于1976年。它最主要的特点就是加密和解密使用不同的密钥,每个用户保存着一对密钥 公开密钥PK和秘密密钥SK,因此,这种体制又称为双钥或非对称密钥密码体制。
在这种体制中,PK是公开信息,用作加密密钥,而SK需要由用户自己保密,用作解密密钥。加密算法E和解密算法D也都是公开的。虽然SK与PK是成对出现,但却不能根据PK计算出SK。公开密钥算法的特点如下:
1、用加密密钥PK对明文X加密后,再用解密密钥SK解密,即可恢复出明文
写为:DSK(EPK(X))=X
2、加密密钥不能用来解密,即DPK(EPK(X))≠X
3、在计算机上可以容易地产生成对的PK和SK。
4、从已知的PK实际上不可能推导出SK。
5、加密和解密的运算可以对调,即:EPK(DSK(X))=X
在公开密钥密码体制中,最有名的一种是RSA体制。它已被ISO/TC97的数据加密技术分委员会SC20推荐为公开密钥数据加密标准。
数字签名
数字签名技术是实现交易安全的核心技术之一,它的实现基础就是加密技术。在这里,我们介绍数字签名的基本原理。
以往的书信或文件是根据亲笔签名或印章来证明其真实性的。但在计算机网络中传送的报文又如何盖章呢?这就是数字签名所要解决的问题。数字签名必须保证以下几点:
接收者能够核实发送者对报文的签名;发送者事后不能抵赖对报文的签名;接收者不能伪造对报文的签名。
现在已有多种实现各种数字签名的方法,但采用公开密钥算法要比常规算法更容易实现。下面就来介绍这种数字签名。
发送者A用其秘密解密密钥SKA对报文X进行运算,将结果DSKA(X)传送给接收者B。B用已知的A的公开加密密钥得出EPKA(DSKA(X))=X。因为除A外没有别人能具有A的解密密钥SKA,所以除A外没有别人能产生密文DSKA(X)。这样,报文X就被签名了。 用私钥加密发送给对方。对方只能用自己的公钥打开。以实现核实发送者对报文的签名。
假若A要抵赖曾发送报文给B。B可将X及DSKA(X)出示给第三者。第三者很容易用PKA去证实A确实发送消息X给B。反之,如果是B将X伪造成X',则B不能在第三者面前出示DSKA(X')。这样就证明B伪造了报文。可以看出,实现数字签名也同时实现了对报文来源的鉴别。
但是上述过程只是对报文进行了签名。对传送的报文X本身却未保密。因为截到密文DSKA(X)并知道发送者身份的任何人,通过查问手册即可获得发送者的公开密钥PKA,因而能够理解报文内容。则可同时实现秘密通信和数字签名。SKA和SKB分别为A和B的秘密密钥,而PKA和PKB分别为A和B的公开密钥。
密钥的管理
对称密钥加密方法致命的一个弱点就是它的密钥管理十分困难,因此它很难在电子商务的实践中得到广泛的应用。在这一点上,公开密钥加密方法占有绝对的优势。不过,无论实施哪种方案,密钥的管理都是要考虑的问题。当网络扩得更大、用户增加更多时尤其如此。一家专门从事安全性咨询的公司Cypress Consulting的总裁CyArdoin说:“在所有加密方案中,都必须有人来管理密钥。”
目前,公认的有效方法是通过密钥分配中心KDC来管理和分配公开密钥。每个用户只保存自己的秘密密钥和KDC的公开密钥PKAS。用户可以通过KDC获得任何其他用户的公开密钥。
首先,A向KDC申请公开密钥,将信息(A,B)发给KDC。KDC返回给A的信息为(CA,CB),其中,CA=DSKAS(A,PKA,T1),CB=DSKAS(B,PKB,T2)。CA和CB称为证书(Certificate),分别含有A和B的公开密钥。KDC使用其解密密钥SKAS对CA和CB进行了签名,以防止伪造。时间戳T1和T2的作用是防止重放攻击。
最后,A将证书CA和CB传送给B。B获得了A的公开密钥PKA,同时也可检验他自己的公开密钥PKB。
PKI的主要目的是通过自动管理密钥跟证书,可以为用户建立起一个安全的网络运行环境,使用户可以在多种应用环境下方便的使用加密和数字签名技术,从而保证网上数据的机密性,完整性,有效性。
数据的机密性是指数据在传输过程中不能被非授权者偷看
数据的完整性是指数据在传输过程中不能被非法的窜改
数据的有效性是指数据不能被随便否认
一个有效的PKI系统必须是安全的,透明的,用户在获得加密和数字签名服务时,是不需要详细了解PKI怎样管理证书和密钥的。
密钥是一种用来加密或解密信息的值,即使算法是公开的,也不会破坏其安全性,因为数据如果没有密钥则无法读取。
PKI 是一种新的安全技术,它由公钥加密技术,数字证书,证书发放机构(CA),注册权威机构(RA)等基本成分共同组成。
数字证书用于internet intranet extranet 上的用户身份验证
CA是一个可信任的实体,它根据CA颁发策略负责发布,更新和吊销证书
注册权威机构RA 接受用户的请求,负责将用户的有关申请信息存档备案,并存储在数据库中,等待审核,并将审核通过的证书请求发送给证书颁发机构。RA分担了CA的部分任务,管理更方便。
比较成熟的对称加密 DES 3DES IDEA
非对称加密的特点
密钥是成对出现的,这两个密钥互不相同,两个密钥可以互相机密和解密
不能根据一个密钥来推算得出另一个密钥
公钥对外公开,私钥只有私钥的持有人才知道
私钥应该由密钥的持有人妥善保管
接收方生成一对密钥(公钥和私钥),并将公钥向外传递公开
得到该公钥的发送方使用接收方的公钥,对信息进行加密后,再发送给接受方
接受方受到信息后,再用自己的私钥对信息进行解密
非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长,速度慢,它不适合对文件加密,而只适合用于少量数据进行加密。因为,在实际应用中,将非对称加密和对称加密混合使用。
发送方用对称加密的方法,将文件加密后传给对方
发送方再将对称密钥(即发送方和接受方应该共同拥有的密钥)通过非对称加密的方法加密后传给对方
接收方使用私钥解密得到对称密钥
用对称密钥解密去解读对称加密的密文,从而得到明文信息
公认的非对称加密算法是 RSA 算法
我发给的人。确保不被别人所得到。是利用加密算法
给我的人。我确定是这个人发的。用的是数字签名。有不可抵赖性
HASH算法也称为杂凑算法,这是一个简单的不可逆过程。HASH算法在确保文件的完整性和不可更改性上也有和好的用途。
输入一个长度不固定的字符串,返回一串固定长度的字符串,又称为HASH值,通常也称为杂凑值(HASH Value)
每一个消息输入单项杂凑函数中,将产生一个杂凑值,这个杂凑值可以保证输入消息的唯一性(不同杂凑值表示不同输入消息)
如果通过一个不安全的传输通道的消息在传输前的杂凑值和消息经传输后的杂凑值相同,那么可以认为接受到的信息在很高的概率上与发送消息是相同的,从而可以保证传输消息的完整性
在某一特定的时间内,无法查找经HASH操作后生成特定HASH值的原报文。
也无法查找两个经HASH操作后生成相同HASH值的不同报文
HASH 算法常用的有SHA 和 MD5
数据加密只能保证所发送的数据的机密性,确不能完全保证数据的完整性和不可抵赖性,即不能保证数据在传递过程中不被人篡改和不被人冒名顶替发送。
数字签名提供了身份验证和数据完整性,使接受方可确认该发送方的身份标识,并证实消息在传递过程中内容没有被篡改。这样可以防止某个消息的发送方试图通过替换另一个用户的身份发送消息。
消息有签发者即发送方自己签名发送,签名者不能否认或难以否认
消息自签发到接受这段过程中未曾做过修改,签发的消息是真实的。
数字签名页可以用于时间戳,即可以同时签署消息发送的时间。用户可以用他的私钥签名消息和生成时间戳,证实该消息在某一段时间中存在。数字签名同样可以用来确认某一公钥属于某人。因为对消息进行数字签名时,可以产生一个代表该消息的消息摘要。该消息摘要通过发送方的私钥加密的,接受方可以使用发送方的公钥进行解密。
发送方签名某个消息时,将创建一个消息摘要(用HASH算法)
发送方用自己的私钥加密消息摘要
将消息摘要做为消息的附件和消息一起发送给接收方
当接收方收到消息后,就用该发送方的公钥解密此消息摘要
同时,接受方再用发送方的公钥解密消息,然后用同样的算法创建出一个新的消息摘要,并将他与解密的消息摘要进行比较。
如果两个消息摘要互相匹配,则可保证完整性,签名就会认为是有效的。
过程
发送方
1 原文+随机密钥(对称)--用随机密钥加密原文
2 原文+HASH 算法--消息摘要
3 随机密钥(对称)+接受方的公钥--只有接受方的私钥才能打开取得对称密钥
4 消息摘要+发送方私钥--接受方用发送方公钥解开取得摘要消息
以上四个过程最后生成了 加密数据和加密的摘要消息
接受方
1 首先用自己的私钥解开发送过来的加密的对称密钥
2 取得对称密钥就可以解开加密的原文
3 用发送方的公钥解开加密的消息摘要
4 用解开的原文用同样的HASH算法算出一个消息摘要
5 对比传过来的在发送方的消息摘要和现在接受的文章的消息摘要是否匹配。匹配则说明信息没有被改动过。
其中使用了对称密钥 非对称的公钥 私钥 还有HASH 算法
数据经过了加密。如果想解开数据就必须有接受方的私钥。可是私钥是不传输的。所以很难破解数据。但是这个加密是使用接受方的公钥加密的。而公钥是公开的。所以有人可以采用接受方的公钥再伪造数据部分。这样和数据摘要一起发给接受方。因为是采用接受方公钥所加密的。所以接受方可以打开被篡改的数据。可是这种篡改的数据再经过HASH算法无法跟发送过来的消息摘要相同。从而被证明是篡改的或被有损的。而因为消息摘要是用发送方的私钥来加密的。如果要伪造就必须有发送方的私钥。而发送方的私钥也是不在网络上传送的。这样只有得到双方的私钥才能伪造。
数字签名一般不采用非对称加密算法 RSA等。而是发送方对整个数据进行变换,得到一个值,将其作为消息摘要和签名,接受者使用发送者的公钥对消息摘要进行解密运算。如果其结果与原摘要一致,则此数字签名有效,证明对方的身份是真实的。一般数字签名中使用的加密算法有HASH算法,安全的HASH算法等。再HASH算法中,目前比较多的是MD5。
接受方还必须有一个机制,以确保密钥对是属于真正的发送者的。而不是属于没个发送方的模仿者的。这是通过受信任的第三方颁发的证书来完成的,该证书证实了公钥所有者的身份标识。
本文出自 51CTO.COM技术博客