UI はローカライズ済みです。スキルの紹介と説明文書は選択した言語へ AI が自動翻訳し、コード・コマンド・パス・専門用語は原文のままです。原作者の文書が優先されます。
スキルを探す
データ・研究 · SKILL.md

implementing-aes-encryption-for-data-at-rest

implementing-aes-encryption-for-data-at-rest

AES(高级加密标准)是由 NIST(FIPS 197)标准化的对称分组密码,用于保护机密和敏感数据。本技能涵盖在 GCM 模式下实现 AES-256 加密,用于加密静态文件和数据存储,包括正确的密钥派生、IV/nonce 管理和认证加密。

Independent GitHub snapshot · Automated classification · Original documentation governs

スキルの説明

GitHub

name: implementing-aes-encryption-for-data-at-rest description: AES(高级加密标准)是由 NIST(FIPS 197)标准化的对称分组密码,用于保护机密和敏感数据。本技能涵盖在 GCM 模式下实现 AES-256 加密,用于加密静态文件和数据存储,包括正确的密钥派生、IV/nonce 管理和认证加密。 domain: cybersecurity subdomain: cryptography tags: [cryptography, encryption, aes, data-at-rest, symmetric-encryption] version: "1.0" author: mahipal license: Apache-2.0

为静态数据实现 AES 加密

概述

AES(高级加密标准,Advanced Encryption Standard)是由 NIST(FIPS 197)标准化的对称分组密码(symmetric block cipher),用于保护机密和敏感数据。本技能涵盖在 GCM 模式下实现 AES-256 加密,用于加密静态文件和数据存储,包括正确的密钥派生(key derivation)、IV/nonce 管理和认证加密(authenticated encryption)。

目标

  • 实现针对文件的 AES-256-GCM 加密和解密
  • 使用 PBKDF2 和 Argon2 从密码派生加密密钥
  • 安全管理初始化向量(IV,Initialization Vector)和 nonce
  • 对整个目录树进行加密和解密
  • 实现认证加密以检测篡改
  • 使用流式加密处理大型文件

核心概念

AES 操作模式

模式认证可并行使用场景
GCM是(AEAD)是网络数据、文件加密
CBC否仅解密遗留系统、磁盘加密
CTR否是流式加密
CCM是(AEAD)否IoT、受约束环境

密钥派生

永远不要将原始密码用作加密密钥。始终使用以下方式派生密钥:

  • PBKDF2:NIST 批准,广泛支持(截至 2024 年最少 600,000 次迭代)
  • Argon2id:密码哈希竞赛冠军,内存密集型
  • scrypt:内存密集型,Argon2 的良好替代方案

Nonce/IV 管理

  • GCM 需要 96 位(12 字节)的 nonce,绝对不能在同一密钥下重复使用
  • 使用 os.urandom() 生成 nonce(密码安全伪随机数生成器,CSPRNG)
  • 将 nonce 与密文一起存储(nonce 不是秘密)

实现步骤

  1. 安装 cryptography 库:pip install cryptography
  2. 生成或派生加密密钥
  3. 为每次加密操作创建随机 nonce
  4. 使用密钥和 nonce 通过 AES-256-GCM 加密数据
  5. 将 nonce + 密文 + 认证标签一起存储
  6. 解密时,提取 nonce,验证标签,然后解密

加密文件格式

[salt: 16 字节][nonce: 12 字节][密文: 可变长度][标签: 16 字节]

安全注意事项

  • 始终使用认证加密(GCM、CCM)以防止篡改
  • 永远不要对同一密钥重复使用 nonce(在 GCM 中会造成灾难性后果)
  • 对长期数据保护使用至少 256 位密钥
  • 在可能的情况下,使用后安全清除内存中的密钥
  • 根据组织策略定期轮换加密密钥
  • 对于磁盘级加密,考虑使用 XTS 模式(AES-XTS)

验证标准

  • AES-256-GCM 加密产生有效密文
  • 解密能精确恢复原始明文
  • 认证标签能检测任何密文修改
  • 密钥派生使用足够的迭代次数/参数
  • 同一密钥的 nonce 从不重复使用
  • 大型文件(>1GB)可通过流式处理
  • 加密文件格式包含所有必要的元数据
保存したスキル