密码学简介

本文介绍了密码学的历史和发展,重点讲解了对称加密算法(如DES、3DES、AES)和非对称加密算法(如RSA、DSA、ECC)。对比了AES与3DES、ECC与RSA的不同之处,阐述了它们的工作原理和应用场景。
据记载,公元前 400 年,古希腊人发明了置换密码。 1881 年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。
随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在 1997 年,美国国家标准局公布实施了“美国数据加密标准( DES )”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有 DES 、 RSA 、 SHA 等。随着对加密强度需求的不断提高,近期又出现了 AES 、 ECC 等。
使用密码学可以达到以下目的:
保密性:防止用户的标识或数据被读取。
数据完整性:防止数据被更改。
身份验证:确保数据发自特定的一方。
根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。
对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。
非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。
对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:
DES ( Data Encryption Standard ):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES ( Triple DES ):是基于 DES ,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES ( Advanced Encryption Standard ):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
AES
2000 年 10 月, NIST (美国国家标准和技术协会)宣布通过从 15 种侯选算法中选出的一项新的密匙加密标准。 Rijndael 被选中成为将来的 AES 。 Rijndael 是在 1999 年下半年,由研究员 Joan Daemen 和 Vincent Rijmen 创建的。 AES 正日益成为加密各种形式的电子数据的实际标准。
美国标准与技术研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高级加密标准 (AES) 规范。
算法原理
AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。 AES 使用几种不同的方法来执行排列和置换运算。
AES 是一个迭代的、对称密钥分组的密码,它可以使用 128 、 192 和 256 位密钥,并且用 128 位( 16 字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。
AES与3DES的比较
算法名称
算法类型
密钥长度
速度
解密时间(建设机器每秒尝试 255 个密钥)
资源消耗
AES
对称 block 密码
128 、 192 、 256 位
1490000 亿年
3DES
对称 feistel 密码
112 位或 168 位
46 亿年
常见的非对称加密算法如下:
RSA :由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
DSA ( Digital Signature Algorithm ):数字签名算法,是一种标准的 DSS (数字签名标准);
ECC ( Elliptic Curves Cryptography ):椭圆曲线密码编码学。
ECC
在 1976 年,由于对称加密算法已经不能满足需要, Diffie 和 Hellman 发表了一篇叫《密码学新动向》的文章,介绍了公匙加密的概念,由 Rivet 、 Shamir 、 Adelman 提出了 RSA 算法。
随着分解大整数方法的进步及完善、计算机速度的提高以及计算机网络的发展,为了保障数据的安全, RSA 的密钥需要不断增加,但是,密钥长度的增加导致了其加解密的速度大为降低,硬件实现也变得越来越难以忍受,这对使用 RSA 的应用带来了很重的负担,因此需要一种新的算法来代替 RSA 。
1985 年 N.Koblitz 和 Miller 提出将椭圆曲线用于密码算法,根据是有限域上的椭圆曲线上的点群中的离散对数问题 ECDLP 。 ECDLP 是比因子分解问题更难的问题,它是指数级的难度。
原理——椭圆曲线上的难题
  椭圆曲线上离散对数问题 ECDLP 定义如下:给定素数 p 和椭圆曲线 E ,对 Q = kP ,在已知 P , Q 的情况下求出小于 p 的正整数 k 。可以证明由 k 和 P 计算 Q 比较容易,而由 Q 和 P 计算 k 则比较困难。
将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,将椭圆曲线中的乘法运算与离散对数中的模幂运算相对应,我们就可以建立基于椭圆曲线的对应的密码体制。
例如,对应 Diffie-Hellman 公钥系统,我们可以通过如下方式在椭圆曲线上予以实现:在 E 上选取生成元 P ,要求由 P 产生的群元素足够多,通信双方 A 和 B 分别选取 a 和 b , a 和 b 予以保密,但将 aP 和 bP 公开, A 和 B 间通信用的密钥为 abP ,这是第三者无法得知的。
对应 ELGamal 密码系统可以采用如下的方式在椭圆曲线上予以实现:
将明文 m 嵌入到 E 上 Pm 点,选一点 B ∈ E ,每一用户都选一整数 a , 0 < a < N , N 为阶数已知, a 保密, aB 公开。欲向 A 送 m ,可送去下面一对数偶:[ kB , Pm+k(aAB) ], k 是随机产生的整数。 A 可以从 kB 求得 k(aAB) 。通过: Pm+k(aAB)- k(aAB)=Pm 恢复 Pm 。同样对应 DSA ,考虑如下等式:
K=kG  [ 其中 K , G 为 Ep(a,b) 上的点, k 为小于 n ( n 是点 G 的阶)的整数 ]
不难发现,给定 k 和 G ,根据加法法则,计算 K 很容易;但给定 K 和 G ,求 k 就相对困难了。
这就是椭圆曲线加密算法采用的难题。我们把点 G 称为基点( base point ), k ( k<n , n 为基点 G 的阶)称为私有密钥( privte key ), K 称为公开密钥( public key) 。
ECC与RSA的比较
ECC 和 RSA 相比,在许多方面都有对绝对的优势,主要体现在以下方面:
抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。
计算量小,处理速度快。 ECC 总的速度比 RSA 、 DSA 要快得多。
存储空间占用小。 ECC 的密钥尺寸和系统参数与 RSA 、 DSA 相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在 IC 卡上的应用具有特别重要的意义。
带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时 ECC 带宽要求却低得多。带宽要求低使 ECC 在无线网络领域具有广泛的应用前景。
ECC 的这些特点使它必将取代 RSA ,成为通用的公钥加密算法。比如 SET 协议的制定者已把它作为下一代 SET 协议中缺省的公钥密码算法。
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值