私钥密码和公钥密码

以前人们通过网络传递的是数据,可能对网络安全还不是特别重视,但随着网络和技术的进一步发展,通过网络传递价值的需求越来越迫切,所以了解加密算法很有意义。人在江湖飘,哪能不挨刀!多学两招防身也是有备无患啊

加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性KYC know your customer

   密码学中两种常见的加密算法为对称密码算法私钥密码算法)和非对称密码算法(公钥密码算法)。被伪装的原始的消息称为明文(Message)将明文转换为密文过程称为加密(Encryption加了密的消息称为密文(Ciphertext把密文转变为明文的过程称为解密(Decryption)。

私钥密码和公钥密码_第1张图片

 对称密码算法是传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只要通信需要保密,密钥就必须保密。对称算法的加密和解密表示为:

私钥密码和公钥密码_第2张图片 

  因为加解密密钥相同,需要通信的双方必须选择和保存他们共同的密钥,各方必须信任对方不会将密钥泄密出去,这样就可以实现数据的机密性和完整性。

按加密方式,对称密码分为分组密码和序列密码(流密码)。

分组密码(Block Cipher)是按字符块加密。

私钥密码和公钥密码_第3张图片

流密码(Stream Cipher)逐个字符加密

私钥密码和公钥密码_第4张图片

比较典型的有:

DES(分组)Data Encryption Standard

    IBM实验室研发;加密端64位明文产生64为密文,解密端64位密文还原64位明文,8个字节为一块,加密和解密使用56位密钥,DES使用16个迭代块实现,是现代加密算法;

3DES: Triple DES

    DES的增强版,比DES3个数量级AES: Advanced Data Encryption Standard; (128bits, 192bits, 256bits, 384bits)    3DES虽然现在是安全的,但随着计算机硬件的更新,总有一天要被攻破;AES算法欲取待3DES算法,他支持128192256位密钥长度,有效的密钥长度可达上千位。

    更重要的是,AES算法采用了更为高效的编写方法,对CPU的占用率较少;目前广泛使用。

 

商业:BlowfishtwofishIDEARC6CAST5等等

 

私钥密码体制的局限性

密钥量大: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, MerkleHellman联合提出了基于组合数学中背包问题的公钥密码体制(MH背包公钥密码体制).不久被攻破

1978, R. RivestA. Shamir L. Adleman提出RSA密码体制

 

公钥密码体制目前主要是基于以下三种数学难题

1大数因子分解难解性RSA

2离散对数难解性ElGamal

3椭圆曲线离散对数难解性ECC

 

在密码学中最常用的单向函数有两类,一是公开密钥密码中使用的单向陷门函数、二是消息摘要中使用的单向散列函数

 私钥密码和公钥密码_第5张图片

单向散列函数我就比较熟了,打了三年交道,MD5SHA1SHA256

 我们着重研究一下RSA公钥算法,以下是算法流程

私钥密码和公钥密码_第6张图片

假设m为要传送的报文

      加密过程:

      解密过程:

私钥密码和公钥密码_第7张图片 

 

举个简单例子 
我们选择p = 17 q = 19 n  p * q = 323

j(n)

j(n)  lcm(p-1, q-1)= lcm(16,18) = 144 
144为16和18对最小公倍数

 e

e必须要满足2个条件:1 <e <j(n) gcd(ej(n)=1 
1 <e < 144,gcd(e144) = 1 
e144互为质数,5显然满足上述2个条件 
e  5

此时公钥=(en)=5,323)

d

d也必须满足2个条件:1 <d <j(n)ed modj(n) 
1 <d < 144,5 *d mod 144 = 1 
显然当d 29 时满足上述两个条件 
1 < 29 < 144 
5*29 mod 144 = 145 mod 144 = 1 
此时私钥=(dn)=(29,323)

加密

准备的明文必须时小于n的数,因为加密或者解密都要modn其结果必须小于n
假设明文 123 
密文=

解密

明文=


小结

目前了解到在2009年已经有科研人员对700多位的RSA进行了分解攻击,这么多年过去了,1024位的RSA安全性肯定是不够了,以色列安全研究人员讲解了如何利用侦听电脑解密数据时,CPU所发出的声音(音学密码分析)破译4096RSA加密算法。随着量子计算技术和shor算法的提出,RSA受到越来越多的质疑。RSA加密算法被美国国家安全局(NSA)与加密技术公司RSA加了后门,也就是有万能密码,可以被解密,RSA加密文本可以被任意破解。“双椭圆曲线”(Dual Elliptic Curve)系统是这个后门,它有2套方法进入。虽然现在密码学技术有了很多新的发展,但我依然认为RSA是一种很值得研究的密码算法。


你可能感兴趣的:(信息安全)