加密解密

加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。

加密技术包括两个元素:算法密钥。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解密的一种算法。在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。

算法分类:

  • 对称加密:密钥只有一个,解密、解密都是这个密码,加解密速度快,典型的对称加密有DESAESRC4 等.
  • 非对称加密:密钥成对出现,分别为公钥和私钥,从公钥无法推知私钥,反之,从私钥也无法推知公钥,加密和解密使用不同的密钥,公钥加密需要私钥解密,反之,私钥加密需要公钥解密。非对称加密速度较慢,典型的非对称算法有: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-128128bit128bit10
AES-192192bit128bit12
AES-256256bit128bit14

AES算法使用逻辑就是:发送方将要发送的明文数据X使用秘钥K进行AES加密后会得到密文Y,将密文进行网络传输,接受方在收到密文Y后使用秘钥K进行AES解密后技能得到明文X,这样即使密文Y在网络上传输时被截获了,没有秘钥也难以破解其真实意思。

ASE加密流程

非对称加密 —— RSA

非对称加密(Asymmetric Cryptography)算法、可逆的、保证私密信息不被泄露

  • 非对称加密之所以不对称,指的就是加密用一个密钥,而解密的时候用的是另外一个密钥。
  • 非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。
  • 非对称算法,加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。常见的非对称加密算法为RSA、ECC和EIGamal

RSA

RSA加解密

RSA算法过程:

  1. 选择一对不同的、足够大的素数p,q。
  2. 计算n=pq。
  3. 计算f(n)=(p-1)(q-1),同时对p, q严加保密,不让任何人知道。
  4. 找一个与f(n)互质的数e,且1<e<f(n)。
  5. 计算d,使得de≡1 mod f(n)。
  6. 公钥KU=(e,n),私钥KR=(d,n)。
  7. 加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,则加密过程为:C≡Me(mod n)。
  8. 解密过程为:M≡Cd(mod n)。

MOD,是一个数学运算符号。指求余运算符,例如a mod b=c,表明a除以b余数为c。两个整数a,b,若它们除以正整数m所得的余数相等,则称a,b对于模m同余,记作: a ≡ b (mod m);

关键字描述
公钥 KUn: 两素数p和q的乘积(p和q必须保密); e: 与(p-1)(q-1)互质
私钥 KRd: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 SM7AES DES IDEA RC5 RC6
对称加密序列解密/流加密ZUC(祖冲之算法) SSF46RC4
非对称加密大数分解RSA DSA ECDSA Rabin
非对称加密离散对数SM2 SM9DH DSA ECC ECDH
密码杂凑/散列hash算法SM3MD5 SHA-1 SHA-2

参考

  • 国密算法介绍
  • RSA加密算法