加密解密
加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。
加密技术包括两个元素:算法
和密钥
。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解密的一种算法。在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。
算法分类:
对称加密
:密钥只有一个,解密、解密都是这个密码,加解密速度快,典型的对称加密有DES、AES、RC4 等.非对称加密
:密钥成对出现,分别为公钥和私钥,从公钥无法推知私钥,反之,从私钥也无法推知公钥,加密和解密使用不同的密钥,公钥加密需要私钥解密,反之,私钥加密需要公钥解密。非对称加密速度较慢,典型的非对称算法有:RSA,DSA,DSS.Hash算法
: 这是一种不可逆的算法,它常用于验证数据的完整性。
对称加密 —— ASE
对称加密
(Symmetric Cryptography)算法、可逆的、保证私密信息不被泄露
- 对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。
- 对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。
- 对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。
- 对称加密,加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦
AES
的全称是Advanced Encryption Standard
,意思是高级加密标准。 AES为分组密码
,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128bit
,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位
、192位
或256位
。密钥的长度不同,推荐加密轮数也不同。
AES | 密钥长度 | 分组长度 | 加密轮数 |
---|---|---|---|
AES-128 | 128bit | 128bit | 10 |
AES-192 | 192bit | 128bit | 12 |
AES-256 | 256bit | 128bit | 14 |
AES算法使用逻辑就是:发送方将要发送的明文数据X
使用秘钥K
进行AES加密后会得到密文Y
,将密文进行网络传输,接受方在收到密文Y
后使用秘钥K
进行AES解密后技能得到明文X
,这样即使密文Y在网络上传输时被截获了,没有秘钥也难以破解其真实意思。
非对称加密 —— RSA
非对称加密
(Asymmetric Cryptography)算法、可逆的、保证私密信息不被泄露
- 非对称加密之所以不对称,指的就是加密用一个密钥,而解密的时候用的是另外一个密钥。
- 非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。
私钥
只能由一方安全保管,不能外泄,而公钥
则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。 - 非对称算法,加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。常见的非对称加密算法为RSA、ECC和EIGamal
RSA
RSA
算法过程:
- 选择一对不同的、足够大的素数p,q。
- 计算n=pq。
- 计算f(n)=(p-1)(q-1),同时对p, q严加保密,不让任何人知道。
- 找一个与f(n)互质的数e,且1<e<f(n)。
- 计算d,使得de≡1 mod f(n)。
- 公钥KU=(e,n),私钥KR=(d,n)。
- 加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,则加密过程为:C≡Me(mod n)。
- 解密过程为:M≡Cd(mod n)。
MOD,是一个数学运算符号。指求余运算符,例如a mod b=c,表明a除以b余数为c。两个整数a,b,若它们除以正整数m所得的余数相等,则称a,b对于模m同余,记作: a ≡ b (mod m);
关键字 | 描述 |
---|---|
公钥 KU | n: 两素数p和q的乘积(p和q必须保密); e: 与(p-1)(q-1)互质 |
私钥 KR | d:e^-1 (mod(p-1)(q-1)) n: |
加密 | c = m^e mod n |
解密 | m = c^d mod n |
RSA的安全基于大数分解
的难度。其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题)。
RSA密钥
openssl生成密钥:
- 生成RSA私钥(KU)
1
openssl genrsa -out private.pem 2048
- 以RSA私钥生成公钥
1
openssl rsa -in private.pem -outform PEM -pubout -out public.pem
数组签名
数字签名技术其实是非对称加密的一种逆向应用,它采用私钥加密,公钥解密
A使用hash算法生成文件摘要Z1,并用私钥加密该文件的摘要Z1生成数字签名,将数字签名、公钥和文件一起发送给B,B拿到文件后使用相同的hash算法生成文件摘要Z2,调试使用公钥解密数字签名得到文件摘要Z1,对比两个摘要,如果Z1和Z2相等,则认为这个文件时A发送过来的。
认证与加密
- 加密是为了防止数据被别人截取,重点在于数据的安全性,防止窃听
- 认证是为了验证,确认信息的完整性和用户身份的真实性,换个角度就是公钥可以给任何人,而私钥必须自己安全保存不能给别人。
哈希算法 —— MD5
哈希摘要算法、不可逆的、对信息一致性和完整性的校验。
Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护,用于生成信息摘要.
国密算法对比
密码分类 | 实现方式 | 国产商用密码 | 国际商用密码 |
---|---|---|---|
对称加密 | 分组加密/块加密 | SM1/SCB2 SM4/SMS4 SM7 | AES DES IDEA RC5 RC6 |
对称加密 | 序列解密/流加密 | ZUC(祖冲之算法) SSF46 | RC4 |
非对称加密 | 大数分解 | RSA DSA ECDSA Rabin | |
非对称加密 | 离散对数 | SM2 SM9 | DH DSA ECC ECDH |
密码杂凑/散列 | hash算法 | SM3 | MD5 SHA-1 SHA-2 |
参考
- 国密算法介绍
- RSA加密算法