크립토 API (리눅스)

크립토 API(Crypto API)는 리눅스 커널에서 사용하는 암호 프레임워크이며, IPsec과 dm-crypt와 같은 암호화된 데이터를 다루는 부분에서 사용한다. 리눅스 커널 버전 2.5.45에서 최초로 도입되었으며[1] 자주 사용되는 블록 암호해시 함수를 포함하기 위해 확장되고 있다.

사용자 공간 인터페이스 편집

암호화 함수 및 해시 함수를 제공하는 플랫폼은 크게 두 가지 방식으로 나눌 수 있다. 명령어 집합 구조 자체에 암호화 및 해시 함수를 포함시켜서 커널 공간이나 사용자 공간에 있는 모든 프로그램에서 사용할 수 있도록 한 방식과, 프로세서 내부의 장치를 통해서 접근하며 OpenSSL, GnuTLS 등 사용자 공간에서는 커널 드라이버를 통해 접근해야 하는 방식이다. 명령어 집합 자체에 암호화 및 해시 함수가 포함되어 있는 프로세서는 인텔과 AMD의 AES-NI이며, 커널 드라이버를 사용하는 프로세서는 마벨 Kirkwood 및 AMD 지오드 프로세서이다.

크립토 API에서 제공하는 사용자 공간 인터페이스는 다음과 같다.

AF_ALG
네트워크 소켓과 유사한 인터페이스로 접근할 수 있으며, 커널 내부 암호화 엔진에 접근하기 위한 AF_ALG 주소 형식을 지원한다.[2] 리눅스 커널 버전 2.6.38에 통합되었다.[3][4] OpenSSL에서 AF_ALG를 지원하기 위한 플러그인이 존재하며, OpenSSL에 통합되기 위해서 버그 트래커에 올라왔으나 2016년에 거절되었다.[5]
cryptodev
OpenBSD 암호화 프레임워크 인터페이스인 /dev/crypto를 리눅스로 이식한 코드가 있지만[6][7][8] 리눅스 커널에 통합되지는 않았다.

같이 보기 편집

각주 편집

  1. “Kernel development”. LWN.net. 2002. 2013년 9월 29일에 확인함. 
  2. Edge, Jake (2010년 10월 20일). “A netlink-based user-space crypto API”. LWN.net. 2011년 11월 29일에 확인함. 
  3. Linux_2_6_38 changes
  4. 03c8efc[깨진 링크(과거 내용 찾기)] fe869cd[깨진 링크(과거 내용 찾기)] 8ff5909[깨진 링크(과거 내용 찾기)]
  5. “#2554: Patch: AF_ALG dynamic engine for linux >= 2.6.38”. 《OpenSSL》. 2011년 7월 3일. 2016년 4월 9일에 원본 문서에서 보존된 문서. 2016년 4월 25일에 확인함. 
  6. Ludvig, Michal. “CryptoDev for Linux”. 2011년 11월 29일에 확인함. 
  7. Mavrogiannopoulos, Nikos. “cryptodev-linux”. 2012년 3월 20일에 원본 문서에서 보존된 문서. 2012년 1월 12일에 확인함. 
  8. Edge, Jake (2010년 8월 25일). “An API for user-space access to kernel cryptography”. LWN.net. 2011년 12월 29일에 확인함.