---
title: KACC_Crypto鲲鹏密码算法优化介绍
description: "简体中文|[English]"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/encryp-decryp/kacc_crypto2/README.md
sourcePath: /source/zh/kunpengaccel/encryp-decryp/kacc_crypto2/README.md
indexId: 9c584adaa037042561b4c660a1db7c894641dce32fb18cb99b1361f8fe6175ba60
---
<!--Metadata
title: "null"
description: "null"
product: "鲲鹏BoostKit"
version: "26.2.RC1"
contextType: "产品介绍,版本说明,快速入门,安装/升级,用户指南"
lastUpdated: "2026-10-10 09:42:30"
targetUser: "null"
keywords: "null"
searchTitle: "null"
status: "null"
-->

# KACC_Crypto鲲鹏密码算法优化介绍

简体中文|[English]

## 最新消息

- [2026.09.30]：发布KACC_Crypto V1.1.0，新增AES-XTS SVE2优化、AES-GCM SVE2优化和RSA multi-buffer优化。

## 项目介绍

### KACC_Crypto介绍

`KACC_Crypto`是面向鲲鹏950处理器AArch64平台的OpenSSL密码算法优化源码仓库，当前包含AES-XTS、AES-GCM和RSA三类优化代码、源码接入脚本以及功能/性能验证脚本。

本仓库当前不提供独立运行时库。AES-XTS和AES-GCM优化通过源码接入方式集成到目标OpenSSL源码树。重新编译OpenSSL后，业务应用仍通过OpenSSL EVP/provider接口调用对应算法。RSA优化当前通过独立benchmark可执行文件验证8路多缓冲private CRT路径。

`KACC_Crypto`适用于OpenSSL密码算法优化验证、SVE2指令路径评估、上游化补丁开发和性能基线对比等场景。

### 软件架构

`KACC_Crypto`以OpenSSL源码树为集成目标，通过接入脚本把优化源码、构建规则和分发逻辑写入OpenSSL对应模块。整体架构如[**图 1** 软件架构](https://gitcode.com/boostkit/kacc_crypto/blob/br_bk26_930/docs/zh/figures/软件架构.png)所示。

**图 1** 软件架构


软件架构中各模块功能如**表 1** 模块功能描述所示。

**表 1** 模块功能描述

| 模块名称 | 功能描述 |
| --- | --- |
| 应用程序 | 使用OpenSSL标准接口调用AES-XTS、AES-GCM或RSA能力。 |
| OpenSSL EVP/provider | 提供算法入口、上下文管理和硬件能力分发。 |
| OpenSSL开源路径 | 保留OpenSSL已有ARMv8/NEON/BN实现，作为不满足优化条件时的回退路径。 |
| AES-XTS SVE2优化 | 新增AArch64 SVE2 AES-XTS stream实现，支持AES-128/192/256 XTS加解密。 |
| AES-GCM SVE2优化 | 新增SVE2 AES-CTR与GHASH大窗口融合路径，支持AES-128/192/256 GCM加解密。 |
| RSA SVE2 x8优化 | 新增8路多缓冲Montgomery计算内核，通过benchmark验证RSA2048/RSA4096 private CRT性能。 |
| 接入脚本 | 把优化源码复制到目标OpenSSL源码树，并修改构建规则和分发锚点。 |
| 测试脚本 | 提供正确性验证、性能矩阵测试和benchmark可执行文件生成入口。 |

### 算法支持与规格

当前支持的算法和调用方式如**表 2** 算法支持与规格所示。

**表 2** 算法支持与规格

| 算法 | 支持规格 | 优化方式 | 调用方式 | 说明 |
| --- | --- | --- | --- | --- |
| AES-XTS | AES-128-XTS、AES-192-XTS、AES-256-XTS加密和解密 | SVE2 AES指令实现XTS stream热路径 | OpenSSL EVP/provider AES-XTS | 不满足能力条件或不适合SVE2的输入继续使用OpenSSL开源路径。 |
| AES-GCM | AES-128-GCM、AES-192-GCM、AES-256-GCM加密和解密 | SVE2 AES-CTR与GHASH大窗口融合 | OpenSSL EVP/provider AES-GCM | 默认8192Byte及以上进入SVE2路径，小包和尾部保留ARMv8/NEON路径。 |
| RSA | RSA2048、RSA4096 private CRT benchmark | SVE2 x8 Montgomery多缓冲计算 | 独立benchmark可执行文件 | 当前不是OpenSSL对外RSA API的透明分发。 |

>  **说明：**
> 
> - AES-XTS当前热路径按SVE vector length为256bit的机器调优，其他VL需要单独验证。
> - AES-GCM需要目标机器支持ARMv8 AES、PMULL和SVE2。
> - RSA benchmark输出`correctness=PASS`表示功能校验通过。

## 目录结构

项目目录层级介绍如下。

```text
├── docs                                      # 项目文档目录
│   ├── LICENSE                               # 文档许可证
│   └── zh                                    # 中文文档目录
│       ├── figures                           # 文档图片资源
│       ├── installation_guide.md             # 安装指南
│       ├── menu_kacc_crypto.md               # 文档菜单
│       ├── quick_start.md                    # 快速入门
│       ├── release_notes.md                  # 版本说明书
│       ├── user_guide.md                     # 用户指南
│       └── public_sys-resources              # 文档图标资源
├── openssl
│   ├── crypto
│   │   ├── aes/asm                           # AES-XTS SVE2 源码和测试
│   │   ├── bn/asm                            # RSA SVE2 x8 汇编内核
│   │   └── modes                             # AES-GCM SVE2 源码和测试
│   └── test                                  # RSA benchmark 源码
├── scripts                                   # OpenSSL 源码接入和测试脚本
└── README.md                                 # 项目说明文档
```

## 版本说明

当前版本信息如**表 3** 版本信息所示。

**表 3** 版本信息

| 项目 | 说明 |
| --- | --- |
| 产品名称 | 鲲鹏BoostKit |
| 产品版本 | 26.2.RC1 |
| 软件名称 | KACC_Crypto |
| 软件版本 | V1.1.0 |

详细版本能力、注意事项和遗留问题请参见《[版本说明书](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/encryp-decryp/kacc_crypto2/docs/zh/release_notes.md)》。

## 软件包完整性校验

本项目当前通过Git仓库提供源码，使用`git clone`获取，不提供独立的软件压缩包、数字签名文件或SHA-256校验文件。获取源码后，可检查Git对象完整性、源码提交版本及工作区状态。

### 获取源码

从本文使用的仓库地址获取`dev`分支。

```shell
git clone --branch dev https://gitcode.com/weiaq/kacc_crypto.git
cd kacc_crypto
```

### 校验步骤

1. 检查Git对象数据库的完整性。
   
   ```shell
   git fsck --full
   ```
   
   命令退出状态为0且没有对象损坏或缺失错误，表示Git对象完整性检查通过。`dangling`提示表示存在未被引用的对象，本身不代表对象损坏。

2. 查看当前源码的完整提交编号。
   
   ```shell
   git rev-parse HEAD
   ```
   
   将输出与可信渠道确认的目标提交编号核对。`dev`分支会持续更新，交付和复现时应记录完整提交编号。

3. 在编译或接入优化源码之前，检查工作区和暂存区是否有修改或额外文件。
   
   ```shell
   git status --porcelain --untracked-files=all --ignored
   ```
   
   新克隆的仓库应无输出；如有输出，请核查对应文件是否为预期修改或生成文件。

>  **说明：**
> 
> Git对象完整性检查不能单独证明发布者身份，也不等同于数字签名验证。源码地址和用于核对的目标提交编号仍需通过可信渠道确认。

### 结果判定

| 校验结果 | 判定及处理 |
| --- | --- |
| Git对象检查通过、提交编号与可信目标一致，且工作区检查无输出 | 源码完整性及版本检查通过，可继续使用。 |
| Git对象损坏或缺失 | 不应继续使用该副本，应重新克隆仓库。 |
| 提交编号与目标不一致 | 确认所需源码版本后再继续。 |
| 工作区检查有输出 | 核查本地修改、未跟踪文件和被忽略文件，确认后再继续。 |
| 未获取可信的目标提交编号 | 只能检查本地对象完整性，无法确认是否为预期交付版本。 |

### 异常处理

校验失败时，请保留需要的本地修改，在新目录中从可信仓库地址重新克隆，并重新执行上述检查。如问题仍未解决，请提交issue。

## 环境部署

### 环境要求

部署前请确保环境满足表 4 环境要求。

**表 4** 环境要求

| 环境 | 要求 |
| --- | --- |
| 服务器和处理器 | 鲲鹏950处理器 |
| 架构 | AArch64 |
| 操作系统 | AArch64 Linux |
| 指令能力 | ARMv8 AES、PMULL、SVE2 |
| 编译器 | 支持AArch64 SVE2相关-march选项的GCC或Clang |
| 构建工具 | git、gcc或clang、make、perl |
| OpenSSL版本 | 建议OpenSSL 3.0系列或与接入脚本锚点匹配的源码树 |

### 安装基础软件

- 以 yum系发行版为例。

```shell
sudo yum install -y git gcc make perl
```

- 以 apt系发行版为例。

```shell
sudo apt-get update
sudo apt-get install -y git gcc make perl
```

### 准备OpenSSL

```shell
git clone https://github.com/openssl/openssl.git -b openssl-3.0
cd openssl
./Configure linux-aarch64
make -j$(nproc)
```

更详细的环境部署、源码接入和安装后检查步骤请参见《[安装指南](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/encryp-decryp/kacc_crypto2/docs/zh/installation_guide.md)》。

## 快速入门

1. 获取`KACC_Crypto`源码。
   
    ```shell
    git clone https://gitcode.com/weiaq/kacc_crypto.git -b dev
    cd kacc_crypto
    export OPENSSL_DIR=/path/to/openssl
    ```

2. 接入AES-XTS优化。
   
    ```shell
    ./scripts/install_sve2_xts_dispatch.sh "${OPENSSL_DIR}"
    cd "${OPENSSL_DIR}"
    make -j$(nproc)
    ```

3. 接入AES-GCM优化。
   
    ```shell
    cd /path/to/kacc_crypto
    ./scripts/install_sve2_gcm_dispatch.sh "${OPENSSL_DIR}"
    cd "${OPENSSL_DIR}"
    make -j$(nproc)
    ```

4. 生成RSA benchmark可执行文件。
   
    ```shell
    cd /path/to/kacc_crypto
    OPENSSL_DIR=/path/to/openssl ./scripts/apply_and_test_rsa.sh
    ```

5. 执行基础验证。
   
    ```shell
    cd /path/to/kacc_crypto
    OPENSSL_DIR=/path/to/openssl ./scripts/apply_and_test_xts.sh
    OPENSSL_DIR=/path/to/openssl ./scripts/apply_and_test_gcm.sh
    
    cd /path/to/openssl
    taskset -c 10 test/rsa2048_private_rsaz29_x8_bench 1000 all
    taskset -c 10 test/rsa4096_private_rsaz29_x8_bench 200 all
    ```

更详细的源码获取、OpenSSL构建、优化代码接入和基础验证操作，请参见[快速入门](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/encryp-decryp/kacc_crypto2/docs/zh/quick_start.md)。

## 使用说明

### AES-XTS优化

AES-XTS优化接入OpenSSL provider AES-XTS分发层。重新编译OpenSSL后，应用无需调用新的外部接口，仍通过OpenSSL EVP/provider使用AES-XTS。

可使用OpenSSL speed验证EVP路径。

```shell
cd /path/to/openssl
./apps/openssl speed -elapsed -seconds 10 -evp aes-128-xts aes-192-xts aes-256-xts
```

### AES-GCM优化

AES-GCM优化接入OpenSSL provider AES-GCM大块update路径。默认8192B及以上进入SVE2路径，小包、尾部和不满足能力条件的场景继续使用ARMv8/NEON路径。

可使用OpenSSL speed验证EVP路径。

```shell
cd /path/to/openssl
./apps/openssl speed -elapsed -seconds 10 -evp aes-128-gcm aes-192-gcm aes-256-gcm
```

### RSA

RSA当前通过独立benchmark验证8路多缓冲private CRT路径。默认脚本只生成RSA2048和RSA4096 benchmark可执行文件，不自动执行长时间性能测试。

```shell
cd /path/to/openssl
taskset -c 10 test/rsa2048_private_rsaz29_x8_bench 1000 all
taskset -c 10 test/rsa4096_private_rsaz29_x8_bench 200 all
```

输出中包含`correctness=PASS`表示功能校验通过。性能结果重点关注`blinded_speedup_vs_native_default`；分析纯数学内核时可参考`math_speedup_vs_native_no_blind`。

## 学习文档

| 学习文档名称 | 学习资源简介 |
| --- | --- |
| [快速入门](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/encryp-decryp/kacc_crypto2/docs/zh/quick_start.md) | 快速完成源码获取、OpenSSL构建、优化代码接入和基础验证。 |
| [安装指南](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/encryp-decryp/kacc_crypto2/docs/zh/installation_guide.md) | 描述环境要求、三算法接入步骤、编译步骤和测试步骤。 |
| [用户指南](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/encryp-decryp/kacc_crypto2/docs/zh/user_guide.md) | 描述AES-XTS、AES-GCM和RSA优化的使用入口、参数和验证方法。 |
| [版本说明书](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/encryp-decryp/kacc_crypto2/docs/zh/release_notes.md) | 描述版本配套、能力范围、注意事项和遗留问题。 |
| [文档许可证](https://gitcode.com/boostkit/kacc_crypto/blob/br_bk26_930/docs/LICENSE) | 文档许可证。 |

## License

文档许可证详见 [docs/LICENSE](https://gitcode.com/boostkit/kacc_crypto/blob/br_bk26_930/docs/LICENSE)。源码许可证如需单独声明，请以后续新增的仓库根目录许可证文件为准。

## 贡献声明

欢迎大家为社区做贡献，如果使用过程中有任何问题/建议，或者需要反馈特性需求和bug报告，可以提交[Issues](https://gitcode.com/boostkit/community/blob/master/docs/contributor/issue-submit.md)联系我们，具体贡献方法可参考[贡献指南](https://gitcode.com/boostkit/community/blob/master/docs/contributor/contributing.md)。同时也欢迎大家在[讨论专区](https://gitcode.com/boostkit/community/discussions)展开讨论交流。感谢您的支持。

## 致谢

感谢来自社区的每一个PR，欢迎贡献鲲鹏KACC_Crypto！
