加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。加密之所以安全,绝非因不知道加密解密算法方法,而是加密的密钥是绝对的隐藏,现在流行的RSA和AES加密算法都是完全公开的,一方取得已加密的数据,就算知道加密算法也好,若没有加密的密钥,也不能打开被加密保护的信息。单单隐蔽加密算法以保护信息,在学界和业界已有相当讨论,一般认为是不够安全的。公开的加密算法是给黑客和加密家长年累月攻击测试,对比隐蔽的加密算法要安全得多1。
加密体系包括了加密算法、数字摘要、数字签名和CA。
加密算法加密算法可以分为两类:对称加密和非对称加密。
对称加密1.概述
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。
所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。
因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题1。
2.常用算法
在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。不同算法的实现机制是不同的。
3.优缺点
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好密钥,然后使双方都能保存好密钥。其次如果一方的密钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一密钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担1。
非对称加密1.概述
对称加密算法在加密和解密时使用的是同一个密钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
2.常用算法
在非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
3.优缺点
非对称加密与对称加密相比,其安全性更好:对称加密的通信双方使用相同的秘钥,如果一方的秘钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对密钥,一个用来加密,一个用来解密,而且公钥是公开的,密钥是自己保存的,不需要像对称加密那样在通信之前要先同步密钥。
非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
一般来说,非对称加密是用来处理短消息的,而相对于较长的消息则显得有些吃力。当然,可以将长的消息分成若干小段,然后再分别签名。不过,这样做非常麻烦,而且会带来数据完整性的问题。比较合理的做法是在数字签名前对消息先进行数字摘要2。
数字摘要概述数字摘要是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数。数字摘要就是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。
数字摘要就是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致1。
优缺点一个Hash函数的好坏是由发生碰撞的概率决定的。如果攻击者能够轻易地构造出两个消息具有相同的Hash值,那么这样的Hash函数是很危险的。一般来说,安全Hash标准的输出长度为160位,这样才能保证它足够的安全。 这一加密方法亦称安全Hash编码法(SHA:Secure Hash Algorithm)或MD5(MD Standards for Message Digest),由Ron Rivest所设计。该编码法采用单向Hash函数将需加密的明文“摘要”成一串128bit的密文,这一串密文亦称为数字指纹(Finger Print),它有固定的长度,且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。这样这摘要便可成为验证明文是否是“真身”的“指纹”了1。
数字签名概述数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
数字签名是非对称密钥加密技术与数字摘要技术的应用。
简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(DSS)。
数字签名算法依靠公钥加密技术来实现的。在公钥加密技术里,每一个使用者有一对密钥:一把公钥和一把私钥。公钥可以自由发布,但私钥则秘密保存;还有一个要求就是要让通过公钥推算出私钥的做法不可能实现1。
常用算法普通的数字签名算法包括三种算法:密码生成算法;标记算法;验证算法。
主要功能数字签名保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
数字签名是个加密的过程,数字签名验证是个解密的过程1。
原理每个人都有一对“钥匙”(数字身份),其中一个只有她/他本人知道(密钥),另一个公开的(公钥)。签名的时候用密钥,验证签名的时候用公钥。又因为任何人都可以落款声称她/他就是你,因此公钥必须向接受者信任的人(身份认证机构)来注册。注册后身份认证机构给你发一数字证书。对文件签名后,你把此数字证书连同文件及签名一起发给接受者,接受者向身份认证机构求证是否真地是用你的密钥签发的文件。
在通讯中使用数字签名一般基于以下原因:
一、鉴权
公钥加密系统允许任何人在发送信息时使用公钥进行加密,数字签名能够让信息接收者确认发送者的身份。当然,接收者不可能百分之百确信发送者的真实身份,而只能在密码系统未被破译的情况下才有理由确信。
鉴权的重要性在财务数据上表现得尤为突出。举个例子,假设一家银行将指令由它的分行传输到它的中央管理系统,指令的格式是(a,b),其中a是账户的账号,而b是账户的现有金额。这时一位远程客户可以先存入100元,观察传输的结果,然后接二连三的发送格式为(a,b)的指令。这种方法被称作重放攻击。
二、完整性
传输数据的双方都总希望确认消息未在传输的过程中被修改。加密使得第三方想要读取数据十分困难,然而第三方仍然能采取可行的方法在传输的过程中修改数据。一个通俗的例子就是同形攻击:回想一下,还是上面的那家银行从它的分行向它的中央管理系统发送格式为(a,b)的指令,其中a是账号,而b是账户中的金额。一个远程客户可以先存100元,然后拦截传输结果,再传输(a,b3),这样他就立刻变成百万富翁了。
三、不可抵赖
在密文背景下,抵赖这个词指的是不承认与消息有关的举动(即声称消息来自第三方)。消息的接收方可以通过数字签名来防止所有后续的抵赖行为,因为接收方可以出示签名给别人看来证明信息的来源1。
CA概述为解决互联网的安全问题,世界各国信息安全业者进行了多年的研究,形成了全方位、多层次的安全解决方案。其中,目前被广泛采用的PKI技术,在安全解决方案中占据了重要位置,它可以保证信息传输的机密性、真实性、完整性和不可否认性,从而保证信息的安全传输。
一个完整地PKI系统是由认证机构、密钥管理中心(KMC)、注册机构、目录服务、以及安全认证应用软件、证书应用服务等部分组成,其中认证机构(Certification Authority,CA)在PKI系统中居于核心地位。
我们知道,为了在信息传输的过程中,确保信息的机密性、真实性、完整性和不可否认性,采用了公开密钥加密机制。而公钥机制所涉及的公钥是公开的、需要通过互联网传送。因此,需要解决的一个重要问题就是公钥的信任问题。必须有一个可信任的机构对任何一个主体公钥进行公证,证明主体的身份以及它与公钥的匹配关系。CA就是这样的机构。为了确保CA的公信力,它必须具有高度的权威性、公正性和第三方性。目前在国内存在的CA基本上可以分为三类:第一类是行业性的CA,如中国金融认证中心(CFCA)、海关CA、商务部CA(国富安CA)等,这些CA是由相应行业的主管部门牵头建立的;第二类是地方性CA,如北京CA、上海CA、浙江CA等,这些CA是由当地地方政府牵头建立的;第三类CA是商业性CA,如天威诚信CA。这类CA进行商业化经营,并不从属于任何行业或地域,但它们也必须具有良好的公信力,必须由国家主管部门审批通过才能投入运营,以确保其权威、公正性1。
基本功能作为CA,必须具有如下基本功能:
(1)签发数字证书
(2)CA密钥的管理
(3)接受证书申请,审核申请者身份
(4)证书管理
(5)提供证书和证书状态的查询
以上功能中,最为重要的是签发证书。CA对其签发的数字证书全部内容,包括证书用户姓名标识、公钥信息、颁发者标识、证书有效期、签名算法标识等信息,进行数字签名。从而权威地证明了证书持有者和公钥的唯一匹配关系。
CA的另一项重要功能是证书查询。CA的证书库可以作为公钥的来源地。此外,证书有效性的查询对于安全认证也是至关重要的。由于证书遗失或其他原因,证书可能需要在失效期未到时就予以撤销。CA提供证书撤销列表(Certificate Revocation List,CRL)或其他方法供证书依赖方实时查询。
CA自己的一对密钥管理,必须确保其具备高度的机密性,防止其被伪造而颠覆CA的权威性。在CFCA,根密钥被存放在安全的屏蔽机房,其访问受到了严格的管理。CA的密钥由通过国家认证的加密机产生,私钥一经产生将不能通过明文方式离开加密机。这些措施保证了CFCA根密钥的安全与CFCA的权威性2。
组成部分CA主要由以下部分组成:
CA服务器:这是CA的核心,是数字证书生成、发放的运行实体,同时提供发放证书的管理、证书废止列表(CRL)的生成和处理等服务。
证书下载中心:该中心连接在互联网上,用户通过登录CA网站访问证书下载中心,CA服务器生成的证书通过证书下载中心供用户下载。
目录服务器:它的功能是提供数字证书的存储,以及数字证书和证书撤销列表(CRL)的查询。业者有时把它称为”LDAP”,这是因为目录服务的技术标准遵循LDAP (轻量级目录访问协议)的缘故。
OCSP服务器:该服务器向用户提供证书在线状态的查询。
密钥管理中心(KMC):根据国家密码管理规定,加密用私钥必须由权威、可靠的机构进行备份和保管。CFCA被授权建立KMC,以备份和保管用户的加密密钥。
证书注册机构(Registration Authority,RA):它负责受理证书的申请和审核,其主要功能是接受客户证书申请并进行审核。 RA主要是远程的,CFCA的RA部署在各家用户银行、税务机关、或企业所在地。因为,这样一方面便于进行客户资料的审查,另一方面也便于银行将证书与客户的帐号进行绑定,以实现认证。但即使RA部署在远程所在地,这些RA也仍然是CA的组成部分。
此外,CFCA还在其所在地部署了直属CA,对一些比较零散的,不适合或者不必要建立RA的用户提供注册服务2。