디스크 암호화 이론

Disk encryption theory

디스크 암호화는 저장 매체가 섹터 주소 지정 가능 장치(예: 하드 디스크)인 경우 유휴 데이터 보호의 특수한 경우다.이 글은 문제의 암호화된 측면을 제시한다.개요는 디스크 암호화를 참조하십시오.이 문제에 대한 다양한 소프트웨어 패키지 및 하드웨어 장치에 대한 자세한 내용은 디스크 암호화 소프트웨어디스크 암호화 하드웨어를 참조하십시오.

문제 정의

디스크 암호화 방법은 세 가지 고유한 속성을 제공하는 것을 목표로 함:

  1. 디스크의 데이터는 기밀로 유지되어야 한다.
  2. 데이터 검색과 저장은 데이터가 저장된 디스크에 상관없이 모두 빠른 작동이어야 한다.
  3. 암호화 방법은 디스크 공간을 낭비해서는 안 된다(즉, 암호화된 데이터에 사용되는 저장 용량은 일반 텍스트 크기보다 현저히 커서는 안 된다).

첫 번째 재산은 데이터가 기밀로 유지되고 있는 을 규정할 것을 요구한다.디스크 암호화 분야에서 연구된 가장 강력한 적들은 다음과 같은 능력을 가지고 있다.

  1. 언제라도 디스크의 원시 내용을 읽을 수 있다.
  2. 원하는 임의 파일을 암호화하고 저장하도록 디스크를 요청할 수 있다.
  3. 디스크에서 사용하지 않는 섹터를 수정한 다음 암호 해독을 요청할 수 있다.

그러한 적수가 시간이 지남에 따라 판단할 수 있는 유일한 정보는 해당 분야의 데이터가 마지막으로 살펴본 이후 변경되었는지 여부뿐이라면 좋은 기밀성을 제공한다.

두 번째 속성은 디스크를 512바이트(4096비트) 길이의 몇 의 섹터로 나누어야 하며, 이 섹터는 서로 독립적으로 암호화되고 해독된다.결과적으로, 데이터가 기밀로 유지되려면 암호화 방법이 수정되어야 한다. 정확히 같은 방식으로 두 분야를 처리해서는 안 된다.그렇지 않으면 상대방은 디스크의 사용되지 않는 섹터에 복사하여 디스크의 어떤 섹터도 해독할 수 있다.

세 번째 속성은 일반적으로 논란의 여지가 없다.그러나 스트림 암호는 보안을 위해 동일한 초기 상태를 두 번 사용하지 않도록 하기 때문에(다른 데이터로 섹터를 업데이트할 경우) 스트림 암호의 사용을 간접적으로 금지한다. 따라서 디스크의 모든 섹터에 대해 별도의 초기 상태를 저장하기 위한 암호화 방법이 필요할 것이다(즉, 이는 낭비일 수 있음).대안인 블록 암호는 특정 블록 크기(보통 128비트 또는 256비트)로 제한된다.이 때문에 디스크 암호화는 주로 암호화 블록 길이를 전체 디스크 섹터로 확장하는 체인 모드를 연구한다.이미 열거된 고려사항으로 인해 몇 가지 잘 알려진 체인 모드가 적합하지 않다. ECB 모드는 수정할 수 없으며 블록 암호를 CTR 모드와 같이 스트림 암호로 변환하는 모드.

이 세 가지 속성은 디스크 무결성에 대한 보증을 제공하지 않는다. 즉, 적수가 당신의 암호문을 수정했는지에 대해서는 말하지 않는다.부분적으로, 이것은 디스크 무결성에 대한 절대적인 보장이 불가능하기 때문이다: 어떤 일이 있어도, 적대자는 그러한 점검을 회피하면서 항상 디스크 전체를 이전 상태로 되돌릴 수 있다.절대적이지 않은 수준의 디스크 무결성을 원하는 경우 메시지 인증 코드를 사용하여 파일별로 암호화된 디스크 내에서 달성할 수 있다.

블록 암호 기반 모드

대부분의 암호화 방식과 마찬가지로, 블록 암호 기반 디스크 암호화는 암호자의 블록 크기(일반적으로 128비트)보다 더 많은 양의 데이터를 암호화할 수 있는 작동 모드를 이용한다.그러므로 모드는 암호자의 단일 블록 작동을 반복적으로 적용하는 방법에 대한 규칙이다.

CBC(암호 블록 체인)

CBC(Cipher-block chaining)는 암호화에 앞서 이전 블록의 암호문이 현재 블록의 일반 텍스트와 함께 XX되는 공통 체인 모드다.

번째 블록에 대한 "이전 블록의 암호문"이 없으므로 초기화 벡터(IV)를 - {-1로 사용해야 한다이는 결국 CBC를 어떤 면에서 흔들리게 만든다.

CBC는 몇 가지 문제로 고통받고 있다.예를 들어 IV가 예측 가능한 경우, 상대방은 디스크에 "워터마크(watermark)"를 남길 수 있다. 즉, 암호화 후에도 식별 가능한 특수하게 생성된 파일이나 파일 조합을 저장한다.정확한 워터마크의 구성방법은 IV를 제공하는 정확한 기능에 따라 다르지만, 일반적인 레시피는 첫 번째 b }와 2}}개의 동일한 두 개의 암호화된 섹터를 만드는 것이다 이 두 섹터는 b = 에 의해 서로 연관된다. 따라서 b }의 암호화는 }의 암호화와 동일하여 디스크에워터마크를 남긴다.그런 다음 디스크의 "동일-동일-동일-동일-동일-동일-동일-동일-동일-동일-동일-동일-동일-동일-동일-동일-동일-동일-동일-동일

워터마킹 공격으로부터 보호하기 위해 암호나 해시함수를 사용하여 키와 현재 섹터 번호로부터 IV를 생성하여 적수가 IV를 예측할 수 없도록 한다.특히 ESSIV 접근방식은 CTR 모드의 블록 암호를 사용하여 IV를 생성한다.

암호화된 소금 섹터 초기화 벡터(ESTIV)

ESSIV는[1] 디스크 암호화에 사용할 블록 암호화를 위한 초기화 벡터를 생성하는 방법이다.IV를 생성하는 일반적인 방법은 예를 들어 타임스탬프나 섹터 번호에 기초한 예측 가능한 숫자의 시퀀스이며 워터마크 공격과 같은 특정 공격을 허용한다.ESSIV는 섹터 번호 SN과 키의 해시를 조합하여 IV를 생성하여 그러한 공격을 방지한다.IV를 예측할 수 없게 만드는 것은 해시 형태의 키와의 결합이다.

ESSIV는 Clemens Fruhirth에 의해 설계되었으며, OpenB를 위한 IV를 생성하기 위해 유사한 계획이 사용되었지만 버전 2.6.10부터 Linux 커널에 통합되어 있다.2000년 이후 SD의 스왑 암호화.[2]

ESSIV는 dm-crypt[3] FreeOTFE 디스크 암호화 시스템에 의해 옵션으로 지원된다.

취약성 공격

CBC(ESSIV 유무)는 기밀성을 보장하지만, 암호화된 데이터의 무결성을 보장하지는 않는다.만약 일반 텍스트가 상대에게 알려지면, 매 두 번째 일반 텍스트 블록을 공격자가 선택한 값으로 변경할 수 있고, 그 사이에 있는 블록은 임의의 값으로 변경할 수 있다.이는 CBC 또는 CBC-ESTIV 모드에서 디스크 암호화에 대한 실제 공격에 사용할 수 있다.[4]

리스코프, 리베스트 및 바그너(LRW)

이러한 정교한 공격을 방지하기 위해, 트윗할 수 있는 좁은 블록 암호화(LRW와 XEX), 와이드 블록 암호화(CMC와 EME) 등 다양한 작동 방식이 도입되었다.

Whereas a purpose of a usual block cipher is to mimic a random permutation for any secret key , the purpose of tweakable encryption is to mimic a random permutation for any secret key and any known tweak 트위커블 좁은 블록 암호화(LRW)[5]는 리스크보프, 리베스트, 바그너가 도입한[6] 운영 방식을 인스턴스화한 것이다(정리 2 참조).이 모드는 두 개의 키를 사용한다: 블록 암호의 키이고 블록과 같은 크기의 추가 키이다.예를 들어 256비트 키를 가진 AES의 경우 (는) 256비트 숫자, (는) 128비트 숫자다.논리적 색인(트위크)을 사용하여 블록 암호화 은(는) 다음 공식을 사용한다.

여기서 곱하기 및 추가 addition은(는) 유한 필드( (2 ) }에서 수행된다AES의 경우 일부 사전 컴퓨팅의 경우 섹터당 하나의 곱셈만 필요하다(이항 유한 필드의 추가는 xor라고도 하는 단순한 비트 추가라는 점에 유의한다)., where are precomputed for all possible values of . This mode of operation needs only a single encryption per block and protects against all the above attacks except a minor leak: if the user changes a single plaintext block in a섹터 그러면 단일 암호 텍스트 블록만 변경된다.(이는 ECB 모드의 누출과 같지 않다는 점에 유의하십시오. LRW 모드에서는 서로 다른 위치에 있는 동일한 일반 텍스트가 다른 암호 텍스트로 암호화됨).

LRW에는 일부 보안 문제가 있으며, 이 운영 방식은 이제 XTS로 대체되었다.

LRW는 BestCrypt에 의해 사용되며 dm-cryptFreeOTFE 디스크 암호화 시스템의 옵션으로 지원된다.

Xor-암호화-xor(XEX)

또 다른 전환 가능한 암호화 모드인 XEX(xor-암호화-xor)는 Rogaway에[7] 의해 하나의 데이터 단위(예: 디스크 섹터) 내에서 (사용되는 암호에 관한) 연속 블록의 효율적인 처리를 가능하게 하도록 설계되었다.트위크는 섹터 내 블록의 섹터 어드레스와 지수의 조합으로 표현된다(로가웨이가[7] 제안한 원래의 XEX 모드는 여러 지수를 허용한다).암호 텍스트 는) 다음을 사용하여 얻는다.

여기서:

(는) 일반 텍스트로,
I(는) 섹터 번호로,
(는) 2 )의 원시 요소다다항식 에 의해 정의된 즉, 숫자 2
섹터 내의 블록 수입니다.

LRW 모드(AES 암호와 갈루아 필드 곱하기)의 기본 운영은 GCM(Galois/Counter Mode)에서 사용하는 것과 동일하므로 범용 LRW/XEX/GCM 하드웨어의 소형 구현이 가능하다.

XEX mode encryption.svg

XEX는 약점이 있다.[8]

XXTS(암호 텍스트 도용)가 있는 XEX 기반 트윗 코드북 모드

암호문 도용은 블록 크기에 의해 분리되지 않는 크기를 가진 섹터(예: 520바이트 섹터와 16바이트 블록)에 대한 지원을 제공한다.XTS-AES는 2007-12-19년에[9] IEEE P1619로 표준화되었다.[10]이 표준은 블록 암호화와 다른 IV 암호화를 위한 키 사용을 지원한다. 이는 XEX의 의도와 어긋나고 원본 XEX 용지의 오역에 뿌리를 둔 것으로 보이지만 보안에 해를 끼치지는 않는다.[11][7]이에 따라 AES-256과 AES-128 암호화를 원하는 사용자는 각각 512비트와 256비트의 키를 공급해야 한다.

XTS mode encryption.svg

2010년 1월 27일, NIST는 특별 간행물(SP) 800-38E를[12] 최종 형태로 발표했다.SP 800-38E는 암호 모듈에 대해 IEEE 규격 1619-2007에 의해 표준화된 XTS-AES 작동 모드에 대한 권장 사항이다.본 간행물은 IEEE 규격 1619-2007을 참조하여 AES 알고리즘의 XTS-AES 모드를 승인하며, 이 모드에는 암호화된 각 데이터 단위(일반적으로 섹터 또는 디스크 블록)의 최대 크기를 AES 블록 2개로20 제한하는 하나의 추가 요건이 적용된다.SP 800-38E에 따르면 "인증이나 액세스 제어가 없을 경우 XTS-AES는 암호화된 데이터의 무단 조작에 대해 다른 승인된 기밀유지 전용 모드보다 더 많은 보호를 제공한다"고 밝혔다.

XTS는 BestCrypt, Botan, NetBSD의 cgd,[13] dm-crypt, FreeOTFE, TrueCrypt, VeraCrypt,[14] DiskCryptor, FreeB가 지원SD겔리, 오픈BSD softraid Disk 암호화 소프트웨어, OpenSSL, Mac OS X LionFileVault 2, Windows 10BitLocker[15]WolfCrypt.

XTS의 약점

XTS 모드는 데이터 조작과 변조에 취약하며, 애플리케이션은 조작과 변조가 우려되는 경우 데이터 수정을 감지하는 조치를 취해야 한다. "...인증 태그가 없으므로 암호문(공격자에 의해 원본 또는 수정된)은 일부 일반 텍스트로 해독되고 비침입 메커니즘은 내장되지 않는다.ct 개조가장 좋은 방법은 암호문의 어떤 변경도 일반 텍스트를 완전히 무작위화시키고, 이러한 무작위 일반 텍스트를 탐지하고 폐기하기에 충분한 중복성을 그 일반 텍스트에 포함시키기 위해 이 변환을 사용하는 응용 프로그램에 의존하는 것이다.이를 위해서는 ZFS 또는 Btrfs에서처럼 디스크의 모든 데이터 및 메타데이터에 대한 체크섬을 유지해야 한다.그러나, ext4NTFS와 같이 일반적으로 사용되는 파일 시스템에서는 메타데이터만 변조로부터 보호되는 반면, 데이터 변조의 검출은 존재하지 않는다.[16]

이 모드는 섹터와 16바이트 블록에 대한 트래픽 분석, 재생 및 무작위화 공격에 취약하다.주어진 섹터를 다시 쓰면서 공격자는 미세한(16바이트) 암호문을 수집할 수 있는데, 이를 분석이나 재생 공격(16바이트의 세분화)에 사용할 수 있다.불행히도 성능이 저하된 섹터 전체 블록 암호를 정의할 수 있을 것이다(아래 참조).[17]

CBC-마스크-CBC(CMC) 및 ECB-마스크-ECB(EME)

CMC와 EME는 LRW에 대해 위에서 언급한 사소한 누출로부터도 보호한다.불행하게도, 가격은 성능의 2배 저하다. 각 블록은 두 번 암호화되어야 한다. 많은 사람들은 어쨌든 섹터 수준에서 같은 누수는 피할 수 없기 때문에 너무 높은 비용으로 간주한다.

CMC, introduced by Halevi and Rogaway, stands for CBC–mask–CBC: the whole sector encrypted in CBC mode (with ), the ciphertext is masked by xoring with , and re-encrypted in CBC mode starting from the lastblock. 기본 블록 암호기가 강력한 유사 PRP일 경우, 섹터 수준에서 그 계획은 수정 가능한 PRP이다.한 가지 문제는 P 암호를 해독하려면 모든 데이터를 순차적으로 두 번 넘겨야 한다는 점이다.

이 문제를 해결하기 위해 헤일비와 로가웨이는 EME(ECB–마스크–ECB)라는 병렬 가능한 변종을 도입했다.다음과 같은 방식으로 작동한다.

  • 일반 텍스트는 = K( 0) 로 배열하고 다른 양으로 왼쪽으로 이동하며, 암호화된다: = E I) 2;
  • 마스크 계산:= C 여기서 M = P i = ) ;
  • intermediate ciphertexts are masked: for and ;
  • 최종 암호문은 된다 = ( ) 2 I{\ } 한다

LRW 및 CMC와 달리 단일 K{\만 있다는 점에 유의하십시오

CMC와 EME는 SISWG에 의해 표준화를 위해 고려되었다. EME는 특허를 받았기 때문에 1차 지원 모드가 되는 것을 선호하지 않는다.[18]

특허

인증된 암호화 방식 IAPM은 인증 태그뿐만 아니라 암호화를 제공하지만, IAPM 모드의 암호화 구성요소는 위의 LRW 및 XEX 체계, 따라서 암호문 도용 측면이 없는 XTS 체계를 완전히 설명한다.이는 미국 특허 6,963,976의 그림 8과 5에 자세히 설명되어 있다.[19]

참고 항목

참조

  1. ^ Clemens Fruhwirth (July 18, 2005). "New Methods in Hard Disk Encryption" (PDF). Institute for Computer Languages: Theory and Logic Group (PDF). Vienna University of Technology.
  2. ^ "Encrypting Virtual Memory" (Postscript). {{cite journal}}:Cite 저널은 필요로 한다. journal=(도움말)
  3. ^ Milan Broz. "DMCrypt dm-crypt: Linux kernel device-mapper crypto target". gitlab.com. Retrieved April 5, 2015.
  4. ^ Jakob Lell (2013-12-22). "Practical malleability attack against CBC-encrypted LUKS partitions".
  5. ^ 최신 SISWG와 IEEE P1619 초안 및 회의 정보는 P1619 홈페이지[1]에 있다.
  6. ^ M. 리스코프, R. 리베스트, D.바그너.트위블 블록 암호 [2], CRYPLO '02(LNCS, 볼륨 2442), 2002.
  7. ^ a b c Rogaway, Phillip (2004-09-24). "Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC" (PDF). Dept. Of Computer Science (PDF). University of California, Davis.
  8. ^ https://link.springer.com/content/pdf/10.1007/978-3-540-74462-7_8.pdf 섹션 4.1.
  9. ^ Karen McCabe (19 December 2007). "IEEE Approves Standards for Data Encryption". IEEE Standards Association. Archived from the original on 2008-03-06.
  10. ^ Standard for Cryptographic Protection of Data on Block-Oriented Storage Devices. IEEE STD 1619-2007. IEEE Xplore Digital Library. April 18, 2008. pp. 1–40. doi:10.1109/IEEESTD.2008.4493450. ISBN 978-0-7381-5363-6.
  11. ^ Liskov, Moses; Minematsu, Kazuhiko (2008-09-02). "Comments on XTS-AES" (PDF)., 두 의 키의 사용, 페이지 1-3.
  12. ^ Morris Dworkin (January 2010). "Recommendation for Block Cipher Modes of Operation: The XTS-AES Mode for Confidentiality on Storage Devices" (PDF). NIST Special Publication 800-38E. National Institute of Standards and Technology. doi:10.6028/NIST.SP.800-38E. {{cite journal}}:Cite 저널은 필요로 한다. journal=(도움말)
  13. ^ "NetBSD cryptographic disk driver".
  14. ^ "Modes of Operation". VeraCrypt Documentation. IDRIX. Retrieved 2017-10-13.
  15. ^ "What's new in BitLocker?". November 12, 2015. Retrieved 2015-11-15.
  16. ^ Standard for Cryptographic Protection of Data on Block-Oriented Storage Devices (PDF), IEEE P1619/D16, 2007, p. 34, archived from the original (PDF) on 14 April 2016, retrieved 14 September 2012
  17. ^ Thomas Ptacek; Erin Ptacek (2014-04-30). "You Don't Want XTS".
  18. ^ P. Rogaway, 전통적인 블록 암호인 20040131182 A1에서 광범위한 블록 암호 구성을 위한 블록 암호 모드 운영.
  19. ^ * 미국 특허 6,963,976, "대칭 키 인증 암호화 체계" (2000년 11월, 2005년 11월, 2022년 11월 25일 만료) [3][4].

추가 읽기

외부 링크