什么是密码学?
密码学(Cryptography)是研究如何在开放或不安全的环境中对信息进行加密、解密与认证的科学。它通过数学算法与协议,使数据加密后的内容即使被截获,也无法被迅速破解,从而确保数据机密性、完整性、可用性(CIA 三元组)。
密码学为何如此关键?
- 隐私保护:保护用户密码、聊天记录、交易金额等敏感信息。
- 合规需求:欧盟 GDPR、中国《密码法》等均要求企业对数据加密。
- 再信任建立:在任何在线交易、登录、API 调用场景中,密码学都在幕后充当“数字保安”。
核心算法总览
无论是对称加密还是非对称加密(即公钥密码学),都围绕两个目标:
- 确保加密加得快、解密解得准
- 任何监听者即便拿到密文,也无法在有限时间内求出明文
下文用通俗语言拆解各类算法,并辅以示例场景与关键词强化。
一、对称加密:一把钥匙开一把锁
对称加密的精髓是——加密与解密使用同一密钥。
优势:加解密速度极快,适合大批量数据。
风险:密钥分发难。若有人偷走钥匙,安全性瞬间清零。
1.1 流密码(Stream Cipher)
- 工作原理:逐位处理,适合小数据包,如 IoT 传感器实时上报。
- 常用方案:RC4、ChaCha20。
- 同步式 vs. 自同步式:同步式需在双方时钟一致,否则会“错位”;自同步式可自我复位,但设计复杂度更高。
1.2 块密码(Block Cipher)
- 先把数据切成固定大小的“块”,再逐块加密。
- 典型代表:AES(高级加密标准)。
- 工作模式:CBC、GCM、CTR… CBC 模式适合磁盘加密,GCM 模式附加完整性校验。
- 场景案例:企业虚拟机磁盘全盘加密,单块 128 bit 明文 → 128 bit 密文,相同密钥产生相同结果,防止时序攻击。
二、非对称加密:两把钥匙,一公一私
非对称加密通过数学难题(大数分解、椭圆曲线离散对数)确保安全性。
- 公钥:可以公开,用来加密或验证签名。
- 私钥:必须保密,用来解密或生成签名。
2.1 RSA:最经典的大数分解
- 步骤:选两个超大质数 p、q → 计算 n=pq → 生成公私钥对。
- 安全强度:2048 位密钥目前安全,但 512 位已被攻破。
- 缺点:密钥体积大,运算慢,不适合移动端大量数据直接加密。
2.2 ECC(椭圆曲线密码学)
- 优势:以更小密钥长度换取同等安全,160 位 ECC ≈ 1024 位 RSA。
- 典型应用:比特币地址生成、HTTPS 握手。
- 限制性:若曲线参数设计有误,可被旁路攻击。
2.3 DSA 与 ECDSA:数字签名神器
- DSA 源于美国 NIST 标准,配合哈希函数生成数字签名。
- ECDSA 是 ECC + DSA 的合体,签名长度更紧凑。
- 场景:软件发布者给安装包打签名,用户下载后自动验证,确保软件完整性。
2.4 IBE(身份基加密)
- 用户可把“邮箱地址”直接当公钥,省去证书分发。
- 依赖可信密钥中心(PKG),易形成单点故障。
- 适合企业内部统一身份管理。
2.5 Diffie-Hellman:密钥交换奠基者
- 让双方在不预先共享密钥的前提下,协商出对称会话密钥。
步骤:
- 双方公开选一个 g 与 p(可全网公开)。
- 各自产生私钥 a、b,计算 gᵃ mod p 与 gᵇ mod p 并交换。
- 最终双方本地运算得出相同的协商密钥 g^(ab) mod p。
- 前向安全:每次会话销毁临时私钥,即便未来被破解也追溯不到历史密文。
三、哈希函数:数据的“数字指纹”
哈希函数把任意长度数据映射为定长哈希值,确保完整性。
- 常见家族:SHA-256、SHA-3、BLAKE2。
三大要求:
- 抗碰撞:很难找到两段不同数据得到相同哈希。
- 原像不可逆:已知哈希值无法反推原文。
- 雪崩效应:改动原文 1 bit,输出哈希 50 % 的位翻转。
应用举例
- 密码存储:系统不存明码,只存 salt+hash。
- 区块链:区块头哈希决定链顺序与难度证明。
- 文件校验:Linux 镜像下载页面附带的 MD5/SHA256 值。
FAQ:关于密码学常见疑问
Q1:对称加密(如 AES)和非对称加密(如 RSA)可以混用吗?
A1:可以。日常 HTTPS 就是先用 RSA 进行密钥交换,再用 AES 做数据加密——既解决密钥分发难题,又保留高速传输性能。
Q2:量子计算是否会终结现代密码学?
A2:Shor 算法确实能在量子计算机上破解 RSA、ECC。但量子安全算法(如格基加密、哈希签名)已进入 NIST 标准化流程,后量子迁移已启动。
Q3:密码强度和性能如何平衡?
A3:根据场景选密钥长度。移动端通信使用 128 位 AES 足够,而国家级金融交易选 256 位 AES;使用 ECC 还能在安全性与功耗间取得折中。
Q4:私钥丢了怎么办?
A4:如果是个人钱包,基本无法恢复资产;如为企业级 HSM(硬件安全模块),则启用密钥分组管理或多重签名,以降低丢失概率。
Q5:哈希函数与加密算法区别?
A5:哈希是单向不可逆的,结果定长(如 256 位),适合校验;加密是双向的,需要密钥,结果与明文等长或稍长,可用于保密传输。
Q6:什么是“盐”(Salt)?
A6:在密码存储场景,随机字符串混在明文前再哈希,避免彩虹表暴力破解。例如将密码“123456”改为“随机Salt123456”再 SHA-256 哈希。
小结:一条清晰的加密路径
- 先用非对称加密协商对称密钥
- 用对称加密高速传输海量数据
- 用哈希函数保证数据完整性
- 用数字签名进行身份认证
掌握以上核心概念与关键词——密码学定义、对称加密、非对称加密、数据加密、RSA、ECC、哈希函数、完整性校验、数字签名、Diffie-Hellman——即可看懂 90 % 的现代系统安全设计,并在实际项目中针对性落地。