크립토 API (리눅스)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
크립토 API (리눅스)는 리눅스 시스템에서 암호화 및 해시 함수를 제공하는 사용자 공간 인터페이스를 의미한다. 명령어 집합 구조를 통해 접근하거나, 커널 드라이버를 통해 접근하는 방식으로 나뉜다. 사용자 공간 인터페이스로는 AF_ALG와 cryptodev가 있다. AF_ALG는 네트워크 소켓과 유사한 방식으로 커널 내부 암호화 엔진에 접근하며, 리눅스 커널 2.6.38에 통합되었다. cryptodev는 OpenBSD의 /dev/crypto 인터페이스를 리눅스로 이식한 코드이나, 리눅스 커널에는 통합되지 않았다.
더 읽어볼만한 페이지
- 리눅스 커널 특징 - 커널 기반 가상 머신
커널 기반 가상 머신(KVM)은 리눅스 커널의 가상화 확장 기능으로, CPU와 메모리 가상화를 지원하며 QEMU와 함께 완전한 가상화 솔루션을 구성하고 다양한 관리 도구를 제공한다. - 리눅스 커널 특징 - AppArmor
AppArmor는 리눅스 보안 모듈로, 프로그램의 정상적인 동작을 정의하는 프로필을 통해 비정상적인 행위를 차단하며 SELinux의 대안으로 제시되었으나 보안 취약점, 성능, 설정, 호환성 등에 대한 논란도 있다. - 리눅스 보안 소프트웨어 - GNU 프라이버시 가드
GNU 프라이버시 가드는 붸르너 코흐가 개발한 공개 키 암호 방식 기반의 암호화 소프트웨어로, PGP와 호환되며 OpenPGP 표준을 준수하고 다양한 운영체제에서 사용 가능하다. - 리눅스 보안 소프트웨어 - AppArmor
AppArmor는 리눅스 보안 모듈로, 프로그램의 정상적인 동작을 정의하는 프로필을 통해 비정상적인 행위를 차단하며 SELinux의 대안으로 제시되었으나 보안 취약점, 성능, 설정, 호환성 등에 대한 논란도 있다. - 암호 소프트웨어 - OpenSSL
OpenSSL은 1998년에 설립된 암호화 도구 프로젝트로, 다양한 암호화 알고리즘과 프로토콜을 지원하며, 아파치 라이선스를 채택했고, 보안 문제와 API 호환성 문제 등의 비판을 받았다. - 암호 소프트웨어 - I2P
I2P는 2003년 Freenet에서 분기된 익명 P2P 분산 통신 계층으로, IP 주소 노출을 방지하며 다양한 소프트웨어와 익명성 응용 프로그램을 지원하고, 기부금으로 운영되며 6~8주마다 릴리스를 진행한다.
크립토 API (리눅스) | |
---|---|
개요 | |
유형 | 커널 API |
운영체제 | 리눅스 (커널) |
라이선스 | GNU GPL 버전 2 |
상태 | 활성 |
사용 언어 | C |
상세 정보 | |
기능 | 대칭 암호 비대칭 암호 해시 MAC 난수 생성기 |
위치 | `include/crypto/` 및 `crypto/` 디렉토리 |
종속성 | OpenSSL (선택 사항) |
인터페이스 | CMS GSSAPI IPsec TLS/SSL |
관련 기술 | dm-crypt loop-AES TrueCrypt |
추가 정보 | |
외부 링크 | 리눅스 커널 공식 웹사이트 OpenSSL 공식 웹사이트 |
2. 사용자 공간 인터페이스
암호화 함수 및 해시 함수를 제공하는 플랫폼은 크게 두 가지 방식으로 나눌 수 있다. 하나는 명령어 집합 구조 자체에 암호화 및 해시 함수를 포함시켜 커널 공간이나 사용자 공간에 있는 모든 프로그램에서 사용할 수 있도록 한 방식이고, 다른 하나는 프로세서 내부 장치를 통해 접근하며 OpenSSL, GnuTLS 등 사용자 공간에서는 커널 드라이버를 통해 접근해야 하는 방식이다.
크립토 API에서 제공하는 사용자 공간 인터페이스는 다음과 같다.
- AF_ALG: 네트워크 소켓과 유사한 인터페이스로, 커널 내부 암호화 엔진에 접근하기 위한 `AF_ALG` 주소 형식을 지원한다.[14]
- cryptodev: OpenBSD 암호화 프레임워크 인터페이스인 /dev/crypto를 리눅스로 이식한 것이다.[18][19][20]
2. 1. 명령어 집합 구조를 이용하는 방식
명령어 집합 구조 자체에 암호화 및 해시 함수를 포함시켜 커널 공간이나 사용자 공간에 있는 모든 프로그램에서 사용할 수 있도록 하는 방식이다. 대표적인 예시로 인텔과 AMD의 AES-NI가 있다.[14]많은 플랫폼은 AES 암호화의 하드웨어 가속을 제공하며, 다양한 칩셋의 명령어 집합 아키텍처(ISA) 확장을 통해 프로그램을 노출한다. (예: x86의 AES 명령어 집합) 이러한 종류의 구현을 통해 모든 프로그램(커널 모드 또는 유저 스페이스)이 이러한 기능을 직접 사용할 수 있다.
2. 2. 커널 드라이버를 이용하는 방식
프로세서 내부 장치를 통해 접근하며, 사용자 공간에서는 커널 드라이버를 통해 접근해야 하는 방식이다. OpenSSL, GnuTLS 등이 커널 드라이버를 통해 암호화 가속 기능을 활용한다.[2] 대표적인 예시로 마벨 Kirkwood 및 AMD 지오드 프로세서가 있다.2. 3. AF_ALG
네트워크 소켓과 유사한 인터페이스로 접근할 수 있으며, 커널 내부 암호화 엔진에 접근하기 위한 `AF_ALG` 주소 형식을 지원한다.[14] 리눅스 커널 버전 2.6.38에 통합되었다.[15][16] OpenSSL에서 AF_ALG를 지원하기 위한 플러그인이 존재했으나, 2016년에 OpenSSL 통합은 거절되었다.[17] OpenSSL 1.1.0 버전에서 인텔이 기여한 AF_ALG에 대한 또 다른 패치가 적용되었다.[8] wolfSSL은 AF_ALG를 지원한다.[9]2. 4. cryptodev
OpenBSD 암호화 프레임워크의 /dev/crypto 인터페이스를 리눅스로 이식한 코드가 있지만,[18][19][20] 리눅스 커널에 통합되지는 않았다. wolfSSL은 cryptodev를 지원한다.[9]참조
[1]
웹사이트
Kernel development
https://lwn.net/Arti[...]
LWN.net
2013-09-29
[2]
서적
Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security
Association for Computing Machinery
2017-10-30
[3]
웹사이트
A netlink-based user-space crypto API
https://lwn.net/Arti[...]
LWN.net
2010-10-20
[4]
문서
Linux_2_6_38 changes
http://kernelnewbies[...]
[5]
문서
https://git.kernel.o[...]
[6]
웹사이트
OpenSSL - AF_ALG
http://carnivore.it/[...]
2011-10-22
[7]
웹사이트
"#2554: Patch: AF_ALG dynamic engine for linux >= 2.6.38"
http://rt.openssl.or[...]
2011-07-03
[8]
웹사이트
ALG: Add AFALG engine
https://github.com/o[...]
2016-02-17
[9]
웹사이트
AF_ALG + Cryptodev-linux
https://www.wolfssl.[...]
2020-03-10
[10]
웹사이트
CryptoDev for Linux
http://www.logix.cz/[...]
2011-12-29
[11]
웹사이트
cryptodev-linux
http://home.gna.org/[...]
2012-01-12
[12]
웹사이트
An API for user-space access to kernel cryptography
https://lwn.net/Arti[...]
LWN.net
2010-08-25
[13]
웹인용
Kernel development
http://lwn.net/Artic[...]
LWN.net
2013-09-29
[14]
웹인용
A netlink-based user-space crypto API
http://lwn.net/Artic[...]
LWN.net
2010-10-20
[15]
문서
Linux_2_6_38 changes
http://kernelnewbies[...]
[16]
문서
http://git.kernel.or[...]
[17]
웹인용
"#2554: Patch: AF_ALG dynamic engine for linux >= 2.6.38"
http://rt.openssl.or[...]
2011-07-03
[18]
웹인용
CryptoDev for Linux
http://www.logix.cz/[...]
2011-11-29
[19]
웹인용
cryptodev-linux
http://home.gna.org/[...]
2012-01-12
[20]
웹인용
An API for user-space access to kernel cryptography
http://lwn.net/Artic[...]
LWN.net
2010-08-25
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com