Linux build with gcc
CodeQL scan
Coverity Scan Build Status
OpenSSF Scorecard
인텔(Intel) QuickAssist Technology Library (QATlib)
목차
개정 이력 (Revision History)
| 날짜 | 문서 개정일 | 버전 | 세부 내용 |
|---|
| 2026년 8월 | 020 | 26.08 | - Dictionary, Z-Standard, 및 KPT 기능을 포함하여 QAT Gen6 6xxx 장치에 대한 지원을 추가했으며, 관련 샘플 코드도 함께 제공했습니다. <br> - 2MB hugepages를 활성화하기 위해 환경 변수 QAT_MAX_2M_HPG_PER_PROCESS를 도입했습니다. <br> - 모든 QATlib 지원 장치에서 EPOLL coalesce 타이머 지원을 도입했습니다. <br> - 속도 제한 기능과 관련된 장치 관리를 위한 sla_mgr 스크립트를 추가했습니다. <br> - 6xxx 장치에 대한 기능 및 제한 사항을 업데이트했습니다. <br> - QAT20-42511, QATE-105912 및 QAT20-42018을 해결된 이슈로 이동시켰습니다. |
| ... | | | |
개요 (Overview)
Intel(R) QuickAssist Technology (Intel(R) QAT)는 보안, 인증 및 압축 서비스를 CPU에서 오프로드(offloading)하기 위한 하드웨어 가속(Hardware Acceleration)을 제공하여, 표준 플랫폼 솔루션의 성능과 효율성을 크게 향상시킵니다.
이 서비스에는 대칭 암호화 및 인증, 비대칭 암호화(디지털 서명, RSA, DH, ECC 포함), 그리고 무손실 데이터 압축 기능이 포함됩니다.
이 패키지는 사용자 공간 라이브러리를 제공하여 Intel(R) QuickAssist 장치에 접근할 수 있게 하며, Intel(R) QuickAssist API와 샘플 코드를 노출합니다.
기능 (Features)
QuickAssist API를 통해 qatlib에서 사용할 수 있는 서비스는 다음과 같습니다:
-
대칭(벌크) 암호화 (Symmetric (Bulk) Cryptography)
- 암호 알고리즘 (Ciphers): AES-ECB, AES-CBC, AES-CTR (부분 지원 불가), AES-XTS (부분 지원 불가), AES-GCM, AES-CCM (192/256), SM4-ECB, SM4-CBC, SM4-CTR)
- 메시지 다이제스트/해시 (Message digest/hash): (SHA1, SHA2 (224/256/384/512), SHA3 (224/256/384/512) (부분 지원 불가), SM3) 및 인증(authentication): (AES-CBC-MAC, AES-XCBC-MAC, AES-CMAC-128)
- 알고리즘 체이닝 (Algorithm chaining): (단일 작업에서 하나의 암호화 알고리즘과 하나의 해시 함수 사용)
- 인증된 암호화 (Authenticated encryption): (CCM-128 (부분 지원 불가), GCM (128/192/256) (부분 지원 불가), GMAC (부분 지원 불가) 및 ChaCha20-Poly1305)
-
키 생성 (KeyGen)
-
비대칭(공개 키) 암호화 (Asymmetric (Public Key) Cryptography)
- 최대 8192비트까지의 모듈러 지수화 및 모듈러 역변환
- Diffie-Hellman (DH) 키 생성 단계 1 및 2 (최대 8192비트)
- RSA 키 생성, 암호화/복호화 및 디지털 서명 생성/검증 (최대 8192비트)
- DSA 매개변수 생성 및 디지털 서명 생성/검증
- 타원 곡선 암호화 (Elliptic Curve Cryptography): ECDSA, ECDHE, Edwards Montgomery curves
- 일반 포인트 곱셈 (Generic point multiply)
- SM2
-
압축 (Compression)
- Deflate
- lz4/lz4s
- 압축 및 검증 (Compress and Verify, CnV)
- 압축 및 검증 및 복구 (Compress and Verify and Recover, CnVnR)
- 종단 간(End-to-end, E2E) 무결성 검사
- DC compressBound API
- DC NS (No Session) API
-
키 보호 기술 (Key Protection Technology, KPT)
-
런타임 구성 (Runtime configuration)
- EPOLL/POLL 모드 구성
- EPOLL 병합 타이머 지속 시간 구성
-
큐 페어 최적화 (Queue Pair optimization)
-
활성화 시, --enable-icp-without-qp-submission-lock은 제출 경로와 수신 경로 모두에 적용됩니다.
-
압축 체이닝 (Deflate 전용)
-
QAT Gen6 6xxx 전용 API 및 동작 기능
- 차분 전력 분석 (DPA) 측면 채널 보호 API
- 최적 자동 선택 (ASB) API
- 사전 지원, compressBound() API를 포함한 Z-Standard 압축 알고리즘
- 사전을 이용한 프로그래밍 가능한 CRC64
- 독립형 서비스로서의 압축 해제
- 모든 알고리즘을 포함하는 체이닝 모드
- 압축 후 암호화 및 체크섬 계산
- 복호화 후 압축 해제 및 체크섬 계산
- 해시 후 압축 체이닝 사용 사례를 이용한 체크섬 계산
- 압축 결정론(Compression determinism)
-
무선 알고리즘 (QAT GEN 5 장치에서 지원)
- 암호 (Cipher): SNOW3G-UEA2, ZUC-128, AES-F8
- 메시지 다이제스트/해시: SNOW3G-UIA2, ZUC-128 및 인증: AES-CMAC-128, AES-CMAC-192, AES-CMAC-256
이 패키지는 다음을 포함합니다:
- libqat: vfio 커널 드라이버를 통해 노출되는 QAT 장치를 위한 사용자 공간 라이브러리
- libusdm: 메모리 관리를 위한 사용자 공간 라이브러리
- qatmgr: 장치 관리를 위한 사용자 공간 데몬
- sla_mgr: 서비스 수준 계약 (SLA) 관리 스크립트
- 샘플 코드: 라이브러리 사용법 시연용
보안에 취약한 알고리즘 (Insecure Algorithms)
The 다음 알고리즘들은 보안에 취약하다고 간주되어 기본적으로 비활성화됩니다.
- AES-ECB
- SHA-1
- SHA2-224
- SHA3-224
- RSA512/1024/1536
- DSA
- Diffie-Hellman
- 256비트 미만의 타원 곡선 암호화 (Elliptic Curve Cryptography) 알고리즘
- SM4-ECB
이러한 알고리즘을 활성화하려면 다음 구성 옵션을 사용하십시오:
--enable-legacy-algorithms
사용 중단된 기능 및 계획된 사용 중단 (Deprecated Features & Planned Deprecations)
- 다음 구성 옵션은 사용 중단으로 표시되었으며 향후 릴리스에서 제거될 예정입니다:
--enable-legacy-lib-names
설정 (Setup)
라이브러리 설치에 대한 자세한 내용은 INSTALL을 참조하십시오.
지원되는 장치
- 4xxx, 401xx 및 402xx (QAT GEN 4 장치)
- 420xx (QAT GEN 5 장치)
- 6xxx (QAT GEN 6 장치)
이전 세대의 QAT 장치(예: c6xx, dh895xxcc 등)는 지원되지 않습니다. 지원되는 장치에 대한 자세한 정보는 QATlib 사용자 가이드를 참조하십시오.
제한 사항
- 단순화를 위해 qatlib은 하나의 구성 파일만 사용합니다. 이 파일을 프로세스 리소스 할당에 사용하는 방법에 대한 지침은 QATlib 사용자 가이드의 '구성 및 튜닝(Configuration and Tuning)' 섹션을 참조하십시오.
다음 기능들은 현재 지원되지 않습니다:
-
동적 인스턴스 (Dynamic instances)
-
엔드포인트당 16개 이상의 프로세스 (최대치 16개)
-
autoSelectBestHuffmanTree와 결합된 accumulateXXHash
-
압축 해제(Decompression) 또는 통합 세션(Combined sessions)에서의 accumulateXXHash
-
2MB의 Hugepage만 지원됩니다. 클라이언트는 Hugepages가 활성화된 상태에서 단일 할당으로 2MB를 초과하여 할당할 수 없습니다.
- 2MB Hugepages를 사용하려면 환경 변수
QAT_MAX_2M_HPG_PER_PROCESS를 구성해야 합니다. 구성하지 않은 경우, 시스템은 4KB 할당 경로의 기본값을 사용합니다.
-
QAT GEN 6 장치에서:
- 암호화 서비스 제한 사항 (Crypto service limitations):
- 지원되는 알고리즘은 AES-CTR, AES-GCM, AES-XTS 및 Chacha-Poly만 있습니다.
- 해시-암호 체이닝(Hash-Cipher chaining)은 AES-GCM과 Chacha-Poly에서만 지원됩니다.
- 192비트 키 크기는 지원되지 않습니다.
- 부분 패킷 처리(partial packet processing)는 지원되지 않습니다.
- HKDF가 지원되지 않습니다.
- 키 생성(KeyGen)이 지원되지 않습니다.
- 다이제스트 자르기(digest truncation)가 지원되지 않습니다.
- 중첩 해싱(nested hashing)이 지원되지 않습니다.
- 압축 서비스 제한 사항 (Compression service limitations):
- 체크섬 시딩(checksum seeding)이 지원되지 않아, 작업 전반에 걸쳐 체크섬을 누적하는 것이 불가능합니다.
- 정적 deflate가 지원되지 않습니다.
- 압축 방향에서는 최대 블록 크기로 64KB만 지원됩니다.
-
압축 및 검증 및 복구(Compress and Verify and Recover, CnVnR) 지원 안 함
환경 가정 (Environmental Assumptions)
다음 가정이 배포 환경에 적용됩니다:
- 동일한 처리 도메인 내의 사용자는 신뢰할 수 있어야 합니다. 즉, 같은 호스트 또는 같은 가상 머신 내에서 사용자들은 서로를 신뢰해야 합니다.
- 라이브러리는 해당 사용자가 'qat' 그룹에 포함된 경우 권한이 없는 사용자도 사용할 수 있습니다.
- DRAM은 신뢰 경계(trust boundary) 내부에 있는 것으로 간주됩니다. Intel 아키텍처 프로세서 및 메모리 컨트롤러, 그리고 운영 체제가 제공하는 일반적인 메모리 보호 방식들은 이러한 메모리 영역에 대한 무단 접근을 방지합니다.
- 지원되는 장치용 QuickAssist 커널 드라이버가 설치되어야 하며, 이 드라이버는 장치를 검색하고 초기화하여 VF(Virtual Functions)를 노출해야 합니다. 이 드라이버는 Linux 커널에 포함되어 있으며, 어떤 커널을 사용해야 하는지에 대한 정보는 QATlib 사용자 가이드를 참조하십시오.
예시 (Examples)
QAT API 사용을 보여주는 예제 애플리케이션은 패키지(quickassist/lookaside/access_layer/src/sample_code)에 포함되어 있습니다. 자세한 내용은 Intel® QuickAssist Technology API 프로그래머 가이드를 참조하십시오.
개방 이슈 (Open Issues)
Intel® QAT 소프트웨어와 관련된 알려진 문제들은 이 섹션에 설명되어 있습니다.
추가 에라타 정보 (Additional Errata Information):
이 섹션은 QATlib과 관련된 알려진 문제를 다루지만, QAT 커널 드라이버 및 펌웨어에 특정한 에라타 항목에 대한 정보를 찾는 사용자는 Intel QuickAssist Technology 문서를 참조할 수 있습니다. 이 추가 자료는 Intel QuickAssist Technology 사용에 관련될 수 있는 통찰력과 업데이트를 제공합니다.
알려진 오류 - 리눅스 펌웨어 및 커널 모듈
이슈 제목은 다음 패턴을 따릅니다:
여기서 <컴포넌트>는 다음 중 하나입니다:
- CY - 암호화(Cryptographic)
- DC - 압축(Compression)
- EP - 엔드포인트(Endpoint)
- GEN - 일반(General)
- SYM DP - 데이터 평면에서의 대칭 암호화(Symmetric Cryptography on Data Plane)
- SR-IOV - 단일 루트 I/O 가상화(Single Root I/O Virtualization)
- FW - 펌웨어(Firmware)
- PERF - 성능(Performance)
[단계]는 오류가 특정 장치 단계에 적용되는지 식별하는 선택적 한정자입니다.
QATE-102390
| 제목 | GEN – [error] validateConcurrRequest() - : Invalid numConcurrRequests |
| 참조 번호 | QATE-102390 |
| ... |
QATE-3241
| 제목 | CY - cpaCySymPerformOp when used with parameter checking may reveal the amount of padding |
| 참조 번호 | QATE-3241 |
| ... |
QATE-76073
| 제목 | GEN - If PF device configuration is modified without restarting qatmgr, undefined behavior may occur |
| 참조 번호 | QATE-76073 |
| ... |
해결된 이슈
Intel® QAT 소프트웨어와 관련된 해결된 이슈는 이 섹션에 설명되어 있습니다.