网络安全之密码学技术

文章目录

  • 网络信息安全的概念
  • 数据加密|解密概念
  • 密码学概论
    • 密码学分类
    • 古典密码学
    • 现代密码学
  • 现代密码学的相关概念
    • 对称加密算法
      • 对称加密算法—DES
      • 对称加密算法—3DES
      • 对称加密算法—AES
      • 对称加密算法—IDEA
    • 非对称加密算法
      • 非对称加密算法—RSA
      • 非对称加密算法—ElGamal
      • 非对称加密算法—椭圆曲线
    • 单向散列函数
    • 数字签名
    • 公钥管理基础设施(PKI)
      • 例子:网站证书
    • 密钥管理
      • 密钥交换和密码分发案例
    • 密码分析
      • 常见的攻击方法

网络信息安全的概念

  • 网络信息安全主要包括**信息交换安全(动态安全)网络系统安全(静态安全)**两类技术。
  • 涉及信息的机密性、完整性、真实性、不可否认性及可用性等相关理论和技术。
  • 目的:维护网络空间信息交互的秩序和规则,防止对网络系统和网络信息的窃听、篡改、假冒、破坏、泄露和滥用等行为,保护合法用户的利益和隐私。

数据加密|解密概念

  • 加密(Encryption):对原始数据进行数学变换,使得加密后在网络上公开传输的内容。对于非法接收者来说毫无意义、无法读懂,而合法接收者持有正确的密钥,可以通过解密(Decryption)获得原始数据。

  • 解密(Decryption):对经过加密的数据进行数学逆变换,以恢复原始的、可读的数据内容。解密通常需要使用相应的密钥或算法来还原加密前的数据。

  • 加密前的原始数据称为明文(Plaintext),加密后获得的数据称为密文(Ciphertext)

  • 加密、解密变换分别是一个依赖于所使用密钥的函数,若加密密钥为 k k k,解密密钥为 k ′ k' k,明文为 M M M,密文为 M ′ M' M

  • 两个变换可分别标记为:
    加密算法: M ′ = E ( M , k ) 解密算法: M = D ( M ′ , k ′ ) 加密算法:M'=E(M,k) \\ 解密算法:M=D(M',k') 加密算法:M=E(M,k)解密算法:M=D(M,k)

  • 加密通信过程:发送方用加密密钥 k k k将明文 M M M变换成密文 M ′ M' M,然后把密文 M ′ M' M发送出去,接收方收到密文 M ′ M' M后,用解密密钥 k ′ k' k将密文 M ′ M' M恢复成明文 M M M

  • 根据加密密钥和解密密钥是否相同,即: k = = k ’ k==k’ k==k,将加密算法分为对称加密算法和非对称加密算法两种

密码学概论

  • 密码学是实现安全信息交换的基础,目的是研究秘密通信。
  • 通过数据加密、数字签名、消息摘要、密钥交换等技术,提供传输信息机密性、完整性、可认证性和不可否认性的实现机制,保证网络信息的秘密安全交换,防止攻击者对信息的窃取、篡改、假冒和破坏。

密码学分类

  1. 时期(实时间)划分,密码学可以分为古典密码学和现代密码学
    • 古典密码学:以人工计算为基础,以算法为核心
    • 现代密码学:以计算机的计算能力为基础,复杂度有质变,以密钥为核心。1970s以来,DES、RSA为代表的算法。
  2. 加密技术划分:根据所使用的加密技术分为对称加密和非对称加密两大类。对称加密使用相同的密钥进行加密和解密,而非对称加密使用一对密钥,一个用于加密,另一个用于解密。
  3. 研究重点划分:根据研究的重点分为理论密码学和应用密码学。理论密码学主要关注密码算法的数学基础和安全性分析,而应用密码学则更注重将密码学理论应用于实际系统中解决安全问题。
  4. 应用领域划分:根据应用领域进行划分,比如网络安全领域的网络协议加密算法,金融领域的支付加密技术,以及物联网领域的物联网设备通信加密技术等。

古典密码学

  • 古典密码编码方法主要有两种:置换和代换

  • 置换:把明文中的字符重新排列,字符本身不变,改变其位置。最简单的置换密码是把明文中的字符顺序倒过来,然后截成固定长度的字符组作为密文。

  • 代换:将明文中的字符替代成其他字符。

  • 举例:凯撒密码、美军破译日本军事密电码“海军暗号书D”

现代密码学

  • 现代密码学采用多种编码方法来实现加密和解密,包括对称加密、非对称加密、哈希函数等技术。
  • 现代密码学中常见的编码方法:
  1. 对称加密:对称加密使用相同的密钥来进行加密和解密。常见的对称加密算法包括:
算法名称说明
AES(高级加密标准)一种广泛应用的对称加密算法,具有高效、安全的特性,被广泛用于网络通信和数据加密。
DES(数据加密标准)早期的对称加密算法,已逐渐被AES所取代,但仍然在某些场景下使用。
3DES(Triple DES)对DES的改进和加强版本,通过多次应用DES算法来提高安全性。
  1. 非对称加密:非对称加密使用一对密钥,公钥和私钥,其中公钥用于加密,私钥用于解密。常见的非对称加密算法包括:
算法名称说明
RSA基于大整数因子分解的数学问题,是最常见的非对称加密算法之一,用于数字签名、密钥交换等场景。
ECC(椭圆曲线加密利用椭圆曲线上的离散对数问题来实现加密和签名,相比RSA具有更短的密钥长度和更高的安全性。
  1. 哈希函数:哈希函数将任意长度的输入数据映射为固定长度的输出,通常用于生成消息摘要、验证消息完整性等。常见的哈希函数包括:
算法名称说明
MD5(Message Digest Algorithm 5)已被广泛认为不安全,不建议用于安全应用。
SHA(Secure Hash Algorithm)系列如SHA-1、SHA-256、SHA-512等,被广泛用于数字签名、证书签名、消息认证码等场景。
  1. 数字签名:数字签名是利用非对称加密算法生成的一种特殊的签名,用于确保消息的完整性、认证发送方的身份以及不可否认性。常见的数字签名算法包括RSA、DSA等。

现代密码学的相关概念

现代密码学是密码学领域的一个重要分支,主要研究在计算机和现代通信技术下的加密和解密算法、协议以及相关安全性理论。

  1. 对称加密算法:对称加密算法使用相同的密钥来进行加密和解密。常见的对称加密算法包括DES(数据加密标准)、AES(高级加密标准)、RC4等。
  2. 非对称加密算法:非对称加密算法使用一对密钥,公钥和私钥,其中公钥用于加密,私钥用于解密。RSA、DSA、ECC等都是常见的非对称加密算法。
  3. 哈希函数:哈希函数将任意长度的数据映射成固定长度的数据,且具有单向性、不可逆性和抗碰撞性等特性。常用于密码学中的数字签名、消息认证码等场景。常见的哈希函数包括MD5、SHA-1、SHA-256等。
  4. 数字签名:数字签名是利用非对称加密算法生成的一种特殊的签名,用于确保消息的完整性、认证发送方的身份以及不可否认性。常见的数字签名算法有RSA、DSA等。
  5. 公钥基础设施(PKI):PKI 是一套用于管理公钥、私钥、数字证书等安全元素的体系结构,用于确保数字通信的安全性。它包括**数字证书、证书颁发机构(CA)、注册机构(RA)**等组件。
  6. 消息认证码(MAC):消息认证码是一种用于验证消息完整性和认证消息发送者身份的技术,通常结合对称加密算法和哈希函数来实现。
  7. 密钥交换协议:密钥交换协议用于安全地在通信双方之间协商共享密钥,以便后续的加密通信。Diffie-Hellman密钥交换协议是其中最著名的一种。

对称加密算法

  • 对称加密算法也称为私钥算法或单钥算法,算法的加、解密密钥相同,即 k = k ′ k=k' k=k

  • 在对称加密体制下,若 A A A B B B通信,他们先通过某种方法安全地共享密钥 k k k A A A要将明文消息 M M M发送给 B B B,就先用密钥 k k k M M M加密,得到密文 M ′ = E ( M , k ) M'=E(M,k) M=E(M,k),然后把密文 M ′ M' M发送给 B B B B B B收到 M ′ M' M后,用同样的密钥 k k k解开密文,得到明文 M = D ( M ′ , k ) M=D(M',k) M=D(M,k)

  • 对称加密算法的加密强度较高,加、解密运算速度较快,但密钥必须安全地创建、共享和保持,密钥管理成为影响通信安全的关键。

  • 常用的对称加密算法主要有数据加密标准DES、高级加密标准AES、国际数据加密算法IDEA等。

对称加密算法—DES

  • DES(Data Encryption Standard,数据加密标准),是1972年美国IBM公司研制的对称加密算法。1977年被美国国家标准局确定为联邦资料处理标准,授权在非密级政府通信中使用,随后该算法在国际上广泛流行。

  • 注意,算法的DES也被称为数据加密算法(Data Encryption Algorithm, DEA)。

  • 在DES算法中,明文按64位进行分组(块),密钥长度也是64位,(事实上只有56位参与DES运算,第8、16、24、32、40、48、56、64位是校验位, 使DES的每个密钥都有奇数个1),分组后的每64位明文组(块)分别与56位密钥进行多轮置换(按位替代/交换),最后生成64位的密文组(块)。

  • DES算法的入口参数有三个: K e y 、 D a t a 、 M o d e Key、Data、Mode KeyDataMode。Key为7个字节56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作模式(有加密、解密两种)。

  • DES使用分组密码设计的两个基本原则:混淆(confusion)和扩散(diffusion),其目的是抗击敌手对密码系统的统计分析

    • 混淆是使密文的统计特性与明文、密钥值之间的关系尽可能复杂化,以使密钥和明文以及密文之间的依赖性对密码分析者来说是无法利用的。

    • 扩散是将明文中每一位的影响尽可能迅速作用到较多的输出密文位中,以便在大量的密文中消除明文的统计结构,并且使每一位密钥的影响尽可能迅速地扩展到较多的密文位中,以防对密钥进行逐段破译

对称加密算法—3DES

  • 3DES(Triple DES)是DES向AES过渡的加密算法,它使用两个56位密钥对数据进行三重DES运算,是DES的一个更安全的变形算法。

  • 3DES使用两个密钥,执行三次DES算法,加密的过程是加密-解密-加密,解密的过程是解密-加密-解密。

  • 3DES加密过程为
    C = E k 3 ( D k 2 ( E k 1 ( P ) ) ) 条件 [ k 1 = k 3 ] C=Ek_3(Dk_2(Ek_1(P))) \quad 条件 [k_1=k_3] C=Ek3(Dk2(Ek1(P)))条件[k1=k3]

  • 3DES解密过程为:
    P = D k 1 ( E K 2 ( D k 3 ( C ) ) ) 条件 [ k 1 = k 3 ] P=Dk_1(EK_2(Dk_3(C))) \quad 条件[k_1=k_3] P=Dk1(EK2(Dk3(C)))条件[k1=k3]

  • 3DES采用两个密钥、三重加密的好处:

  1. 两个密钥合起来有效密钥长度有 112 b i t 112bit 112bit,足以满足商业应用的需要,若采用总长为 168 b i t 168bit 168bit的三个不同密钥,会产生并不必要的开销。
  2. 加密时采用 加密 − 解密 − 加密 加密-解密-加密 加密解密加密,而不是 加密 − 加密 − 加密 加密-加密-加密 加密加密加密的形式,有效地实现了与现有DES系统的兼容(当 K 1 = K 2 K_1=K_2 K1=K2时,三重DES的运算效果与原来的DES相同),有助于3DES的推广。
  3. 三重DES有足够的安全性。

对称加密算法—AES

  • AES(Advanced Encryption Standard,高级加密标准),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准,用来替代原先的DES。
  • Rijndael由比利时的Joan Daemen和Vincent Rijmen设计。算法的原型是Square算法,具有很好的抵抗差分密码分析及线性密码分析的能力。
  • Rijndael密码的设计满足以下3条标准:
    1. 抵抗所有已知的攻击
    2. 在多个平台上速度快,编码紧凑
    3. 设计简单

对称加密算法—IDEA

  • IDEA(International Data Encryption Algorithm,国际数据加密算法),是上海交通大学教授来学嘉(Xuejia Lai)与瑞士学者James Massey在ETH(苏黎世联邦理工学院)共同提出的。

  • IDEA算法是在DES算法的基础上发展出来的,类似于三重DES。发展IDEA也是因为感到DES具有密钥太短等缺点。

  • IDEA的数据块为64位、密钥为128位。IDEA在密码学中属于数据块加密算法(Block Cipher)类。从理论上讲,IDEA属于“强”加密算法。

  • IDEA是作为迭代的分组密码实现的,使用128位的密钥和8个循环。通过需要支付专利使用费(通常约为每个副本$6.00)。

  • IDEA被认为是极为安全的。使用128位的密钥,暴力攻击中需要进行的测试次数与DES相比会明显增大,甚至允许对弱密钥测试。而且,它本身也显示它尤其能抵抗专业形式的分析性攻击。

非对称加密算法

  • 非对称加密算法也称为公钥算法或双钥算法,在加密和解密时使用不同的密钥,而且从一个密钥推出另一个密钥在数学上是非常困难的(计算上不可行)。

  • 使用非对称加密算法时,参与通信的每一方都有一对自己的加密/解密密钥。加密密钥是公开的,称为公钥;解密密钥是保密的,只有所有者自己知道,称为私钥。

  • A A A B B B通信,他们各有一个公/私钥对 ( A k e , A k d ) (Ak_e,Ak_d) (Ake,Akd) ( B k e , B k d ) (Bk_e,Bk_d) (Bke,Bkd) A A A要将明文消息 M M M发送给 B B B,就先用 B B B的公钥 B k e Bk_e Bke M M M加密,得到密文 M ′ = E ( M , B k e ) M'=E(M,Bk_e) M=E(M,Bke),然后把密文 M ′ M' M发送给 B B B B B B收到 M ′ M' M后,用自己的私钥 B k d Bk_d Bkd解开密文,得到明文 M = D ( M ′ , B k d ) M=D(M',Bkd) M=D(M,Bkd) B B B A A A发送消息的过程与此类似,只不过B是用 A A A的公钥 A k e Ak_e Ake加密消息,而 A A A是用自己的私钥 A k d Ak_d Akd来解密。

  • 非对称加密算法优点:具有密钥分配简单(公钥可公开散发);密钥保存量小(n个人相互通信,对称密码算法需要 n ( n − 1 ) / 2 n(n-1)/2 n(n1)/2个密钥,而非对称加密算法只需 n n n个公/私钥对);可以实现数字签名等,

  • 非对称加密算法缺点:其加、解密的运算速度很慢,因而非对称加密算法往往用于认证和建立初始通信的会话密钥,而大量的通信还是由对称加密算法进行加密。

  • 广泛的非对称加密算法主要有基于大数分解问题的RSA算法、基于离散对数问题的ElGamal算法、基于椭圆曲线双线性对的算法

非对称加密算法—RSA

  • RSA加密算法是一种基于大整数因数分解的非对称加密算法,在公开密钥加密、网络安全协议和电子商务中广泛应用。

  • RSA是1977年由Ron Rivest、Adi Shamir和Leonard Adleman共同提出的。

  • RSA是基于大整数因数分解的加密算法,对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。

  • 假如有人找到一种快速因数分解的算法的话,RSA加密的信息的可靠性会极度下降。今天只有短的RSA钥匙才可能被强力方式解破。到目前为止,世界上还没有可靠的攻击RSA算法的方式。只要其密钥的长度足够长,用RSA加密的信息实际上是不能被解破的。

  • RSA密钥是(公钥+模值)、(私钥+模值)成组分发的,单独一个公钥或私钥是没有用处,所以所谓的“密钥”其实是它们两者中的一个。“密钥长度”一般只是指模值的位长度。目前主流可选值:1024、2048、3072、4096等

非对称加密算法—ElGamal

  • ElGamal算法是一种常见的非对称加密算法,既能用于数据加密,也能用于数字签名。其安全性依赖于计算有限域上离散对数难题。

  • ElGamal算法在加密过程中,生成的密文长度是明文的两倍,且每次加密后都会在密文中生成一个随机数K。在密码中主要应用离散对数问题的几个性质:求解离散对数(可能)是困难的,而其逆运算指数运算可以应用平方-乘的方法有效地计算。也就是说,在适当的群G中,指数函数是单向函数。

非对称加密算法—椭圆曲线

  • 椭圆加密算法(Elliptic curve cryptography,ECC)是一种公钥加密体制,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。
  • 公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。
  • 椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。
  • 椭圆加密算法ECC的优点是在某些情况下它比其他的方法使用更短的密钥,却能提供相当的或更高等级的安全。ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。缺点是加密和解密操作的实现比其他机制花费的时间长

单向散列函数

  • 单向散列函数又称Hash函数、杂凑函数或消息摘要函数,它是一个确定函数,能将任意长度的比特串映射为某一固定长度的比特串,即: H : ( 0 , 1 ) ∗ → ( 0 , 1 ) k H:(0,1)*→(0,1)k H:(0,1)(0,1)k
  • Hash函数具有单向、散列、无碰撞等特性,它将消息压缩为固定长度的摘要,隐藏了消息明文的代数结构,是提高数字签名速度和实现消息认证的重要工具。

Hash函数的特性

  • 单向性:任意给定一个 x x x H ( x ) H(x) H(x)可在关于x长度的线性或低阶多项式时间内计算;而任意给定一个 c c c,找到一个 x x x,使得 H ( x ) = c H(x)=c H(x)=c,在计算上是不行的。
  • 散列性:对于任意 x x x H ( x ) H(x) H(x) [ 0 , 2 k ] [0,2k] [0,2k]区间上的均匀分布在计算上不可区分。
  • 无碰撞性:找到一对 x ≠ x ′ x≠x' x=x,使得 H ( x ) = H ( x ′ ) H(x)=H(x') H(x)=H(x),在计算上是不可行的。
  • 弱无碰撞性:给定一个 x x x,找到一个 x ′ ≠ x x'≠x x=x,使得 H ( x ) = H ( x ′ ) H(x)=H(x') H(x)=H(x),在计算上是不可行的。在许多应用中,弱无碰撞性已能满足实际的安全性需求,而无碰撞性必然是满足弱无碰撞性的。

数字签名

  • 数字签名是利用非对称加密算法来验证网络传输信息真实性的一种技术。
  • 若A与B通信,发送方 A A A用其私钥 A k d Ak_d Akd对消息M进行运算,将结果 D ( M , A k d ) D(M,Ak_d) D(M,Akd)传送给接收方 B B B B B B A A A的公钥 A k e Ak_e Ake对收到的内容进行运算,得到 E ( D ( M , A k d ) , A k e ) = M E(D(M,Ak_d),Ak_e)=M E(D(M,Akd),Ake)=M。由于除A之外没有人知道Akd,所以除A以外也没有人能产生 D ( M , A k d ) D(M,Ak_d) D(M,Akd)。这样,就表示 A A A对消息 M M M进行了数字签名。
  • 如果 A A A否认曾发送 M M M B B B B B B就将 M M M D ( M , A k d ) D(M,Ak_d) D(M,Akd)出示给仲裁方,仲裁方可以很容易地验证A确实发送M给B,使A无法抵赖。如果B将M伪造成 M ′ M' M,则B就无法将 D ( M ′ , A k d ) D(M',Ak_d) D(M,Akd)出示给仲裁方,证明B伪造消息,因而起到验证信息完整性的作用。
  • 在以上处理中,只对消息进行数字签名,并未对消息进行加密,任何截获 D ( M , A k d ) D(M,Ak_d) D(M,Akd)的人都可利用A的公钥 A k e Ak_e Ake得到M。
  • 在实际传输中,通常使用这样的方法:对消息进行加密,对消息摘要进行签名
  • 目前已有大量的数字签名算法,如:RSA数字签名算法、ElGamal数字签名算法、Fiat-Shamir数字签名算法、Schnorr数字签名算法、美国数字签名标准/算法DSS/DSA、椭圆曲线数字签名算法等等。

公钥管理基础设施(PKI)

  • 在非对称加密体制下,各通信实体的公钥都是公开的,但通信者如何确保自己获得的对方公钥真正属于与自己通信的实体,也是一个需要解决的问题。如:若A与B通信,中间攻击者C完全可以通过生成自己的公/私钥对 ( C k e , C k d ) (Ck_e,Ck_d) (Cke,Ckd),用自己的公钥 C k e Ck_e Cke来冒充真正接收者的公钥,实施中间人攻击,从而获取或篡改消息。
  • 引入广泛信任的第三方权威中心来证明各参与方公钥的有效性是解决公钥安全分发的有效方案。

  • 公钥基础设施(Public Key Infrastructure,PKI)是一种基于公钥技术实现的,提供数据机密性、完整性、身份认证和不可否认性等安全服务的,普适性和标准化安全平台。
  • PKI包括认证中心CA、注册机构、资料库、密钥管理、证书撤销列表CRL等组件,涉及认证中心、证书申请者(持有者)和验证者三类实体,其中数字证书是PKI的基本要素,认证中心CA是PKI的核心
  • PKI通过可信第三方CA为证书申请者发布证书,实现了证书持有者身份与证书的绑定,使证书持有者能接受验证者的验证并获得信任,从而为通信双方提供了一种建立信任关系的方式。

PKI证书主要采用X.509国际标准,包含以下信息:

  • 版本号:证书使用哪个版本的X.509标准;

  • 序列号:CA为该证书分配的唯一序列号,证书被撤消时该序列号将被放入CRL中;

  • 签名算法标识符:所使用的签名算法;

  • 发布者的名称;

  • 有效期:包括证书的生效时间和失效时间;

  • 证书持有者的名称;

  • 证书持有者的公钥信息:包括证书持有者的公钥和公钥算法;

  • 发布者的唯一标识符;

  • 证书持有者的唯一标识符;

  • 扩展信息:X.509 v3和v4可使用一个或多个扩展字段,附加有关该证书的额外说明信息;

  • 发布者的数字签名:CA所使用的签名算法标识和签名值。

  • 在PKI体系中,任何通信实体想成为安全通信中的合法角色,首先必须向CA提出证书申请,经CA验证后,获得CA颁发的证书和一个公/私密钥对,若证书拥有者在证书有效期内将私钥丢失或泄露,可向CA提出证书撤销申请,经CA确认后,予以撤销,CA将被撤消的证书列入证书撤销表(Certificate Revocation List, CRL)中,CRL主要包含多个被撤消证书的序列号和CA的数字签名,CRL通过证书发布系统公开发布。


  • 网站证书中即可查看到PKI证书列举的内容

例子:网站证书

  • 这里以BiliBili为例,进行操作
    在这里插入图片描述

密钥管理

  • 现代密码学的一个基本原则是一切秘密寓于密钥之中,而加密算法则可以公开。在网络攻击的许多事件中,密钥的安全管理是攻击的一个主要环节。
  • 密钥管理是系统安全的一个重要方面,包括密钥的生成、分发、存储、销毁、使用等一系列过程。
  • 密钥交换和管理协议主要有Diffie-Hellman密钥交换协议、安全联盟密钥管理协议ISAKMP、Internet密钥交换协议IKE等。

密钥交换和密码分发案例

举例1:利用公钥系统进行对称密钥交换

  • 假设有两个通信方 Alice 和 Bob,他们希望通过对称密钥加密方式进行安全通信。他们可以通过以下步骤利用公钥系统进行对称密钥交换:
  1. Alice 生成对称密钥:Alice 随机生成一个对称密钥,并将其用公钥系统加密后发送给 Bob。
  2. Bob 解密对称密钥:Bob 收到加密后的对称密钥后,利用自己的私钥解密,得到原始的对称密钥。
  3. 安全通信:现在 Alice 和 Bob 都拥有相同的对称密钥,他们可以使用这个密钥进行加密和解密,以实现安全通信。
  • 密钥交换保证对称密钥在传输过程中的安全性,因为对称密钥只有 Bob 能够解密,其他人无法获取明文对称密钥。

举例2:利用公钥系统进行对称密钥分发。示例:

  1. Alice 生成对称密钥:Alice 随机生成一个对称密钥。
  2. Alice 加密对称密钥:Alice 使用 Bob 的公钥将对称密钥加密,并将加密后的密钥发送给 Bob。
  3. Bob 解密对称密钥:Bob 收到加密后的对称密钥后,利用自己的私钥解密,得到原始的对称密钥。
  4. 安全通信:现在 Alice 和 Bob 都拥有相同的对称密钥,他们可以使用这个密钥进行加密和解密,以实现安全通信。
  • 密钥分发保证对称密钥在传输过程中的安全性,同时还可以确保只有 Bob 能够解密对称密钥,因为只有 Bob 拥有自己的私钥。

密码分析

  • 密码分析也称密码破译技术,是指在不掌握密钥的情况下,利用密码系统的弱点来恢复明文或获取密钥的技术

  • 密码系统和密码分析是密码学研究的两个方面,密码分析对于验证加密算法的安全性、提高密码系统的设计质量,具有重要的意义。

  • 从密码学发展史可以清楚地看到,密码分析和密码学是共同演化的。新的密码机制被设计出来,取代已经被破解的设计;同时新的密码分析方法被发明出来,以破解那些改进了的方案。事实上,密码系统和密码分析就像是同一枚硬币的正反两面:为了创建安全的密码系统,就必须考虑可能的密码分析。

常见的攻击方法

对密码系统的攻击方法主要分为:

  • 惟密文攻击:分析者已知加密算法和待破译的密文。
  • 已知明文攻击:分析者已知加密算法和经密钥加密形成的一些明文-密文对。
  • 选择明文攻击:分析者已知加密算法,可以自己选定明文消息,并能够知道对应的密文。例如,在公钥密码体制中,攻击者可以利用公钥加密他任意选定的明文,这种攻击就是选择明文攻击。

  • 选择密文攻击:分析者已知加密算法,可以自己选定的密文,并能够知道对应的明文。
  • 选择文本攻击:选择明文攻击与选择密文攻击的结合。分析者已知加密算法、自己选择的明文和与之对应的密文、以及自己选择的密文和与之对应的明文。
  • 上述攻击的强度是逐次递增的,前三种攻击是为了恢复明文或获取密钥,后两种攻击是为了获取密钥。
  • 惟密文攻击是最困难的,因为分析者可利用的信息最少,一般需要采用穷举攻击的方法。

  • 讨论一个密码系统的安全性,通常是指在前三种攻击下是安全的,因为攻击者一般容易具备进行前三种攻击的条件。


  • 差分分析(differential cryptanalysis)是一种选择明文攻击,其基本思想是:通过分析特定明文差分对相对应密文差分影响来获得可能性大的密钥。它可以用来攻击任何由迭代一个固定的轮函数的结构的密码以及很多分组密码(包括DES,但DES无须抵御这种攻击)。
  • 差分分析涉及带有某种特性的密文对和明文对比较,其中分析者寻找明文有某种差分时对应的密文对。这些差分中有一些有较高的重现概率,差分分析用这些特征来计算可能密钥的概率,最后定为最可能的密钥。

  • 线性分析(Linear cryptanalysis)的分析者利用包含明文、密文和子密钥的线性表达式发生的较大可能性。线性分析的前提是假设攻击者已经知道了大量的明文和相对应的密文。

  • 线性分析最基本的思想是用一个线性表达式来近似表示加密算法的一部分,该表达式是 u u u比特的输入与 v v v比特的输出进行 X O R XOR XOR操作的结果

  • 线性密码分析的方法是测定上述形式的线性表达式发生的可能性的大小

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/316292.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos7安装K8S集群环境

一、系统设置 1、关闭swap 临时关闭swap swapoff -a 永久关闭 注释掉 /etc/fstab 中的下面配置 #/dev/mapper/centos-swap swap swap defaults 0 0 2、 关闭SELinux kubelet不支持SELinux, 这里需要将SELinux设置为permissive模式 setenforce 0 sed -i s/^SELINUXenfo…

Flutter 从 Assets 中读取 JSON 文件:指南 [2024]

在本教程中,我们将探讨如何从 Flutter 项目中的 asset 中读取 JSON 文件。您将找到详细的解释、实际示例和最佳实践,使您的 JSON 文件处理顺利高效。那么,让我们深入了解 Flutter 和 JSON 的世界吧! 从 asset 中读取 JSON 文件 …

pkpmbs 建设工程质量监督系统 Ajax_operaFile.aspx 文件读取漏洞复现

0x01 产品简介 pkpmbs 建设工程质量监督系统是湖南建研信息技术股份有限公司一个与工程质量检测管理系统相结合的,B/S架构的检测信息监管系统。 0x02 漏洞概述 pkpmbs 建设工程质量监督系统 Ajax_operaFile.aspx接口处存在文件读取漏洞,未经身份认证的攻击者可以利用漏洞读…

使用 GitHub Actions 实现项目的持续集成(CI)

目录 什么是 GitHub Actions 基础概念 Workflow 文件 Workflow 语法 实例:编译 OpenWrt 什么是 GitHub Actions GitHub Actions 是 GitHub 推出的持续集成(Continuous Integration,简称 CI)服务它允许你创建自定义工作流&am…

SpringBoot 自定义 HandlerMethodArgumentResolver 搞定xml泛型参数解析

文章目录 介绍一、解析简单 xml 数据案例引入 Jackson 的 xml 支持定义 Message 对象&MessageHeader 对象定义 Controller 方法调用结果 二、解析带泛型的 XML 数据案例2.1 直接给 Message 加上泛型 T2.2 无法直接解析泛型参数了 三、自定义 MVC 的参数解析器实现泛型参数解…

全志ARM-蜂鸣器

sh操作准备: 1.使Tab键的缩进和批量对齐为4格 在/etc/vim/vimrc 中添加一项配置 set tabstop 4; 也可以再加一行 set nu显示代码的行数 vim的设置,修改/etc/vim/vimrc文件,需要用超级用户权限 /etc/vim/vimrc set shiftwidth4 设置批量…

助力企业部署国产云原生数据库 XSKY星辰天合与云猿生完成产品互兼容认证

近日,北京星辰天合科技股份有限公司(简称:XSKY 星辰天合)与杭州云猿生数据有限公司(简称“云猿生”)完成了产品互兼容认证,星辰天合企业级分布式统一数据平台 XEDP 与云猿生的开源数据库管控平台…

CJSON工具类

4.4.3.CJSON工具类 OpenResty提供了一个cjson的模块用来处理JSON的序列化和反序列化。 官方地址: https://github.com/openresty/lua-cjson/ 1)引入cjson模块: local cjson require "cjson"2)序列化: …

竞赛 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉

文章目录 0 简介1 二维码检测2 算法实现流程3 特征提取4 特征分类5 后处理6 代码实现5 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于机器学习的二维码识别检测 - opencv 二维码 识别检测 机器视觉 该项目较为新颖,适合作为竞赛课…

网络层 --- IP协议

目录 1. 前置性认识 2. IP协议 3. IP协议头格式 3.1. 4位版本 3.2. 4位首部长度 3.3. 8位服务类型 3.4. 16位总长度 3.5. 8位生存时间 TTL 3.6. 8位协议 3.7. 16位首部检验和 3.8. 32位源IP和32位目的IP 4. 分片问题 4.1. 为什么要分片 4.2. 分片是什么 4.2.1. …

HTTP/1.1,HTTP/2.0和HTTP/3.0 各版本协议的详解(2024-04-24)

1、HTTP介绍 HTTP 协议有多个版本,目前广泛使用的是 HTTP/1.1 和 HTTP/2,以及正在逐步推广的 HTTP/3。 HTTP/1.1:支持持久连接,允许多个请求/响应通过同一个 TCP 连接传输,减少了建立和关闭连接的消耗。 HTTP/2&#…

win10 配置OpenCV LNK2019 无法解析的外部符号 “void __cdecl cv::imshow

1 遇到问题 严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息 错误 LNK2019 无法解析的外部符号 “void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits,class std::allocator > const &,class cv::debug_build_guard::_InputArray…

MS17-010---利用“永恒之蓝”漏洞攻击 win7主机

免责声明:本文仅做技术交流与学习.... 目录 一.前置知识 1.何为永恒之蓝&#xff1f; 2.什么是SMB协议&#xff1f; 3.SMB工作原理是什么&#xff1f; 二、实验环境 三、实验步骤 nmap扫描 msf一把梭哈 shell执行命令 远程连接 一&#xff0e; 二&#xff0e; 一.前…

面向对象编程三大特征:封装、继承、多态

封装、继承、多态 1. 封装 1.1 介绍 封装(encapsulation)就是把抽象出的数据 [属性] 和对数据的操作 [方法] 封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作 [方法] ,才能对数据进行操作。 1.2 封装的理解和好处 1) 隐藏实现细节:方法(连接数据库)<…

用OpenCV先去除边框线,以提升OCR准确率

在OpenCV的魔力下&#xff0c;我们如魔法师般巧妙地抹去表格的边框线&#xff0c;让文字如诗如画地跃然纸上。 首先&#xff0c;我们挥动魔杖&#xff0c;将五彩斑斓的图像转化为单一的灰度世界&#xff0c;如同将一幅绚丽的油画化为水墨画&#xff0c;通过cv2.cvtColor()函数的…

通过AI助手实现一个nas定时任务更新阿里云域名解析

一.通过AI助手实现一个ip-domain.py的脚本 起一个Python脚本&#xff0c;ip-domain.py&#xff1b;注意已安装Python3.的运行环境&#xff1b;将下面阿里云相关配置添加&#xff0c;注意这里引用了两个包&#xff0c;requests和alibabacloud_alidns20150109&#xff1b;执行前…

如何利用有限的数据发表更多的SCI论文?——利用ArcGIS探究环境和生态因子对水体、土壤和大气污染物的影响

原文链接&#xff1a;如何利用有限的数据发表更多的SCI论文&#xff1f;——利用ArcGIS探究环境和生态因子对水体、土壤和大气污染物的影响https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247602528&idx6&snc89e862270fe54239aa4f796af07fb71&chksmfa82…

数据可视化在不同行业中有哪些应用?

数据可视化即通过图表的形式将数据的内在信息有逻辑性地呈现给用户&#xff0c;使用户更容易发现数据中蕴藏的规律&#xff0c;找出问题&#xff0c;进而做出决策&#xff1b;另一方面&#xff0c;数据可视化项目也是一张重要的名片&#xff0c;是企业数字化建设效果的呈现。本…

Spring基于AspectJ实现验签切点

文章目录 引言I AspectJ 依赖II 验签切点2.1 匹配方法执行的连接点2.2 设置带有CustomAnnotation注解的方法为切点III 案例:验签2.1 用法2.2 定义注解2.3 定义切面和切点引言 需求:验签 实现:基于AspectJ实现验签切点 I AspectJ 依赖 AspectJ 是一个基于 Java 语言的 AOP …

《HelloGitHub》第 97 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…