数字信任的底层逻辑:密码学核心技术与现实应用

发布于:2025-02-25 ⋅ 阅读:(16) ⋅ 点赞:(0)

安全和密码学 --The Missing Semester of Your CS Education

目录

  1. 熵与密码强度
  2. 密码散列函数
  3. 密钥体系
    3.1 对称加密
    3.2 非对称加密
  4. 信任模型对比
  5. 典型应用案例
  6. 安全实践建议
  7. 扩展练习
  8. 杂项

密码学是构建数字信任的基石。
本文浅析密码学在现实工具中的应用,涵盖
1)熵 2)散列函数 3)加密体系;

XKCD密码强度漫画

一、熵与密码强度

1.1 熵的数学定义

熵(Entropy)的计算公式:
H = log₂(n)
其中n为可能的组合数

1.2 密码强度评估

密码类型 熵值计算 示例密码
4单词组合 4×log₂(100000) ≈ 66.4 bits correcthorsebatterystaple
8字符混合密码 log₂(62⁸) ≈ 47.5 bits rg8Ql34g

1.3 破解时间估算

  • 4单词密码:约1.5×10¹⁹年
  • 8字符密码:约1.5×10⁷年

二、密码散列函数

2.1 核心特性

$ printf 'hello' | sha1sum
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
  • 确定性
  • 不可逆性
  • 碰撞抵抗性

2.2 应用场景

  1. Git内容寻址存储
  2. 软件完整性验证
  3. 密码承诺机制

三、密钥体系

3.1 对称加密(AES)

openssl aes-256-cbc -salt -in plain.txt -out encrypted.bin

3.2 非对称加密(RSA/ED25519)

ssh-keygen -t ed25519 -o -a 100
3.2.1)Q1:为什么私钥能解开公钥上的锁?

A:大数定理。具体见下文:
非对称加密算法的数学设计–RSA算法为例

3.2.2)Q2:数字签名是什么?

A:[下文括号内,代表函数的x ]

  • 发送方:签名 = 私钥加密 [ hash(发送的消息) ];
  • 接收方:hash_1= 公钥解密[签名];
    • THEN 比较:得到的hash_1 VS hash_2(收到的消息);
    • IF 相等,证明:收到的消息 = 发送的消息

密码学中的数字签名是什么?

定义: 数字签名是一种基于密码学的技术,用于验证数据的真实性完整性不可否认性。它类似于现实中的手写签名,更安全、不可伪造。

核心原理

  • 非对称加密

    :使用一对密钥(公钥和私钥)。

    • 私钥:由签名者秘密保存,用于生成签名。
    • 公钥:公开分发,用于验证签名。
  • 哈希函数:通常先对消息生成唯一的哈希值(摘要),再对哈希值签名,提高效率。

工作流程

  1. 签名生成:发送方用私钥对消息的哈希值加密,生成签名。
  2. 签名验证:接收方用发送方的公钥解密签名,得到哈希值,再对比自己计算的哈希值是否一致。

作用

  • 身份认证:确认消息来源(谁签的名)。
  • 完整性:确保消息未被篡改。
  • 不可否认性:签名者事后无法否认自己的签名。

常见算法:RSA、ECDSA(比特币使用)、EdDSA等。

3.3 密钥生成函数(KDF)

  • 密码存储方案:KDF(password + salt)
  • 推荐迭代次数:≥100,000次

四、信任模型对比

模型类型 代表产品 验证方式 适用场景
首次信任 Signal Safety Number比对 即时通讯
信任网络 PGP 密钥签名链 邮件加密
社交证明 Keybase 社交媒体验证 跨平台身份

五、典型应用案例

5.1 SSH身份验证流程

客户端 服务器 连接请求 随机挑战值 签名响应 验证签名 客户端 服务器

5.2 全盘加密方案

  • Linux: LUKS + cryptsetup
  • Windows: BitLocker
  • macOS: FileVault

5.3 密码管理器架构

+----------------+
|     主密码      |
+--------+-------+
         ↓
+----------------+
|   KDF生成密钥   |
+--------+-------+
         ↓
+----------------+
|   AES加密密码库 |
+----------------+

六、安全实践建议

  1. 启用两步验证(2FA)
  2. 使用密码管理器生成高熵密码
  3. 定期更新SSH密钥(推荐ED25519)
  4. 验证下载文件的哈希值
  5. 对敏感提交进行GPG签名

七、扩展练习

# 验证文件完整性
curl -LO https://debian.org/checksums
sha256sum -c SHA256SUMS

# 创建签名提交
git commit -S -m "安全更新"
git show --show-signature

s://debian.org/checksums
sha256sum -c SHA256SUMS

创建签名提交

git commit -S -m "安全更新"
git show --show-signature

杂项:

Q3:“挖比特币”为什么叫“挖”?到哪里挖?

  • 类似一次种哈希计算竞赛。
  • 需要通过计算“挖掘”才能获得;
  • 矿工通过解决复杂数学难题(哈希计算)来竞争记账权,成功者获得比特币奖励,过程需要消耗算力(类似“挖”的劳力)。
  • 涉及区块链技术