数据加密的基本过程就是对原来为明文的
文件或数据按某种
算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的
密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为
解密,即将该
编码信息转化为其原来数据的过程。
相关简介
据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在
第二次世界大战期间,德国军方启用“恩尼格玛”密码机,
密码学在战争中起着非常重要的作用。
随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,
美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了AES、ECC等。
使用密码学可以达到以下目的:
保密性:防止用户的标识或数据被读取。
身份验证:确保数据发自特定的一方。
分类
加密技术通常分为两大类:“对称式”和“非对称式”。
对称式加密技术
对称式加密就是加密和解密使用同一个
密钥,通常称之为“Session Key ”这种
加密技术在当今被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”
加密法,它的Session Key长度为56bits。
非对称式加密技术
非对称式加密就是加密和解密所使用的不是同一个
密钥,通常有两个密钥,称为“
公钥”和“
私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“
公钥”是指可以对外公布的,“
私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难不把
密钥告诉对方,不管用什么方法都有可能被别人
窃听到。而非对称式的加密方法有两个
密钥,且其中的“
公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的
私钥即可以,这样就很好地避免了密钥的传输安全性问题。
算法
一个加密系统S可以用数学符号描述如下:
S={P, C, K, E, D}
其中
P——明文空间,表示全体可能出现的明文集合,
C——密文空间,表示全体可能出现的密文集合,
当给定密钥kÎK时,各符号之间有如下关系:
C = Ek(P), 对明文P加密后得到密文C
P = Dk(C) = Dk(Ek(P)), 对密文C解密后得明文P
如用E-1 表示E的逆,D-1表示D的逆,则有:
Ek = Dk-1且Dk = Ek-1
因此,加密设计主要是确定E,D,K。
RSA是Rivest、Shamir和Adleman提出来的基于数论非对称性(公开钥)加密
算法。大整数的素因子难分解是
RSA算法的基础。
RSA在国外早已进入实用阶段,已研制出多种高速的RSA的专用芯片。尽管RSA的许多特性并不十分理想,但迫于
信息安全的实际需要,许多重要的信息系统还是采用RSA作为基础加密机制。从RSA提出不久,我国有关部门就一直对它进行研究。从应用的角度看,软件实现的RSA已经开始用于
计算机网络加密,用来完成
密钥分配、
数字签名等功能。
除了RSA之外,还有DES(
数据加密标准)。尽管DES公开了其加密
算法并曾被美国列为“标准”,但很快被废弃。
加密技术又回归到“
算法保密”的传统上。
常见加密算法
DES(Data Encryption Standard):
对称算法,
数据加密标准,速度较快,适用于加密大量数据的场合;
3DES(Triple DES):是基于DES的
对称算法,对一块数据用三个不同的
密钥进行三次加密,强度更高;
RC2和
RC4:
对称算法,用变长
密钥对大量数据进行加密,比 DES 快;
IDEA(International Data Encryption Algorithm)
国际数据加密算法,使用 128 位
密钥提供非常强的安全性;
RSA:由 RSA 公司发明,是一个支持变长
密钥的公共密钥
算法,需要加密的文件块的长度也是可变的,
非对称算法; 算法如下:
首先, 找出三个数, p, q, r,
其中 p, q 是两个不相同的质数, r 是与 (p-1)(q-1) 互为质数的数。
p, q, r 这三个数便是 private key。
接着, 找出 m, 使得 rm == 1 mod (p-1)(q-1).....
这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用
辗转相除法就可以得到了。
再来, 计算 n = pq.......
m, n 这两个数便是 public key
DSA(Digital Signature Algorithm):
数字签名算法,是一种标准的 DSS(
数字签名标准),严格来说不算加密算法;
AES(Advanced Encryption Standard):
高级加密标准,
对称算法,是下一代的加密算法标准,速度快,安全级别高,在21世纪AES 标准的一个实现是 Rijndael 算法。
BLOWFISH,它使用变长的
密钥,长度可达448位,运行速度很快;
对
MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
在
MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,如今信息字节长度=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。(可参见
MD5算法词条)
PKCS:The Public-Key Cryptography Standards (PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及
数字签名、
数字信封的格式等方面的一系列相关协议。
SSF33,SSF28,SCB2(SM1):国家密码局的隐蔽不公开的商用
算法,在国内民用和商用的,除这些都不容许使用外,其他的都可以使用;
其它算法
加密算法的种类
在如今的信息安全领域,有各种各样的加密算法凝聚了计算机科学家们的智慧。从宏观上来看,这些加密算法可以归结为三大类:
哈希算法、
对称加密算法、
非对称加密算法。