web安全之密码学基础

密码学是研究信息安全保护的科学,以实现信息的保密性、完整性、可用性及抗抵赖性,简单说就是全方位无死角保护所传送的信息!

密码学主要由密码编码和密码分析两个部分组成。密码编码学研究信息等变换处理以实现信息等安全保护,密码分析学研究通过密文获取对应的明文信息。简单来说就是密码编码研究加密技术,密码分析研究如何破解密码。

0x01 密码系统

密码系统(Cryptosystem)由以下五个部分组成

  • 明文空间 M:需要采用密码技术进行保护的消息

  • 密文空间 C:用密码技术处理过的明文的结果

  • 密钥空间 K:K=< K e K_e Ke, K d K_d Kd>,每个K由加密密钥 K e K_e Ke和解密密钥 K d K_d Kd组成

  • 加密算法 E:将明文变换成密文所使用的组操作运算规则

  • 解密算法 D:将密文恢复成明文所使用的组操作运算规则

0x02 密码体制

image-20200916144619455

显然,若 K d = K e K_d=K_e Kd=Ke,称为单密钥密码体制或者对称密码体制或者传统密码体制。否则为双密钥体制,进而,若 K d K_d Kd不能由 K e K_e Ke推出,就可将 K e K_e Ke公开且不会损害 K d K_d Kd的安全,这种密码体制称为公开密钥密码体制,简称公钥密码体制

0x02.1 对称密码体制

对称密码体制(私钥密码体制):对信息进行明/密文变换时,加解和解密使用相同密钥的密码体制

image-20200929140300812

安全性依赖于:

1、加密算法的安全性

2、密钥的秘密性

优点:效率高,算法简单,加密速度快,适合大量数量的加密

缺点:

  • 消息的发送者和接收者必须事先通过安全渠道交换密钥
  • n个使用者,就需要 n ( n − 1 ) / 2 n(n-1)/2 n(n1)/2个密钥,密钥管理困难
  • 无法认证消息源,无法进行数字签名

用途:信息量大的加密需求

代表算法:DES算法、3DES算法、IDEA算法、AES算法、SM4分组算法

0x02.2 非对称密码体制

非对称密码体制(公钥密码体制):对信息进行明/密文变换时,加密和解密密钥不相同的密码体制。

在非对称密码体制中,每个用户都具有一对密钥,一个用于加密,一个用于解密,其中加密密钥可以公开,称之为公钥,解密密钥属于秘密,称之为私钥,只有用户本人知道。

image-20200929144756505

优点:

  • 密钥分发方便
  • 密钥保管量少
  • 支持数字签名

缺点:实现速度慢,不适合信息量大的加密情况

用途:适用于加密关键性的、核心的机密数据

代表算法:RSA算法、ElGamal算法、椭圆曲线加密算法

问题:由于公钥对外公开,因此

1、如果某人用自己的公钥加密数据发送给我,我无法判断该数据是谁发送的

2、用户用私钥加密的数据,任何知道该用户公钥的人都能解密其数据。

代表算法:RSA算法

  1. 相关数学基础

    • 欧拉函数:对于一个正整数n,小于n且与n互素的正整数的个数,记为φ(n)。

      对于一个素数n,可知φ(n) = n-1
      对于两个素数p和q,它们的乘积满足n = p * q,则可知φ(n) = (p-1) * (q-1)
      
    • 欧几里得算法:gcd(a,b)表示a和b的最大公约数

      gcd(a,b) = 1,表示a,b最大公约数为1,说明a和b互质
      
    • 同余:

      两个整数a,b,若它们除以整数m所得的余数相等,则称a与b对于模m同余,或a同余b模m,记作 a ≡ b ( m o d    m ) a \equiv b(mod\;m) ab(modm)

  2. RSA密码体制参数的定义

    • 随机选择两个大素数p和q (保密)
    • 计算n = p * q (n公开)
    • 计算φ(n) = (p-1) * (q-1) (φ(n)保密)
    • 随机选取一个正整数e,且满足1 < e < φ(n),并且gcd(e,φ(n)) = 1 (e公开)
    • 根据 e ∗ d = 1    m o d    φ ( n ) e*d=1\;mod\;φ(n) ed=1modφ(n),求出d (d保密)
    • 加密运算 C = M e    m o d    n C=M^e\;mod\;n C=Memodn 解密运算 M = C d    m o d    n M=C^d\;mod\;n M=Cdmodn

    RSA密码公开的加密钥 K e K_e Ke=<n,e>,保密的解密钥 K d K_d Kd=<p,q,d,φ(n)>

image-20200929145130698

  1. RSA密码的特点

    • RSA算法具有加解密算法的可逆性,加密和解密运算可交换,可同时确保数据的秘密性和数据的真实性
    • RSA密码的核心运算是模幂运算,实现效率高
  2. RSA密码的安全性

    • 保证选取的素数p和q足够大,使得给定n的情况下分解n在计算上不可行,应采用足够大的整数n,一般n至少取1024位,通常是2048位

0x02.3 混合加密体制

混合加密体制:同时使用对称密码和非对称密码的体制。

对称加密的一个很大问题就是通信双方如何将密钥传输给对方,安全起见一般采取带外传输,也就是说如果加密通信是在网络,那么密钥的传输需要通过其他途径,如短信,即使如此,也很难保证密钥传输的安全性。再就是为了安全密钥也应该定期更换,这更加重了密钥分发和管理的难度。

而非对称加密加解最大的优点是事先不需要传输密钥,但速度慢。

因此实际应用中,经常采取混合密码体制。

假设Harden与James要实现保密通信,工作过程如下:

image-20200929144730269

1、消息发送者Harden用对称密钥把需要发送的消息加密

2、Harden用James的公钥对称密钥加密,形成数字信封

3、Harden将加密消息和数字信封一起传送给James

4、James收到Harden的加密消息和数字信封后,先用自己的私钥将数字信封解开获取对称密钥

5、James使用对称密钥把加密消息解开

0x02.4 国产商业密码算法

image-20200929173724980

0x03 散列函数与消息摘要

散列函数也称为Hash函数,它能够对不同长度的输入信息,产生固定长度的输出。

固定长度的输出称为原消息的散列或者消息摘要,消息摘要长度固定且比原始信息小得多,一般情况下,消息摘要是不可逆的,即从消息摘要无法还原原文。

令h表示Hash函数,h满足下列条件:

1、输入长度是任意的,输出是固定的

2、对每一个给定的h和M,计算h(M)是容易的

3、给定h,找到两个不同的M1、M2,使得h(M1)=h(M2)在计算上不可行

常见的散列算法:、MD5、SHA、SM3、SHA-1

算法名称 算法特征描述
MD5算法 输入512位,产生128位消息摘要,常用于文件完整性检查
SHA算法 输入512位,产生160位消息摘要,比MD5更安全,已有版本SHA-2,SHA-3
SM3国产算法 输入512位,产生256位消息摘要

0x04 数字签名

数字签名是指发送方以电子形式签名一个消息或文件,签名后的消息或文件能在网络中传输,并表示签名人对该消息或文件的内容负有责任。

数字签名综合使用了消息摘要非对称加密技术。

数字签名满足以下三个条件:

1、不可抵赖。签名者事后不能否认自己的签名

2、真实性。接收者能验证签名,其他任何人都不能伪造签名

3、可鉴别性。当双方关于签名真伪发生争执,第三方能解决双方的争执

假设Harden需要签名发送一份电子合同文件给James。

Harden数字签名的示意图:

image-20200929172427209

1、Harden使用Hash函数将电子合同文件生成一个消息摘要

2、Harden使用自己的私钥,将消息摘要加密形成一个数字签名

3、Harden把电子合同文件和数字签名一同发送给James

James收到Harden发送的电子合同文件及数字签名后,验证数字签名过程如下:

image-20200929172757997

1、James使用与Harden相同的Hash函数,计算收到的电子合同的消息摘要

2、James使用Harden的公钥,解密来自Harden的数字签名,恢复Harden的消息摘要

3、James比较自己计算得到的消息摘要和恢复Harden的消息摘要异同,若摘要相同,则说明电子合同文件来自Harden,否则表明电子合同文件已被篡改

0x05 数字证书

数字证书也称为公钥证书,是一种权威的电子文档,由权威公正的第三方认证机构(CA)签发,广泛用于涉及需要身份认证和数据安全的领域。

简单来说,数字证书可以类比为我们的身份证号,而第三方认证机构(CA)则等同于公an局。

我们都知道入住酒店的时候,必须要出示本人身份证给前台工作人员,而工作人员会将身份证与酒店系统内存储的公an局的身份证信息进行对比,一致即可入住。在网络中,数字证书的作用就等同于身份证

数字证书的格式:

最简单的可以是:公钥、名称和证书授权中心的数字签名

目前 X.509 是一种通用的证书格式,它的第三个版本目前使用广泛,证书内容包括:版本、序列号、签名算法标识、签发者、有效期、主体、主体公开密钥、CA的数字签名、可选型等等

image-20200929173948794

数字证书种类:

1、服务器证书:证明服务器的身份和进行通信加密,客户端可以与服务器端建立SSL连接,然后通信数据都会被加密。

2、电子邮件证书:证明电子邮件发件人的真实性,也可发送加密邮件,只有接收方才能打得开。

3、客户端证书:主要用于身份验证和数字签名,安全的客户端证书经常存储的专门的USBKey中,使用的时候需要输入保护密码,以防被导出和复制,如指纹识别、语音播报、带显示器的USBKey等等。

参考

一篇文章搞定密码学基础

Java 密码学算法

密码学基本理论

猜你喜欢

转载自blog.csdn.net/weixin_39664643/article/details/111881048