Enabling CAAM RSA Hardware Offload via User-Space (AF_ALG) on LS1046ARDB

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Enabling CAAM RSA Hardware Offload via User-Space (AF_ALG) on LS1046ARDB

357 次查看
figure-it-out
Contributor II

Overview

I am attempting to offload RSA operations to the integrated CAAM (Security Engine 5.4) on an LS1046ARDB platform. While symmetric hardware acceleration is functional, I am unable to access asymmetric (RSA) capabilities from user-space via OpenSSL.
System Environment

Hardware: LS1046ARDB (LS1046A Quad-core ARM Cortex-A72).

Software: Custom Linux based on LSDK 25.06 (Kernel 5.x/6.x).

Interface Goal: OpenSSL 3.x using the AF_ALG interface (avoiding DPDK and legacy cryptodev-linux).

Current Progress & Verification

The kernel appears to recognize the PKC (Public Key Cryptography) unit, as shown in dmesg:

caam 1700000.crypto: caam pkc algorithms registered in /proc/crypto driver : rsa-caam is present in /proc/crypto

The Roadblocks
1. Kernel Configuration (Kconfig) Issues

I am unable to enable CONFIG_CRYPTO_USER_API_AKCIPHER=y.

It does not appear in menuconfig.

Manual entry in .config is overwritten during the build process.

Requirement: What are the exact hidden dependencies (selects/depends on) required to expose the Asymmetric Key Cipher User API?

2. Driver & Hardware Specifics

Is CONFIG_CRYPTO_DEV_FSL_CAAM_PKC the definitive driver for LS1046A RSA offloading, and are there known regressions in recent LSDK versions for this SoC?

Are there mandatory Device Tree (DTS) nodes or properties required for the PKC unit specifically, beyond the standard CAAM and Job Ring nodes?

3. OpenSSL 3.x Integration

How should OpenSSL 3.x be configured to utilize rsa-caam via AF_ALG?

I am looking for a working openssl.conf snippet or initialization steps that bridge the OpenSSL Provider/Engine to the CAAM asymmetric backend without relying on the DPDK stack.

Summary of Questions

Which Kconfig symbols must be enabled to make CONFIG_CRYPTO_USER_API_AKCIPHER selectable?

Are there specific DTS requirements for the CAAM PKC module on the LS1046A?

What is the recommended path for OpenSSL 3.x to consume rsa-caam (AF_ALG vs. a specific NXP Provider)?

LSDK version 25.06

标签 (1)
标记 (1)
0 项奖励
回复
2 回复数

157 次查看
yipingwang
NXP TechSupport
NXP TechSupport

I just got confirmation from the AE team.

Currently Linux kennel doesn't support asymmetric API via AF_ALG.

https://www.kernel.org/doc/html/latest/crypto/userspace-if.html

The kernel crypto API is accessible from user space. Currently, the following ciphers are accessible:
Message digest including keyed message digest (HMAC, CMAC)
Symmetric ciphers
AEAD ciphers
Random Number Generators
0 项奖励
回复

152 次查看
figure-it-out
Contributor II

Thanks for the confirmation regarding AF_ALG. Since the kernel's akcipher interface is currently restricted, I am looking for the officially recommended alternative to offload RSA to the rsa-caam driver.

  1. cryptodev-linux: Is the /dev/crypto interface via cryptodev-linux still the standard path for RSA offloading in LSDK 25.06?

  2. OpenSSL Provider/Engine: Does NXP provide a native OpenSSL 3.x Provider for LS1046A that communicates with the CAAM Job Rings directly (bypassing AF_ALG)?

  3. Performance: If using cryptodev, are there known bottlenecks compared to a direct engine implementation?

My goal is to achieve RSA-2048/4096 offloading from user-space OpenSSL by any supported means.

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2348381%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%9C%A8%20LS1046ARDB%20%E4%B8%8A%E9%80%9A%E8%BF%87%E7%94%A8%E6%88%B7%E7%A9%BA%E9%97%B4%20(AF_ALG)%20%E5%90%AF%E7%94%A8%20CAAM%20RSA%20%E7%A1%AC%E4%BB%B6%E5%8D%B8%E8%BD%BD%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2348381%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%A6%82%E8%BF%B0%3C%2FP%3E%3CP%3E%E6%88%91%E6%AD%A3%E5%9C%A8%E5%B0%9D%E8%AF%95%E5%B0%86%20RSA%20%E6%93%8D%E4%BD%9C%E8%BD%AC%E7%A7%BB%E5%88%B0%20LS1046ARDB%20%E5%B9%B3%E5%8F%B0%E4%B8%8A%E7%9A%84%E9%9B%86%E6%88%90%E5%BC%8F%20CAAM%EF%BC%88%E5%AE%89%E5%85%A8%E5%BC%95%E6%93%8E%205.4%EF%BC%89%E3%80%82%E8%99%BD%E7%84%B6%E5%AF%B9%E7%A7%B0%E7%A1%AC%E4%BB%B6%E5%8A%A0%E9%80%9F%E5%8A%9F%E8%83%BD%E6%AD%A3%E5%B8%B8%EF%BC%8C%E4%BD%86%E6%88%91%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20OpenSSL%20%E4%BB%8E%E7%94%A8%E6%88%B7%E7%A9%BA%E9%97%B4%E8%AE%BF%E9%97%AE%E9%9D%9E%E5%AF%B9%E7%A7%B0%EF%BC%88RSA%EF%BC%89%E5%8A%9F%E8%83%BD%E3%80%82%3CBR%20%2F%3E%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83%3C%2FP%3E%3CP%3E%E7%A1%AC%E4%BB%B6%EF%BC%9ALS1046ARDB%EF%BC%88LS1046A%20%E5%9B%9B%E6%A0%B8%20ARM%20Cortex-A72%EF%BC%89%E3%80%82%3C%2FP%3E%3CP%3E%E8%BD%AF%E4%BB%B6%EF%BC%9A%E5%9F%BA%E4%BA%8E%20LSDK%2025.06%20%E7%9A%84%E5%AE%9A%E5%88%B6%20Linux%EF%BC%88%E5%86%85%E6%A0%B8%205.x%2F6.x%EF%BC%89%E3%80%82%3C%2FP%3E%3CP%3E%E6%8E%A5%E5%8F%A3%E7%9B%AE%E6%A0%87%EF%BC%9A%E4%BD%BF%E7%94%A8%20AF_ALG%20%E6%8E%A5%E5%8F%A3%E7%9A%84%20OpenSSL%203.x%EF%BC%88%E9%81%BF%E5%85%8D%E4%BD%BF%E7%94%A8%20DPDK%20%E5%92%8C%E4%BC%A0%E7%BB%9F%20cryptodev-linux%EF%BC%89%E3%80%82%3C%2FP%3E%3CP%3E%E5%BD%93%E5%89%8D%E8%BF%9B%E5%BA%A6%26amp%3B%20%E6%A0%B8%E6%9F%A5%3C%2FP%3E%3CP%3E%E5%A6%82%20dmesg%20%E6%89%80%E7%A4%BA%EF%BC%8C%E5%86%85%E6%A0%B8%E4%BC%BC%E4%B9%8E%E8%83%BD%E8%AF%86%E5%88%AB%20PKC%EF%BC%88%E5%85%AC%E9%92%A5%E5%8A%A0%E5%AF%86%EF%BC%89%E5%8D%95%E5%85%83%EF%BC%9A%3C%2FP%3E%3CP%3Ecaam%201700000.crypto%EF%BC%9Acaam%20pkc%20%E7%AE%97%E6%B3%95%E5%B7%B2%E5%9C%A8%20%2Fproc%2Fcrypto%20%E4%B8%AD%E6%B3%A8%E5%86%8C%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%EF%BC%9Arsa-caam%20%E4%BD%8D%E4%BA%8E%20%2Fproc%2Fcrypto%20%E4%B8%AD%3C%2FP%3E%3CP%3E%E8%B7%AF%E9%9A%9C%3CBR%20%2F%3E1.%E5%86%85%E6%A0%B8%E9%85%8D%E7%BD%AE%20(Kconfig)%20%E9%97%AE%E9%A2%98%3C%2FP%3E%3CP%3E%E6%88%91%E6%97%A0%E6%B3%95%E5%90%AF%E7%94%A8%20CONFIG_CRYPTO_USER_API_ACCIPHER%3Dy%E3%80%82%3C%2FP%3E%3CP%3E%E5%AE%83%E6%B2%A1%E6%9C%89%E5%87%BA%E7%8E%B0%E5%9C%A8%20menuconfig%20%E4%B8%AD%E3%80%82%3C%2FP%3E%3CP%3E%E5%9C%A8%E7%89%88%E6%9C%AC%E8%BF%87%E7%A8%8B%E4%B8%AD%EF%BC%8C.config%20%E4%B8%AD%E7%9A%84%E6%89%8B%E5%8A%A8%E8%BE%93%E5%85%A5%E4%BC%9A%E8%A2%AB%E8%A6%86%E7%9B%96%E3%80%82%3C%2FP%3E%3CP%3E%E8%A6%81%E6%B1%82%EF%BC%9A%E8%A6%81%E5%85%AC%E5%BC%80%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%AF%86%E9%92%A5%E5%AF%86%E7%A0%81%E7%94%A8%E6%88%B7%20API%EF%BC%8C%E9%9C%80%E8%A6%81%E5%93%AA%E4%BA%9B%E7%A1%AE%E5%88%87%E7%9A%84%E9%9A%90%E8%97%8F%E4%BE%9D%E8%B5%96%E5%85%B3%E7%B3%BB%EF%BC%88%E9%80%89%E6%8B%A9%2F%E4%BE%9D%E8%B5%96%EF%BC%89%EF%BC%9F%3C%2FP%3E%3CP%3E2.%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%26amp%3B%20%E7%A1%AC%E4%BB%B6%E8%A7%84%E6%A0%BC%3C%2FP%3E%3CP%3ECONFIG_CRYPTO_DEV_FSL_CAAM_PKC%20%E6%98%AF%E5%90%A6%E6%98%AF%20LS1046A%20RSA%20%E5%8D%B8%E8%BD%BD%E7%9A%84%E6%9C%80%E7%BB%88%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%EF%BC%9F%3C%2FP%3E%3CP%3E%E9%99%A4%E4%BA%86%E6%A0%87%E5%87%86%E7%9A%84%20CAAM%20%E5%92%8C%20Job%20Ring%20%E8%8A%82%E7%82%B9%E4%B9%8B%E5%A4%96%EF%BC%8CPKC%20%E5%8D%95%E5%85%83%E6%98%AF%E5%90%A6%E9%9C%80%E8%A6%81%E5%BF%85%E9%9C%80%E7%9A%84%E8%AE%BE%E5%A4%87%E6%A0%91%20(DTS)%20%E8%8A%82%E7%82%B9%E6%88%96%E5%B1%9E%E6%80%A7%EF%BC%9F%3C%2FP%3E%3CP%3E3.OpenSSL%203.x%20%E9%9B%86%E6%88%90%3C%2FP%3E%3CP%3EOpenSSL%203.x%20%E5%BA%94%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%E6%89%8D%E8%83%BD%E9%80%9A%E8%BF%87%20AF_ALG%20%E4%BD%BF%E7%94%A8%20rsa-caam%EF%BC%9F%3C%2FP%3E%3CP%3E%E6%88%91%E6%AD%A3%E5%9C%A8%E5%AF%BB%E6%89%BE%E4%B8%80%E4%B8%AA%E6%9C%89%E6%95%88%E7%9A%84%20openssl.conf%20%E7%89%87%E6%AE%B5%E6%88%96%E5%88%9D%E5%A7%8B%E5%8C%96%E6%AD%A5%E9%AA%A4%EF%BC%8C%E4%BB%A5%E4%BE%BF%E5%9C%A8%E4%B8%8D%E4%BE%9D%E8%B5%96%20DPDK%20%E5%A0%86%E6%A0%88%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E5%B0%86%20OpenSSL%20%E6%8F%90%E4%BE%9B%E7%A8%8B%E5%BA%8F%2F%E5%BC%95%E6%93%8E%E4%B8%8E%20CAAM%20%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%90%8E%E7%AB%AF%E8%BF%9E%E6%8E%A5%E8%B5%B7%E6%9D%A5%E3%80%82%3C%2FP%3E%3CP%3E%E9%97%AE%E9%A2%98%E6%91%98%E8%A6%81%3C%2FP%3E%3CP%3E%E5%BF%85%E9%A1%BB%E5%90%AF%E7%94%A8%E5%93%AA%E4%BA%9B%20Kconfig%20%E7%AC%A6%E5%8F%B7%E6%89%8D%E8%83%BD%E9%80%89%E6%8B%A9%20CONFIG_CRYPTO_USER_API_AKCIPHER%EF%BC%9F%3C%2FP%3E%3CP%3ELS1046A%20%E4%B8%8A%E7%9A%84%20CAAM%20PKC%20%E6%A8%A1%E5%9D%97%E6%98%AF%E5%90%A6%E6%9C%89%E7%89%B9%E5%AE%9A%E7%9A%84%20DTS%20%E8%A6%81%E6%B1%82%EF%BC%9F%3C%2FP%3E%3CP%3EOpenSSL%203.x%20%E4%BD%BF%E7%94%A8%20rsa-caam%20%E7%9A%84%E6%8E%A8%E8%8D%90%E8%B7%AF%E5%BE%84%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%88AF_ALG%20%E4%B8%8E%E7%89%B9%E5%AE%9A%E6%81%A9%E6%99%BA%E6%B5%A6%E6%8F%90%E4%BE%9B%E7%A8%8B%E5%BA%8F%EF%BC%89%EF%BC%9F%3C%2FP%3E%3CP%3ELSDK%20%E7%89%88%E6%9C%AC%2025.06%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2348381%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3EQorIQ%20LS1%E8%AE%BE%E5%A4%87%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2356232%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Enabling%20CAAM%20RSA%20Hardware%20Offload%20via%20User-Space%20(AF_ALG)%20on%20LS1046ARDB%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2356232%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%88%91%E5%88%9A%E4%BB%8E%20AE%20%E5%9B%A2%E9%98%9F%E5%BE%97%E5%88%B0%E7%A1%AE%E8%AE%A4%E3%80%82%3C%2FP%3E%0A%3CP%3E%E7%9B%AE%E5%89%8D%EF%BC%8CLinux%20kennel%20%E4%B8%8D%E6%94%AF%E6%8C%81%E9%80%9A%E8%BF%87%20AF_ALG%20%E6%8F%90%E4%BE%9B%E7%9A%84%E9%9D%9E%E5%AF%B9%E7%A7%B0%20API%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CA%20class%3D%22external-link%22%20href%3D%22https%3A%2F%2Fwww.kernel.org%2Fdoc%2Fhtml%2Flatest%2Fcrypto%2Fuserspace-if.html%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fwww.kernel.org%2Fdoc%2Fhtml%2Flatest%2Fcrypto%2Fuserspace-if.html%3C%2FA%3E%3C%2FP%3E%0A%3CDIV%20class%3D%22code%20panel%22%3E%0A%3CDIV%20class%3D%22codeContent%20panelContent%22%3E%0A%3CPRE%20class%3D%22code-java%22%3E%E5%86%85%E6%A0%B8%E5%8A%A0%E5%AF%86%20API%20%E5%8F%AF%E4%BB%8E%E7%94%A8%E6%88%B7%E7%A9%BA%E9%97%B4%E8%AE%BF%E9%97%AE%E3%80%82%E7%9B%AE%E5%89%8D%E5%8F%AF%E8%AE%BF%E9%97%AE%E4%BB%A5%E4%B8%8B%E5%AF%86%E7%A0%81%EF%BC%9A%0A%E6%B6%88%E6%81%AF%E6%91%98%E8%A6%81%EF%BC%8C%E5%8C%85%E6%8B%AC%E5%AF%86%E9%92%A5%E6%B6%88%E6%81%AF%E6%91%98%E8%A6%81%EF%BC%88HMAC%E3%80%81CMAC%EF%BC%89%0A%E5%AF%B9%E7%A7%B0%E5%AF%86%E7%A0%81%0AAEAD%20%E5%AF%86%E7%A0%81%0A%3CSPAN%20class%3D%22code-object%22%3E%E9%9A%8F%E6%9C%BA%E6%95%B0%3C%2FSPAN%3E%E7%94%9F%E6%88%90%E5%99%A8%3C%2FPRE%3E%0A%3C%2FDIV%3E%0A%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2356253%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Enabling%20CAAM%20RSA%20Hardware%20Offload%20via%20User-Space%20(AF_ALG)%20on%20LS1046ARDB%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2356253%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%84%9F%E8%B0%A2%E6%82%A8%E5%AF%B9%20AF_ALG%20%E7%9A%84%E7%A1%AE%E8%AE%A4%E3%80%82%E7%94%B1%E4%BA%8E%E5%86%85%E6%A0%B8%E7%9A%84%20akcipher%20%E6%8E%A5%E5%8F%A3%E7%9B%AE%E5%89%8D%E5%8F%97%E5%88%B0%E9%99%90%E5%88%B6%EF%BC%8C%E6%88%91%E6%AD%A3%E5%9C%A8%E5%AF%BB%E6%89%BE%E5%AE%98%E6%96%B9%E6%8E%A8%E8%8D%90%E7%9A%84%E5%B0%86%20RSA%20%E5%8D%B8%E8%BD%BD%E5%88%B0%20rsa-caam%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%9B%BF%E4%BB%A3%E6%96%B9%E6%A1%88%E3%80%82%3C%2FP%3E%3COL%3E%3CLI%3E%3CP%3E%3CSTRONG%3Ecryptodev-linux%EF%BC%9A%3C%2FSTRONG%3E%E5%9C%A8%20LSDK%2025.06%20%E4%B8%AD%EF%BC%8C%E9%80%9A%E8%BF%87%20cryptodev-linux%20%E7%9A%84%20%2Fdev%2Fcrypto%20%E6%8E%A5%E5%8F%A3%E4%BB%8D%E7%84%B6%E6%98%AF%20RSA%20%E5%8D%B8%E8%BD%BD%E7%9A%84%E6%A0%87%E5%87%86%E8%B7%AF%E5%BE%84%E5%90%97%EF%BC%9F%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%3CSTRONG%3EOpenSSL%20%E6%8F%90%E4%BE%9B%E5%95%86%2F%E5%BC%95%E6%93%8E%EF%BC%9A%3C%2FSTRONG%3E%E6%81%A9%E6%99%BA%E6%B5%A6%E6%98%AF%E5%90%A6%E4%B8%BA%20LS1046A%20%E6%8F%90%E4%BE%9B%E7%9B%B4%E6%8E%A5%E4%B8%8E%20CAAM%20%E4%BD%9C%E4%B8%9A%E7%8E%AF%E8%B7%AF%E9%80%9A%E4%BF%A1%EF%BC%88%E7%BB%95%E8%BF%87%20AF_ALG%EF%BC%89%E7%9A%84%E6%9C%AC%E5%9C%B0%20OpenSSL%203.x%20%E6%8F%90%E4%BE%9B%E7%A8%8B%E5%BA%8F%EF%BC%9F%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%3CSTRONG%3E%E6%80%A7%E8%83%BD%EF%BC%9A%3C%2FSTRONG%3E%E5%A6%82%E6%9E%9C%E4%BD%BF%E7%94%A8%20cryptodev%EF%BC%8C%E4%B8%8E%E7%9B%B4%E6%8E%A5%E5%BC%95%E6%93%8E%E5%AE%9E%E7%8E%B0%E7%9B%B8%E6%AF%94%EF%BC%8C%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E5%B7%B2%E7%9F%A5%E7%9A%84%E7%93%B6%E9%A2%88%EF%BC%9F%3C%2FP%3E%3C%2FLI%3E%3C%2FOL%3E%3CP%3E%E6%88%91%E7%9A%84%E7%9B%AE%E6%A0%87%E6%98%AF%E9%80%9A%E8%BF%87%E4%BB%BB%E4%BD%95%E6%94%AF%E6%8C%81%E7%9A%84%E6%96%B9%E6%B3%95%E5%AE%9E%E7%8E%B0%E4%BB%8E%E7%94%A8%E6%88%B7%E7%A9%BA%E9%97%B4%20OpenSSL%20%E5%8D%B8%E8%BD%BD%20RSA-2048%2F4096%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E