🍃前言
你好呀,我是你的人类朋友!
本文讲述信息安全常用的几个基本概念:Token、签名、SHA256、公私钥、摘要和加盐。
❗❗核心概念速览【巨实用!】
Token(令牌):客户端存储的身份凭证,服务端无需保存会话状态。JWT【JSON Web Token】是最常见实现方式。
补充:JWT由三部分组成(注意,这边说的是JWT,不是Token。Token不一定由三部分组成!):Header(算法类型)、Payload(数据)、Signature(签名),三者用
.连接,例如xxxxx.yyyyy.zzzzz
签名(Signature):用【私钥】对数据的【哈希值】进行加密的过程。 【注意:操作对象是数据的哈希值(而非原始数据本身)!!签名前通常需要先对数据哈希(如SHA-256) 以固定长度并保护隐私。】通常用于创建数字签名(用私钥加密哈希值)或安全存储密码(哈希后再加密)。用于验证数据完整性和来源真实性。
SHA256:一种哈希算法,将任意长度数据转换为固定长度(256位)的唯一指纹,不可逆。
公私钥:
- 公钥:可公开,用于加密或验证签名
- 私钥:必须保密,用于解密或创建签名
摘要(Digest):摘要是数据的"指纹"——通过哈希算法将任意长度的数据(如文件、密码、消息)压缩成固定长度的唯一字符串,只要原始数据有1bit变化,摘要就会完全不同。再简单地说,就是摘要用于检测数据是否变化,我对A做了摘要,A变了一丢丢我都能发现,可用于检测数据是否被篡改
加盐(Salt):在哈希【后面会对“哈希”做解释】前向原始数据添加随机字符串,防止彩虹表攻击。【注:这边说的哈希(Hashing) 指的是单向加密过程——也就是通过哈希算法(比如SHA-256、MD5等)将任意长度的数据转换为固定长度的不可逆字符串(即哈希值)。】
这时候可能就有朋友要问了:
问🙀那我问你,签名和摘要啥关系?
答🐼签名是用私钥对摘要(哈希值)加密的结果,相当于「摘要+身份认证」——既能验证数据完整性,又能确认发送者身份。 原始数据 → 计算摘要(哈希值) → 用私钥加密摘要 → 生成签名
(验证时反向操作:解密签名得到摘要,对比自己计算的摘要)
问🙀那我问你,token和jwt啥关系?
答🐼「Token」相当于「汽车」,而「JWT」相当于「特斯拉Model 3」。JWT(JSON Web Token)是Token的一种具体实现。其他实现有哪些?比如Session Token。
问🙀那我问你,token和签名啥关系?【以jwt为例】
分点作答,启动!
- 签名是Token的一部分:JWT的第三段就是签名(
xxxxx.yyyyy.zzzzz中的zzzzz)- 签名保护的是Token内容:确保Header和Payload在传输中未被篡改
- 无签名的Token=裸奔:如JWT使用
alg: none,攻击者可随意伪造身份- (●'◡'●)
😺关键安全原则
- 绝不存储明文密码:始终使用加盐哈希
- 密钥管理:私钥决不能出现在客户端代码
- 时效性:Token设置合理过期时间
- 算法选择:使用行业标准算法(SHA256、RSA、需要注意MD5是不安全的,尽量别用,要用必须加点盐之类的做一些防护。)
😾😾补充😾😾:
理论突破:2004年,王小云教授团队提出高效的方法,可在短时间内找到MD5碰撞(两个不同的输入产生相同的哈希值)。
实际攻击:2008年,研究者利用碰撞攻击伪造了SSL证书(如Flame恶意软件),证明MD5的实用性攻击可行。
- 碰撞生成工具:如
fastcoll可在普通计算机上几秒内生成碰撞。
- 随机性:盐值必须使用密码学安全随机数
🦉重要历史节点
- 1976年:Diffie-Hellman密钥交换协议诞生,开创非对称加密
- 1977年:RSA算法问世【是首个实用的非对称加密算法(是实用而不是使用,没有打错字!因为此前的更早出现的一些非对称加密算法用途受限),实现了数字签名和密钥交换两大功能】
- 1993年:SHA系列哈希算法发布【SHA是密码学哈希的工业标准,支撑了数字签名(如RSA-SHA256)、JWT令牌、加密货币等关键技术。很重要就对了】
- 2000年:JWT概念出现,2015年成为RFC标准【RFC(Request for Comments) 是由 互联网工程任务组(IETF) 制定和发布的官方技术标准文档,定义了互联网的核心协议(如HTTP、TCP/IP)、规范(如JWT)和最佳实践。】
- 未来趋势:量子加密、同态加密等新技术发展
👋最后
最后补充几个小贴士!
- 混淆加密与哈希:所有的哈希都是不可逆的!加密可解密
- 自行实现加密算法:应使用标准库
- 过度依赖前端验证:所有安全验证必须在后端进行
- 忽视密钥轮换:定期更换密钥降低风险
我目前正在努力补充自己信息安全方面的知识,文章有误区请提出~
下次见!!