密码学-回顾篇(上)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 密码学-回顾篇

概述  


密码学作为研究编制密码和破译密码的科学技术,由编码学和破译学两门学科构成。

其中,应用于编制密码以保守通信秘密称为编码学,应用于破译密码以获取通信情报称为破译学。

根据明文处理方式的不同分为序列密码与分组密码,根据密钥的使用个数不同分为对称加密算法和非对称加密算法。密码学的应用范围也非常广泛,在渗透测试或CTF比赛中也经常会用到密码学知识,因此,掌握密码学相关知识,学会利用Python工具脚本进行检测尤为重要。


算法  


对称加密算法  


对称加密算法依赖于一个共享的加密密钥,该密钥会被分发给所有参与通信的对象。所有通信对象都使用这个密钥对消息数据进行加密和解密。当使用越长的密钥对消息进行加密时,密文数据越难被破解。对称加密算法主要应用于批量加密的数据,并且只为安全服务提供机密性。

对称加密算法的特点是文件加密和解密使用相同的密钥,即发送方和接收方需要持有同一把密钥。相对于非对称加密算法,对称加密算法具有更高的加解密速度,但双方都需要事先知道密钥,密钥在传输过程中可能会被窃取,因此安全性没有非对称加密算法强。常见的对称加密算法包括DES、AES等。

         

因为对称加密算法具有发送方和接收方使用同一把密钥的特点,所以存在如下优缺点:

对称加密算法的主要优势在于能够以极快的速度进行操作,通常是非对称加密算法的1000~10000倍。

对称加密算法未实现不可否认性。由于任意通信方都可以利用共享的密钥对消息进行加密和解密,因此无法分辨指定消息的来源。

对称加密算法具有不可扩展性。对于大的用户组来说,使用对称密钥的密码进行通信非常困难。只有在每个可能的用户组合共享私有密钥时,组中个人之间的安全专有通信才能实现。

密钥需要经常更新。每当有成员离开用户组时,所有涉及这个成员的密钥都必须被抛弃。


非对称加密算法  


非对称密钥算法(也称为公钥算法)针对对称加密算法的弱点提供了另外一种解决方案。

在系统中,每个用户都有两个密钥:

一个是在所有用户之间共享的公钥,另一个是只有用户自己知道并秘密保管的私钥。

如果使用公钥加密消息,那么只有相关的私钥能够进行解密,反之,如果使用私钥加密消息,则只有用相关的公钥能够解密,即数字签名技术。

 

文件加密需要公钥(publickey)和私钥(privatekey)。接收方在发送消息前,需要事先生成公钥和私钥,然后将公钥发送给发送方。发送方收到公钥后,将待发送数据用公钥加密,发送给接收方。接收方收到数据后,用私钥解密获得明文信息。在整个过程中,公钥负责加密,私钥负责解密,这样数据在传输过程中即使被截获,攻击者没有私钥也无法破解。非对称加密算法的加解密速度低于对称加密算法,但是安全性更高。通常非对称加密算法包括RSA、ECC等。

非对称加密算法除了能够确保消息的保密性,还可以实现对数字签名。如果小明希望使其他用户确信带有其签名的消息是由小明本人发送的,那么首先要使用散列算法创建一个消息摘要。小明随后使用其私钥对消息摘要进行加密。所有希望验证这个签名的用户只需要利用小明的公钥对消息摘要进行解密,然后验证解密的消息摘要是正确的,即可确定。

非对称加密算法的主要优点如下:

§有较好的扩展性,增加新用户只需要生成一对“公钥-私钥”。新用户与非对称密码系统中的所有用户通信时都使用这对相同的密钥。

§容易删除用户。非对称算法提供了一种密钥撤销机制,这个机制准许密钥被取消,从而能够有效地从非对称系统中删除用户。

§只有在用户的私钥被破坏时,才需要进行密钥重建。如果某位用户离开了公司,那么系统管理员只需要简单地将该用户的密钥作废即可。其他密钥都不会被破坏,因此其他用户都不需要进行密钥重建。

§非对称加密算法提供了完整性、身份认证和不可否认性。如果某位用户没有与其他个体共享其私钥,那么具有该用户签名的消息就是正确无误的,并且具有特定的来源,在以后的任何时刻都不能被否认。


分组密码工作模式  


密码学中,分组密码工作模式可以提供诸如机密性或真实性的信息服务。基于分组的对称加密算法(DES、AES等)只是描述如何根据加密密钥对一段固定长度(块)的数据进行加密,对于比较长的数据,分组密码工作模式描述了如何重复应用某种算法加密分组操作来安全地转换大于固定长度的数据量。常见的分组密码工作模式有ECB、CBC、CFB、OFB、CTR 5种,下面将对这5种工作模式的分组密码进行分析。

ECB  

ECB(Electronic Codebook,电子密码本)模式是最简单的加密模式,明文消息被分成固定大小的块(分组),并且每个块被单独加密。每个块的加密和解密都是独立的,且使用相同的方法进行加密,所以可以进行并行计算,但是一旦有一个块被破解,使用相同的方法就可以解密所有的数据,安全性比较差。ECB模式适用于数据较少的情形,加密前需要把明文数据填充到块大小的整倍数。

 

CBC  

CBC(Cipher Block Chaining,密码块链)模式中每一个分组要先和前一个分组加密后的数据进行XOR(异或)操作,然后再进行加密。这样每个密文块依赖该块之前的所有明文块,为了保持每条消息都具有唯一性,第一个数据块进行加密之前需要用初始化向量IV进行异或操作。CBC模式是一种最常用的加密模式,主要缺点为加密是连续的,不能并行处理,并且与ECB一样,消息块必须填充到块大小的整倍数.

CFB  

CFB(Cipher Feedback,密码反馈)模式和CBC模式比较相似,前一个分组的密文加密后和当前分组的明文进行XOR(异或)操作,生成当前分组的密文。CFB模式的解密和CFB加密在流程上也是非常相似的。

 

OFB  

OFB(Output Feedback,输出反馈)模式将分组密码转换为同步流密码,也就是说可以根据明文长度先独立生成相应长度的流密码。在加密流程中可以看出,OFB和CFB非常相似,CFB是前一个分组的密文加密后与当前分组明文进行XOR操作,OFB是将前一个分组异或之前的流密码与当前分组明文进行XOR处理。由于异或操作的对称性,OFB模式的解密与加密的流程完全相同。

CTR  

CTR(Counter,计数器)模式与OFB模式相同,计数器模式将分组密码转换为流密码。加密“计数器”的连续值用来产生下一个密钥流块。

 


PyCryptodome库

 

PyCryptodome是Python中一种强大的加密算法库,可以实现常见的单向加密、对称加密、非对称加密和流加密算法。目前该库函数支持Python 2和Python 3两种不同版本。其安装方式也极其简单,可根据当前Python环境以pip方式进行安装。

安装PyCryptodome库函数时可以通过pip指令直接进行安装:

sudo pip3 install -i https://pypi.douban.com/simple pycryptodome            

pip3 install -i htttps://pypi.douban.com/simple pycryptodomex        

 

Base64编/解码  


Base64是一种由任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。在CTF比赛和渗透测试中,通常会遇到Base64编码的数据,例如Base64编码的图片、请求的数据包被Base64编码等,这时都可以利用Base64的可逆性进行解码。

当通过记事本打开jpg、pdf等格式的文件时,会看到一堆乱码,这是因为二进制文件包含很多无法显示和打印的字符。所以,如果想让像记事本这样的文本处理软件能处理二进制数据,就需要将二进制数据转换为特定字符串,此时就要用到Base64。除此之外,Base64编码也有很多其他用途,例如,垃圾信息传播者采用Base64编码的方式规避反垃圾邮件工具。当需要将二进制数据编码为适合放在URL(包括隐藏表单域)中的形式时,也可以采用Base64的编码方式。该编码不仅简短,同时也具有不可读性,能对敏感数据起到较好的保护作用。

Base64编码原理  

Base64编码原理非常简单,首先确定好要编码的字符串,并查找其对应的ASCII码将其转换为二进制表示,每三个8位的字节转换为四个6位的字节(3×8=4×6=24),把6位的最高位添两位数字0,组成四个8位的字节,因此转换后的字符串将要比编码前的字符串长1/3。转换后,再将二进制转换为十进制表示,对应Base64编码的索引表查阅出该十进制对应的字母,由此最终获得Base64编码。


用Python实现Base64编/解码  

import base64            
s='ms08067'            
bsse = base64.b64encode(s.ensode("utf-8"))            
print(base)            
import base64            
base = 'qwerqwe=='            
bbs=str(base64.b64decode(base),"utf-8")            
print(bbs)


DES加密算法  


简介  

ES(Data Encryption Standard)是迄今为止世界上最为广泛使用和流行的一种分组密码算法。在1937年,美国国家标准局(NBS)公开征集一个密码算法作为国家标准数据加密算法,IBM公司在1974年提交了LUCIFER算法,后来IDM公司对该算法进行改进,经过美国国家标准局审查后也就成为了后来的DES算法。DES作为一种分组加密算法,是一个16轮的Feistel型结构密码,它的分组长度为64比特,用一个56比特的密钥来加密一个64比特的明文串,输出一个64比特的密文串。其中,使用密钥为64比特,密钥位数是56比特,另8位用作奇偶校验,加密用的位数是48比特。加密的过程是先对64位明文分组进行初始置换,然后分左、右两部分分别经过16轮迭代,然后再进行循环移位与变换,最后进行逆变换得出密文。加密与解密使用相同的密钥,因而它属于对称密码体制

原理  

DES加密算法综合运用了置换、代替、代数等多种密码技术,具有设计精巧、实现容易、使用方便等特点。DES加密算法的明文、密文和密钥的分组长度都是64位。

DES加密过程如下所示:

1)64位密钥经子密钥产生算法产生16个48位子密钥。

2)64位明文首先经过初始置换IP(Initial Pennutation),将数据打乱重新排列,并分成左右两边,各32位序列。

3)加密函数f实现子密钥K1对K0的加密,结果为32位的数据组f(R0,K1)。f(R0,K1)再与L0的模2相加,又得到一个32位的数组L0⊕f(R0,K1),以L0⊕f(R0,K1)作为第二次加密迭代的R1,以R0作为第二次加密迭代的Ll,第二次加密迭代至第十六次加密迭代分别用子密钥K2,…,K16进行,其过程与第一次加密迭代相同。

4)第16次加密迭代结束后,产生一个64位的数据组。以其左边32位作为R16,右边32位作为L16,两者合并后经过逆初始置换IP-1将数据重新排列,便得到64位密文。至此,加密结束。

相关文章
|
1月前
|
安全 算法 网络安全
网络安全与信息安全的博弈:漏洞、加密技术及安全意识的深度剖析
【10月更文挑战第3天】在数字时代的浪潮下,网络安全和信息安全成为了保护个人隐私和企业资产的关键防线。本文将深入探讨网络安全中的常见漏洞、先进的加密技术以及提升安全意识的重要性。通过分析这些关键要素,我们旨在为读者提供一套全面的网络安全策略,帮助构建更为坚固的信息安全防御体系。
39 1
|
6天前
|
存储 安全 网络安全
网络安全与信息安全:漏洞、加密技术与安全意识的交织
【10月更文挑战第39天】在数字化时代,网络安全与信息安全成为保护个人隐私和组织资产的重要屏障。本文将探讨网络安全中的常见漏洞、加密技术的应用以及提升安全意识的重要性。通过具体案例分析,我们将深入了解网络攻击的手段和防御策略,同时提供实用建议,以增强读者对网络安全的认识和防护能力。
|
24天前
|
存储 安全 网络安全
网络安全的屏障与钥匙:漏洞防御与加密技术深度解析
【10月更文挑战第20天】在数字世界的迷宫中,网络安全是守护我们数据宝藏的坚固盾牌和锋利钥匙。本篇文章将带您穿梭于网络的缝隙之间,揭示那些潜藏的脆弱点—网络安全漏洞,同时探索如何通过现代加密技术加固我们的数字堡垒。从基本概念到实战策略,我们将一同揭开网络安全的神秘面纱,提升您的安全意识,保护个人信息不受侵犯。
51 25
|
13天前
|
存储 安全 算法
网络安全的屏障与钥匙:漏洞防御、加密技术与安全意识
【10月更文挑战第31天】在数字时代的海洋中,网络安全犹如灯塔指引着信息的安全航行。本文将探讨网络安全的三大支柱:网络漏洞的防御策略、加密技术的应用以及提高个人和组织的安全意识。通过深入浅出的分析,我们将了解如何构建坚固的网络防线,保护数据不受威胁,并提升整个社会对信息安全的认识和重视。
|
23天前
|
安全 算法 网络安全
网络安全的守护者:漏洞、加密与安全意识
【10月更文挑战第22天】在数字时代的浪潮中,网络安全成为了我们无法回避的话题。本文将深入探讨网络安全的三大支柱:网络漏洞、加密技术和安全意识。我们将通过实例和代码示例,揭示网络攻击的常见手段,展示如何利用加密技术保护数据,以及如何提升个人和组织的安全意识。无论你是IT专家还是普通用户,这篇文章都将为你提供宝贵的知识和技能,帮助你在网络世界中更安全地航行。
|
1月前
|
SQL 安全 算法
网络安全的盾牌:揭秘加密技术与安全意识的重要性
【9月更文挑战第32天】在数字时代的浪潮中,网络安全成为维护个人隐私和企业资产的关键防线。本文将深入探讨网络安全漏洞的成因与危害,解析加密技术的核心原理及其在防御策略中的应用,同时强调培养安全意识的必要性。通过深入浅出的方式,带领读者理解网络安全的复杂性,以及如何通过技术和意识的双重保障来构建更为坚固的网络防护墙。
|
2月前
|
存储 SQL 安全
网络安全与信息安全:漏洞、加密与安全意识的探索之旅
【9月更文挑战第28天】在数字时代的海洋中,网络安全是航行的罗盘,信息安全则是保护船只免受风浪侵袭的坚固船体。本文将带你穿梭于网络世界的波涛之中,探索那些隐藏在水面之下的安全漏洞,揭示加密技术如何在暗流涌动中为数据保驾护航,以及为何提升安全意识能成为我们防御风暴的灯塔。
|
1月前
|
SQL 安全 算法
网络安全漏洞与加密技术:保护信息安全的双刃剑
【10月更文挑战第5天】在数字时代的浪潮中,网络安全漏洞和加密技术成为维护信息安全的两大支柱。本文将深入浅出地探讨网络漏洞的形成原因、类型及其防御措施,同时解析加密技术的工作原理和应用场景。通过实际案例分析,本文旨在提升公众的安全意识,并提供实用的防护建议,确保个人和组织的数据安全。
|
2月前
|
安全 算法 网络安全
网络安全与信息安全:漏洞、加密与安全意识的三重奏
【9月更文挑战第4天】在数字时代的交响乐中,网络安全与信息安全是不可或缺的乐章。本文将深入探讨网络安全的脆弱性,揭示那些隐藏在光鲜表面下的潜在风险。我们将一同穿梭于加密技术的迷宫,解锁保护数据的神秘钥匙。更重要的是,本文将点亮一盏灯,照亮培养个人和组织安全意识的道路。通过深入浅出的分析与生动的案例,我们将共同见证网络安全的复杂性、加密技术的力量以及安全意识的重要性。让我们携手,为这场数字交响乐谱写一曲无懈可击的安全篇章。
|
2月前
|
安全 网络协议 网络安全
网络安全的屏障与钥匙:漏洞、加密与安全意识
在数字时代的浪潮中,网络安全成为了保护个人与企业资产的关键。本文将深入浅出地探讨网络安全中的三大要素:网络漏洞、加密技术以及安全意识。我们将从实际案例出发,分析常见的网络攻击手段和防范策略,揭示加密技术的原理及其在数据保护中的应用,并强调培养良好安全习惯的重要性。通过本文,读者将获得实用的网络安全知识,为个人信息安全筑起一道坚固的防线。
36 0