密码学简介

据记载,公元前 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 协议中缺省的公钥密码算法。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值