以前人们通过网络传递的是数据,可能对网络安全还不是特别重视,但随着网络和技术的进一步发展,通过网络传递价值的需求越来越迫切,所以了解加密算法很有意义。人在江湖飘,哪能不挨刀!多学两招防身也是有备无患啊
加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性(KYC know your customer)。
密码学中两种常见的加密算法为对称密码算法(私钥密码算法)和非对称密码算法(公钥密码算法)。被伪装的原始的消息称为明文(Message),将明文转换为密文过程称为加密(Encryption),加了密的消息称为密文(Ciphertext),把密文转变为明文的过程称为解密(Decryption)。
对称密码算法是传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只要通信需要保密,密钥就必须保密。对称算法的加密和解密表示为:
因为加解密密钥相同,需要通信的双方必须选择和保存他们共同的密钥,各方必须信任对方不会将密钥泄密出去,这样就可以实现数据的机密性和完整性。
按加密方式,对称密码分为分组密码和序列密码(流密码)。
分组密码(Block Cipher)是按字符块加密。
流密码(Stream Cipher)是逐个字符加密
比较典型的有:
DES(分组):Data Encryption Standard
IBM实验室研发;加密端64位明文产生64为密文,解密端64位密文还原64位明文,8个字节为一块,加密和解密使用56位密钥,DES使用16个迭代块实现,是现代加密算法;
3DES: Triple DES
DES的增强版,比DES多3个数量级AES: Advanced Data Encryption Standard; (128bits, 192bits, 256bits, 384bits) 3DES虽然现在是安全的,但随着计算机硬件的更新,总有一天要被攻破;AES算法欲取待3DES算法,他支持128,192和256位密钥长度,有效的密钥长度可达上千位。
更重要的是,AES算法采用了更为高效的编写方法,对CPU的占用率较少;目前广泛使用。
商业:Blowfish,twofish,IDEA,RC6,CAST5等等
私钥密码体制的局限性
密钥量大:n个用户相互通信,需用个n(n-1)/2密钥.
应用范围小:不易实现数字签名
1976年,斯坦福大学的博士生W.Diffie和其导师M.E.Hellman提出了公钥密码的新思想
W. Diffie and M. E. Hellman,New direction in cryptography, IEEE Trans. on Information Theory, 1976, IT-22.(6), pp.644-654.
1978年, Merkle和Hellman联合提出了基于组合数学中“背包问题”的公钥密码体制(MH背包公钥密码体制).,不久被攻破。
1978年, R. Rivest,A. Shamir, L. Adleman提出RSA密码体制
公钥密码体制目前主要是基于以下三种数学难题:
1:大数因子分解难解性(RSA)
2:离散对数难解性(ElGamal)
3:椭圆曲线离散对数难解性(ECC)
在密码学中最常用的单向函数有两类,一是公开密钥密码中使用的单向陷门函数、二是消息摘要中使用的单向散列函数。
单向散列函数我就比较熟了,打了三年交道,MD5、SHA1、SHA256。
我们着重研究一下RSA公钥算法,以下是算法流程
假设m为要传送的报文
加密过程:
解密过程:
举个简单例子
我们选择p = 17 q = 19 n = p * q = 323
j(n) = lcm(p-1, q-1)= lcm(16,18) = 144
144为16和18对最小公倍数
求e必须要满足2个条件:1 <e <j(n) ,gcd(e,j(n))=1
即1 <e < 144,gcd(e,144) = 1
e和144互为质数,5显然满足上述2个条件
故e = 5
此时公钥=(e,n)=(5,323)
求d也必须满足2个条件:1 <d <j(n),e*d modj(n) = 1
即1 <d < 144,5 *d mod 144 = 1
显然当d= 29 时满足上述两个条件
1 < 29 < 144
5*29 mod 144 = 145 mod 144 = 1
此时私钥=(d,n)=(29,323)
准备的明文必须时小于n的数,因为加密或者解密都要modn其结果必须小于n
假设明文= 123
则密文=
明文=
小结
目前了解到在2009年已经有科研人员对700多位的RSA进行了分解攻击,这么多年过去了,1024位的RSA安全性肯定是不够了,以色列安全研究人员讲解了如何利用侦听电脑解密数据时,CPU所发出的声音(音学密码分析)破译4096位RSA加密算法。随着量子计算技术和shor算法的提出,RSA受到越来越多的质疑。RSA加密算法被美国国家安全局(NSA)与加密技术公司RSA加了后门,也就是有万能密码,可以被解密,RSA加密文本可以被任意破解。“双椭圆曲线”(Dual Elliptic Curve)系统是这个后门,它有2套方法进入。虽然现在密码学技术有了很多新的发展,但我依然认为RSA是一种很值得研究的密码算法。