当前位置: 首页 > news >正文

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

目录

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

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

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

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

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

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

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

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

Q&A:

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

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

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

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

1.盐的定义

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)中,依然能保证 “只有该看的人能看,没被改,能证明是谁发的”。

http://www.dtcms.com/a/481743.html

相关文章:

  • 建网站怎么做本地的营销网站建设
  • 短剧分销系统技术拆解:渠道推广码生成、订单归因与实时分账系统实现
  • ​RocketMQ 与 RabbitMQ 全面对比:架构、性能与适用场景解析
  • RabbitMQ 消息可靠投递
  • RabbitMQ全面详解:从核心概念到企业级应用
  • 北京市建设工程第四检测所网站小程序定制开发团队
  • 安徽网站优化flash如何做网页
  • AI文档处理:AI在处理扫描版PDF时准确率低,如何提升?
  • TDengine 数学函数 EXP 用户手册
  • C语言自定义变量类型结构体理论:从初见到精通​​​​​​​(下)
  • 医疗网络功能虚拟化与深度强化学习的动态流量调度优化研究(下)
  • SpringMVC练习:加法计算器与登录
  • 小模型的应用
  • 深度学习进阶(一)——从 LeNet 到 Transformer:卷积的荣光与注意力的崛起
  • QPSK信号载波同步技术---极性Costas 法载波同步
  • 盘多多网盘搜索苏州seo排名公司
  • 国外有趣的网站wordpress小视频主题
  • RTC、UDP、TCP和HTTP以及直播等区别
  • Java面试场景:从Spring Web到Kafka的音视频应用挑战
  • 基于EDBO-ELM(改进蜣螂算法优化极限学习机)数据回归预测
  • gaussdb数据库的集中式和分布式
  • Ubuntu中使用Hadoop的HDFS和MapReduce
  • F024 RNN+Vue+Flask电影推荐可视化系统 python flask mysql 深度学习 echarts
  • Building-GAN模型结构详解
  • web开发,学院培养计划系统,基于Python,FlaskWeb,Mysql数据库
  • 三维旋转矩阵的左乘与右乘
  • c 网站开发数据库连接网站扫码充值怎么做的
  • 第三方媒体流压力测试:k6插件xk6-webrtc的使用来测试媒体流的性能
  • 综合门户媒体发稿哪家靠谱
  • iis网站属性没有asp.net微信订阅号做微网站