您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 计算机数据及软件的安全
3-1计算机数据加密第三章计算机数据及软件的安全信息安全问题通信过程中的问题:发送方如何确保内容正确的传输到接收方,即内容没有被修改过?发送方如何确保在传输内容的过程中不被除接收人以外的第三方知道?接收方如何确内容确实是由发送方传输过来的,而不是由其它伪造的?等等…信息安全的基本要求真实性对信息的来源进行判断,能对伪造来源的信息予以鉴别保密性保证机密信息不被窃听,或窃听者不能了解信息的真实含义完整性保证数据的一致性,防止数据被非法用户篡改其它(如不可抵赖、可控性等)信息摘要算法3-1计算机数据加密MD5算法介绍MD5=MessageDigestAlgorithmV5中文名为:消息摘要算法第五版当然由MD2、MD3、MD4发展而来是最常用的一种散列函数,用以提供消息完整性保护无法从结果还原出原始信息算法的输入输出输入:任何长度的字节流输出:16字节值(有时会以32位十六进制字符表示)关键点:输入不同,输出也不同(并非绝对)MD5算法过程MD5算法简要描述MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。更简单的描述对原始数据分组每一组进行大量复杂的与、或、异或等运算运算过程中有很多精心挑选的常量参与结果处理成16字节的信息MD5算法的应用给文件生成“指纹”不同的文件,其MD5算法的结果也不同,相当于一个独一无二的“指纹”。例如下载的软件,通常会提供一个MD5值,下载完成后可以重新计算MD5值以校验下载是否损坏,或者是被人恶意修改过登录认证时保护敏感信息例如网站将你的登录密码经过计算为MD5后存储,验证时也将用户的输入的密码计算MD5,对两个MD5以后的值比较,而不是比较原始密码,这样就没有任何人知道你的密码,包括网站本身SHA-1算法介绍SHA-1=SecureHashAlgorithmV1当然也有SHA-2,以及SHA-0SHA-2是一组标准的统称:SHA-224,SHA-256,SHA-384,SHA-512同MD5类似,也是产生消息摘要的算法SHA-1算法的输入输出输入:任何长度的字节流输出:20字节值(有时会以40位十六进制字符表示)SHA-1算法的应用同MD5类似,用作信息摘要或敏感信息保护信息摘要算法的安全性安全性分析理论上可以证明算法是不安全的。即不同的信息算出的摘要结果可能是相同的。但是给定一个MD5值,要构造一个信息使其MD5值与给定值相同(即所谓产生碰撞),是非常因难的。当前仍广泛应用于互联网信息安全应用中。安全性:SHA-2SHA-1MD5碰撞碰撞是存在的,但产生是困难的山东大学王小云以研究用更少的计算产生碰撞的方法出名。加密算法——对称加密3-1计算机数据加密对称加密算法的概念概念简单来说,加密和解密使用同一个密钥的算法,称为对称加密算法。特点:算法公开、计算量小、加密速度快不足:双方都使用同样钥匙,安全性较低常见对称密算法DES/3DESRC2/RC4Blowfish等等异或加密的安全性分析异或加密即用一个密钥对给定的信息进行异或运算,得到的密文,可以用相同的密钥再异或一次解密安全性分析不要采用该算法,因为这种加密算法和直接给明文基本没有区别用所谓重合码计数法找出密钥长度,按此长度移动密文并且和自身异或。这样就消除了密钥破解只需要几秒到几小时的时间用rand()随机数产生的一系列结果作为密钥进行异或的方法也不可取,也是易于解密的。结论:不要自己随便去“创造”加密算法算法保密不是真保密,密钥保密才是真谛DES算法(一)DES=DataEncryptionStandard口气很大:数据加密标准,确实应用非常广泛现在已经不被视为一种安全的加密算法,主要因为它使用的56位密钥(7字节),过短,易于暴力破解,据说有人在22小时15分钟内即公开破解了一个DES密钥3DES更加安全,但也存在理论上的攻击办法2001年,DES被更高级的加密标准AES取代特点明文和密文是等长的一次只能对8字节数据进行加密或解密加密和解密的过程是互相可逆的DES算法(二)密钥DES使用56位密钥,但实际使用中,通用会指定64位(8个字节),最后8位丢弃不用。加/解密过程将数据分成8字节一组的一个一个块(Block)对每一块用密钥进行复杂的变换,得到加/解密结果安全性目前为止,最有效的破解办法仍然是暴力破解法56位的加密强度确实不高,实际使用中多用3DES加密模式及相关概念(一)ECB加密模式ECB是最简单的加密模式,需要加密的消息按照块密码的块大小被分为若干块,并对每个块进行独立加密缺点:在于同样的平文块会被加密成相同的密文块;因此,它不能很好的隐藏数据模式例如:左图是原图,中图可能是ECB模式加密的结果,而好的加密模式则可能要加密成形如右图的结果加密模式及相关概念(二)CBC加密模式每个块先与前一个密文块进行异或后,再进行加密这种方法,每个密文块都依赖于它前面的所有明文块因为前一个密文块可能不同,即使是相同的块加密的结果也会不同,达到前文所说的要求。初始化向量(IV)CBC模式下,对每一个块进行加密,除了需要密钥,还需要前一个块的密文,那么对于第一个块怎么办呢?初始化向量即是用于第一块加密,相当于另一个密钥其它加密模式很多:PCBC、CFB、OFB等加密模式及相关概念(三)填充(Padding)加密的算法只能对一块数据进行加密,每一块长度是固定的,例如8字节。那么对于明文不是8字节的整数倍时,最后一块怎么办?对,对最后一块填充补齐,补足8字节。填充模式PKCS7、ANSIX923、ISO10126PKCS5Padding、SSL3PaddingNone、Zero等很多很多C#和Java支持的填充模式不完全一样,经常搞出问题填充算法都很简单,如遇两者不兼容,可以自己写代码C#和Java比较:加密四要素总结密钥(Key)8字节密钥(实际只用前7个字节)块模式CBC/ECB(最常用,也可能有其它)初始向量(IV)如果块模式为CBC,则需要初始向量,与密钥等长填充模式(Padding)双方约定好的填充模式3DES算法3DES=TripleDES使用3个56位密钥进行3次DES加密(3重加密)是更安全,更实用的加密方法算法简要说明设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文:加密:C=Ek3(Dk2(Ek1(P)))解密:P=Dk1((EK2(Dk3(C)))3DES使用24字节密钥初始向量(IV)RC4算法RC4算法可以使用2048位的密钥RC4算法速度可以达到DES加密的10倍加密算法——非对称加密3-1计算机数据加密非对称加密的概念非对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥公钥:公开的,任何人都知道私钥:只有自己知道算法:公开的,任何人都可以拿其它人的公钥进行计算加密/解密。而计算的结果,只有拥有私钥的人才可以解密/加密常见算法:RSA、Diffie–Hellman等。非对称加密使用场景A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。A将这个消息发给B(已经用B的公钥加密消息)。B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。RSA算法概念RSA算法是最常用的一种非对称加密算法由三个人(分别是R、S、A开头)一起提出得名RSA算法安全性RSA算法安全性的基础是:大整数的因数分解极为困难,假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。通常越大越安全(不容易暴力破解),为了安全,实际使用中,RSA的密钥通常在1024位以上。目前世界上还没有任何可靠的攻击RSA算法的方式RSA算法原理(一)公钥和私钥的产生随意选择两个大的质数p和q,p不等于q,计算N=pq根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1)选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)用以下这个公式计算d:d×e≡1(mod(p-1)(q-1))将p和q销毁(N,e)是公钥,(N,d)是私钥加密消息假设Bob想给Alice送一个消息,他知道Alice产生的公钥N和e将原始信息分为多段,每一段(假定为n)分别用以下公式计算出c:将多个n计算出的多个c串在一起,就是密文,发送即可。RSA算法原理(二)解密消息Alice得到Bob的消息c后就可以利用她的密钥(N,d)来解码。她可以用以下这个公式来将c转换为n:得到n后,她可以将原来的信息m重新复原。算法的运算速度比起DES和其它对称算法来说,RSA要慢得多。实际上通常来说,RSA算法不用来加密消息,加密消息用对称算法如DES,而用RSA来加密传输密钥。密钥分配对RSA来说分配公钥的过程是非常重要的。假设蛋蛋交给阿庆一个公钥(蛋蛋自己的),并使阿庆相信这是小Q的公钥,并且她可以截下小Q和阿庆之间的信息传递,蛋蛋即可用自己的私钥解密他们传递信息。这个问题需要用数字证书来解决(后边会讲)综合应用——SSL的应用3-1计算机数据加密SSL的概念SSL=SecureSocketsLayer是网景公司(Netscape)在推出Web浏览器首版的同时,提出的协议。现在的Web浏览器普遍将Http和SSL相结合,从而实现安全通信。TLS(TransportLayerSecurity)协议是SSL的继任者SSL协议包含:握手:加密算法协商认证:确认通信双方的身份(对双方均可认证)数据加密:对需要传输的数据进行加密SSL的工作方式以客户端为例:发送一个“ClientHello”消息,说明它支持的密码算法列表、压缩方法及最高协议版本,以及稍后将被使用的随机数。然后收到一个“ServerHello”消息,包含服务器选择的连接参数,源自客户端初期所提供的“ClientHello”。当双方知道了连接参数,客户端与服务器交换证书(依靠被选择的公钥系统)。这些证书通常基于X.509。服务器请求客户端公钥。客户端有证书即双向身份认证,没证书时随机生成公钥。客户端与服务器通过公钥保密协商共同的主密钥(双方随机协商)。所有其他关键数据的加密均使用这个“主密钥”。SSL的应用HTTPS(HTTPWithSSL/TLS)应用SSL就像一个“插件”,工作在TCP与HTTP之间HTTPS只是对HTTP的传输部分增加了点东西,对HTTP协议没有任何修改SSL协议对客户端和服务端都可以认证,但通常浏览器不对客户端进行认证。(因为你没有证书)HTTPS与HTTP的区别默认使用不同的端口,HTTPS使用443,HTTP使用80HTTPS在传输内容之前,需要先握手,确定双的方算法以及一些加密数据用的密钥等。HTTPS传输的所有内容都是加密的,接收方在收到后,必须解密还原成原始的HTTP报文。发布HTTPS的网站,必须要购买相应的服务器证书。银行、支付宝证书应用双向认证,对客户端也认证,以确认身份综合应用——数字证书与数字签名3-1计算机数据加密PKI的概念PKI=PublicKeyInfrastructure即:公钥基础设施,是一种遵循既定标准的密钥管理平台,它能够为所有网络
本文标题:计算机数据及软件的安全
链接地址:https://www.777doc.com/doc-1269159 .html