加密技术详解:从对称到非对称从理论到实践_第1页
加密技术详解:从对称到非对称从理论到实践_第2页
加密技术详解:从对称到非对称从理论到实践_第3页
加密技术详解:从对称到非对称从理论到实践_第4页
加密技术详解:从对称到非对称从理论到实践_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文)转换为不可读的格式(密文从而确保信息的机密性(Confidenti(Integrity)和可用性(Availability即信息安全的CIA三要素。加密技术不仅是保护个上银行和数字通信都将无法安全运行。.密文(Ciphertext指通过加密算法处理明文后得到的、不可读的、看似随机表格表格GeneratedbyKimiAIGeneratedbyKimiAI特性对称加密(SymmetricEncryption)非对称加密(Asymmetri密钥数量使用同一个密钥进行加密和解密。密钥分发密钥分发困难。通信双方必须事先安全地共享同—个密钥。计算速度速度快,适合加密大量数据。主要用途加密大量数据,如文件、磁盘、网络通信。速度非常快,但最大的挑战是如何安全地将这把“钥匙”从—个人手里交到另—个人手里。.对称加密算法:如AES(AdvancedEncryptionStandard)、DES(DataEncryption非对称加密算法:如RSA(Rivest-Shamir-Adleman)、ECC(EllipticCurveCryptography)。主要用于密钥交换、数字签名和身份验证。例如,在HTTPS/TLS握手.哈希函数(HashFunctions如SHA-256(SecureHashAlgorithm256-bit)。哈希GeneratedbyKimiAI),选,由比利时密码学家JoanDaemen和VincentRijmen设计的Rijndael算法最终在2001年被2.2AES加密与解密的核心流程.AES-256(256位密钥14轮2.2.2初始轮密钥加(AddRoundKey)GeneratedbyKimiAI微小改变都会导致后续所有轮次中状态的巨大差异,这体现了密码学中的“雪崩效应”。2.2.3多轮循环的四个步骤:SubBytes,ShiftRows,MixColumns,AddRoundKey4.AddRoundKey(轮密钥加这“列混淆”(MixColumns)这一步骤。最终轮的流程只包含三个步骤:SubBytes、ShiftRows和AddRoundKey。省略MixColumns步骤的设计是经过GeneratedbyKimiAI2.3AES的工作模式详解度的数据,需要结合不同的工作模式(ModeofOperation)来使用。工作模到填充预言攻击(PaddingOracleAttack),如果实现不当,可能导致密文被破解。GeneratedbyKimiAI2.4AES的性能特点与适用场景.全盘加密:保护存储在硬盘或固态硬盘上的所有数据。2.5Python中的AES加密实践在Python中,有多个库可以用于实现AES加密,其中最常用的是pycryptodome。这个库提2.5.1使用pycryptodome库实现AES加密24或32字节,分别对应AES-128、AES-192和AES-256。初始化向量(IV)则用于在2.5.2代码示例:AES加密与解密过程以下是—个使用pycryptodome库实现AES-CBC模式加密和解密的完整Python代码示例。PythonCrypto.CipherAESCrypto.Randomget_random_bytesGeneratedbyKimiAIfromCrypto.Util.Paddingimportpad,unpad#1.定义密钥和待加密的数据#密钥必须是16,24,或32字节长key=b'ThisIsA16ByteKey'#16字节密钥,对应AES-128data=b'Thisisasecretmessagethatneedstobeencrypted.'#2.生成—个随机的16字节初始化向量(IV)#对于CBC模式,IV应该是随机的且不可预测的iv=get_random_bytes(16)#3.创建AES加密器对象#使用CBC模式cipher=AES.new(key,AES.MODE_CBC,iv)#4.对数据进行填充,使其长度为16字节的倍数#PKCS7是常用的填充方案padded_data=pad(data,AES.block_size)#5.执行加密ciphertext=cipher.encrypt(padded_data)print(f"原始明文:{data}")print(f"密钥:{key}")print(f"初始化向量(IV):{iv}")print(f"密文(十六进制):{ciphertext.hex()}")#---解密过程---#6.创建AES解密器对象#解密时需要使用相同的密钥和IVdecipher=AES.new(key,AES.MODE_CBC,iv)#7.执行解密decrypted_padded_data=decipher.decrypt(ciphertext)#8.移除填充,恢复原始明文decrypted_data=unpad(decrypted_padded_data,AES.block_size)print(f"解密后的明文:{decrypted_data}")#验证解密结果assertdata==decrypted_data,"解密失败,明文与原始数据不匹配!"print("加密和解密成功!")GeneratedbyKimiAIRSA算法是现代密码学的基石之—,由RoRSA算法的安全性核心在于大数分解(IntegerFactorization)的计算复杂性。在密钥生成击者在只知道n的情况下,都无法在合理的时间q。如果攻击者能够成功分解n,他们就可以轻易地计算出欧拉函数φ(n)=(p-1)(q-(Post-QuantumCryptography)的原因之—。TotientFunction)和模反元素(ModularMultiplicativeInverse)。(p-1)(q-1)。这个φ(n)在密钥生成过程中扮演着至关重要的角色,它被用于计算私钥指GeneratedbyKimiAI原始明文。计算模反元素通常使用扩展欧几里得算法(ExtendedEuclideanAlgorithm使用2048位或更长的密钥长度,这意味着p和q都应该是1024位左右的大素数。选择法,如米勒-拉宾素性测试(Miller-RabinPrimalityTest)。这种算法可以快速判断—个给定的数是否为“可能素数”,其错误概率可以被控制到极低的水平。生成p和q后,它3.2.2计算模数n和欧拉函数φ(n)2.计算欧拉函数φ(n):欧拉函数φ(n)的计算公式为φ(n)=(p-1)(q-1)。这个值在后3.2.3选择公钥指数eGeneratedbyKimiAI3.2.4计算私钥指数d得算法(ExtendedEuclideanAlgorithm)高效地完成。该算法不仅能求出两个数的最大公GeneratedbyKimiAI3.3.3使用实际参数的加密解密示例φ(n)=(p-1)*(q-1)=60*52=3120.通过扩展欧几里得算法可以计算出d=2753。.计算得c=2790·使用私钥(2753,3233)进行解密:m三2790²75³mod3233GeneratedbyKimiAI3.5.2密钥交换GeneratedbyKimiAI),3.5.3在HTTPS/TLS中的应用话密钥。后续的HTTP请求和响应都将使用这个会话密钥进行椭圆曲线密码学(EllipticCurveCryptography,ECC)是技术。与RSA等传统非对称加密算法依赖于大数分解难题不同,E曲线离散对数问题”(EllipticCurveDiscreteLogarithmProblem,ECDLP)**之上。该问Koblitz和VictorS.Miller独立提出以来,ECC已逐渐成为现代密码学的重要组成部分,并被ECC的核心思想是利用椭圆曲线上的点构成的阿贝尔群(拉斯方程(Weierstrassequation)形式:y²=x³+ax+b。在这个方程中,a和b线没有尖点或自交点参数a和b必须满足条件4a³+27b²≠0。在密码学应用GeneratedbyKimiAI所有点(x,y),加上—个特殊的“无穷远点”(PointatInfinity,O共同构成了—个阿的集合,可以在其上定义群运算。这种数学结构的美妙之处在于,它提供了—种“单向函数”ECC的加密和解密过程主要依赖于椭圆曲线上的两种基本运算:点加(PointAddition)和点乘(PointMultiplication)。点乘(PointMultiplication点乘是ECC中最核心、最耗时的运算,定义为将—个点P加法,但可以通过高效的算法如“双倍-加法”(Double-and-Add)算法来快速计算,其时—GeneratedbyKimiAI4.2.2生成私钥d与公钥Q=d*G2.计算公钥(PublicKey接收方使用私钥d和基点G,通过点乘运算计算出其公钥3.分发公钥:接收方将计算出的公钥Q公开给所有可能向其发送加密信息的发送方。加密方案”(EllipticCurveIntegratedEncryptionScheme,ECIES)的混合加密方法。GeneratedbyKimiAI2.生成临时密钥对:发送方随机生成—个临时私钥k,并3.计算共享秘密:发送方使用自己的临时私钥k和接收方的公钥Q4.派生对称密钥:从共享秘密点S的坐标中,通过—个密钥派生函Function,KDF)生成—个对称加密密钥K。4.2.4ECC解密过程坐标中派生出相同的对称密钥K。表格表格GeneratedbyKimiAIRSA密钥长度(比特)ECC密钥长度(比特)应用场景示例8010242048224传统应用,逐步淘汰3072256当前推荐标准7680384高安全要求25615360长期高安全要求4.3.2计算速度与资源消耗对比级别(如256位ECCvs3072位RSA),这个差距可以扩大到20到60倍。GeneratedbyKimiAI率”特性使其成为理想的选择。例如,苹果的iMessage和谷歌的Allo等即时通讯应用都使用4.4.2区块链与加密货币客户端和服务器可以使用ECDHE(EllipticCurveDiffie-HellmanEphemeral)算法来协商保密”(ForwardSecrecy)的特性,即即使服务器的长期私钥在未来被泄露,之前通信的会码学实践中普遍采用“混合加密”(HybridEncryption)体系。混合加密巧妙地结合了对称GeneratedbyKimiAI决了“密钥如何安全送达”的难题,然后充分发挥对称加密的高效性来完成主要的数据加密任5.2混合加密的基本流程5.发送加密后的对称密钥:发送方将加密后的对称密钥发送给接收方。5.2.2使用对称加密(AES)加密大量数据5.3混合加密的Mermaid流程图GeneratedbyKimiAI接收方(Bob)1.Bob生成非对称密钥对生成RSA/ECC私钥(PrivateKey)计算RSA/ECC公钥(接收方(Bob)1.Bob生成非对称密钥对生成RSA/ECC私钥(PrivateKey)计算RSA/ECC公钥(PublicKey)3.Alice准备并加密数据生成—个随机的AES对称密钥(SessionKey)使用Bob的公钥加密AES密钥使用AES密钥加密原始消息(Plaintext)5.Bob接收并解密数据使用自己的私钥解密,得到AES密钥使用AES密钥解密密文得到原始消息发送方(Alice)2.Bob将公钥发送给Alice4.Alice发送加密后的AES密钥和加密后的消息(Ciphertext)5.4实际应用案例:HTTPS/TLS握手过程详解1.ClientHello:浏览器(客户端)向服务器发送—个“ClientHello”消息,其中包含客户端GeneratedbyKimiAI2.ServerHello:服务器回应—个“ServerHello”消息,从客户端提供的列表中选择—个加密3.密钥交换:客户端验证服务器证书的有效性后,会生成—个新的随机数,称为“预主密钥”4.生成会话密钥:客户端和服务器现在都拥有了三个随机数:ClientRandom、SRandom和Pre-MasterSecret。双方使用这三个随机数和之前协商好的密钥派生算法,独立地计算出相同的“主密钥”(MasterSecret并从中派生出本次会话所需的对称加5.4.2数字证书与身份验证5.4.3建立安全连接后的数据传输5.5Python项目中的综合应用案例势,可以构建—个既安全又高效的加密方案。Python的pycryptodome库提供了强大的加RSA的加密方案,它引入了随机填充(OptimalAsymmetricEncryptionPadding),可以有5.5.2使用AES加密实际数据GeneratedbyKimiAI加密大量数据。在Python中,pycryptodome库提供了对AES的全面支持。为了实现安全的加密,通常会使用—种称为“认证加密”的模式,如EAX(Encrypt-then-Authenticate-then-Translate)或GCM(Galois/CounterMode)。这些模式不仅提供机密性(加5.5.3完整的加密与解密流程代码示例PythonfromCrypto.PublicKeyimportRSAfromCrypto.CipherimportAES,PKCS1_OAEPfromCrypto.Randomimportget_random_bytes#1.生成RSA密钥对(通常在服务器端完成,并将公钥分发给客户端)key=RSA.generate(2048)private_key=key.export_key()public_key=key.publickey().export_key()#2.客户端开始加密过程#2.1生成随机的AES会话密钥aes_key=get_random_bytes(16)#128-bitkey#2.2使用RSA公钥加密AES密钥recipient_key=RSA.import_key(public_key)cipher_rsa=PKCS1_OAEP.new(recipient_key)encrypted_aes_key=cipher_rsa.encrypt(aes_key)#2.3使用AES密钥加密数据cipher_aes=AES.new(aes_key,AES.MODE_EAX)data=b'Hello,World!Thisiciphertext,tag=cipher_aes.encrypt_and_digest(data)#3.服务器端开始解密过程#3.1使用RSA私钥解密出AES密钥private_key_obj=RSA.import_key(private_key)cipher_rsa=PKCS1_OAEP.new(private_key_obj)decrypted_aes_key=cipher_rsa.decrypt(encrypted_aes_key)#3.2使用解密出的AES密钥解密数据GeneratedbyKimiAIcipher_aes=AES.new(decrypted_aes_key,AES.MODE_EAX,nonce=cipher_aes.nonce)decrypted_data=cipher_aes.decrypt_and_verify(ciphertext,tag)#4.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论