systemslibrarian/crypto-compare

GitHub: systemslibrarian/crypto-compare

面向工程师和架构师的密码学算法决策支持系统,提供85种算法的对比、推荐理由和后量子迁移规划指南。

Stars: 0 | Forks: 0

# crypto::compare 🔐 **面向工程师、架构师和技术决策者的密码学算法决策系统。** 85 种算法。16 个类别。来源推荐。安全使用指导。参考架构。后量子迁移背景。 🌐 **[实时站点 →](https://systemslibrarian.github.io/crypto-compare/)** ## 这是什么 crypto::compare 是一个基于浏览器的决策支持工具,用于负责任地选择密码学算法。 它专为实际工程工作开始的那一刻设计:当有人必须决定在消息传递、存储、身份验证、签名或后量子迁移中使用什么时,需要比模糊的建议或随机的博客文章更好的参考。 本项目帮助您: - 按用例而非热度选择算法 - 使用一致的字段并排比较原语 - 了解推荐在哪些方面是强有力的、有条件的或不确定的 - 在常见密码学错误演变为系统故障之前避免它们 本项目**不**: - 实现密码学操作 - 为系统认证合规性 - 替代专业安全审查 - 保护您免受实现错误或操作失误的影响 ## 从这里开始 如果您只在这个仓库花费 30 秒,请使用以下路径: 1. **需要快速决策?** 从 **如果您正在构建 X → 使用这个** 开始。 2. **需要比较选项?** 使用实时比较表和决策流程图。 3. **需要避免危险错误?** 在编写代码之前阅读**常见陷阱和安全使用**。 ![TLS 和 HTTPS 数据流可视化](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a7ccded180114902.png) ## 为什么信任这个 本项目试图以具体的方式赢得信任,而不是仅仅通过语气。 | 信号 | 含义 | |--------|----------------| | **85 种算法,涵盖 16 个类别** | 覆盖范围足够广泛以支持真正的设计权衡,而不仅仅是精选的候选列表 | | **每个算法的来源** | 条目基于标准、密码分析、部署参考和审查日期 | | **5 级推荐模型** | 推荐不是二元的;它们区分安全默认值、可接受、遗留、研究和避免 | | **明确的权衡** | 条目包括"为什么不选这个?"、假设和"何时会改变"的条件 | | **验证和测试** | 数据集验证使用 Zod 强制执行,并由大量自动化测试套件覆盖 | | **静态架构** | 无后端、无账户、无遥测、无隐藏推荐引擎 | 这里的信任仍然有限: - 推荐质量仅与底层来源和审查新鲜度一样好 - 实现安全性仍然取决于库和周围系统设计 - 没有机构支持、外部审计或保证的更新节奏 ### 新鲜度快照 - 来源条目当前携带的审查日期范围从 **2026-03-16** 到 **2026-04-03** - 每个算法记录在数据集来源中包含 `lastReviewed` 值 - 建议随着该审查窗口相对于新的密码分析、标准工作或部署变化而变旧时,推荐置信度应降低 ## 如果您正在构建 X → 使用这个 这些是保守的默认值,不是普遍规律。它们旨在帮助有能力的工程师快速进入安全领域。 | 构建内容 | 推荐技术栈 | 为什么有效 | 现实模式 | 避免这个 | 何时改变 | |----------|-------------------|--------------|--------------------|------------|-----------------| | **安全消息传递** | XChaCha20-Poly1305 + X25519/ML-KEM-768 混合 + HKDF 棘轮 + 强身份签名 | AEAD 提供机密性和完整性,混合交换提供前向保密和 PQ 转换,棘轮提供隔离 | Signal 风格设计、PQXDH 风格迁移、现代端到端消息 | 静态 RSA、无棘轮、高消息量下无规范的随机 nonce AES-GCM | 随着生态系统支持成熟,更多转向 PQ 组件 | | **密码存储 / 身份验证** | Argon2id 具有强内存成本、唯一盐、TLS 传输中 | 内存硬密码哈希在数据库泄露后显著提高攻击者成本 | 现代密码存储指导、密码管理器、当前 OWASP 方向 | MD5、SHA-1、SHA-256 单独使用、无盐哈希、低成本 PBKDF2 用于新系统 | 随着 commodity 硬件改进,向上调整参数 | | **静态文件加密** | 存在硬件加速时使用 AES-256-GCM,否则使用 XChaCha20-Poly1305;HKDF 用于密钥分离 | AEAD 防止静默篡改;每个文件派生限制爆炸半径 | 全盘加密、备份加密、加密存档 | ECB、无认证的 CBC、nonce 重用、每个用途使用相同密钥 | 当长期机密性重要时添加 PQ 包装 | | **API / Web 加密** | TLS 1.3 配合 AES-256-GCM 或 ChaCha20-Poly1305;X25519 配合混合 PQ(如果有) | 消除遗留协商问题,提供前向保密,与现代传输安全实践一致 | HTTPS、服务间 API、gRPC over TLS | TLS 1.0/1.1、RSA 密钥交换、跳过证书验证 | 随着 PQ 标准进入主流 PKI,证书和 KEM 选择会改变 | | **长期敏感数据** | ML-KEM-1024 + AES-256 + 保守签名选择(如 SLH-DSA 用于归档场景) | 为可能需要经历经典到 PQ 转换的数据设计 | 政府、医疗、法律和归档机密性规划 | 等待"完美"迁移时刻,假设 RSA/ECC 用于数十年保密没问题 | 如果 PQ 密码分析实质性地改变当前假设的置信度,则重新评估 | | **数字签名** | PQ 规划使用 ML-DSA;经典部署中适当使用 Ed25519 | 明确的现代默认值,具有强大的生态系统和比旧选项更少的操作陷阱 | 软件签名、文档签名、API 认证、提交签名 | RSA-1024、遗留 DSA、nonce 处理不良的脆弱 ECDSA 部署 | 工具链和合规要求可能在受监管环境中强制不同选择 | 实时工具通过详细的技术栈、理由、权衡和特定算法的链接扩展了这些内容 ## 密码学现实 密码学算法是**公开标准和已发布的构造**,而不是秘方。AES、SHA-256、HKDF、ML-KEM 和 ML-DSA 是安全的,因为它们已经被公开研究、攻击、形式化、辩论和部署。 这也意味着算法选择只是问题的一部分。 大多数现实世界的失败发生在实现和操作中: - nonce 重用 - 密钥管理破损 - 跳过证书验证 - 侧信道 - 不安全的默认值 - 应该在经过验证的库中使用自定义代码 **不要编写自己的密码学原语。** 使用成熟的库。将算法选择和实现质量视为独立但都很重要的决策 ## 常见陷阱和安全使用 本节故意直接,因为密码学错误会严重失败。 ### 关键规则 | 规则 | 为什么重要 | |------|----------------| | **永远不要重用 AES-GCM 或 ChaCha20-Poly1305 的 nonce** | 重用可能破坏机密性和真实性保证 | | **永远不要在没有认证的情况下加密** | 没有完整性的机密性为攻击者留下操纵密文的空间 | | **永远不要将快速通用哈希用于密码** | 密码存储需要内存硬函数如 Argon2id,而不是 SHA-256 | | **永远不要使用 ECB 模式** | 它会泄露明文的结构信息 | | **永远不要硬编码密钥** | 源代码控制或构建管道中的密钥最终会泄露 | | **永远不要自己实现密码学** | 自定义原语和协议以难以检测的方式失败 | | **永远不要禁用证书验证** | 这会把 TLS 变成一场秀 | ### 密钥管理基础 - 使用 CSPRNG 生成密钥,而不是通用 PRNG - 按用途分离密钥:加密、MAC、签名和派生密钥不应互换 - 根据明确的策略而不是临时直觉轮换长期密钥 - 尽可能将密钥存储在硬件支持的存储或专用密钥管理系统中 - 为泄露做准备:撤销、重发和爆炸半径减少与初始生成同样重要 ### 此工具不能保护什么 - 时序泄露、内存安全错误和侧信道漏洞 - 糟糕的协议组合 - 糟糕的密钥处理和薄弱的运营控制 - 不安全的框架默认值或不安全的部署配置 选择正确的原语有帮助。它本身并不能保证周围系统的安全 ## 推荐库 算法安全性很大程度上取决于实现质量。如果您的代码库直接涉及密码学,请优先选择具有强大运营历史的成熟库。 | 类别 | 主要方向 | 常见选项 | |----------|-------------------|----------------| | **通用应用密码学** | libsodium | 跨主要语言的 NaCl 家族绑定 | | **TLS 和传输安全** | BoringSSL 或 OpenSSL 3.x | 也包括基于验证原语的语言原生 TLS 栈 | | **Rust 系统** | ring 和适当的 rustls | 在实际情况下使用生态系统原生包装器而不是原始绑定 | | **后量子实验和集成** | liboqs 和 PQClean 衍生的包装器 | 用于评估和早期集成,而非盲目生产使用 | | **浏览器密码学** | Web Crypto API | 使用原生浏览器原语而不是手写的 JavaScript | | **Go 服务** | `crypto/*` 和 `x/crypto` | 优先使用标准库和官方扩展 | | **JVM / .NET 生态系统** | Bouncy Castle(需要时) | 特别是需要更广泛的算法覆盖时 | ### 为什么是这些库 | 库 | 为什么受信任 | 常见于 | |---------|-------------------|---------|| | **libsodium** | 误用抵抗 API 设计和广泛的语言支持 | 现代应用密码学、密封盒、消息加密 | | **BoringSSL** | 强化的运营血统和大规模部署 | Chrome、Android、大型面向互联网的系统 | | **OpenSSL 3.x** | 深入的生态系统渗透和合规相关性 | 服务器、设备、企业部署 | | **ring** | 极简的攻击面和强大的 Rust 采用 | Rust TLS 和安全敏感基础设施 | | **liboqs** | 紧密跟踪主流 PQ 标准化工作 | PQ 评估和迁移原型 | | **Web Crypto API** | 原生浏览器实现路径 | 需要客户端密码学的 Web 应用 | 正确的模式通常是:**在这里选择合理的算法,然后通过这些库之一实现它,而不是自定义代码。** ## 参考架构 这些不是完整的协议。它们是系统级参考模式,显示了原语如何组合在一起。 ### 安全消息传递 ``` Identity Keys → Hybrid Session Setup → HKDF / Ratchet → AEAD Message Encryption → Transcript / State Binding ``` - **技术栈:** 身份签名、混合密钥建立、HKDF 派生的消息密钥、消息的 AEAD - **安全属性:** 机密性、前向保密、隔离、认证的对等方身份 ### Web API / TLS 风格传输 ``` ClientHello → Certificate Validation → Ephemeral Key Agreement → Session Keys → AEAD Records ``` - **技术栈:** TLS 1.3、临时密钥协商、AEAD 记录保护、认证证书 - **安全属性:** 机密性、完整性、服务器认证、重放抵抗、前向保密 ### 文件加密系统 ``` Passphrase or Master Key → Strong KDF → Per-File Key → AEAD Encryption → Store Ciphertext + Metadata ``` - **技术栈:** Argon2id 或主密钥输入、HKDF 风格分离、AES-256-GCM 或 XChaCha20-Poly1305 - **安全属性:** 机密性、完整性、有限的爆炸半径、加密工件的便携性 ### 身份验证系统 ``` Password → Argon2id → Stored Hash + Salt + Parameters → TLS-Protected Login → Constant-Time Verification ``` - **技术栈:** Argon2id、每用户盐、TLS 传输、恒定时间比较、受控会话颁发 - **安全属性:** 泄露后的暴力抵抗、安全的验证流程、传输机密性 这些流程故意足够简单以便于教学,并且足够强大以指导架构讨论 ## 设计理念与信任模型 ### 目的 本项目存在是为了支持工程判断,而不是取代它。 目标是帮助读者从"我知道密码学很重要"转变为"我可以在架构审查中为这个算法选择辩护"。这与实现库、发布新研究或认证生产系统是不同的目标。 ### 保守推荐理念 - 优先选择具有强大公开分析和有意义部署历史的算法 - 优先选择安全默认值而非新奇 - 将后量子迁移视为真正的规划问题,而非营销语言 - 明确显示不确定性,而不是将其隐藏在推荐标签后面 ### 推荐级别如何运作 | 级别 | 含义 | |-------|---------| | **推荐** | 所述上下文中新系统的强默认 | | **可接受** | 在有限场景、兼容性需求或过渡环境中合理 | | **遗留** | 仍会遇到,但不是为新系统选择的方向 | | **研究** | 有趣、有前景或相关,但不是普通部署的安全默认 | | **避免** | 不安全、过时或对负责任的新使用而言失败风险太高 | 推荐级别基于以下组合: - 公开标准化状态 - 密码分析成熟度 - 部署经验 - 实现生态系统质量 - 普通工程背景下的误用风险 - 与当前经典和后量子威胁模型的相关性 ### 透明设计 每个算法条目不仅应该回答"它是什么?" 还应该回答: - **为什么我选择它?** - **为什么我避免它?** - **我做了什么假设?** - **什么会让这个推荐以后改变?** 这就是为什么数据集包含推荐理由、假设、权衡、估计方法和来源,而不仅仅是名称和密钥大小。 ### 数据来源 项目基于: - NIST FIPS 和 SP 800 出版物 - IETF RFC - 相关时的 ISO 和国家标准 - 学术论文和密码分析文献 - 主要协议和库生态系统的部署证据 请参阅 [docs/data-sources.md](/workspaces/crypto-compare/docs/data-sources.md) 和 [src/data/provenance.ts](/workspaces/crypto-compare/src/data/provenance.ts) 获取来源支撑。 ### 合理的专家可能在哪些方面不同意 密码学中的一些选择不是纯粹的正确或错误决定。它们是在不断变化的约束下的判断。 常见示例: - **今天多积极地推动后量子迁移**,对于具有不同风险范围和兼容性预算的系统 - **Ed25519 vs ECDSA P-256**,在部署简单性和监管预期向不同方向拉动的环境中 - **ML-DSA vs 更保守的基于哈希的签名**,当长期置信度比大小或速度更重要时 - **Groth16 vs PLONK vs zk-STARKs**,当证明大小、可信设置假设、证明者成本和透明度以不同方式重要时 项目采取保守观点,但明确指出某些推荐边界是工程判断的问题,而不是永恒的真理。 ### 诚实的局限性 - 这不是实现指南,不能细化到每个 API 调用和安全参数处理 - 这不是合规映射工具 - 这不是漏洞、审计或生态系统事件的实时提要 - 这不能保证永远保持最新;审查新鲜度很重要 - 这仍然是一个单人维护的项目 这种诚实是信任模型的一部分,而不是尽管它是弱点 ## 您可以在应用中做什么 | 功能 | 为您提供什么 | |-----------|--------------------| | **按类别浏览** | 85 种算法,涵盖加密、KEM、签名、哈希、密码哈希、ZKPs、MPC、OT/PIR、阈值签名等 | | **并排比较** | 一致的字段对字段比较,适用于特定类别的指标 | | **使用决策流程图** | 从问题陈述到算法推荐的引导路径 | | **下载论证报告** | 用于架构审查和设计讨论的 Markdown 输出 | | **过滤和排序** | PQ 安全、标准轨道、NIST 状态、部署、来源、大小和安全维度 | | **查看混合模式** | 用于实际迁移规划的经典加 PQ 构造 | | **探索链接的演示项目** | 每个类别链接到工作开源项目,演示底层密码学概念 | | **阅读安全和架构指导** | 用例内容、陷阱、库方向和系统级流程 | ### 覆盖概览 | 类别 | 示例 | |----------|----------| | CSPRNG | CSPRNG(操作系统)、基于 ChaCha20 的 DRBG | | 对称加密 | AES-256-GCM、ChaCha20-Poly1305、XChaCha20-Poly1305 | | 哈希 | SHA-2、SHA-3、BLAKE2b、BLAKE3 | | MAC | HMAC-SHA-256、CMAC-AES、KMAC-256 | | KDF | HKDF、Argon2-KDF | | 密码哈希 | Argon2id、bcrypt、scrypt、PBKDF2 | | 非对称加密 | RSA-OAEP、ECIES | | KEM | ML-KEM、HQC、Classic McEliece、FrodoKEM | | 签名 | ML-DSA、FALCON、SLH-DSA、XMSS | | 阈值签名 | FROST、GG20 | | 秘密共享 | Shamir、Feldman VSS、加法 | | 同态加密 | TFHE、CKKS、BGV | | ZKP | Groth16、zk-STARKs、PLONK | | MPC | SPDZ、ABY、Garbled Circuits | | OT / PIR | OT、SimplePIR、SealPIR | | 隐写术 | LSB、DCT、扩频 | ## 技术栈 | 层级 | 技术 | |-------|-----------| | 框架 | Next.js 14 静态导出 | | 语言 | 严格模式下的 TypeScript | | 验证 | 基于 Zod 的数据集验证 | | 测试 | Vitest + Testing Library | | 样式 | Tailwind CSS | | 部署 | GitHub Pages | 无后端。无账户。无 Cookie。无分析。 ### 可访问响应性 应用包含语义地标、ARIA 状态和标签、键盘导航、focus-visible 支持、减少动画处理、触摸友好的控件和较小屏幕的移动布局 ## 入门 ``` git clone https://github.com/systemslibrarian/crypto-compare.git cd crypto-compare npm install npm run dev ``` 打开 。 | 命令 | 用途 | |---------|---------| | `npm run dev` | 启动本地开发服务器 | | `npm run build` | 构建静态导出 | | `npm run test` | 运行自动化测试套件 | | `npm run type-check` | 运行 TypeScript 检查器 | | `npm run lint` | 运行 linting | ## 项目结构 ``` src/ ├── app/ # routes and layout ├── components/ # UI, decision guides, architectures, safety content ├── data/ # algorithm dataset, categories, hybrid patterns, provenance ├── lib/ # comparison logic, validation, keyboard shortcuts ├── types/ # strict TypeScript data models └── __tests__/ # behavioral and dataset tests ``` 高价值文件: - [src/components/CryptoCompare.tsx](/workspaces/crypto-compare/src/components/CryptoCompare.tsx) - [src/components/DecisionFlowchart.tsx](/workspaces/crypto-compare/src/components/DecisionFlowchart.tsx) - [src/components/UseCaseGuide.tsx](/workspaces/crypto-compare/src/components/UseCaseGuide.tsx) - [src/components/SafeUsage.tsx](/workspaces/crypto-compare/src/components/SafeUsage.tsx) - [src/components/ReferenceArchitectures.tsx](/workspaces/crypto-compare/src/components/ReferenceArchitectures.tsx) - [src/components/DesignPhilosophy.tsx](/workspaces/crypto-compare/src/components/DesignPhilosophy.tsx) - [src/data/algorithms.ts](/workspaces/crypto-compare/src/data/algorithms.ts) - [src/data/provenance.ts](/workspaces/crypto-compare/src/data/provenance.ts) ## 相关项目 应用中的每个类别都链接到工作演示项目,说明密码学概念在实践中的应用。 | 项目 | 重点 | |---------|-------| | [Quantum Vault KPQC](https://github.com/systemslibrarian/crypto-lab-quantum-vault-kpqc) | 对称密码学、KEM、签名、KDF、MAC、秘密共享、CSPRNG | | [Blind Oracle](https://github.com/systemslibrarian/crypto-lab-blind-oracle) | 全同态加密(TFHE) | | [Silent Tally](https://github.com/systemslibrarian/crypto-lab-silent-tally) | 安全多方计算 | | [FROST Threshold](https://github.com/systemslibrarian/crypto-lab-frost-threshold) | 阈值签名(FROST / Ed25519) | | [Patron Shield](https://github.com/systemslibrarian/crypto-lab-patron-shield) | 私有信息检索(PIR) | | [Iron Letter](https://github.com/systemslibrarian/crypto-lab-iron-letter) | 非对称 / 公钥加密(ECIES、RSA-OAEP) | | [Shadow Vault](https://github.com/systemslibrarian/crypto-lab-shadow-vault) | 可否认的对称加密(ChaCha20-Poly1305) | | [Dad Mode Morse](https://github.com/systemslibrarian/dad-mode-morse2) | 对称加密 + 数字签名 | | [Corrupted Oracle](https://github.com/systemslibrarian/crypto-lab-corrupted-oracle) | CSPRNG 后门演示(Dual_EC_DRBG) | | [ZK Proof Lab](https://github.com/systemslibrarian/crypto-lab-zk-proof-lab) | 零知识证明系统 | | [Phantom Vault](https://github.com/systemslibrarian/crypto-lab-phantom-vault) | 无状态密码管理器(PBKDF2 + HMAC-DRBG) | | [snow2](https://github.com/systemslibrarian/snow2) | 隐写术 / 隐蔽信道 | | [Hybrid Wire](https://github.com/systemslibrarian/crypto-lab-hybrid-wire) | 混合后量子密钥交换(X25519 + ML-KEM-768) | | [Kyber Vault](https://github.com/systemslibrarian/crypto-lab-kyber-vault) | ML-KEM(CRYSTALS-Kyber)密钥封装 — NIST FIPS 203 | | [Dilithium Seal](https://github.com/systemslibrarian/crypto-lab-dilithium-seal) | ML-DSA(CRYSTALS-Dilithium)后量子签名 — NIST FIPS 204 | | [SPHINCS+ Ledger](https://github.com/systemslibrarian/crypto-lab-sphincs-ledger) | SLH-DSA(SPHINCS+)基于哈希的 PQ 签名 — NIST FIPS 205 | | [Ratchet Wire](https://github.com/systemslibrarian/crypto-lab-ratchet-wire) | 双棘轮算法(Signal 协议) | | [Shamir Gate](https://github.com/systemslibrarian/crypto-lab-shamir-gate) | Shamir 秘密共享与多项式可视化 | | [Iron Serpent](https://github.com/systemslibrarian/crypto-lab-iron-serpent) | Serpent-256 分组密码(AES 决赛入围者) | | [Dead Sea Cipher](https://github.com/systemslibrarian/crypto-lab-dead-sea-cipher) | 密码学历史 — 从 Atbash 到 AES-256-GCM | | [Biham Lens](https://github.com/systemslibrarian/crypto-lab-biham-lens) | 差分密码分析(Biham & Shamir、DES) | ## 贡献 请参阅 [CONTRIBUTING.md](/workspaces/crypto-compare/CONTRIBUTING.md)。 [GitHub: systemslibrarian](https://github.com/systemslibrarian) ## 许可证 MIT
标签:AES, CVE, HTTPS, Post-Quantum, RSA, SHA, TLS, 云配置检测, 决策支持工具, 分组密码, 加密库, 加密标准, 加密算法, 后量子密码学, 哈希函数, 存储加密, 安全架构, 密码学, 对称加密, 手动系统调用, 数字签名, 椭圆曲线密码, 流密码, 浏览器工具, 算法比较, 网络安全, 自动化审计, 自动化攻击, 认证, 迁移指南, 防御工具, 隐私保护, 非对称加密