CTF密码学学习

本文介绍了密码学的基本概念,包括古典密码、近代密码和现代密码的主要特点。探讨了对称加密算法如DES、3DES、AES,以及非对称加密算法如RSA、ECC的原理。同时,讲解了哈希函数的特性及其在信息安全中的应用。

密码学介绍

  • 密码学是防止(破解)两者间通信被第三方截获的学科

  • 密码学是从古至今就有的学科,在密码学阶段中有古典密码阶段、近代密码阶段。

  • 近代密码分为两个分支:使用同样的加密密钥和加密方法的对称加密算法。

  • 密钥 👉 由公钥和私钥组成的密码系统的公钥密码算法。

  • 现代密码的特点是依赖于密钥而不依赖于加密算法。

古典密码

在这里插入图片描述
例如:
置换密码:ABCD→BCDA
替换密码:ABCD→1234
分组加密:abc def hij→123 456 789
流密码:
在这里插入图片描述

凯撒密码

加密方式:将26个英文字母进行移位
解密方式:爆破、Y=(X+A)MOD 26

例如:
明文字母 abcdefghijklmnopqrstuvwxyz
密文字母 DEFGHIJKLMNOPQRSTUVWXYZABC

斯巴达人“天书”密码

加密方式:利用一些自然界的事物

例如:
将布条缠绕树枝得到正确的排列组合

猪圈密码
玛雅密码

近代密码

  • 轮转机是最高级的密码机
    解题:将密钥转换成二进制
对称密码

密码通信模型
在这里插入图片描述

  • 加密密钥和解密密钥相同或者实质上相同

  • 现代密码算法的保密核心是密钥而不是加密算法

  • 对称加密算法有:DES、3DES、IDEA、AES
    DES算法流程
    在这里插入图片描述
    AES算法

  • 数据分组长度128bits

  • 密钥长度128/192/256bits

  • 加密过程是在一个4 x 4的字节矩阵上实施的

非对称密码

加密与解密由不同的密钥完成
常用的公钥密码算法:RSA、ECC

哈希函数

Hash函数是将任意长度的消息映射成一个较短的定长输出报文的函数。
性质:单向性、若抗碰撞性、强抗碰撞性

<think>好的,用户想撰写关于CTF密码学的学习笔记总结,我需要根据他之前提供的引用资料以及之前的回答来组织内容。首先,用户之前的回答已经涵盖了Web方向的内容,现在转向密码学,所以需要确保结构清晰,覆盖关键知识点。 用户提供的引用中,引用[1]提到CTF密码学核心是现代密码学,但编码和古典密码可能在MISC中出现,所以应该在笔记中包含这两个部分,但重点放在现代密码学。引用[2]和[3]涉及古典密码和编码技术,比如ROT13、替换密码、摩尔斯电码等,这些可以作为基础部分。引用[4]详细说明了RSA的生成步骤,需要涵盖RSA、DH密钥交换、ECC等现代密码算法。 用户之前的问题中,助手给出了快速排序的总结和相关问题,因此这次回答也需要保持类似的结构:分章节、代码块、问题生成,并且正确使用引用标记。需要检查是否所有LaTeX公式都正确,比如RSA中的公式要用$$...$$,行内公式用$...$。 另外,用户可能希望学习笔记包含实战技巧和工具,比如使用Python库进行解码或分解大数,所以需要添加相关代码示例,比如用pycryptodome库实现RSA,或者用sagemath分解n。同时,CTF常见题型如RSA相关攻击、流密码分析、哈希碰撞等需要作为例题解析,帮助理解应用场景。 还要注意引用标记的正确使用,每个引用来源在回答中对应到用户提供的引用[1]到[4],确保每个知识点如果来自引用资料,就标注对应的引用编号。例如,RSA的生成步骤来自引用[4],古典密码的解题方法来自引用[2]和[3]。 最后,生成的相关问题需要与密码学相关,可能包括如何识别加密算法、RSA的常见攻击方式、古典密码的解题技巧等,确保问题能帮助用户进一步深入学习。</think>### CTF密码学学习笔记总结 --- #### 一、知识体系框架 1. **基础编码技术** - **ASCII/Base系列**:Base64(末尾补`=`)、Base32(补`=`且字母表限制)、Base16(直接映射)[^1] - **特殊编码**:摩尔斯电码(短长信号映射)、URL编码(`%xx`格式)、HTML实体编码(如`<`) ```python # 示例:Base64解码 import base64 cipher = "aXRvbHl0d250cGFjZg==" plain = base64.b64decode(cipher).decode('utf-8') ``` 2. **古典密码** - **替换类**:凯撒密码(ROT13为特例)、维吉尼亚密码(多表替换)[^2] - **置换类**:栅栏密码(如引用[^3]的分组提取)、列置换密码 $$ \text{明文:CRYPTO} \xrightarrow{\text{栅栏分组}} \begin{bmatrix}C & R \\ Y & P \\ T & O\end{bmatrix} \xrightarrow{\text{按列提取}} CYTRPO $$ 3. **现代密码学核心** - **对称加密**:AES(ECB/CBC模式)、DES(弱密钥问题) - **非对称加密**:RSA(依赖大数分解难题)、ECC(椭圆曲线离散对数问题) - **哈希函数**:MD5(碰撞攻击)、SHA-1(已不推荐) --- #### 二、核心算法与实现(以RSA为例)[^4] 1. **密钥生成** $$ \begin{aligned} &\text{随机素数 } p, q \rightarrow N = p \cdot q \\ &\varphi(N) = (p-1)(q-1) \\ &\text{选 } e \text{ 满足 } \gcd(e, \varphi(N))=1 \\ &\text{求 } d \equiv e^{-1} \mod \varphi(N) \\ &\text{公钥:}(e, N) \quad \text{私钥:}(d, N) \end{aligned} $$ 2. **加解密过程** $$ \text{加密:} c \equiv m^e \mod N \quad \text{解密:} m \equiv c^d \mod N $$ 3. **CTF常见攻击场景** - **小公钥指数攻击**(如$e=3$时直接开立方) - **共模攻击**(相同$N$不同$e$) ```python # 示例:使用pycryptodome库实现RSA解密 from Crypto.PublicKey import RSA key = RSA.construct((N, e, d)) plain = pow(ciphertext, d, N) ``` --- #### 三、解题技巧与工具 1. **特征识别** - **RSA参数**:大整数$N$、特殊$e$(如65537)、残缺的$p/q$ - **流密码**:重复密钥(如RC4)、已知明文攻击 2. **实用工具** - **分解大数**:`yafu`(快速分解$N$)、`factordb`(在线查询) - **编码转换**:CyberChef(集成多种编码) ```bash # 示例:使用sagemath分解N n = 123456789 factor(n) # 返回质因数分解结果 ``` 3. **典型题型解析** - **RSA模数分解**:当$N$较小时直接爆破,或利用Pollard's Rho算法 - **哈希长度扩展攻击**:针对未加盐的MD5/SHA1 $$ \text{攻击构造:} \text{Hash}(secret \| data) \rightarrow \text{扩展} \text{Hash}(secret \| data \| padding \| append) $$ --- #### 四、学习路径与资源 1. **靶场推荐** - **Crypto-Cat**:基础密码学挑战 - **picoCTF Crypto模块**:从古典密码到现代密码过渡 2. **知识拓展** - **数学基础**:模运算、欧几里得算法、中国剩余定理 - **进阶协议**:Diffie-Hellman密钥交换、数字签名(DSA) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值