对称加密 symmetric cryptographic
非对称加密 asymmetric cryptographic
密钥交换协议 key agreement/exchange
哈希算法 Hash
报文认证码 MAC
数字签名 digital signature
数字证书 digital ID/certificate
证书颁发机构 certificate authority
公钥架构 public key infrastructure
PK 公钥
SK 私钥
公钥加密技术
PKI是建立在公钥加密技术之上的,那么要了解PKI则首先要看一下公钥加密技术。加密是保护数据的科学方法。加密算法在数学上结合了输入的文本数据和一个加密密钥,产生加密的数据(密文)。通过一个好的加密算法,通过密文进行反向加密过程,产生原文就不是那么容易了,需要一个解密密钥来执行相应的转换。密码技术按照加解密所使用的密钥相同与否,分为对称密码学和非对称密码学,前者加解密所使用的密钥是相同的,而后者加解密所使用的密钥是不相同的,即一个秘密的加密密钥(签字密钥)和一个公开的解密密钥(验证密钥)。在传统密码体制中,用于加密的密钥和用于解密的密钥完全相同,通过这两个密钥来共享信息。这种体制所使用的加密算法比较简单,但高效快速,密钥简短,破译困难。然而密钥的传送和保管是一个问题。例如,通讯双方要用同一个密钥加密与解密,首先,将密钥分发出去是一个难题,在不安全的网络上分发密钥显然是不合适的;另外,任何一方将密钥泄露,那么双方都要重新启用新的密钥。
1976年,美国的密码学专家Diffie和Hellman为解决上述密钥管理的难题,提出一种密钥交换协议,允许在不安全的媒体上双方交换信息,安全地获取相同的用于对称加密的密钥。在此新思想的基础上,很快出现了非对称密钥密码体制,即公钥密码体制(PKI)。自1976年第一个正式的公共密钥加密算法提出后,又有几个算法被相继提出。如Ralph Merkle猜谜法、Diffie-Hellman指数密钥交换加密算法、RSA加密算法、Merkle-Hellman背包算法等。目前,结合使用传统与现代加密算法的具体应用有很多,例如PGP、RIPEM等加密软件,是当今应用非常广的加密与解密软件。公共密钥算法的基本特性是加密和解密密钥是不同的,其中一个公共密钥被用来加密数据,而另一个私人密钥被用来解密数据。这两个密钥在数字上相关,但即便使用许多计算机协同运算,要想从公共密钥中逆算出对应的私人密钥也是不可能的。这是因为两个密钥生成的基本原理根据一个数学计算的特性,即两个对位质数相乘可以轻易得到一个巨大的数字,但要是反过来将这个巨大的乘积数分解为组成它的两个质数,即使是超级计算机也要花很长的时间。此外,密钥对中任何一个都可用于加密,其另外一个用于解密,且密钥对中称为私人密钥的那一个只有密钥对的所有者才知道,从而人们可以把私人密钥作为其所有者的身份特征。根据公共密钥算法,已知公共密钥是不能推导出私人密钥的。最后使用公钥时,要安装此类加密程序,设定私人密钥,并由程序生成庞大的公共密钥。使用者向与其联系的人发送公共密钥的拷贝,同时请他们也使用同一个加密程序。之后他人就能向最初的使用者发送用公共密钥加密成密码的信息。仅有使用者才能够解码那些信息,因为解码要求使用者知道公共密钥的口令,那是惟有使用者自己才知道的私人密钥。在这些过程当中,信息接受方获得对方公共密钥有两种方法:一是直接跟对方联系以获得对方的公共密钥;另一种方法是向第三方即可靠的验证机构(如Certification Authority,CA),可靠地获取对方的公共密钥。
现在,我们可以看PKI的定义:PKI(Public Key Infrastructure)是一个用非对称密码算法原理和技术来实现并提供安全服务的具有通用性的安全基础设施,是一种遵循标准的利用公钥加密技术为网上电子商务、电子政务的开展,提供一整套安全的基础平台。PKI,公钥基础设施,顾名思义,PKI技术就是利用公钥理论和技术建立的提供网络信息安全服务的基础设施。PKI管理平台能够为网络中所有需要采用加密和数字签名等密码服务的用户提供所需的密钥和证书管理,用户可以利用PKI平台提供的安全服务进行安全通信。
PKI公开密钥基础设施能够让应用程序增强自己的数据和资源的安全,以及与其他数据和资源交换中的安全。使用PKI安全基础设施像将电器插入墙上的插座一样简单。
PKI的内容
一个完整的PKI系统必须具备权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统和应用接口(API)等基本组成部分。
1、权威认证机构(Certificate Authority):权威认证机构简称CA,是PKI的核心组成部分,也称作认证中心。它是数字证书的签发机构。CA是PKI的核心,是PKI应用中权威的、可信任的、公正的第三方机构。
2、数字证书库:在使用公钥体制的网络环境中,必须向公钥的使用者证明公钥的真实合法性。因此,在公钥体制环境中,必须有一个可信的机构来对任何一个主体的公钥进行公证,证明主体的身份以及它与公钥的匹配关系。目前较好的解决方案是引进证书(Certificate)机制。(1)证书。证书是公开密钥体制的一种密钥管理媒介。它是一种权威性的电子文档,形同网络环境中的一种身份证,用于证明某一主体的身份以及其公开密钥的合法性。(2)证书库。证书库是证书的集中存放地,是网上的一种公共信息库,供广大公众进行开放式查询。到证书库访问查询,可以得到想与之通信实体的公钥。证书库是扩展PKI系统的一个组成部分,CA的数字签名保证了证书的合法性和权威性。
3、密钥备份及恢复系统:如果用户丢失了密钥,会造成已经加密的文件无法解密,引起数据丢失,为了避免这种情况,PKI提供密钥备份及恢复机制。
4、证书作废系统:有时因为用户身份变更或者密钥遗失,需要将证书停止使用,所以提供证书作废机制。
5、PKI应用接口系统: PKI应用接口系统是为各种各样的应用提供安全、一致、可信任的方式与PKI交互,确保所建立起来的网络环境安全可信,并降低管理成本。没有PKI应用接口系统,PKI就无法有效地提供服务。
整个PKI系统中,只有CA会和普通用户发生联系,其他所有部分对用户来说都是透明的。
为什么要使用非对称加密算法?
如果你理解了对称加密算法的含义,你就理解了非对称加密算法的意思。你猜对了,非对称加密算法中的加密密钥和解密密钥是不一样的。要找到一种非对称加密算法可不是一件容易的事,Ron Rivest, Adi Shamir 和Leonard Adleman终于在1978年提出了RSA公开密钥算法(以此三人姓名的首字母命名),是现在应用最广泛的一种非对称加密算法,这种算法的运算非常复杂,速度也很慢,主要是利用数学上很难分解两个大素数的乘积的原理。RSA算法的可靠性没有得到过数学上的论证,但实践证明它是我们可以依赖的工具。
到底为什么我们需要这个笨重、复杂、缓慢的加密算法,在我们有了DES这样的高速算法的时候?
设想你的朋友需要发送一些非常重要、非常机密的信息给你,而你跟外界的每一条通路都被监听了。那还不简单,你的朋友用DES对信息加密后传送给你不就行了,没有密钥,就算被人监听,他也不知道什么意思呀。可是问题在于你也需要密钥才能查看这些信息!你必须要知道你的朋友给信息加密的密钥才能完成对信息的接收!而你的朋友是没有一种安全的方法传递密钥给你的。如果说经常跟你通信的朋友还可以事先跟你约定好密钥,那么Internet上那么多人和机构是没有办法跟你事先就约定好的。公开密钥系统(也就是非对称加密系统)的作用就在于,此时,你可以先将加密密钥正常传送给你的朋友,让你的朋友用这个加密密钥对信息进行加密后传送给你,然后你再用解密密钥恢复信息的明文进行阅读,在这个过程中解密密钥不会以任何形式传送,只掌握在你的手中,也就是说你的朋友对信息加密后,他自己也没办法再解开进行验证。监听者得到了加密密钥,却无法得出解密密钥,也就无法查看信息的明文。
加密密钥和解密密钥是相对的说法,如果用加密密钥加密那么只有解密密钥才能恢复,如果用解密密钥加密则只有加密密钥能解密,所以它们被称为密钥对,其中的一个可以在网络上发送、公布,叫做公钥,而另一个则只有密钥对的所有人才持有,叫做私钥,非对称公开密钥系统又叫做公钥系统,是我们现代金融业的基石。
DES
单钥密码体制:加密解密用同一把密钥;不足在于密钥的管理和传送
SHA和MD5
消息摘要:数据块生成一个数字指纹,不管数据块的大小长度。
RSA
公钥密码:公开的加密密钥,不公开的解密密钥。
数字签名DSA
对数字指纹进行RSA加密。两个优点,发送者不能抵赖(如何保证?),接受者可以验证正确性,因为加密密钥是公开的。
数字签名使用私钥来签名的。
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。
接受方还必须有一个机制,以确保密钥对是属于真正的发送者的。而不是属于没个发送方的模仿者的。这是通过受信任的第三方颁发的证书来完成的,该证书证实了公钥所有者的身份标识。