{{위키데이터 속성 추적}}
'''크립토 API'''(Crypto API)는 [[리눅스 커널]]에서 사용하는 암호 프레임워크이며, [[IPsec]]과 dm-crypt와 같은 암호화된 데이터를 다루는 부분에서 사용한다. 리눅스 커널 버전 2.5.45에서 최초로 도입되었으며<ref>{{웹 인용
 | url = http://lwn.net/Articles/13587/
 | 제목 = Kernel development
 | year = 2002
 | accessdate = 2013-09-29
 | publisher = LWN.net
}}</ref> 자주 사용되는 [[블록 암호]]와 [[해시 함수]]를 포함하기 위해 확장되고 있다.

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

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

; AF_ALG
: 네트워크 소켓과 유사한 인터페이스로 접근할 수 있으며, 커널 내부 암호화 엔진에 접근하기 위한 <code>AF_ALG</code> 주소 형식을 지원한다.<ref>{{웹 인용
 |last=Edge
 |first=Jake
 |제목=A netlink-based user-space crypto API
 |url=http://lwn.net/Articles/410763/
 |publisher=LWN.net
 |accessdate=2011-11-29
 |date=2010-10-20
}}</ref> 리눅스 커널 버전 2.6.38에 통합되었다.<ref>[http://kernelnewbies.org/Linux_2_6_38#head-6bd372b9e646453417be976d4ff1f31086429b7a Linux_2_6_38 changes]</ref><ref>[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=03c8efc1ffeb6b82a22c1af8dd908af349563314 03c8efc]{{깨진 링크|url=http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git%3Ba%3Dcommitdiff%3Bh%3D03c8efc1ffeb6b82a22c1af8dd908af349563314 }}
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=fe869cdb89c95d060c77eea20204d6c91f233b53 fe869cd]{{깨진 링크|url=http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git%3Ba%3Dcommitdiff%3Bh%3Dfe869cdb89c95d060c77eea20204d6c91f233b53 }}
[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=8ff590903d5fc7f5a0a988c38267a3d08e6393a2 8ff5909]{{깨진 링크|url=http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git%3Ba%3Dcommitdiff%3Bh%3D8ff590903d5fc7f5a0a988c38267a3d08e6393a2 }}</ref> OpenSSL에서 AF_ALG를 지원하기 위한 플러그인이 존재하며, OpenSSL에 통합되기 위해서 버그 트래커에 올라왔으나 2016년에 거절되었다.<ref>{{웹 인용
 |name=Markus
 |제목=#2554: Patch: AF_ALG dynamic engine for linux >= 2.6.38
 |url=http://rt.openssl.org/Ticket/Display.html?id=2554&user=guest&pass=guest
 |work=[[OpenSSL]]
 |accessdate=2016-04-25
 |authorlink=nepenthesdev at gmail.com
 |date=2011-07-03
 |archive-date=2016-04-09
 |archive-url=https://web.archive.org/web/20160409124238/https://rt.openssl.org/Ticket/Display.html?id=2554&user=guest&pass=guest
 }}</ref>

; cryptodev
: OpenBSD 암호화 프레임워크 인터페이스인 /dev/crypto를 리눅스로 이식한 코드가 있지만<ref>{{웹 인용
 |last=Ludvig
 |first=Michal
 |제목=CryptoDev for Linux
 |url=http://www.logix.cz/michal/devel/cryptodev/
 |accessdate=2011-11-29
}}</ref><ref>{{웹 인용
 |last         = Mavrogiannopoulos
 |first        = Nikos
 |제목       = cryptodev-linux
 |url          = http://home.gna.org/cryptodev-linux/
 |accessdate   = 2012-01-12
 |보존url    = https://web.archive.org/web/20120320070655/http://home.gna.org/cryptodev-linux/
 |보존날짜 = 2012-03-20
 |url-status = dead
}}</ref><ref>{{웹 인용
 |last=Edge
 |first=Jake
 |제목=An API for user-space access to kernel cryptography
 |url=http://lwn.net/Articles/401548/
 |publisher=LWN.net
 |accessdate=2011-12-29
 |date=2010-08-25
}}</ref> 리눅스 커널에 통합되지는 않았다.

== 같이 보기 ==
* [[마이크로소프트 크립토API]]

== 각주 ==
{{각주|30em}}

{{리눅스 커널}}

[[분류:API]]
[[분류:암호 소프트웨어]]
[[분류:리눅스 커널 특징]]
[[분류:리눅스 보안 소프트웨어]]