想学习一下crypto的知识,觉得很多数学算法其实挺有趣的,那么什么是crypto呢。
密码学(Cryptography)一般可分为古典密码学和现代密码学。
其中,古典密码学,作为一种实用性艺术存在,其编码和破译通常依赖于设计者和敌手的创造力与技巧,并没有对密码学原件进行清晰的定义。古典密码学主要包含以下几个方面:
- 单表替换加密(Monoalphabetic Cipher)
- 多表替换加密(Polyalphabetic Cipher)
- 奇奇怪怪的加密方式
而现代密码学则起源于 20 世纪中后期出现的大量相关理论,1949 年香农(C. E. Shannon)发表了题为《保密系统的通信理论》的经典论文标志着现代密码学的开始。现代密码学主要包含以下几个方面:
- 对称加密(Symmetric Cryptography),以 DES,AES,RC4 为代表。
- 非对称加密(Asymmetric Cryptography),以 RSA,ElGamal,椭圆曲线加密为代表。
- 哈希函数(Hash Function),以 MD5,SHA-1,SHA-512 等为代表。
- 数字签名(Digital Signature),以 RSA 签名,ElGamal 签名,DSA 签名为代表。
其中,对称加密体制主要分为两种方式:
- 分组密码(Block Cipher),又称为块密码。
- 序列密码(Stream Cipher),又称为流密码。
一般来说,密码设计者的根本目标是保障信息及信息系统的
- 机密性(Confidentiality)
- 完整性(Integrity)
- 可用性(Availability)
- 认证性(Authentication)
- 不可否认性(Non-repudiation)
其中,前三者被称为信息安全的 CIA 三要素 。
而对于密码破解者来说,一般是要想办法识别出密码算法,然后进行暴力破解,或者利用密码体制的漏洞进行破解。当然,也有可能通过构造虚假的哈希值或者数字签名来绕过相应的检测。
一般来说,我们都会假设攻击者已知待破解的密码体制,而攻击类型通常分为以下四种:
攻击类型 | 说明 |
---|---|
唯密文攻击 | 只拥有密文 |
已知明文攻击 | 拥有密文与对应的明文 |
选择明文攻击 | 拥有加密权限,能够对明文加密后获得相应密文 |
选择密文攻击 | 拥有解密权限,能够对密文解密后获得相应明文 |
(ps:以上对于crypto的介绍来源于CTF wiki)