认证登录历史演化
- 认证的核心是验证身份真实性,确认操作者是本人,防止冒充、伪造、越权使用。
- 常见传统认证方式包括:账号密码、短信验证码、邮箱验证、U盾、人脸识别、指纹识别、动态口令等。
- 传统认证大多依赖中心化平台验证,由平台或机构判断身份是否合法。
- 加密分为对称加密和非对称加密,是现代认证的底层技术。
- 对称加密:加密和解密使用同一个密钥,速度快,但密钥传输不安全。
- 非对称加密:使用公钥和私钥一对密钥,公钥可以公开,私钥必须自己保密、不能泄露。
- 公钥:公开给所有人,用于加密数据、验证签名。
- 私钥:自己绝密保管,用于解密数据、数字签名。
- 公钥和私钥一一对应,公钥加密的内容只有私钥能解开,私钥签名的内容只有公钥能验证成功。
- 私钥是身份的核心凭证,谁持有私钥,谁就是身份的拥有者。
- 公钥不能反推私钥,保证了密码学安全。
- 数字签名使用私钥签名 + 公钥验证,实现身份认证、防篡改、不可抵赖。
- 签名验证通过,即可证明操作由私钥持有者发起,是本人行为。
- 数字签名是网络安全、支付、证书、区块链的基础认证逻辑。
- 区块链认证不需要中心化机构,不依赖平台、银行、服务器。
- 区块链账户地址由公钥哈希生成,不直接绑定个人信息。
- 区块链上的身份认证 = 私钥签名,签名成功即完成身份确认。
- 区块链认证特点:去中心化、不可篡改、可追溯、自主掌控身份。
- 区块链认证与传统认证最大区别:传统靠平台信任,区块链靠密码学和分布式账本信任。
- 传统认证:中心机构判断你是谁。
- 密码认证:用密码证明你是谁。
- 公钥私钥认证:用密钥对证明你是谁。
- 区块链认证:用私钥签名证明你是谁,且记录永久存证、不可篡改。
- 每次请求都要输密码
- 极麻烦、极不安全
- 登录一次,后端给你一个会话号
- 存在 Cookie,浏览器自动带
- 后端存状态、能踢人、改密码就失效
- 缺点:跨域难、APP 不友好
- 无状态、不查库、跨域爽
- 改密码不能自动失效,要靠黑名单
- 适合:绝大多数网站、APP、小程序
- 无密码、无注册
- 私钥 = 身份,公钥 = 账号
- 不可伪造、不可篡改
- 适合:支付、HTTPS、区块链、金融系统
你就记一对钥匙 + 两个功能:
- 私钥
- 只有你自己有
- 可以给数据签名
- 公钥
- 全世界都能看
- 只能用来验证签名
- 用私钥签名
- 所有人都能用公钥验证
- 但任何人都无法通过公钥反推私钥
这就是数学上的非对称加密。
- 用户不会保管私钥,丢了号就没了
- 登录流程复杂
- 普通系统JWT 已经够用
只有高安全场景才用:
- 支付签名
- HTTPS 证书
- 银行、政务、接口验签
- 区块链
不用密码,用私钥签名证明“你是你”。
流程:
- 后端给一段随机字符串
- 钱包用私钥签名
- 后端用公钥验证
- 验证通过 → 登录成功
全程:
- 不传密码
- 不传私钥
- 后端什么都不存
- 最安全的登录方式
- Session:后端存状态,安全可控,但跨域弱
- JWT:前端存票,方便跨域,但不能主动作废
- 公私钥:签名验签,极安全,但用户难用
- 区块链:公私钥登录,无密码,未来方向
你现在已经把全行业所有认证体系全部打通了:
- 登录
- 跨域
- Cookie
- JWT
- 签名
- 公私钥
- 区块链认证
你随便去看任何项目的登录逻辑,都能一眼看懂底层在干嘛。
你接下来想玩哪块?
我可以直接给你讲:
- JWT 真实代码怎么写
- 公私钥签名怎么实现
- 区块链钱包登录怎么接
- 公链/后端 绝对不存你的私钥!
全世界都没有你的私钥,只有你自己有。
- 不需要知道私钥,也能验证是不是它签的!
这就是非对称加密最神奇的地方。
我们把:
- 私钥 = 你的私人印章(只有你有)
- 公钥 = 印章的“防伪图样”
- 原文 = 一张白纸
- 签名 = 印章盖在纸上的印子
- 你拿私钥印章,在白纸(原文)上盖一下
→ 出来一个印子(签名)
- 你把三样东西给警察(后端/公链):
- 白纸(原文)
- 印子(签名)
- 防伪图样(公钥)
他不需要有你的印章,
他只做一件事:
**把“印子”和“防伪图样”对比:
纹路对不对得上?**
- 对得上 → 一定是你这个印章盖的
- 对不上 → 假的
警察不需要见过你的私钥印章
警察不需要拥有你的印章
警察不需要存你的印章
他只靠防伪图样(公钥),就能验证印子(签名)真假。
- 原文(随机字符串)
- 签名(钱包盖的章)
- 公钥(防伪图样)
用一套固定的数学算法,去算:
用这个公钥
能不能把这个签名
还原/验证成这个原文?
- 能 → 证明:
这个签名,一定是和公钥配对的那个私钥签的
- 不能 → 假的、伪造的、改过的
只要是这个私钥签的,
全世界任何人,
拿上公钥,
都能验证成功,
但永远推不出私钥。**
这不是魔法,是数学。
绝对没有!绝对没有!绝对没有!
- 公链只认签名、公钥、原文
- 公链不存任何人的私钥
- 私钥只在你钱包里
- 私钥签名,就像盖章。
- 公钥验证,就像核对章的纹路。
- 不需要章本身,只要纹路对得上,就证明是你盖的。
- Cookie、Session、JWT
- 跨域、安全、踢人、改密码
- 公私钥、签名、验签
- 区块链钱包登录整套底层
你现在去看任何登录、钱包、公链、验签代码,一眼就能看懂底层在干嘛。