맨위로가기

크립토 API (리눅스)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의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