← Documents Documentation/crypto/api-skcipher.rst GitHub 원문 ↗

Linux 6.18.37 · Crypto

Symmetric Key Cipher

블록 암호 알고리즘 정의, skcipher transform과 비동기 request API, 단일 블록 cipher API를 연결하는 kernel-doc 참조입니다.

Source pathDocumentation/crypto/api-skcipher.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

api-skcipher.rst:1-38

이 문서는 Linux Crypto API의 대칭 키 암호 계층을 세 부분으로 정리합니다. 구현 측의 블록 암호 알고리즘 정의, 사용자 측의 skcipher transform 및 request 인터페이스, 내부 사용자를 위한 단일 블록 cipher 인터페이스입니다.

일반적인 skcipher 흐름은 transform 할당, 키 설정, request 할당, callback과 scatterlist·IV 설정, 암호화 또는 복호화 호출, request와 transform 해제 순서입니다. 단일 블록 API는 mode나 scatterlist 처리 없이 한 블록을 직접 변환해야 하는 내부 코드에 해당합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 Symmetric Key Cipher
2 ====================
3
4 Block Cipher Algorithm Definitions
5 ----------------------------------
6
7 .. kernel-doc:: include/linux/crypto.h
8 :doc: Block Cipher Algorithm Definitions
9
10 .. kernel-doc:: include/linux/crypto.h
11 :functions: crypto_alg cipher_alg compress_alg
12
13 Symmetric Key Cipher API
14 ------------------------
15
16 .. kernel-doc:: include/crypto/skcipher.h
17 :doc: Symmetric Key Cipher API
18
19 .. kernel-doc:: include/crypto/skcipher.h
20 :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
21
22 Symmetric Key Cipher Request Handle
23 -----------------------------------
24
25 .. kernel-doc:: include/crypto/skcipher.h
26 :doc: Symmetric Key Cipher Request Handle
27
28 .. kernel-doc:: include/crypto/skcipher.h
29 :functions: crypto_skcipher_reqsize skcipher_request_set_tfm skcipher_request_alloc skcipher_request_free skcipher_request_set_callback skcipher_request_set_crypt
30
31 Single Block Cipher API
32 -----------------------
33
34 .. kernel-doc:: include/crypto/internal/cipher.h
35 :doc: Single Block Cipher API
36
37 .. kernel-doc:: include/crypto/internal/cipher.h
38 :functions: crypto_alloc_cipher crypto_free_cipher crypto_has_cipher crypto_cipher_blocksize crypto_cipher_setkey crypto_cipher_encrypt_one crypto_cipher_decrypt_one
39

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