计算机网络安全——密码学入门

        网络安全是指在网络领域、专业领域的网络安全包括在基础计算机网络基础设施中所做的规定,网络管理员采取的策略来保护网络及网络可访问资源免受未经授权的访问,以及对其有效性(或缺乏)的持续不断的监控和测量的结合。

1. 密码学的简介与概念

1.1 信息系统安全的挑战

1.1.1 保密性

        只有授权的人员才能访问指定的信息。任何不希望的访问都必须被阻止。在这里,访问是指获取信息的权限。

1.1.1.1 定义

        国际标准化组织(ISO)在ISO-17799标准中定义保密性为“确保信息只能被授权访问的人员访问”。这里的访问指的是获取信息的能力。

1.1.1.2 相关攻击

        被动攻击:例如,窃听(无意中监听通信)。

1.1.1.3 防御措施

        加密:使用密码学方法加密数据,以防止未授权访问。
        IPSec(Internet Protocol Security):一种用于保护互联网协议(IP)通信的网络协议套件,确保数据传输的安全性。
        SSL(Secure Sockets Layer)和TLS(Transport Layer Security):这两种技术都用于在计算机网络中提供安全通信,常用于互联网浏览器和服务器之间的安全连接。

1.1.2 可用性

        系统必须在预定的使用时间内无故障运行,保证访问已安装服务和资源,并满足预期的响应时间。

1.1.2.1 定义

        可用性是指一个系统或设备在任意给定时刻(随机的)准备好执行其任务的程度。这是一种性能度量,通过将设备或系统实际运行的时间除以希望它运行的总时间来计算。

1.1.2.2 相关攻击

        服务拒绝攻击(Denial of Service, DoS):这种攻击旨在使目标系统或网络无法为用户提供服务。
        分布式拒绝服务攻击(Distributed Denial of Service, DDoS):这是一种更复杂的攻击,涉及多个攻击来源,共同致力于使目标系统或网络瘫痪。

1.1.3 完整性

        数据必须是预期的那样,并且不应意外或故意被篡改。

1.1.3.1 定义

        数据完整性是指在处理、存储或传输过程中,数据不会发生任何故意或意外的更改或破坏,并保持一种可用的格式。数据完整性包括四个要素:完整性、准确性、精确性/真实性和有效性。

1.1.3.2 保证完整性的机制

        哈希函数:通过生成数据的独特哈希值来检测数据是否被更改。
        数字签名:用于验证数据的完整性和来源。
        简单示例:校验和(checksum)、用于数据包或帧头部的CRC(循环冗余校验)错误检测码、消息认证码(MAC,Message Authentication Code)。

1.1.3.3 相关攻击

        下载恶意软件代替预期程序。修改交易(如银行交易)的金额等。

1.1.4 身份验证

        用户的识别对于管理对相关工作空间的访问和维护交换关系中的信任至关重要。

1.1.4.1 定义        

        验证(Authenticity)是确定或确认一个实体(或个人)的真实性的行为,即确保其身份与其所声称的相符。

1.1.4.2 相关攻击

        中间人攻击(Man in the Middle):攻击者在通信双方之间秘密地拦截和可能篡改信息。
        伪装(Masquerade):攻击者假扮成另一实体以获得非法访问。
        欺骗(Spoofing):攻击者伪造数据或网络身份,欺骗系统或用户。

1.1.4.3 认证机制

        难以复制的物理工件,如签名、指纹(生物特征识别)、水印(Watermarking)。共享的秘密,如密码。电子签名以及密钥认证机制(如公钥基础设施PKI)的使用。

1.1.5 不可否认性和归责性

        任何用户都不应能否认他在其授权活动范围内进行的操作,且任何第三方都不应能将其他用户的行为归于自己。

1.1.5.1 定义

        不可否认性是确保在争议中的一方不能声称自己不是某个特定消息的来源。这种特性是为了防止一方事后否认其曾进行的行为或通信。

        为了保证数据的来源,使用了数字证书,这些证书可以看作是数字身份证。认证机构(Certificate Authority, CA)证明了物理身份与数字实体之间的联系。

        数字证书创建的一个标准例子是X509,这是一种广泛使用的数字证书标准,用于在公开密钥基础设施(PKI)中管理公钥的格式和管理。

1.2 安全三角形

        图中展示的是“安全三角形”,这是信息安全中一个常见的概念,用来解释安全性、功能性和易用性三者之间的关系和平衡。三角形的三个顶点分别代表了这三个概念。

        安全性(SECURITY):指的是保护信息不受未授权访问或破坏的措施的强度。
        功能性(Functionality):指系统或服务可以提供的功能范围。
        易用性(Ease of Use):指系统或服务的使用便利程度。

        图中的红点表示了当前的安全姿态,它可能会根据需要在这三个要素之间移动。例如,提高安全性可能会降低功能性和/或易用性。

        下方的文字说明强调了在安全领域中,人们不能简单地询问“最好的防火墙是什么?”因为有两个极端:绝对的安全性和绝对的可访问性。一台从网络断开连接、没有电源供应、锁在保险箱里并丢进海底的计算机可能是最接近绝对安全的状态,但不幸的是,这种状态下的设备并没有太大的实用性。这段引述来自A.K.Sharma和C.S.Lamba的《网络安全与网络协议》。

1.3 密码技术的历史

1.3.1 两种古代的密码技术

1.3.1.1 斯基泰勒(Scytale)或普鲁塔克棒        

        这是一种古代的加密工具,由一根绕有条带的棒子组成,条带上写有信息。当条带按照正确的方式绕在棒子上时,可以读取信息。若条带不在棒子上,字母顺序会变乱,因此信息就被加密了。不过,这种加密方式相对容易破解,因为它只是简单地置换了消息中字母的顺序。

1.3.1.2 凯撒密码

        这是一种特殊的单字母替代加密方法,通过将字母表中的每个字母移动固定数目的位置来进行加密。例如,当位移量(k)是2时,'A'会被替换成'C','B'会被替换成'D',以此类推。该公式为 c = m + k mod 26,其中 c 是加密后的字符,m 是原始字符,k 是位移量。凯撒密码可以通过分析字母频率来破解,因为一些字母(如英文中的'e'和't')在文本中出现的频率较高。

        字母频率分布图,这种分析有助于破解凯撒密码等简单的替代密码,因为某些字母(如英文中的'E')在大多数文本中出现的频率比其他字母都要高。通过比较加密文本的字母频率分布与已知的正常字母频率分布,可以推断出位移量,从而解密文本。

1.3.2 两种中世纪的密码技术

1.3.2.1 16世纪:维吉尼亚密码

        这是一种多表代替加密方法,它使用一系列凯撒密码基于一个密钥进行加密。该方法的公式为 c = (m + k) mod 26,其中 c 是加密后的字符,m 是原始字符,k 是密钥字符对应的位移。
        例如,使用密钥“LEROI”,加密表会根据密钥字母循环进行置换。
        用密钥“LEROI”加密“LETER”后得到的密文。

1.3.2.2 19世纪:维吉尼亚密码的密码分析

        在19世纪,巴贝奇和卡西斯基(Babbage, Kasiski)等人开始分析维吉尼亚密码,并在1920年使用“符合指数”(indice de coïncidence)来确定密钥的长度,之后对每次置换进行密码分析(类似于破解凯撒密码)。
        通过比较密文中字母的出现频率和正常文本中的频率来找出密钥长度的方法。一旦密钥长度确定,就可以将复杂的维吉尼亚密码简化为多个凯撒密码进行破解。

1.3.3 20世纪上半叶密码学历史的一部分

1.3.3.1 一战时期:弗纳姆密码(Chiffre de Vernam,1917年,1926年发布)

        这是一种基于“一次性密码本”(one-time pad)的加密方法,公式为 c = m + k mod 26,其中 c 是加密字符,m 是原始字符,k 是密钥字符。
        在这种方法中,密钥是随机的并且和消息长度一样,这种加密方式被认为是无条件安全的,但前提是密钥必须是真正随机的、和消息一样长,并且密钥只能使用一次。
        这种加密方法是维吉尼亚密码的一个扩展,但它使用的是随机密钥且密钥没有周期性。

        克劳德·香农(C. Shannon)在1949年证明了一次性密码本是无条件安全的,但前提是只有当密钥真正随机、和消息长度一样,并且密钥只使用一次时。

        加密过程是将明文(clair)通过密码(chiffre)转化成密文(suite chiffrante),而解密过程则是相反,它将密文转换回明文。

1.3.4 第二次世界大战期间及其后密码学重要历史事件的概述

1.3.4.1 二战期间:恩尼格玛机(Enigma Machine)

        恩尼格玛是德国人使用的一种电动机械加密设备,基于转子来加密通讯。
        德国人使用恩尼格玛发出的消息最终被英国密码学家解密,这一成就部分基于波兰密码学家之前的工作,并且在解密过程中使用了早期的计算机。

1.3.4.2 1948-1949年:克劳德·香农发展信息理论(Information Theory)

        克劳德·香农发展了信息理论,这为编码和信息安全提供了理论框架。
        他引入了关键概念,如密钥的熵(Entropy of the Key)和独特性距离(Unicity Distance),这些都是评估密码强度和设计加密算法的重要工具。
        香农还强调了加密系统需要引入混淆(Confusion)和扩散(Diffusion)的必要性,这些原则后来成为现代加密算法设计的基石。

1.4 密码学的作用

1.4.1 加密消息(自古以来)

        为了保密性:防止未授权的监听或窃听。

1.4.2 签名消息(自1978年以来)

        认证(Authenticity):确保消息的作者确实是他声称的那个人。
        不可否认性(Non-repudiation):消息的作者不能否认他制作了这个消息。
        完整性(Integrity):保证消息内容的完整未被篡改。

1.4.3 对系统进行身份验证(自1978年以来)

        证明个人身份,通过证明拥有一个只有自己知道的秘密(如“密码”),同时确保这个秘密在网络上传输时不被泄露。

1.4.4 以及其他许多应用(自1978年以来)

        密钥交换,多方计算,电子投票,无意识的信息传输等。

1.5 密匙的概念

        在密码学中,“密钥”的概念非常重要。密钥是用来加密和解密信息的算法参数。在加密过程中,发送者(或称为发信人)使用密钥将明文消息(m)加密成密文(c),也称为密码文或加密文。而在解密过程中,接收者(或称为收信人)使用解密密钥将密文(c)还原为明文消息(m)。正确的解密密钥必须被消息的预期接收者所知晓,但不应该被攻击者知道。

        总结如下:

        密码学:是指设计信息保护系统的科学。
        密码分析:是指攻击这些信息保护系统的方法。
        明文消息:是指原始的、未加密的信息。
        密文消息(密码文或加密文):是通过加密过程从明文消息转化来的,只有通过正确的解密过程才能被读懂。

        因此,密钥在密码学中扮演了核心角色,它是确保信息安全传输的基础。加密密钥和解密密钥可以是相同的(对称加密),也可以是不同的(非对称加密)。在对称加密中,同一密钥既用于加密也用于解密。在非对称加密中,使用一对密钥,一个公开密钥用于加密,一个私有密钥用于解密。

1.6 克尔克霍夫斯原则

        在密码学中,克尔克霍夫斯原则(Kerckhoffs's principle)是一个基本原则,由荷兰密码学家奥古斯特·克尔克霍夫斯在1883年提出。该原则的核心观点是:

        a. 算法公开原则:加密算法应该被假定为已知于潜在的攻击者。
        b. 算法强度:算法的安全性不应依赖于其保密性,而应该足够强大,即使在攻击者知道算法的情况下仍然保持安全。
        c. 密钥的保密:数据的机密性最终依赖于解密密钥的保密性。通常情况下,加密/解密算法是标准化的,而密钥是保密的。
        d. 计算安全性:当安全性不能是完美无条件的(这几乎总是如此),它就是计算性的。这意味着,即使攻击者知道了算法和密文,他们也无法在合理的时间内计算出密钥。
        e. 密钥空间大小:可能的密钥数量必须足够大,以防止攻击者通过暴力搜索(brute force)或利用算法的漏洞来找到密钥。这通常通过要求密钥有足够的长度来实现。

        根据这些原则,一个加密系统的安全性主要取决于密钥的秘密保持和密钥空间的大小,而不是加密算法本身的秘密性。这就是为什么现代加密系统,如SSL/TLS、AES和RSA等,都有公开可用的标准化算法,而密钥则必须保密。

2. 加密系统

        密码学中有两种基本类型的加密系统:对称加密和非对称加密。

a.对称加密(同密钥加密或密钥保密加密)
        使用相同的密钥(称为秘密密钥)来进行加密和解密。
        由于加密和解密使用相同的密钥,因此密钥必须在双方之间安全地共享。
        示例包括凯撒密码、维吉尼亚密码、弗纳姆密码、数据加密标准(DES)、高级加密标准(AES)、以及其他许多历史上的加密方案,所有这些都需要秘密密钥才能进行加密和解密。
        历史上,所有在1977年之前的加密方案都是对称加密。

b.非对称加密(公钥加密或密钥公开加密):
        每个用户有一对密钥:一个公开密钥和一个私有密钥。
        公开密钥用于加密消息,私钥用于解密消息。
        公开密钥可以公开分发,而私钥必须保密。
        这种加密方式的示例包括RSA算法、El Gamal加密和椭圆曲线密码学。
        这类系统在1977年以前不存在,公钥加密的概念是在1976年由惠特菲尔德·迪菲(Whitfield Diffie)和马丁·赫尔曼(Martin Hellman)首次提出的。

        两种加密方式各有优缺点:对称加密通常更快,适合大量数据的加密;非对称加密虽然速度较慢,但它解决了密钥分发的问题,因为它允许任何人使用公钥加密消息,只有持有对应私钥的人才能解密,这使得它非常适合用于数字签名和加密初始通信阶段的密钥交换。

2.1 对称密码学

2.1.1 对称密码学在20世纪的发展关键点包括

2.1.1.1 1977年:DES的标准化

        数据加密标准(DES)是由美国国家标准技术研究所(NIST)标准化的加密算法,它是响应公开征集加密算法的结果。

2.1.1.2 1987年:RC4的发明

        RC4是由罗纳德·李维斯特(Ronald Rivest)设计的流密码,因其简单和高速而广泛用于软件中。它被用在SSL/TLS协议中保护互联网通信的安全,并在无线加密协议WEP中使用。

2.1.1.3 1999年:E0的使用

        E0是蓝牙设备中使用的流密码,用于保护蓝牙通信的安全。

2.1.1.4 1999年:A5的使用

        A5是用于全球移动通信系统(GSM)的一系列加密算法,保护移动电话之间的通信。

2.1.1.5 2000年:AES的标准化

        高级加密标准(AES)是DES的继任者,同样由NIST标准化,它是响应公开征集新的加密算法的结果。AES现在是最广泛使用的对称加密标准之一。

        这些发展反映了持续对新算法的需求以及对现有算法的性能进行评估和比较的必要性。NIST和欧洲密码学联合网络(ECRYPT)等机构定期发布对新加密算法的征集和基准测试,以保持加密技术的前沿状态和高安全标准。

2.1.2 块加密算法

        块加密算法是对称加密中的一类,它将消息分割成固定大小的块,然后对每个块独立进行加密。比如AES(高级加密标准)通常处理128位的数据块。以下是块加密算法的一些关键特征:

2.1.2.1 块处理

        如上所述,消息被分割成块,并且每个块单独加密。如果消息不足一个完整的块,它通常会被填充至完整块的大小。

2.1.2.2 迭代结构

        加密过程包括多个循环或“轮”(rounds)的操作。每一轮都会对数据块应用一系列变换。更多的轮次通常意味着更强的安全性,但也会导致加密过程速度变慢。

2.1.2.3 简单或表格化操作

        使用简单的数学和逻辑运算,如异或(XOR)、置换(Permutations)、代换盒(S-boxes)等。这些操作在硬件和软件中都可以高效地实现。

2.1.2.4 操作模式

        由于块加密算法只能加密固定大小的块,因此需要一种模式来定义如何连续处理消息中的多个块。

常见的操作模式包括:
        ECB(电子密码本模式,Electronic Codebook)
        CBC(密码块链模式,Cipher Block Chaining)
        OFB(输出反馈模式,Output Feedback)
        CTR(计数器模式,Counter)

        其中,CBC模式是一种常用的操作模式,它通过将前一个块的加密结果(或初始向量IV,对于第一个块)与当前块进行XOR运算后再加密,从而实现块之间的依赖。这种方法可以提高加密数据的安全性,因为它确保了相同的明文块不会生成相同的密文块。

2.1.3 流加密算法

        流加密算法是对称加密的另一类,它以流的形式处理消息,通常是一个或几个位(bit)一个接一个地加密。这种方法与块加密算法不同,它适用于实时加密和设备资源受限的情况。以下是流加密算法的一些关键特征:

2.1.3.1 逐位处理

        流加密算法逐个或逐小组位地处理消息,不需要将数据分割成块。

2.1.3.2 近似于Vernam密码的实现

        Vernam密码,也称为一次性密码本(OTP),提供了理论上的无条件安全,但它要求密钥长度与消息长度相同,并且密钥必须是完全随机的且只能使用一次。
        其他流加密算法通常使用伪随机数生成器来生成密钥流,这使得它们不具备Vernam密码的无条件安全性,而是依赖于计算上的安全性。

2.1.3.3 较轻松的使用条件

        与Vernam密码相比,其他流加密算法通常对密钥管理的要求更低,因为它们不要求密钥的长度与消息相同,且密钥不必是真正的随机,这降低了使用难度。

2.1.3.4 基础操作

        流加密算法依赖于基础而高速的操作,如异或(XOR)、移位(SHIFT)等,这些操作在硬件上非常快速。

2.1.3.5 安全性问题

        一些历史上的流加密算法,如RC4、E0、A5,现在不再被视为足够安全,因为它们存在已知的弱点和漏洞。
        虽然存在更安全的流加密系统,但它们可能没有得到像AES这样的块加密算法那样的标准化。

        流加密算法通常在需要高速加密和解密的场景中使用,例如在网络传输和无线通信中。但是,由于它们的安全性可能不如块加密算法,所以在选择使用流加密算法时需要谨慎。

2.2 非对称加密算法

        非对称加密,也称为公钥加密,是一种在1977年之后出现的加密体系,

2.2.1 发展里程碑

2.2.1.1 1977年:Diffie-Hellman密钥交换协议

        惠特菲尔德·迪菲(W. Diffie)和马丁·赫尔曼(M. Hellman)发表了开创性的论文,首次提出了公钥密码学的概念,并提出了Diffie-Hellman密钥交换协议。这种协议允许两个或多个用户在不安全的通道上建立共享的密钥。

2.2.1.2 1978年:RSA加密算法

        罗纳德·李维斯特(R. Rivest)、阿迪·萨莫尔(A. Shamir)和伦纳德·阿德曼(L. Adleman)发表了RSA加密算法,它基于大数分解的困难性。RSA算法成为了最广泛使用的公钥加密算法之一。

2.2.1.3 1978年:McEliece加密系统和Niederreiter加密系统

        这两个系统都基于纠错码理论。McEliece系统一开始并没有得到广泛应用,但随着对量子计算抗性的关注,它得到了新的关注。

2.2.1.4 1985年:El Gamal加密算法

        基于离散对数问题,El Gamal加密算法是一种基于密钥协商协议的非对称加密算法。

2.2.1.5 1987年:基于椭圆曲线的加密系统

        椭圆曲线密码学(ECC)提供了与RSA相似的安全性,但可以使用更小的密钥大小,从而提高了效率。

2.2.1.6 1994年:OAEP(Optimal Asymmetric Encryption Padding)

        这是一种用于RSA加密的填充方案,用于提高安全性并减少某些攻击的风险。OAEP通过增加随机性来确保RSA加密的安全性和实用性。

        公钥加密的出现解决了密钥分发的难题,因为它允许任何人使用公钥来加密信息,但只有持有对应的私钥的人才能解密。这使得它非常适合用于数字签名和在不安全通道上安全地交换密钥。

2.2.2 非对称加密算法的特性

        公钥密码学的核心是一类特殊的数学函数,称为“带陷阱的单向函数”。

2.2.2.1 特性
2.2.2.1.1 易于计算,难以逆向

        这类函数可以在多项式时间内容易地计算出结果,但要逆向计算(即根据输出找到输入)却非常困难,除非知道某个特殊的秘密(即“陷阱”)。

2.2.2.1.2 知道陷阱的个体

        持有密钥对的个体(如公钥和私钥的持有者)知道这个陷阱,这使得他们能够轻松逆向这个函数,而其他人则几乎不可能做到这一点。

2.2.2.1.3 典型示例

        RSA算法的基础:大整数分解问题。RSA算法的安全性基于大数分解的困难性。例如,将两个大的质数 p 和 q相乘得到NN = p \times q)是容易的,但从 \( N \) 中分解出 \( p \) 和 \( q \) 却极其困难。
        El Gamal和Diffie-Hellman算法的基础:离散对数问题。在这种情况下,给定一个生成元gg^x \mod N,找到指数x是非常困难的,这里xg的离散对数。

这些函数为公钥加密提供了强大的安全基础,因为只有密钥的合法拥有者才能有效地执行加密和解密操作,而对于没有陷阱信息的攻击者来说,破解这些加密几乎是不可能的。这种安全性特性使得公钥密码学成为了当代数字通信中不可或缺的一部分。

2.3 两种方法的优缺点分析

2.3.1 对称加密的优点和缺点

2.3.1.1 优点

        加解密速度快:由于基于简单操作(如置换、替代、XOR、移位等),对称加密适用于快速数据处理和硬件实现。
        理论上的完美安全性:Vernam密码(一次性密码本)在理论上提供了完美安全性,前提是密钥真正随机、和消息一样长,且只使用一次。

2.3.1.2 缺点

        共享密钥的需要:在对称加密中,加密和解密使用同一密钥,因此双方必须安全地共享密钥,这在实际应用中可能很困难。

2.3.2 非对称加密的优点和缺点

2.3.2.1 优点

        无需共享密钥:每个用户有自己的公钥和私钥对。公钥可以公开,而私钥保密,从而消除了密钥共享的问题。
        更适合数字签名和密钥交换:由于其结构,非对称加密非常适用于数字签名和安全地在不安全的通道上交换密钥。

2.3.2.2 缺点

        处理速度慢:非对称加密基于复杂的数学问题,因此加解密过程比对称加密慢得多。
        需要证书和公钥基础设施(PKI):为了防止中间人攻击,公钥必须通过可信的方式验证其真实性,通常通过PKI实现。

        总的来说,对称加密在处理大量数据时更高效,而非对称加密则在密钥管理和分发方面更为安全和灵活。在实际应用中,两者常常结合使用,例如在HTTPS协议中,使用非对称加密交换对称加密密钥,然后使用对称加密进行数据传输。

2.4 混合加密方案

        在实际应用中,为了结合对称加密和非对称加密各自的优势,通常采用混合加密方案。这些方案可以通过以下两种主要方式实现:

2.4.1 密钥交换协议(如Diffie-Hellman密钥交换)

        在这种方案中,通信双方使用如Diffie-Hellman这样的公钥协议来安全地建立一个共享秘密。
        一旦共享秘密建立,它就被用作对称加密算法(如AES)的密钥来加密和解密通信数据。
        这种方法的优点是结合了非对称加密的安全密钥交换能力和对称加密的高效率。

2.4.2 混合加密系统(Hybrid Encryption)

        在这种方案中,首先使用公钥加密算法(如RSA)来加密对称加密的密钥,然后将其安全地发送给接收方。
        接收方使用私钥解密出对称加密的密钥,然后双方使用这个对称密钥来加密和解密通信数据。
        这种方法兼具公钥加密的安全性和对称加密的效率,适用于需要加密大量数据的场景。

        这些混合方案利用了非对称加密在安全密钥分发方面的优势,同时又享受了对称加密在速度和效率方面的优势。例如,这种混合方法广泛用于HTTPS协议,其中非对称加密用于初始握手阶段的密钥交换,而后续数据传输则使用对称加密。这种方法既保证了密钥交换的安全性,又保证了数据传输的高效率。

2.5 密钥长度

        在对比对称加密和非对称加密时,密钥长度是一个重要的考虑因素。密钥长度直接关系到加密系统的安全性,即防止最佳攻击方法破解密钥的成本。以下是两种加密方法在密钥长度方面的特点:

2.5.1 对称加密的密钥长度

        对称加密通常使用较短的密钥,因为其安全性基于密钥的秘密性和加密算法的强度。
        通常,最低安全标准是128位密钥长度,这提供了良好的安全水平。

2.5.2 非对称加密的密钥长度

        非对称加密需要更长的密钥来提供与对称加密相同的安全级别。这是因为非对称加密的安全性基于复杂的数学问题。
        例如,对于RSA加密,推荐的密钥长度是3072位。
        在椭圆曲线密码学(ECC)中,虽然密钥长度通常比RSA短,但256位密钥长度已被认为是足够安全的。

        关于各种加密系统推荐的密钥长度,可以访问 [www.keylength.com](http://www.keylength.com/fr/5/)。这个网站汇集了多个系统的推荐密钥长度,并根据所需的安全持续时间给出建议。例如,随着计算能力的提升和新的攻击技术的出现,某个密钥长度可能在未来几年内不再安全。因此,选择合适的密钥长度对于确保长期的安全性至关重要。

2.6 密码分析

        密码分析是密码学中的一个重要领域,它涉及研究如何在不知道密钥的情况下破解加密代码或解密消息。密码分析的目标是找到加密算法的弱点或漏洞,从而减少破解加密所需的工作量。以下是密码分析的几种常见方法:

2.6.1 暴力攻击(Brute Force Attack)

        这是最基本的攻击方式,涉及尝试所有可能的密钥,直到找到正确的密钥为止。
        对于具有大量可能密钥的加密系统(如长密钥的系统),暴力攻击在实际中是不可行的,因为所需时间和资源过于巨大。

2.6.2 利用算法的漏洞

        密码分析师会利用加密算法的特定弱点来减少攻击所需的时间和资源。
        这类攻击比简单的暴力攻击更精细和高效。

2.6.3 密码分析的具体方法

        差分密码分析(Differential Cryptanalysis):通过分析对于特定的输入差异,密文的差异如何变化来推断关于密钥的信息。
        线性密码分析(Linear Cryptanalysis):试图找到明文和密文之间的线性关系,以简化密钥的搜索。
        对操作模式的攻击:针对特定的加密模式(如ECB或CBC)的漏洞进行攻击。
        量子密码分析(Quantum Cryptanalysis):利用量子计算的潜力来解决传统上难以破解的问题,如大整数的分解。

        随着计算技术的发展,特别是量子计算的兴起,密码分析的方法和效率也在不断进步。因此,加密算法需要不断地更新和改进,以抵御新出现的威胁。

2.7 攻击方法

        在密码分析中,根据可用信息和攻击者的能力,有几种不同类型的攻击方法。了解这些方法有助于更好地理解加密系统的潜在弱点以及如何防御这些攻击。以下是一些常见的攻击类型:

2.7.1 仅密文攻击(Ciphertext-Only Attack)

        攻击者只有加密的消息(密文),并尝试从中推断出原始消息(明文)。
        这是最基础的攻击方式,也是最难的,因为缺乏额外信息。

2.7.2 已知明密文攻击(Known Plaintext Attack)

        攻击者拥有一些明文消息及其对应的密文。
        这允许攻击者分析明文和密文之间的关系,从而找到密钥或算法的弱点。
        例如,在线性密码分析中就利用这种类型的攻击。

2.7.3 选择明文攻击(Chosen Plaintext Attack)

        攻击者可以选择特定的明文并获取其密文。
        这使攻击者能够设计特定的输入来揭示加密算法的弱点。
        差分密码分析通常使用这种攻击方式。

2.7.4 选择密文攻击(Chosen Ciphertext Attack)

        攻击者可以选择特定的密文并获取其明文。
        这种攻击在非对称加密系统中更为常见,因为攻击者可以利用公钥来解密他们选择的密文。了解这些攻击类型对于设计和评估加密系统的安全性至关重要。它们还强调了为什么在实际应用中,加密算法和密钥管理策略需要不断更新和改进,以应对新的和不断演化的威胁。

3. 公匙加密算法

3.1 RSA加密算法

        RSA加密算法是一种非对称加密算法,由罗纳德·李维斯特(Rivest)、阿迪·萨莫尔(Shamir)和伦纳德·阿德曼(Adleman)在1977年共同发明。它是最早的公钥密码系统之一,至今仍是最重要的公钥加密技术之一。下面是RSA加密中密钥的生成和运作原理:

3.1.1 生成两个大质数pq

        在RSA中,选择两个大的质数pq是关键的第一步。

3.1.2 计算N = p \times q

        N是这两个质数的乘积,它用作RSA公钥和私钥的一部分。

3.1.3 计算欧拉函数\varphi(N)

        \varphi(N)是小于或等于N的正整数中与N互质的数的数量,对于质数乘积N,计算公式为\varphi(N) = (p - 1)(q - 1)

3.1.4 选择公钥指数e      

        e是一个与\varphi(N)互质的正整数。通常,e选择为一个较小的质数,如 3 或 65537。

3.1.5 计算私钥指数d

        de\varphi(N)的乘法逆元,即d \times e \equiv 1 \mod \varphi(N)

3.1.6 公钥和私钥

        公钥是(e, N),而私钥是dpq(及\varphi(N))必须保持私密,因为它们可以用来破解私钥。

在您的例子中:

        p = 11 q = 23,因此N = p \times q = 253

       \varphi(N) = (p - 1)(q - 1) = 10 \times 22 = 220

        如果e = 3,则可以通过计算找到d使得d \times 3 \equiv 1 \mod 220。这里,d = 147

        RSA的安全性基于大数分解的困难性;知道N但不知道pq的情况下,很难计算出私钥d

3.2 RSA加密算法的加密和解密过程

3.2.1 明文表示

        在RSA中,需要加密的消息(明文)被转换成一个整数M,其中M满足2 \leq M \leq N - 1。这通常是通过某种形式的编码完成的,如ASCII编码。

3.2.2 加密过程

        明文M使用公钥 (e, N) 进行加密。加密过程是计算C = M^e \mod N,其中C是密文。

3.2.3 解密过程

        解密是使用私钥d对密文C进行操作。解密过程是计算M = C^d \mod N。由于de的模\varphi(N)逆元,所以这会还原出原始的明文M

3.2.4 基于欧拉定理的正确性

        RSA算法的正确性基于欧拉定理。根据这一定理,如果n是一个正整数,a是一个与n互质的整数,则a^{\varphi(n)} \equiv 1 \mod n。在RSA中,由于e \times d \equiv 1 \mod \varphi(N),这确保了(M^e)^d \equiv M \mod N

        这种机制使得只有知道正确私钥的接收者才能解密由公钥加密的消息,而加密过程本身可以由任何人使用公钥来完成。这就是为什么RSA加密在数字通信和数据保护中广泛应用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是网络安全?网络安全概况

网络安全涉及保护我们的计算机网络、设备和数据免受未经授权的访问或破坏。 这个领域包括多种技术、过程和控制措施,旨在保护网络、设备和数据免受攻击、损害或未授权访问。网络安全涉及多个方面,包括但不限于信息安全、应用程序安全、操作系统安全等 …

K8S搭建(centos)二、服务器设置

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

“gradle project sync failed”

很久没打开AndroidStudio了,打开电脑发现这个软件都没了。重新安装后创建项目不成功,就提示了这个错误。 错误原因 “gradle project sync failed”:gradle没有配置成功。在安卓项目下找到目标文件:gradle --> wrapper -->…

HarmonyOS 发送http网络请求

好 本文 我们来说 http请求 首先 我们要操作网络内容 需要申请权限 项目中找到 main目录下的module.json5 最下面加上 "requestPermissions": [{"name": "ohos.permission.INTERNET"} ]这里 我在本地写了一个get接口 大家可以想办法 弄一个后…

【JavaEE进阶】 关于⽇志框架(SLF4J)

文章目录 🌳SLF4j🌲⻔⾯模式(外观模式)🚩⻔⾯模式的定义🚩⻔⾯模式的优点 🍃关于SLF4J框架🚩不引⼊⽇志⻔⾯🚩引⼊⽇志⻔⾯ ⭕总结 🌳SLF4j SLF4J不同于其他⽇志框架,它不是⼀个真正…

基于 GPT 和 Qdrant DB 向量数据库, 我构建了一个电影推荐系统

电影推荐系统自从机器学习时代开始以来就不断发展,逐步演进到当前的 transformers 和向量数据库的时代。 在本文中,我们将探讨如何在向量数据库中高效存储数千个视频文件,以构建最佳的推荐引擎。 在众多可用的向量数据库中,我们将…

【Linux】Shell 命令以及运行原理

Shell 命令以及运行原理 当用户登录 Linux 系统的时候,系统会给用户创建一个新的进程,一般叫做 bash(命令行解释器)。 Linux 严格意义上说的是一个操作系统,我们称之为 “核心( kernel )” &…

Paimon教程

教程来自尚硅谷 目录 教程来自尚硅谷1. 概述1.1 简介1.2 核心特性1.3 文件布局1.3.1 LSM Trees 2. 集成Flink2.1 安装&配置2.2 Catalog 3. 进阶使用3.1 写入性能3.1.1 并行度3.1.2 Compaction3.1.3 触发Compaction的Sorted Run数3.1.4 写入初始化3.1.5 内存 3.2 读取性能3.…

在Windows 11上安装Domino 14和Traveler 14

大家好,才是真的好。 是的,没错,在过去,很多人都喜欢将他们的Domino服务器安装在自己的pc电脑和个人操作系统上,从遥远的windows 2000、xp;windows 7以及到现在的Windows 10和11。 这也造成了在使用Domin…

【设计模式】代理模式的实现方式与使用场景

1. 概述 代理模式是一种结构型设计模式,它通过创建一个代理对象来控制对另一个对象的访问,代理对象在客户端和目标对象之间充当了中介的角色,客户端不再直接访问目标对象,而是通过代理对象间接访问目标对象。 那在中间加一层代理…

抓包工具Fidder

介绍 Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,代理地址:127.0.0.1,默认端口号:8888。代理就是在客户端和服务器之间设置一道官咖,客户端将请求数据发送出去之后,代理服务器会…

为什么电脑降价了?

周末,非常意外地用不到3000元买到了一款2023年度发布的华为笔记本I5,16G,500G,基本是主流配置,我非常意外,看了又看,不是什么Hwawii,或者Huuawe。然后也不是二手。为什么呢?因为在ALU和FPU之外&…

一零七七、将Hexo cl Hexo g Hexo s通过systemctl命令管理

背景: 服务器需要执行hexo s来运行项目,但这个命令是基于前台的,故想直接嫁接在systemctl命令基础上来控制环境: Centos 8 前置环境就不说了,Hexo安装好,起码装完自己得先看hexo命令生效没,前置环境做好后…

项目篇:基于UDP通信模型的网络聊天室

思维导图 基于UDP通信模型的网络聊天室 消息分类及数据包结构 服务器端 #include <head.h> #define SER_PORT 8888 #define SER_IP "192.168.232.133" typedef struct mb {struct sockaddr_in cin;char name[20];struct mb *next; }*member; //群发消息 int …

【英文干货】【Word_Search】找单词游戏(第1天)

本期主题&#xff1a;Mindfulness&#xff08;意识力&#xff09; 本期单词&#xff1a; Awareness 意识 Breathing 呼吸 Calm 平静的 De-Stress 减压 Feelings 感受&#xff0c;情感 Inspection 调查 Meditation 冥想 Peace 和平 Quiet 安静的 Recollection 回忆 R…

当世界加速离你而去

当世界加速离你而去 会不会这个标题显的太悲观&#xff0c;也可能是耳机里正在放着To Be Frank的原因。 对于阳历跨年我是没有太多的感觉&#xff0c;而且跨年夜忙着约会&#xff0c;所以2023年的跨年文章今天才出来。 一年的时间一晃就过了。2022年12月9日时候彻底结束了风控…

ELK 分离式日志(1)

目录 一.ELK组件 ElasticSearch&#xff1a; Kiabana&#xff1a; Logstash&#xff1a; 可以添加的其它组件&#xff1a; ELK 的工作原理&#xff1a; 二.部署ELK 节点都设置Java环境: 每台都可以部署 Elasticsearch 软件&#xff1a; 修改elasticsearch主配置文件&…

FOR XML PATH 函数与同一分组下的字符串拼接

FOR XML PATH 简单介绍 FOR XML PATH 语句是将查询结果集以XML形式展现&#xff0c;通常情况下最常见的用法就是将多行的结果&#xff0c;拼接展示在同一行。 首先新建一张测试表并插入数据&#xff1a; CREATE TABLE #Test (Name varchar(70),Hobby varchar(70) );insert #T…

EHS管理系统为何需要物联网的加持?

EHS是Environment、Health、Safety的缩写&#xff0c;是从欧美企业引进的管理体系&#xff0c;在国外也被称为HSE。EHS是指健康、安全与环境一体化的管理。 而在国内&#xff0c;整个EHS市场一共被分成三类&#xff1b; 一类是EHS管培体系&#xff0c;由专门的EHS机构去为公司…

Watch(监视器)+(综合案例)

Watch侦听器&#xff08;监视器&#xff09; 作用&#xff1a;监视数据变化&#xff0c;执行一些业务逻辑或异步操作 语法&#xff1a; ①简单写法 → 简单类型数据&#xff0c;直接监视 ②完整写法 → 添加额外配置项 ①简单写法 <!DOCTYPE html> <html lang"…