首页/安全/加密与证书速查/Camellia 分组密码
加密算法基础95 条

Camellia 分组密码

RFC 3713 定义的 128 位分组密码,密钥 128/192/256 位对应 18/24 轮 Feistel 结构,日本 NTT 与三菱联合设计,TLS 与部分密码产品中有可选套件。

加密与证书速查安全更新于 2026-10-13

Camellia 是什么

Camellia 是由日本 NTT 与三菱电机联合设计的分组密码,标准见 RFC 3713 与 ISO/IEC 18033-3:分组长度 128 位,密钥 128 / 192 / 256 位分别对应 18 轮与 24 轮的 Feistel 结构。它的设计目标与安全强度同 AES 一个量级,在部分密码产品、TLS 与国别合规场景中作为可选算法出现,在通用互联网部署中并不常见。

基本信息

标准RFC 3713 / ISO/IEC 18033-3
分组长度128 位
密钥长度128 / 192 / 256 位
轮数18 轮(128 位密钥)/ 24 轮(192、256 位)
TLS 套件TLS 1.2 中的 CAMELLIA 套件由 RFC 5932 与 RFC 6367 定义

典型使用场景

  • 与要求使用非 AES 算法的合规或采购条款对接
  • 分析抓包或服务端配置时识别 CAMELLIA 套件的含义
  • 密码库能力核对:确认构建时是否启用了该算法
  • 与日本市场伙伴的系统互操作评估
  • 理解 Feistel 结构家族(与 DES、Blowfish 同类)的共性特征

示例与套件查询

示例与套件查询
openssl enc -camellia-256-cbc -pbkdf2 -salt -in plain.txt -out cam.enc   # 文件加密
openssl ciphers -v 'CAMELLIA'                        # 查看可用套件
openssl list -cipher-algorithms | grep -i camellia    # 确认库中是否提供该算法
openssl enc -d -camellia-256-cbc -pbkdf2 -in cam.enc -out plain.out       # 解密回路

基本信息对照

项目取值说明
分组长度128 位与 AES 相同
密钥长度128 / 192 / 256 位标准均支持
轮数18 或 24 轮192 与 256 位密钥同为 24 轮
结构Feistel 网络加解密可共用轮函数
部署情况可选算法通用互联网部署较少
实际部署较少,排障时若发现套件不可用,先确认密码库编译时是否启用了该算法,再看服务端套件白名单是否包含它。使用非 AES 算法通常出于合规或互操作要求,而不是性能考虑。
与 AES 的关系:两者都是 128 位分组密码,设计目标相近但结构不同;Camellia 缺少通用指令集加速,实际吞吐更依赖实现质量,选型时若无明确条款要求一般仍以 AES 为主。跨系统互通前,先确认双方库对密钥长度与工作模式的支持范围,并做一次加解密回路测试,避免在联调阶段才发现参数不一致。
运维提示:在服务端套件白名单里保留 CAMELLIA 通常只在合规场景下才有必要。如果目的只是「兼容更广」,先统计真实客户端的协商结果,多数情况下放宽白名单带来的收益,远小于长期维护与审计成本。

易错点

  • 按 AES 的经验推断轮数 → 192 位与 256 位密钥同为 24 轮,密钥长度与轮数并非一一对应
  • 忽略发行版的编译选项 → 部分构建禁用了 Camellia,套件不可用时先查编译开关
  • 在只有 AES 加速的平台上依赖 Camellia → 缺少硬件加速,吞吐明显低于 AES
  • 为「算法多样性」而引入 Camellia → 增加实现与审计成本,安全收益不明确

数据来源与参考

  • RFC 3713(Camellia 加密算法)
  • RFC 5932(TLS 中的 Camellia 套件)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌