dm-crypt는 리눅스 커널 2.6 버전 이후와 DragonFly BSD에서 사용되는 투명한 블록 장치 암호화 서브시스템이다. 이는 장치 매퍼(dm) 인프라의 일부이며, 커널의 Crypto API에서 제공하는 암호화 루틴을 사용한다. 이전 버전인 cryptoloop와 달리 dm-crypt는 워터마킹 공격을 방지하기 위해 XTS, LRW 및 ESSIV와 같은 고급 운영 모드를 지원하도록 설계되었다. 그 외에도 dm-crypt는 cryptoloop의 일부 신뢰성 문제를 해결한다.
dm-crypt는 장치 매퍼 타깃으로 구현되어 다른 장치 매퍼 변환 위에 적층될 수 있다. 따라서 전체 디스크(이동식 매체 포함), 디스크 파티션, 소프트웨어 RAID 볼륨, 논리 볼륨 및 파일을 암호화할 수 있다. 이는 파일 시스템, 스왑의 기반이 되거나 LVM 물리 볼륨으로 사용될 수 있는 블록 장치로 나타난다.
일부 리눅스 배포판은 루트 파일 시스템에서 dm-crypt 사용을 지원한다. 이러한 배포판은 initrd를 사용하여 정상적인 부팅 과정 이전에 콘솔에서 비밀구절을 입력하도록 하거나 스마트카드를 삽입하도록 요청한다.
dm-crypt 장치 매퍼 타깃은 완전히 커널 공간에 상주하며, 블록 장치의 암호화에만 관여하고 데이터 자체는 해석하지 않는다. 암호화된 볼륨을 생성 및 활성화하고 인증을 관리하기 위해 사용자 공간의 프론트엔드에 의존한다. 현재 최소 두 가지 프론트엔드인 cryptsetup과 cryptmount를 사용할 수 있다.
| 원저자 | Jana Saout, Clemens Fruhwirth, Milan Broz |
|---|---|
| 안정화 버전 | 2.8.7
/ 2026년 7월 22일 |
| 저장소 | https://gitlab.com/cryptsetup/cryptsetup |
| 프로그래밍 언어 | C |
| 운영 체제 | 유닉스 계열 |
| 플랫폼 | x86, x86-64, ARMv8, ARMv7, ppc64le, MIPS |
| 크기 | 7 MB |
| 언어 | 16개 언어 |
언어 목록 English, Portuguese, Chinese (Simplified), Czech, Danish, Dutch, Finnish, French, German, Italian, Japanese, Polish, Russian, Spanish, Swedish, Ukrainian | |
| 종류 | 디스크 암호화 소프트웨어 |
| 라이선스 | GPLv2 Sub-Libraries: LGPLv2.1+ |
cryptsetup 명령줄 인터페이스는 기본적으로 암호화된 볼륨에 어떠한 헤더도 기록하지 않으므로, 가장 기본적인 기능만 제공한다. 암호화 설정은 디스크를 마운트할 때마다 제공되어야 하며(보통 자동화된 스크립트와 함께 사용되지만), 볼륨당 하나의 키만 사용할 수 있다. 대칭 키 암호 키는 제공된 비밀구절에서 직접 도출된다.
"솔트"가 없기 때문에, 이 모드에서 cryptsetup을 사용하는 것은 LUKS를 사용하는 경우보다 보안성이 떨어진다. 하지만 cryptsetup의 단순함 덕분에 스마트카드 인증과 같은 타사 소프트웨어와 결합하여 사용하기에 유용하다.
cryptsetup은 또한 LUKS 온디스크 형식을 다루는 명령어도 제공한다. 이 형식은 키 관리 및 키 스트레칭(PBKDF2 사용)과 같은 추가 기능을 제공하며, 재부팅 후에도 암호화된 볼륨 구성을 기억한다.
cryptmount 인터페이스는 사용자가 필요할 때 dm-crypt 파일 시스템을 마운트 및 언마운트할 수 있도록 하는 "cryptsetup" 도구의 대안으로, 슈퍼유저가 장치를 구성한 후에는 슈퍼유저 권한이 필요하지 않다.
dm-crypt와 같은 디스크 암호화(볼륨 암호화) 소프트웨어가 추상적인 블록 장치의 투명한 암호화만을 다룬다는 사실은 큰 유연성을 제공한다. 즉, 운영체제가 지원하는 모든 디스크 기반 파일 시스템은 물론 스왑 공간을 암호화하는 데 사용할 수 있으며, 파일 시스템이 구현한 쓰기 배리어는 그대로 유지된다. 암호화된 볼륨은 디스크 파티션, 논리 볼륨, 전체 디스크 및 (루프 장치와 losetup 유틸리티를 통한) 파일 기반 디스크 이미지에 저장될 수 있다. dm-crypt는 RAID 볼륨 및 논리 볼륨 관리 물리 볼륨을 암호화하도록 구성할 수도 있다.
dm-crypt는 initrd를 통해 사전 부팅 인증을 제공하도록 구성할 수 있으며, 이를 통해 부트로더, 커널 및 initrd 이미지 자체를 제외한 컴퓨터의 모든 데이터를 암호화할 수 있다.
다른 디스크 암호화 소프트웨어처럼 예측 가능한 초기화 벡터와 함께 CBC(Cipher Block Chaining) 운영 모드를 사용하면 디스크가 워터마킹 공격에 취약해진다. 이는 공격자가 디스크에서 특별히 조작된 데이터의 존재를 탐지할 수 있음을 의미한다. 이전 버전의 이 문제를 해결하기 위해, dm-crypt는 디스크 암호화에 특화된 더 정교한 운영 모드를 포함했다. ESSIV(암호화된 솔트 섹터 초기화 벡터)에 대한 지원은 리눅스 커널 2.6.10 버전에, LRW는 2.6.20 버전에, XTS는 2.6.24 버전에 도입되었다. 광역 블록 디스크 암호화 알고리즘인 Adiantum은 5.0 버전에, AES 기반의 HCTR2는 6.0 버전에 추가되었다.
리눅스 Crypto API는 dm-crypt와 함께 사용할 수 있는 대부분의 대중적인 블록 암호와 해시 함수를 지원한다.
암호화된 파일 시스템 지원에는 LUKS(버전 1 및 2) 볼륨, loop-AES, 트루크립트/베라크립트(리눅스 커널 3.13 이후), 및 비트로커 암호화 NTFS(cryptsetup 2.3.0 이후)가 포함된다. 트루크립트/베라크립트(TCRYPT) 및 비트로커(BITLK) 지원은 커널 사용자 공간 암호화 API를 필요로 한다.
dm-crypt 및 LUKS로 암호화된 디스크는 사용된 파일 시스템이 윈도우에서 지원되는 경우(예: FAT/FAT32/NTFS), 이제는 중단된 FreeOTFE(구 DoxBox, LibreCrypt)를 사용하여 MS 윈도우 환경에서 접근 및 사용할 수 있다. 암호화된 Ext2 및 Ext3 파일 시스템은 Ext2Fsd 또는 소위 "Ext2 Installable File System for Windows"를 사용하여 지원된다. FreeOTFE도 이를 지원한다.
Cryptsetup/LUKS 및 필수 인프라는 DragonFly BSD 운영체제에도 구현되었다.