FDE (전체 디스크 암호화)는 어떻게 그렇게 빨리 작동합니까?


13

우분투의 전체 디스크 암호화가 어떻게 작동하는지 궁금합니다. 예를 들면 다음과 같습니다.

다음 문자열을 모든 디스크 내용으로 고려하십시오.

hello world

어떤 종류의 암호화 방법을 적용한 후에는 다음과 같이 보일 것입니다.
(이 예에서는 +1의 이동으로 Caesar 암호를 사용했습니다 (예 : A → B; B → C ...))

ifmmp xpsme

알다시피, 컴퓨터가 꺼지면 드라이브의 내용이 위의 문자열이됩니다. 그러나 다시 켜면 우분투는 hello world성공적으로 부팅하기 위해 다시 컨텐츠를 가져와야합니다 .

내가 실제로 얻지 못하는 것은 실제 세계 에서 디스크의 내용이 훨씬 더 많고 암호화 알고리즘이 더 복잡하다는 것입니다. 컴퓨터가 단 몇 초 만에 모든 것을 완전히 암호화 / 해독하는 것이 어렵다는 것을 알게되었습니다 부팅하거나 종료하는 데 시간이 오래 걸리지 않습니다.

이것이 어떻게 가능한지?

답변:


10

AES / Rijndael 암호화는 일반적으로 어떻게 작동합니까?

이 페이지에는 이해하기 쉬운 고급 AES (Advanced Encryption Standard)에 대한 스틱 그림 안내서 가 있습니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

여기에 모두 복제하기에는 너무 많은 것이지만 올인원 이미지가 필요한 경우 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


또는 http://www.password-depot.com/know-how/blowfish_and_rijndael.htm에 더 간단한 설명이 있습니다 .

Rijndael 암호화 방법은 바이트에 대한 xor 작업을 대체, 변경 및 수행하는 것을 기반으로합니다. 방법은 다음과 같습니다.

  • 128 비트 키에서 Rijndael은 각각 128 비트의 10 개 키를 생성합니다.
  • 이 키는 4x4 배열에 배치됩니다.
  • 일반 텍스트도 4x4 배열 (각각 128 비트)로 나뉩니다.
  • 각 128 비트 일반 텍스트 항목은 10 라운드 (128 비트 키의 경우 10 개, 192의 경우 12 개, 256의 경우 14 개)로 처리됩니다.
  • 10 번째 라운드 후 코드가 생성됩니다.
  • 각 단일 바이트는 S 상자에서 대체되고 GF의 역수로 대체됩니다 (2 8).
  • 그런 다음 비트 단위의 모듈로 -2 매트릭스가 적용되고 63으로 XOR 연산이 수행됩니다.
  • 행렬의 선은 주기적으로 정렬됩니다.
  • 행렬 곱셈의 열은 GF에서 교환됩니다 (2 8).
  • 각 라운드의 하위 키에는 XOR 작업이 적용됩니다.

Rijndael을 다른 하위 키로 여러 번 수행하면이 암호화 방법의 보안 수준이 높아집니다.


Ubuntu의 전체 디스크 암호화는 어떻게 작동합니까?

나는 생각 이 LUKS있는 파티션 (AES와 기본 설정)를 암호화하여 작동하고 (같은 LVM으로 일부 볼륨을두고 /당신이 암호를 입력 한 후 스왑), 그리고 부팅시 암호를 해독하고 마운트를. 그리고 암호를 요구할 정도로 부팅되는 일반 (암호화되지 않은) 부팅 파티션이 있습니다.

the_simple_computer 's Ubuntu를 사용한 전체 디스크 암호화 안내서 (2015 년 6 월 28 일 업데이트)에 따르면 기본 설치 프로그램의 암호화 작동 방식에 대해 말하고 듀얼 부팅이 작동하지 않는다고 언급합니다 (적어도 즉시 사용 가능한 것은 아님). " 컴퓨터에 UEFI가있는 경우 배포판은 레거시 BIOS 모드로 설치되어 보안 부팅을 사용할 수 없으며 " 또한 시스템 RAM의 스왑 크기 (종종 불필요)를 제공합니다. 어떤 종류의 암호화가 사용되는지 선택할 수 없습니다. "


암호화는 얼마나 빠릅니까?

당신은 실행하면 cryptsetup benchmark이 테스트를 실행하고 암호화 혼자가의 (현재) 기본 AES-XTS 라인을위한 시계를 취 얼마나 빨리에 대해 당신을 말할 것이다 :

#  Algorithm | Key |  Encryption |  Decryption
     aes-xts   256b    150.0 MiB/s    145.0 MiB/s

평균 하드 드라이브 읽기 속도는 80-160MB / s가 될 수 있으므로 일반 읽기보다 훨씬 길지 않으며 여전히 읽기를 기다리는 동안 방금 읽은 섹터가 이미 해독되었을 수 있습니다. 더 읽기 위해 하드 드라이브.

SSD 는 아마도 200-550MB / s 더 빠를 수 있으므로 눈치 채실 수 있습니다. 그러나 임의 읽기 속도가 느려질 수 있으며 사용 후 SSD 속도가 느려질 수 있다는 것을 읽었습니다 (드라이브가 완전히 가득 차서 "지우기"섹터를 시작해야합니까?)

몇 초 만에 컴퓨터가 어떻게 모든 드라이브를 완전히 암호화 / 암호 해독 할 수 있습니까 (부팅 또는 종료하는 데 시간이 더 걸리지 않음)?

모든 것을 먼저 해독 할 필요는 없습니다. 암호화 (LUKS) 는 데이터 블록에서 작동하며 임의의 블록을 임의로 해독 할 수 있으며 드라이브의 암호화 된 데이터와 파일 시스템이 보는 것 사이의 계층처럼 작동합니다.

파일 시스템이 데이터 블록을보고자 할 때 LUKS는 해당 블록을 먼저 해독 한 다음 해독 된 데이터를 파일 시스템에 제공합니다. 먼저 드라이브가 암호화를 사용하지 않는 것처럼 데이터 블록을 읽을 때까지 기다렸다가 해당 단일 블록 (또는 몇 블록)의 데이터를 해독하는 데 추가 지연 이 있으며 드라이브보다 암호 해독이 빠른 경우 드라이브가 다음 데이터 블록을 읽기 전에 암호 해독 완료 할 수 있습니다.

그래서 일반 파일 시스템이 파일을 읽을 수있는 전체 드라이브를 읽을 필요가없는 것처럼, 암호화가 추가 될 때이 중 전체 드라이브를 읽을 필요하지 않으며, 그것은 일을하지 않는 많은 느린.

하드 드라이브의 데이터는 항상 암호화 되므로 종료시 키를 잊어 버리는 것 외에는 할 일이 없습니다.


@Hewbot Q 파일의 제목이 "너무 빨리" 추가 되도록 편집 되었으므로 파일 및 블록의 암호 해독 속도에 대한 정보를 하단에 추가했습니다. (제목은 여전히 ​​당신이 원하는 것입니까?)
Xen2050

3

이것은 약간의 단순화가 될 것이지만, 암호화 된 파일 시스템에서 파일에 액세스하는 과정을 살펴볼 것입니다.

예를 들어, 암호화 된 파일 시스템의 시작 부분에 파일 테이블이 있다고 가정 해 봅시다. 우리가 읽고 싶다고 가정 해 봅시다 /foo.bar. 먼저 파티션의 시작 부분을 읽고 해독 한 다음 원하는 파일을 찾아보십시오. 파일이 0x10000000 바이트에서 시작한다고 가정 해 봅시다. 그래서, 우리는 그 위치에서 디스크를 읽고 해독하기 시작합니다. 마찬가지로, 쓰기 위해 새 내용을 암호화하여 새 위치에 쓸 수 있습니다.

바라건대 이것은 프로세스에 대한 혼란을 없애는 데 도움이되기를 바랍니다.


1
나는 이것이 OP의 질문에 실제로 대답하는 대답이라고 생각합니다. 그녀의 오해는 사용 될 때 읽거나 쓰는 비트뿐만 아니라 전체 드라이브를 완전히 암호화 / 해독해야한다는 것입니다.
누군가가 모니카를 지원함 Monica

2

프로세서는 전용 명령 세트를 사용합니다. 그것 때문에 가능합니다 AES-NI . 빠른 암호화 및 암호 해독을 사용하거나 오버 헤드를 줄 였다고 말할 수 있습니다. 여기에 설명 된 것처럼 하드웨어 구현이기 때문에 빠릅니다 .

여기에서 성능 영향을 확인할 수 있으며 보안 강화에 가치가 있습니다.


1
또한 디스크의 데이터는 필요한 경우에만 암호화 / 암호 해독됩니다. 예를 들어 부팅시 시작 스크립트, 사용자 정보, DM / WE 실행 파일 등 만 해독됩니다.
Nick

많은 CPU 는 AES를 지원 하지 않으며 , Ubuntu의 암호화는 여전히 작동하지만 Ubuntu의 암호화 작동 방식에 대한 질문에는 아직 답이되지 않습니다
Xen2050

@shsh 그렇다면 정말 오래된 컴퓨터를 사용한다면 하드웨어 구현이 없기 때문에 FDE를 사용하는 것이 불가능할까요? 부팅 및 종료시 전체 디스크가 암호화되고 해독된다는 것을 이해해야합니까?
Hewbot

@ MagikM18 그렇다면, "문자열"전체에서 암호 해독을 시작할 위치를 알고리즘이 어떻게 알 수 있습니까? 문서를 열면 문서의 "좌표"를 어떻게 알 수 있습니까?
Hewbot

@Hewbot은 어쨌든 같은 방식으로; 기본적으로 암호화는 물리 디스크와 파일 시스템 데몬 사이의 계층입니다. 따라서 디스크에서 데이터 읽기를 요청하면 읽은 다음 해독됩니다. 일반 fs와 마찬가지로 먼저 파일 테이블을 읽고 파일의 시작 위치를 찾은 다음 거기서 읽습니다.
Nick Mertin

0

최신 컴퓨터는 초당 수십억 건의 작업을 수행 할 수 있으므로 암호화 및 암호 해독이 빠르다는 것은 놀라운 일이 아닙니다.

이것은 컴퓨터가 얼마나 빨리 일을하는지 직관적으로 평가하는 방법입니다.

  1. 메모리 내에서 계산 (특히 L1 및 L2 메모리), 매우 빠름
  2. 로컬 스토리지에서 읽기 속도가 느림 (솔리드 스테이트 디스크는 하드 디스크보다 빠름)
  3. 네트워크에서 읽기가 훨씬 빠릅니다.

이해해야 할 또 다른 핵심은 시스템을 부팅하기 위해 운영 체제가 전체 하드 디스크를 해독 할 필요가 없다는 것입니다. 오히려 운영 체제는 필요한 하드 디스크의 일부만 즉시 해독하는 방법을 알고 있으며 쓰기도 마찬가지입니다.

병목 현상이 디스크라고 생각하기 때문에 전체 디스크 암호화가 성능에 큰 영향을 미치지 않는다는 사실은 직관적으로 놀랍지 않습니다.

물론 이러한 직관이 항상 현실과 일치하는 것은 아닙니다. 예를 들어, 실제로 전체 디스크 암호화로 인해 성능이 현저하게 저하되는 경우가있었습니다. 그러나 일반적으로 개발자가 최적화 라운드를 몇 차례 수행 한 후에 해결됩니다.


1
이 답변이 가능한 방법을 찾을 수 없습니다. USB 3.0으로 1TB를 복사하는 데 몇 분이 걸리며 중간 프로세스 (암호 해독)를 수행해야하는 경우 FDE로 컴퓨터를 부팅하는 데 몇 분이 걸릴 수 있습니다.
Hewbot

@ Hewbot 나는 해독이 즉시 발생한다는 것을 설명하기 위해 대답을 편집했습니다. OS는 암호화 된 1TB 디스크를 사용하기 위해 1TB의 데이터를 읽을 필요가 없습니다.
Flimm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.