크립토 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]
같이 보기
각주
- ↑ “Kernel development”. LWN.net. 2002. 2013년 9월 29일에 확인함.
- ↑ Edge, Jake (2010년 10월 20일). “A netlink-based user-space crypto API”. LWN.net. 2011년 11월 29일에 확인함.
- ↑ Linux_2_6_38 changes
- ↑ 03c8efc fe869cd 8ff5909
- ↑ “#2554: Patch: AF_ALG dynamic engine for linux >= 2.6.38”. 《OpenSSL》. 2011년 7월 3일. 2016년 4월 25일에 확인함.
- ↑ Ludvig, Michal. “CryptoDev for Linux”. 2011년 11월 29일에 확인함.
- ↑ Mavrogiannopoulos, Nikos. “cryptodev-linux”. 2012년 1월 12일에 확인함.
- ↑ Edge, Jake (2010년 8월 25일). “An API for user-space access to kernel cryptography”. LWN.net. 2011년 12월 29일에 확인함.