跳到主要内容
uencoder

Store 加密关键安全

关键必须从不是 hardcoded 或 committed 到源 control. Learn HSM, KMS, envelope 加密, 和键 derivation patterns 为安全键 storage.

  1. 1

    golden 规则: 从不存储加密关键在 plaintext alongside 数据它们加密. Options 从最多到 最少安全: HSM (hardware), KMS (cloud 服务), envelope 加密 (主键 wraps 数据关键), 键 derivation (derive 从 password/passphrase).

  2. 2
    PBKDF2 密钥派生 →

    Derive 加密键 从用户 password using PBKDF2 具有高 迭代数量 (100,000+). salt 必须是 random 和 stored separately. 此是 为用户-controlled 关键 where 否服务器-边 storage exists.

  3. 3
    bcrypt 哈希生成器 →

    Hash 主 password 具有 bcrypt 为认证. Note: bcrypt 输出是 不 suitable as 加密键 directly — use PBKDF2/scrypt 为键 derivation, bcrypt 为 password 验证.

  4. 4
    AES 加密器 →

    Use derived 键到 加密数据. 键从不 touches 磁盘在 plaintext — 它 exists 仅在 内存期间加密操作和 是 zeroed afterward.

  5. 5

    为服务器-边 applications, use KMS (AWS KMS, GCP KMS, Azure 键 Vault) 或 HSM. 主键 从不 leaves hardware; 你调用 API 到加密/解密. 为客户端-边, derive 关键从 用户 passwords 具有 strong KDF 和存储仅 salt.

常见问题

能够 I 存储键 在环境变量?
Environment 变量是 better than hardcoding 但仍然可见到 任何人具有处理 access (e.g., /proc/pid/environ 开 Linux). Use KMS 或 secrets manager (Vault, AWS Secrets Manager) 为 production. Environment 变量是 acceptable 为 development 仅.
什么是 差集之间 PBKDF2 和 bcrypt?
PBKDF2 是 KDF 该 produces 键的 任何长度 — use 它为 加密关键. bcrypt 是 password 哈希函数具有固定输出 — use 它为 password 验证. 它们服务不同 purposes 和是 不 interchangeable.

解决此任务的工作流

相关工具