机密性
防止未授权主体获取内容。它回答:哪些主体可以访问?
典型工具:加密密码学不只是将明文转换为密文,更是在不可信网络中提供机密性、完整性、身份认证与真实性保障
互联网通信通常需要经过多个中间节点。聊天消息、订单和登录请求,可能依次经过路由器、运营商网络、云服务与公共网络。密码学的目标,是让传输链路可以不可信,通信过程仍具备可信保障。
现代密码系统通常要同时完成四项任务。只实现其中一项,往往还不够安全。
防止未授权主体获取内容。它回答:哪些主体可以访问?
典型工具:加密任何未授权改动都应能够被检测。它回答:数据是否保持完整?
典型工具:MAC、哈希、签名验证通信实体的身份。它回答:对方是否为其声称的主体?
典型工具:证书、签名、挑战响应在密钥得到妥善管理的前提下,为签名行为的归属提供可验证证据。
典型工具:数字签名编码是为了表示数据,任何人都能还原;加密依赖密钥,只有授权者能还原;哈希通常是单向摘要,设计目标就不是还原。
古典密码常用替换、移位或重排隐藏文字。凯撒密码把每个字母向后移动固定位置:当位移为 3 时,A → D,HELLO → KHOOR。
即使敌人知道系统如何工作,只要密钥仍然保密,系统也应该安全。
公开算法可以接受全世界检验;真正需要保护的是更短、更易更换的密钥。自行设计并依赖算法保密,通常只会形成安全性幻觉。
PHHW PH DW QLQH
位移只有 26 种可能,穷举即可恢复明文。古典密码适合用于理解基本原理,但无法满足现代数据安全需求。
对称加密中,发送方和接收方共享同一把秘密密钥。它的计算效率较高,适合保护文件、磁盘、数据库以及网络传输中的大量数据。
现代系统常使用 AES 等标准算法,但在工程实现中还需要选择安全的工作模式,并验证数据的完整性。
Nonce 可以公开,但在许多模式下绝不能与同一密钥重复使用。它的作用是让相同明文产生不同密文。
如果 Alice 和 Bob 此前没有建立共享秘密,如何安全获得同一密钥?这是非对称密码学解决的重要问题之一。
C = Encrypt(K, P, Nonce)
加密
P = Decrypt(K, C, Nonce)
解密
非对称密码使用一对数学相关、功能不同的密钥:公钥可以公开,私钥必须保密。公钥不是“较弱的密码”,私钥也无法在可行的计算成本内由公钥推导出来。
可以公开分发,其他人可用它加密发送给你的消息,或验证由对应私钥生成的签名。
应由持有者严格保管,用于解密或签名;一旦泄露,通信机密性和身份可信度都可能受到破坏。
该方案既解决了通信双方缺少预共享密钥的问题,也避免使用计算开销较高的非对称运算处理全部数据。
哈希函数把任意长度输入压缩为固定长度摘要。好的密码学哈希应当难以逆推、难以寻找相同摘要,并对微小变化极其敏感。
无论输入是一个字符还是大体积文件,SHA-256 的输出始终是 256 位。
从输入算摘要容易,从摘要反推出原文在计算上极难。
很难找到两份不同数据,让它们产生完全相同的摘要。
输入只发生一个字符的变化,输出摘要通常也会显著改变。
修改一个字符,观察摘要的变化程度。计算完全在浏览器本地完成。
等待计算…等待计算…点击按钮,比较两组十六进制摘要。
数字签名不负责隐藏内容,而是用于验证签名是否由对应私钥生成,以及内容在签名后是否被修改。
合同.pdf5B9A…E21CSIGNATURE数字证书把域名、组织或设备身份与公钥绑定,并由受信任的证书颁发机构签名。浏览器或操作系统维护一组信任根,再沿证书链逐级验证。
证书不是网站的“加密密码”,而是一份可验证的数字身份凭证。
如果公钥交换没有经过身份认证,攻击者 Mallory 可以处于浏览器与服务器的通信路径上,并分别与两端建立加密连接。双方看到的都是“密文”,但攻击者仍能解密、读取、修改,再重新加密转发——这就是中间人攻击(Man-in-the-Middle,MITM)。
请求网站公钥
解密 → 修改 → 重加密
正常处理请求
核心风险不在于是否使用加密,而在于能否确认公钥的真实归属。没有可靠身份认证时,两条加密通道反而可能让 Alice 和 Bob 都产生安全错觉。
网站证书通常采用 X.509 格式。它可以公开传输,因为证书的任务不是保密,而是让浏览器能够验证公钥归属和签发关系。
主体信息以及允许使用该证书的域名列表。浏览器主要检查访问域名是否出现在 SAN 中。
用于验证服务器签名或参与密钥建立;与之配对的私钥必须由服务器严密保管。
记录签发该证书的 CA。浏览器会继续寻找签发者证书,直到连接到可信根。
证书只在明确的时间窗口内有效,过期或尚未生效都会触发浏览器警告。
序列号帮助唯一识别证书;密钥用途约束它能否用于服务器认证、签名等场景。
CA 对证书中的待签名数据进行签名。受保护字段被修改后,签名验证就会失败。
CA 不会向网站提供所谓的“万能密钥”,而是在完成验证后,通过数字签名确认某个公钥与特定域名或组织之间存在经过核验的绑定关系。
服务器本地生成公钥和私钥。私钥应留在受控环境中,不应提交给 CA。
CSR(证书签名请求)携带公钥、申请域名和相关信息,并由申请者私钥签名以证明持有私钥。
最常见的是通过 DNS 记录或网站指定文件验证域名控制权;根据证书类型,还可能核验组织身份。
验证通过后,CA 通常使用中间 CA 的私钥对网站证书签名,并把证书及中间证书交给申请者。
网站安装自己的服务器证书和中间证书,保管对应私钥;之后在 TLS 握手中把服务器证书和必要的中间证书发送给浏览器。
操作系统或浏览器预装并维护一组根证书信任库。根 CA 通常不直接大量签发网站证书,而是签发并约束中间 CA,再由中间 CA 签发服务器证书,以降低根密钥暴露风险并便于分工和撤销。
当你访问 HTTPS 网站,浏览器与服务器会先完成一次握手,再开始传输网页和业务数据。证书认证负责确认服务器身份,密钥交换负责建立会话秘密;简化后可以理解为四步。
双方声明支持的协议与算法,并交换随机信息。
浏览器检查域名、有效期、签名与证书链,确认服务器证书对应当前访问的域名。
双方通过密钥交换得到相同的会话秘密,却不直接在网络上传送该秘密。
后续数据使用快速的对称认证加密,同时获得机密性与完整性。
普通攻击者即使替换服务器公钥,也无法为目标域名生成一个能通过可信 CA 签名验证的证书。浏览器会因域名不匹配、签名链不可信或证书异常而阻止连接并显示警告。
前提是用户没有忽略证书警告,设备没有被植入恶意根证书,CA、服务器私钥和终端本身也没有失陷。
服务端验证密码时,不需要存储用户的原始密码。更安全的做法是保存经过随机盐值+专用密码哈希函数处理后的结果。
correct horse …9f31a7…参数+盐+结果每位用户使用独立随机盐值,可以破坏预先计算好的彩虹表,也避免通过摘要直接识别哪些用户设置了相同密码。
密码专用 KDF 会刻意提高单次猜测所需的计算与内存成本。合法登录通常只需计算一次,而攻击者进行大规模尝试时将承担显著成本。
真实安全事件通常并非密码算法在数学层面被直接攻破,而是由密钥管理、随机数质量、参数配置、边界处理或错误使用引发。
“别人看不懂”不等于安全。优先使用经过公开分析的标准方案与成熟库。
代码会进入仓库、日志、镜像和备份。密钥应由专门的密钥管理系统托管与轮换。
某些加密模式在 Nonce 重复时会泄露明文关系,甚至破坏认证能力。
攻击者可能无法读懂内容,却仍能篡改密文。现代系统应优先使用认证加密。
可预测的随机数会直接削弱密钥和令牌的安全性。安全场景必须使用密码学安全随机源。
密钥管理应覆盖生成、授权、使用、轮换、吊销、备份和销毁;仅考虑存储位置并不足够。
不要自行设计密码算法或组合密码协议。应优先采用高层、带认证且默认安全的成熟接口,并由专业人员审查整体威胁模型。
足够强大的容错量子计算机,理论上可利用 Shor 算法高效解决某些整数分解和离散对数问题,从而威胁 RSA、经典椭圆曲线等体系。
Grover 算法带来的是平方级加速,不是瞬间破解。通过采用更大的密钥或摘要长度,可以恢复足够的安全余量。
使用在经典与量子计算机上都被认为难解的数学问题构造新算法,并逐步替换容易受量子攻击的公钥组件。
| 工具 | 核心输入 | 主要目标 | 能否还原 | 典型场景 |
|---|---|---|---|---|
| 对称加密 | 共享密钥 | 保密+完整性 | 持密钥可还原 | 文件、磁盘、网络数据 |
| 非对称加密 | 公钥 / 私钥 | 密钥建立、保密 | 相应私钥可还原 | 建立安全通道、数字信封 |
| 哈希 | 任意数据 | 生成摘要 | 设计上不可逆 | 校验、签名的基础组件 |
| 消息认证码 | 消息+共享密钥 | 完整性+来源认证 | 不用于还原 | 接口请求、协议报文 |
| 数字签名 | 消息+私钥 | 身份认证+完整性 | 验证,不是解密 | 软件发布、合同、证书 |
| 数字证书 | 身份+公钥+CA 签名 | 绑定身份与公钥 | 可公开,不用于还原 | HTTPS、代码签名、设备认证 |
| 密码 KDF | 密码+盐+参数 | 提高猜测成本 | 不还原,重新计算比较 | 用户密码存储 |
加密让秘密只对授权者可见,哈希使数据变化能够被检测,签名让身份能够验证,证书让陌生人之间建立信任。它们共同支撑了登录、支付、软件更新、云服务和现代通信。
可靠的安全并非单纯依赖某种高强度算法,而是需要选择合适的密码机制、保护密钥、采用成熟协议,并持续管理其完整生命周期。
密码学是信任的数学基础,它默默支撑着现代数字社会的每一处安全细节。
从凯撒密码到后量子密码,人类对信任的追求从未停止。