密码学安全:CIA三元组与三大核心技术

目录

[一、密码学安全的核心目标:CIA 三元组](#一、密码学安全的核心目标:CIA 三元组)

二、密码学的核心技术:三大基础支柱

[1.加密算法:解决 "机密性" 问题](#1.加密算法:解决 “机密性” 问题)

(1)对称加密:"一把钥匙开一把锁"

(2)非对称加密:"公钥锁门,私钥开门"

[(3)两者的 "黄金搭配":用非对称加密传对称密钥](#(3)两者的 “黄金搭配”:用非对称加密传对称密钥)

[2.哈希函数:解决 "完整性" 问题](#2.哈希函数:解决 “完整性” 问题)

[3.数字签名:解决 "不可否认性" 和 "身份验证"](#3.数字签名:解决 “不可否认性” 和 “身份验证”)

Q&A:

[三、密码学安全的 "敌人":常见攻击方式](#三、密码学安全的 “敌人”:常见攻击方式)

[4.密码学中的 "盐"(Salt):原理、作用与实战解析](#4.密码学中的 “盐”(Salt):原理、作用与实战解析)

[一、先搞懂:为什么需要 "盐"?(哈希存储的痛点)](#一、先搞懂:为什么需要 “盐”?(哈希存储的痛点))

[二、"盐" 到底是什么?(本质与核心特性)](#二、“盐” 到底是什么?(本质与核心特性))

1.盐的定义

[2.盐的 3 个核心特性(必须满足才安全)](#2.盐的 3 个核心特性(必须满足才安全))

[三、"盐" 怎么工作?(一步一步看流程)](#三、“盐” 怎么工作?(一步一步看流程))

1.无盐哈希(不安全)

2.加盐哈希(安全)

[四、"盐" 的局限性:不能单独用,要搭配 "增强哈希算法"](#四、“盐” 的局限性:不能单独用,要搭配 “增强哈希算法”)


密码学安全的本质,是通过数学算法安全协议,解决信息在 "存储" 和 "传输" 过程中可能遇到的安全问题,核心目标是保障信息的三大属性 ------ 这也是整个密码学领域的基石,先从这里讲起。

一、密码学安全的核心目标:CIA 三元组

所有密码学技术的设计,最终都是为了实现以下三个核心目标(业界称为CIA 三元组),缺一个都可能导致安全漏洞:

补充:实际应用中还会延伸出 "不可否认性(Non-repudiation)"------ 比如你发了消息 / 付了钱,不能事后否认,这通常靠数字签名实现。

二、密码学的核心技术:三大基础支柱

密码学安全不是靠 "复杂的密码" alone,而是靠三大核心技术支撑:加密算法哈希函数数字签名。这三者分工不同,却经常配合使用(比如 HTTPS 就同时用到了这三种)。

1.加密算法:解决 "机密性" 问题

加密算法的作用是把 "能看懂的信息"(明文)转换成 "看不懂的乱码"(密文),只有拥有 "密钥" 的人才能把密文还原成明文。根据 "密钥是否相同",分为对称加密非对称加密,两者各有优劣,实际场景中通常 "搭配使用"。

(1)对称加密:"一把钥匙开一把锁"

  • 核心逻辑 :加密和解密用同一把密钥(称为 "对称密钥"),就像你家的门,钥匙既能锁门也能开门。

  • 优点:算法简单、加密速度极快,适合加密 "大量数据"(比如你手机里的照片、视频加密)。

  • 缺点:密钥传递是 "死穴"------ 如果要给朋友发加密文件,你得先把 "对称密钥" 传给朋友,但传递密钥的过程中可能被黑客截获(比如微信发密钥,黑客能看到),一旦密钥被偷,加密就白费了。

  • 常见算法:AES(最主流,比如手机指纹解锁、Wi-Fi 加密、银行数据加密都用它)、DES(较老旧,已被 AES 取代)。

  • 通俗例子:你用压缩包给文件加密(设一个密码),朋友只有输入相同的密码才能解压 ------ 这个 "压缩包密码" 就是对称密钥。

(2)非对称加密:"公钥锁门,私钥开门"

  • 核心逻辑 :生成一对 "密钥对"------公钥 Public Key 私钥 Private Key

    • 公钥:可以公开给任何人(比如挂在网站上、发给朋友),只能用来 "加密",不能解密;

    • 私钥:只有自己保管(不能泄露),只能用来 "解密" 公钥加密的内容,也能用来签名。

  • 优点:解决了 "密钥传递问题"------ 不需要传递私钥,只传公钥即可,黑客拿到公钥也无法解密。

  • 缺点:算法复杂、加密速度慢,不适合加密 "大量数据"(比如用非对称加密传一部电影,可能要等几小时)。

  • 常见算法:RSA(最常用,比如网银 U 盾、数字证书、SSH 登录)、ECC(更高效,适合手机、物联网设备)。

  • 通俗例子:你生成 "公钥 A" 和 "私钥 A",把公钥 A 发给朋友;朋友用公钥 A 把消息加密后发给你,只有你用私钥 A 能解密 ------ 即使黑客拿到公钥 A 和加密消息,也解不开。

(3)两者的 "黄金搭配":用非对称加密传对称密钥

实际场景中,不会单独用某一种加密,而是结合两者的优点:

  1. 对称加密加密 "大量数据"(比如 1GB 的文件),因为速度快;

  2. 对称加密加密 "对称密钥"(比如 AES 密钥只有 256 位,很小),因为不需要担心密钥传递被截获;

  3. 把 "加密后的对称密钥" 和 "加密后的文件" 一起发给对方;

  4. 对方先用自己的私钥解密 "对称密钥",再用对称密钥解密 "文件"。例子: HTTPS 协议就是这么做的 ------ 用 RSA (非对称)交换 AES (对称)密钥,再用 AES 加密网页数据。

2.哈希函数:解决 "完整性" 问题

哈希函数(又称 "散列函数")和 "加密" 完全不同 ------ 它是单向的:能把 "任意长度的输入" 转换成 "固定长度的输出"(称为 "哈希值" 或 "摘要"),但无法从哈希值反推回原始输入。它的核心作用是 "验证信息有没有被篡改",因为只要原始输入有一点点变化(哪怕改一个字符),哈希值就会完全不同(称为 "雪崩效应")。

  • 核心特点

    • 单向性:只能 "输入→哈希值",不能 "哈希值→输入";

    • 固定输出:无论输入是 1KB 的文本还是 1GB 的视频,输出的哈希值长度固定(比如 SHA-256 的哈希值是 64 个字符);

    • 雪崩效应:输入微小变化,哈希值剧烈变化。

  • 常见算法:SHA-2 系列(SHA-256、SHA-512,最安全,用于文件校验、密码存储)、MD5(已被破解,不适合安全场景,仅用于简单校验)。

  • 实际应用

    • 文件校验:你从官网下载软件,官网会提供软件的 "SHA-256 哈希值";你下载后用工具计算文件的哈希值,和官网的对比 ------ 如果一致,说明文件没被篡改(没植入病毒);

    • 密码存储:网站不会直接存储你的明文密码,而是存储密码的哈希值(比如你的密码是 "123456",存储的是它的 SHA-256 值);登录时,网站把你输入的密码转成哈希值,和存储的对比,一致就登录 ------ 即使黑客拿到数据库,也只能看到哈希值,无法反推密码(除非用 "彩虹表" 暴力破解,所以通常会加 "盐",后面讲)。

3.数字签名:解决 "不可否认性" 和 "身份验证"

数字签名的本质是 "用私钥加密",作用是证明 "信息确实是某人发的,且没被篡改",就像现实中的 "手写签名",但更难伪造。

  • 核心流程(以 "你给朋友发消息" 为例):

    • 你先对 "消息内容" 计算哈希值(比如 SHA-256),得到 "消息摘要";

    • 你用自己的私钥对 "消息摘要" 加密,得到 "数字签名";

    • 你把 "原始消息" 和 "数字签名" 一起发给朋友;

    • 朋友收到后,先用你的公钥解密 "数字签名",得到 "原始摘要";

    • 朋友再对 "原始消息" 计算哈希值,得到 "新摘要";

    • 对比 "原始摘要" 和 "新摘要"------ 如果一致,说明:①消息确实是你发的(只有你的私钥能生成签名);②消息没被篡改(摘要没变)。

  • 实际应用

    • 电子合同:双方用数字签名签署合同,无法事后否认 "自己签过字";

    • 数字证书:HTTPS 网站的 "证书" 就是 CA 机构(权威机构)给网站发的 "身份证明"------CA 用自己的私钥给网站的公钥签名,浏览器用 CA 的公钥验证证书,确认 "这个网站是真的,不是黑客伪造的"(防御中间人攻击的核心)。

Q&A:

1.为何先算 哈希值

非对称加密(如 RSA)速度较慢,若直接加密 1GB 文件等长消息会耗时极久。先通过哈希算法将 "任意长度消息" 压缩为 "固定长度摘要"(如 SHA-256 仅 64 字符),再加密摘要,既能保证效率,又能通过 "摘要匹配" 验证消息完整性(消息若被改,摘要必变)。

2. 公钥 / 私钥 的分工

  • 发送方只用「私钥」签名(绝不泄露私钥),确保 "只有我能生成这个签名";

  • 接收方只用发送方的「公钥」验证(公钥可公开),确保 "只能用我的公钥解密,证明签名是我发的"。

3.验证结果的意义

  • 若 "摘要不一致",要么消息在传输中被黑客改了(比如 "14 点" 改成 "18 点"),要么签名是黑客伪造的(用了假私钥);

  • 若 "摘要一致",接收方可以 100% 确定:消息是你发的,且没被动过手脚,你无法事后否认("不可否认性")。

三、密码学安全的 "敌人":常见攻击方式

了解了核心技术,再看攻击方式 ------ 所有攻击都是针对 "CIA 三元组" 或核心技术的漏洞:

4.密码学中的 "盐"(Salt):原理、作用与实战解析

在密码学中,"盐"(Salt)是专门用于增强 哈希值 安全性 的技术,核心解决 "相同 明文 对应相同哈希值" 的漏洞------ 这个漏洞会让黑客通过 "彩虹表" 批量破解密码,而 "盐" 能从根本上让彩虹表失效。下面从 "为什么需要盐""盐是什么""怎么用盐" 三个维度展开,结合例子让你彻底理解。

一、先搞懂:为什么需要 "盐"?(哈希存储的痛点)

之前提到过:网站不会直接存储你的明文密码,而是存储密码的哈希值 (比如用 SHA-256 计算)。比如你密码是 "123456",它的 SHA-256 哈希值是固定的:8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

这个 "固定对应关系" 会带来两个致命问题:

1.相同密码的 哈希值 完全一样如果 100 个用户都用 "123456" 当密码,网站数据库里会存储 100 个相同的哈希值。黑客只要破解其中 1 个,就能批量拿到 100 个用户的密码。

2.彩虹表(Rainbow Table)攻击 黑客会提前用计算机 "预计算" 海量常见密码(如 "123456""abc123""生日密码")的哈希值,整理成巨大的 "明文→哈希值" 对应表,这就是彩虹表 。一旦黑客拿到网站的哈希数据库,直接用彩虹表 "查表匹配"------ 比如查到8d969eef...对应 "123456",瞬间就能破解一大批密码,效率极高。

而 "盐" 的出现,就是为了打破这种 "固定对应关系",让即使相同的明文,也能生成完全不同的哈希值。

二、"盐" 到底是什么?(本质与核心特性)

1.盐的定义

"盐" 是一串随机生成的字符串 (比如 16 个字符的乱码:xQf9#2pZ$kL7@rT3),在计算明文的哈希值之前,会先把 "盐" 和 "明文"拼接在一起,再对拼接后的内容计算哈希值。

用公式表示:最终哈希值 = 哈希算法(明文 + 盐)

而不是原来的:最终哈希值 = 哈希算法(明文)

2.盐的 3 个核心特性(必须满足才安全)

  • 随机性 :盐必须用 "密码学安全的随机数生成器"(如 Python 的secrets模块、Java 的SecureRandom)生成,不能是 "固定值"(比如每个用户都用 "abc123" 当盐),也不能是可预测的值(如用户 ID、注册时间)------ 否则黑客能猜到盐,依然能破解。

  • 唯一性 :最好给每个用户、每个密码都生成独立的盐(比如用户改密码时,重新生成新盐),确保即使两个用户密码相同,盐也不同,哈希值自然不同。

  • 可存储性 :盐不需要保密,可以明文 存储 在数据库里(比如和用户的哈希值存在同一行,字段名就叫salt)------ 因为盐的作用是 "让相同明文哈希不同",不是 "加密明文",黑客知道盐也没关系。

三、"盐" 怎么工作?(一步一步看流程)

以 "你注册某网站,密码是'123456'" 为例,看 "加盐哈希" 的完整流程,对比 "无盐哈希" 的差异:

1.无盐哈希(不安全)

风险:黑客用彩虹表查到哈希值对应 "123456",直接破解。

2.加盐哈希(安全)

安全点

  • 即使另一个用户也用 "123456",他的盐是 "yRg8!5qW% jM6*sU4",最终哈希值会是另一串完全不同的字符,不会批量泄露;

  • 黑客拿到 "盐 + 哈希值" 后,彩虹表完全没用(因为彩虹表是 "明文→无盐哈希" 的对应,而这里是 "明文 + 盐→哈希",黑客不可能预计算所有 "明文 + 随机盐" 的组合)。

四、"盐" 的局限性:不能单独用,要搭配 "增强哈希算法"

虽然 "盐" 能防彩虹表,但它不能防暴力破解------ 如果用户密码太简单(比如 "123456"),黑客拿到 "盐 + 哈希" 后,依然可以用 "暴力枚举":

  1. 假设黑客知道盐是 "xQf9#2pZ$kL7@rT3";

  2. 他会不断尝试明文:"123456"→拼接盐→算哈希→对比数据库;"123457"→拼接盐→算哈希→对比...... 直到猜对。

为了应对暴力破解,现代密码存储会用 "带盐的增强哈希算法"------ 这类算法不仅内置了 "自动加盐",还能通过 "迭代次数" 控制哈希计算的速度,让暴力破解变得 "耗时极久"(比如 1 秒只能算 100 次,破解一个 8 位复杂密码需要几百年)。

常见的增强哈希算法(推荐用,不要自己手动加盐):

  • BCrypt:自动生成随机盐,支持设置 "工作因子"(比如 12,值越大计算越慢),广泛用于网站密码存储;

  • Argon2:2015 年密码哈希竞赛(PHC)的获胜算法,安全性更高,支持调整内存、CPU、迭代次数,能防 "GPU 加速暴力破解"(黑客用显卡批量计算的方式);

  • PBKDF2:通过多次迭代哈希(比如迭代 10 万次)增加计算时间,兼容性好,适合旧系统。

"盐" 的本质是给 哈希值 "加随机性",打破 "相同 明文 →相同哈希" 的固定关系,从根本上让彩虹表攻击失效。

说了这么多,其实密码学安全的核心逻辑是:用数学方法构建 "信任" ------ 让信息在不可信的环境(如互联网、公共 Wi-Fi)中,依然能保证 "只有该看的人能看,没被改,能证明是谁发的"。

相关推荐
wanhengidc3 小时前
云手机长期使用会消耗很多流量吗
网络·游戏·智能手机·架构·云计算
fsnine3 小时前
从RNN到LSTM:深入理解循环神经网络与长短期记忆网络
网络·rnn·lstm
金水谣3 小时前
考研10.5笔记
笔记
KKKlucifer4 小时前
生成式 AI 冲击下,网络安全如何破局?
网络·人工智能·web安全
草莓工作室4 小时前
AT指令解析:TencentOS Tiny AT指令解析源码分析1-TencentOS Tiny 简介
c语言·物联网·嵌入式·at指令·4g模组
Dxy12393102164 小时前
python如何使用nacos
开发语言·网络·python
Cc00108524 小时前
【AI学习笔记】用AI生成spring boot + redis
spring boot·笔记·学习·ai编程
红尘客栈24 小时前
Kubernetes 集群调度
java·linux·网络·容器·kubernetes
繁花与尘埃4 小时前
列表标签之有序标签(本文为个人学习笔记,内容整理自哔哩哔哩UP主【非学者勿扰】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)
笔记·学习