요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Symmetric Key Cipher
====================
Block Cipher Algorithm Definitions
----------------------------------
.. kernel-doc:: include/linux/crypto.h
:doc: Block Cipher Algorithm Definitions
.. kernel-doc:: include/linux/crypto.h
:functions: crypto_alg cipher_alg compress_alg
Symmetric Key Cipher API
------------------------
.. kernel-doc:: include/crypto/skcipher.h
:doc: Symmetric Key Cipher API
.. kernel-doc:: include/crypto/skcipher.h
:functions: crypto_alloc_skcipher crypto_free_skcipher crypto_has_skcipher crypto_skcipher_ivsize crypto_skcipher_blocksize crypto_skcipher_setkey crypto_skcipher_reqtfm crypto_skcipher_encrypt crypto_skcipher_decrypt
Symmetric Key Cipher Request Handle
-----------------------------------
.. kernel-doc:: include/crypto/skcipher.h
:doc: Symmetric Key Cipher Request Handle
.. kernel-doc:: include/crypto/skcipher.h
:functions: crypto_skcipher_reqsize skcipher_request_set_tfm skcipher_request_alloc skcipher_request_free skcipher_request_set_callback skcipher_request_set_crypt
Single Block Cipher API
-----------------------
.. kernel-doc:: include/crypto/internal/cipher.h
:doc: Single Block Cipher API
.. kernel-doc:: include/crypto/internal/cipher.h
:functions: crypto_alloc_cipher crypto_free_cipher crypto_has_cipher crypto_cipher_blocksize crypto_cipher_setkey crypto_cipher_encrypt_one crypto_cipher_decrypt_one
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
대칭 키 암호
1-3대칭 키 암호
블록 암호 알고리즘 정의
4-12블록 암호 알고리즘 정의
`include/linux/crypto.h`의 Block Cipher Algorithm Definitions 설명을 가져옵니다.
.. kernel-doc:: include/linux/crypto.h
:doc: Block Cipher Algorithm Definitions
`crypto_alg`, `cipher_alg`, `compress_alg` 구조체의 kernel-doc 설명을 가져옵니다. 이 정의들은 Crypto API에 등록되는 일반 알고리즘, 단일 블록 암호 연산, 압축 알고리즘 구현의 공통 형태를 기술합니다.
.. kernel-doc:: include/linux/crypto.h
:functions: crypto_alg cipher_alg compress_alg
대칭 키 암호 API
13-21대칭 키 암호 API
`include/crypto/skcipher.h`의 Symmetric Key Cipher API 설명을 가져옵니다.
.. kernel-doc:: include/crypto/skcipher.h
:doc: Symmetric Key Cipher API
`crypto_alloc_skcipher()`와 `crypto_free_skcipher()`는 skcipher transform을 할당하고 해제하며, `crypto_has_skcipher()`는 요청한 알고리즘의 사용 가능 여부를 확인합니다.
`crypto_skcipher_ivsize()`와 `crypto_skcipher_blocksize()`는 IV 및 블록 크기를 조회하고, `crypto_skcipher_setkey()`는 transform에 대칭 키를 설정합니다. `crypto_skcipher_reqtfm()`은 request에 연결된 transform을 반환합니다.
`crypto_skcipher_encrypt()`와 `crypto_skcipher_decrypt()`는 준비된 request에 대해 각각 암호화와 복호화를 시작합니다.
.. kernel-doc:: include/crypto/skcipher.h
:functions: crypto_alloc_skcipher crypto_free_skcipher crypto_has_skcipher crypto_skcipher_ivsize crypto_skcipher_blocksize crypto_skcipher_setkey crypto_skcipher_reqtfm crypto_skcipher_encrypt crypto_skcipher_decrypt
대칭 키 암호 request handle
22-30대칭 키 암호 request handle
`include/crypto/skcipher.h`의 Symmetric Key Cipher Request Handle 설명을 가져옵니다.
.. kernel-doc:: include/crypto/skcipher.h
:doc: Symmetric Key Cipher Request Handle
`crypto_skcipher_reqsize()`는 알고리즘별 request context 크기를 조회합니다. `skcipher_request_set_tfm()`은 request에 transform을 지정하고, `skcipher_request_alloc()`과 `skcipher_request_free()`는 request 객체의 수명 주기를 관리합니다.
`skcipher_request_set_callback()`은 비동기 완료 callback과 관련 데이터를 설정합니다. `skcipher_request_set_crypt()`는 source·destination scatterlist, 처리할 byte 수, IV를 request에 연결합니다.
.. kernel-doc:: include/crypto/skcipher.h
:functions: crypto_skcipher_reqsize skcipher_request_set_tfm skcipher_request_alloc skcipher_request_free skcipher_request_set_callback skcipher_request_set_crypt
단일 블록 암호 API
31-38단일 블록 암호 API
`include/crypto/internal/cipher.h`의 Single Block Cipher API 설명을 가져옵니다.
.. kernel-doc:: include/crypto/internal/cipher.h
:doc: Single Block Cipher API
`crypto_alloc_cipher()`와 `crypto_free_cipher()`는 단일 블록 cipher transform을 관리하고, `crypto_has_cipher()`는 알고리즘 존재 여부를 확인합니다. `crypto_cipher_blocksize()`는 고정 블록 크기를 반환하며 `crypto_cipher_setkey()`는 키를 설정합니다.
`crypto_cipher_encrypt_one()`과 `crypto_cipher_decrypt_one()`은 각각 정확히 한 블록을 암호화하거나 복호화합니다.
.. kernel-doc:: include/crypto/internal/cipher.h
:functions: crypto_alloc_cipher crypto_free_cipher crypto_has_cipher crypto_cipher_blocksize crypto_cipher_setkey crypto_cipher_encrypt_one crypto_cipher_decrypt_one
요약과 해설
api-skcipher.rst:1-38이 문서는 Linux Crypto API의 대칭 키 암호 계층을 세 부분으로 정리합니다. 구현 측의 블록 암호 알고리즘 정의, 사용자 측의 skcipher transform 및 request 인터페이스, 내부 사용자를 위한 단일 블록 cipher 인터페이스입니다.
일반적인 skcipher 흐름은 transform 할당, 키 설정, request 할당, callback과 scatterlist·IV 설정, 암호화 또는 복호화 호출, request와 transform 해제 순서입니다. 단일 블록 API는 mode나 scatterlist 처리 없이 한 블록을 직접 변환해야 하는 내부 코드에 해당합니다.