深圳学历教育www.szstudy.com.cn深圳成人高考 数据加密技术的研究综述
收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。在计算机专网系统中广泛使用的对称加密算法有DES、IDEA和AES。
■
不对称加密算法
不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。
■
不可逆加密算法
不可逆加密算法不存在密钥保管和分发问题,非常适合在分布式网络系统
上使用,但因加密计算复杂,工作量相当繁重,通常只在数据量有限的情形下使用,如广泛应用在计算机系统中的口令加密,利用的就是不可逆加密算法。近年来,随着计算机系统性能的不断提高,不可逆加密的应用领域正在逐渐增大。在计算机网络中应用较多不可逆加密算法的有RSA公司发明的MD5算法和由美国国家标准局建议的不可逆加密标准SHS(Secure Hash Standard:安全杂乱信息标准)等。
2.4 对称加密、非对称加密和数字签名
对称加密算法使用单个私钥来加密和解密数据。由于具有密钥的任意一方都可以使用该密钥解密数据,因此必须保护密钥不被未经授权的代理得到。
非对称加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。公钥和私钥都在数学上相关联;用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证。公钥可以提供给任何人;公钥用于对要发送到私钥持有者的数据进行加密。两个密钥对于通信会话都是唯一的。
7
深圳学历教育www.szstudy.com.cn深圳成人高考 数据加密技术的研究综述
数字签名(Digital Signature)是公开密钥加密技术的一种应用, 是指用发送方的私有密钥加密报文摘要, 然后将其与原始的信息附加在一起, 合称为数字签名。其使用方式是:报文的发送方从报文文本中生成一个128位或160位的单向散列值(或报文摘要),并用自己的私有的密钥对这个散列值进行加密,形成发送方的数字签名;然后将这个数字签名作为报文的附件和报文一起发送给报文的接收方;报文的接收方首先从接收到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公开密钥对报文附加的数字签名进行解密;如果这两个散列值相同,那么接收方就能确认数字签名是发送方的。通过数字签名能够实现对原始报文的的鉴别和验证,保证报文的完整性、权威性和发送者对报文的不可抵赖性。数字签名机制提供了一种鉴别方法,普遍用于银行、电子商务等, 以解决伪造、抵赖、冒充、篡改等问题。
8
深圳学历教育www.szstudy.com.cn深圳成人高考 数据加密技术的研究综述
3 DES加密标准
本部分主要介绍DES的定义、起源,并介绍DES算法的框架以及DES实际的案例,然后讨论一下DES算法的安全性和DES的应用误区;最后介绍一下DES的拓展算法,例如3DES、AES算法。
3.1 DES介绍和DES算法框架
它出自 IBM 的研究工作,并在 1997 年被美国政府正式采纳。它很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的 DES 是嵌入硬 件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用 DES。
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环。
DES 的主要形式被称为蛮力的或彻底密钥搜索,即重复尝试各种密钥直到有一个符合为止。如果 DES 使用 56 位的密钥,则可能的密钥数量是 2 的 56 次方个。随着计算机系统能力的不断发展,DES 的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过 ,DES 现在仅用于旧系统的鉴定,而更多地选择新的加密标准 — 高级加密标准(Advanced Encryption Standard,AES)。
DES 的常见变体是三重 DES,使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。
3.2 DES实例分析
密文到明文的解密过程可采用与加密完全相同的算法。不过解密要用加密的逆变换,就是把上面的最后换位表和初始换位表完全倒过来变换。这里不再赘述。 下面这个例子中演示了如何使用c#中的加密包进行DES算法加密,大家可以借助这个例子一窥DES加密的用法。 des_demo.cs代码如下: using System;
using System.Security.Cryptography;
9
深圳学历教育www.szstudy.com.cn深圳成人高考 数据加密技术的研究综述
using System.IO; using System.Text;
public class EncryptStringDES {
public static void Main(String[] args) { if (args.Length < 1) {
Console.WriteLine(\ encrypt>\ return; }
// 使用UTF8函数加密输入参数
UTF8Encoding utf8Encoding = new UTF8Encoding();
byte[] inputByteArray = utf8Encoding.GetBytes(args [0].ToCharArray());
// 方式一:调用默认的DES实现方法DES_CSP. DES des = DES.Create();
// 方式二:直接使用DES_CSP()实现DES的实体
转贴于 中国//DES_CSP DES = new DES_CSP();
// 初始化DES加密的密钥和一个随机的、8比特的初始化向量(IV) Byte[] key = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef};
Byte[] IV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef}; des.Key = key; des.IV = IV; // 建立加密流
SymmetricStreamEncryptor sse = des.CreateEncryptor(); // 使用CryptoMemoryStream方法获取加密过程的输出 CryptoMemoryStream cms = new CryptoMemoryStream(); // 将SymmetricStreamEncryptor流中的加密数据输出到 CryptoMemoryStream中 sse.SetSink(cms);
10
深圳学历教育www.szstudy.com.cn深圳成人高考 数据加密技术的研究综述
// 加密完毕,将结果输出到控制台 sse.Write(inputByteArray); sse.CloseStream(); // 获取加密数据
byte[] encryptedData = cms.Data; // 输出加密后结果
Console.WriteLine(\加密结果:\
for (int i = 0; i < encryptedData.Length; i++) { Console.Write(\ }
Console.WriteLine();
//上面演示了如何进行加密,下面演示如何进行解密
SymmetricStreamDecryptor ssd = des.CreateDecryptor(); cms = new CryptoMemoryStream(); ssd.SetSink(cms);
ssd.Write(encryptedData); ssd.CloseStream();
byte[] decryptedData = cms.Data;
char[] decryptedCharArray = utf8Encoding.GetChars(decryptedData); Console.WriteLine(\解密后数据:\ Console.Write(decryptedCharArray); Console.WriteLine(); } } 编译:
D:\\csharp>csc des_demo.cs
Microsoft (R) C# Compiler Version 7.00.8905 [NGWS runtime 2000.14.1812.10]
Copyright (C) Microsoft Corp 2000. All rights reserved. 运行实例:
D:\\csharp>des_demo.exe 使用C#编写DES加密程序的framework 加密结果:
11