다양한 사용자에 대해 다양한 암호화를 사용하여 사용 가능한 전체 디스크 암호화를 얻는 방법

다양한 사용자에 대해 다양한 암호화를 사용하여 사용 가능한 전체 디스크 암호화를 얻는 방법

내 노트북에 전체 시스템 암호화를 적용하고 싶습니다. 하지만 집과 직장에 각각 하나씩 두 명의 사용자가 있는데 둘 다에 대해 별도의 암호화를 원합니다. 물론 dm-crypt로 전체 디스크 암호화를 수행하고 ecryptfs로 두 번째 암호화 계층을 사용하여 홈 디렉터리를 암호화할 수 있습니다. 그러나 이는 성능상의 이유로 좋은 생각은 아닌 것 같습니다. 그렇다면 다음과 같은 시스템을 어떻게 설정할 수 있습니까?

  • 전체 하드 드라이브가 암호화되었습니다
  • 사용자 1이 로그인하고 사용자 2가 로그인하지 않은 경우 사용자 2의 데이터는 사용자 1에 대해 암호화되고 그 반대의 경우도 마찬가지입니다.
  • 부팅 시 시스템을 해독하는 하나의 암호(일반적인 LVM/dm-crypt 설정처럼)를 입력해야 하고, 두 번째 암호는 사용자 x에 로그인하여 그의 파티션을 해독하는 데 필요합니다.
  • 성능은 단순한 전체 디스크 암호화와 유사합니다.
  • 솔루션은 SSD와 함께 작동해야 합니다. 즉, TRIM을 지원해야 합니다.

이것이 중요하다면 우분투를 배포판으로 사용하고 싶습니다.

답변1

  1. 전체 하드 드라이브를 암호화하지 마세요( 에서와 같이 /dev/sda파티션별로(더 정확하게는 파일 시스템별로 수행 - 아래 참조)).

  2. 두 사용자를 위해 집에 별도의 파일 시스템을 마운트하십시오. 저는 의도적으로 별도의 파티션을 작성하는 것을 피하고 있습니다. 이는 일반적인 작업 방식이지만 일부 측면에서는 제약이 되기 때문입니다. 암호화된 파일 시스템을 포함하고 필요에 따라 마운트되는 큰 파일을 보관하는 하나의 큰 홈 파티션을 갖는 것이 더 편리할 수 있습니다. 장점은 사용자의 집을 분리된 상태로 유지하면서 크기를 더 쉽게 조정할 수 있다는 것입니다.

  3. PAM을 통해 로그인 시 자동 마운트가 가능합니다. 로그인과 실제 로그인에 동일한 비밀번호를 사용하고 싶지는 않습니다.데이터 암호화. 대신 LUKS를 사용하거나 로그인 비밀번호로 암호화된 파일에 암호화 키를 저장하여 이를 모방합니다. 이렇게 하면 로그인 비밀번호를 변경해도 암호화된 데이터에는 영향을 주지 않고 암호화된 키에만 영향을 미치므로 집에서 전체 사용자를 다시 암호화할 필요가 없습니다.

일반 지침:

  • 파티셔닝 사용 gdisk(때때로라고도 함 gptfdisk) parted또는 기타 적절한 프로그램, 자세한 내용은 매뉴얼 페이지를 읽어보세요(파티셔닝은 이 QA의 범위를 약간 벗어납니다).

  • 암호화된 파일 기반 파일 시스템 - 저는 LUKS의 디자인에 대해 몇 가지 이의가 있기 때문에 일반적으로 cryptsetup일부 측면에서 LUKS를 모방하는 "일반" 모드를 사용하고 있습니다. LUKS를 선택하면 cryptsetup(적절하게 수정된 옵션을 사용하여) 단계를 줄일 수 있습니다.

    1. 암호화 키와 비밀번호를 준비하세요. 이는 흥미로운 부분입니다. 원하는 데이터를 무작위로 충분히 암호화하고(8자 비밀번호로는 충분하지 않음) 비밀번호를 쉽게 변경할 수 있고(전체 파일 시스템을 다시 암호화할 필요 없이) 상당히 쉬운 부분입니다. 기억하고 입력해야 합니다. 이러한 요구 사항은 서로 상당히 반대됩니다. 따라서 우리는 LUKS와 동일한 트릭을 사용할 것입니다(실제로는 LUKS의 변형으로 간주될 수 있음).하이브리드 암호 시스템어떤 의미에서)). 그만큼암호화 키다소 임의적일 수 있습니다. 정말 임의적인 데이터(예: 에서 /dev/random)를 사용하거나 SHA-2 또는 SHA-3과 같은 합리적으로 긴 해시를 사용합니다(첫 번째 것은 NSA에서 설계한 것입니다. 최근 사건을 고려하여) 상당히 긴 암호 문구입니다.

      첫 번째 경우(및 실제로 임의의 데이터의 경우) 합리적으로 길다는 것은 길이가 사용된 암호에 대해 선택한 키 길이와 비슷해야 함을 의미합니다....을 더한길이초기화 벡터. 두 번째 경우는 어렵다는 뜻이다.무차별 대입그것. 해시를 사용하면 키가 손상되거나 분실된 경우 키를 복구할 수 있다는 장점이 있습니다(물론 해시된 초기 암호를 기억하는 경우). 그런 다음 이 키는 암호화되어 파일에 저장됩니다. 귀하의 경우 암호화된 키의 암호는 로그인 암호와 동일합니다.

      # set up the encrypted encryption key
      printf "Reasonably long and complicated passphrase" \
          | openssl dgst -sha512 -binary \
          | openssl enc -bf > /path/to/key.enc
      

      openssl dgst -sha512 -binary표준 입력에서 SHA-512 해시의 바이너리 형식을 생성하고 openssl enc -bf다음을 사용하여 암호화합니다 .복어- 원하는 대로 해시와 암호를 자유롭게 선택하세요(Twofish 또는 Rijndael은 둘 다 꽤 많이 시도되었지만 커널에서 사용 가능한 다른 암호도 괜찮을 것입니다).

      암호화된 장치 외부에 키를 보관하는 것은 암호화된 데이터 자체 외에 추가 사항이 필요하다는 단점이 있습니다. LUKS는 키를 헤더에 저장하므로 독립적입니다. 반면에 특정 도구 세트에 묶여 있습니다. 부주의하게 설계되지 않았으며 대부분의 설치에 존재하지만필요액세스할 수 있는 특수 도구입니다.

      반면에 별도의 파일을 사용하면 키를 저장하는 방법을 자유롭게 선택할 수 있습니다. 이동식 미디어에 넣고 로그인하기 전에 삽입하고 파일 시스템이 마운트된 후에 제거할 수도 있습니다(미디어를 컴퓨터에 연결하는 경우 자동 로그인을 연결할 수도 있습니다). 물론 보안 격언이 있기 때문에 이 모든 것을 잘 고려해야 합니다."자신만의 암호화폐를 발명하지 마세요"적용됩니다(예:Security SE에 대한 이 게시물) - 이는 실제로 LUKS 사용에 대한 논거가 될 수 있습니다. 키를 백업하는 것은 확실히 쉽습니다.

    2. 파일 시스템을 저장할 빈 파일을 만듭니다.

      dd if=/dev/zero of=/path/to/backing_file.enc bs=1M count=X
      
    3. 암호화된 장치 생성

      openssl enc -bf -d -in /path/to/key.enc 2>/dev/null \
          | cryptsetup create \
                  -c twofish-cbc-essiv:sha256 \
                  -s 256 \
                  -h plain \
                  encryptedfs /path/to/backing_file.enc
      

      openssl enc -bf -dstdin에서 비밀번호를 요청하고 암호화 키를 해독하려고 시도합니다. 이전에 생성된 파일이 지원하는 cryptsetup create ... encryptedfs /path/to/backing_file.enc암호화된 DM 장치를 생성했습니다 . 암호화 암호를 선택하는 encryptedfs중요한 옵션-c그리고작동 모드

    4. 장치를 0으로 채웁니다. 이렇게 하면 백업 파일에 "임의의 쓰레기"가 효과적으로 들어가고 파일의 내용이 무엇인지 명확하지 않게 됩니다(그렇지 않으면 0이 아닌 블록을 검색하여 내용이 어디에 기록되었는지 알 수 있습니다). 2단계부터).

      dd if=/dev/zero of=/dev/mapper/encryptedfs bs=1M
      
    5. 파일 시스템 생성

      mkfs.[favourite_filesystem] [tuning options] /dev/mapper/encryptedfs
      
    6. /etc/fstab모든 작업을 스스로 수행하려는 경우에는 해당 줄을 입력하거나/etc/crypttab시스템 도구와의 일종의 통합을 원하는 경우.

  • 로그인/로그아웃 시 자동(해제) 마운트에 대해서는 다음을 참조하겠습니다.pam_mount 문서.

답변2

나는 집을 두 번 암호화하지 않고 그러한 시스템을 달성하는 두 가지 귀중한 방법을 생각할 수 있습니다.

  • 별도의 홈 파티션:에 마운트되는 별도의 파티션을 만듭니다 /home. 그런 다음 각 사용자는 encfs.
  • 각 사용자마다 별도의 홈 파티션:모든 사용자는 자신의 집에 대해 dm-crypt. 그러면 이 파티션은 /home/user로그인할 때 마운트됩니다 .

물론 암호화도 추가됩니다 /;-)

두 경우 모두 로그인 및 암호화에 동일한 비밀번호를 사용하면 로그인 프로세스 중에 홈이 자동으로 마운트될 수 있습니다. (예를 들어 에서 구성할 수 있습니다 /etc/security/pam_mount.conf.xml. 많은 Howto가 있습니다.) 첫 번째 방법은 사용자의 폴더 이름을 암호화하지 않지만 두 번째 방법을 사용하면 실제로 모든 것이 암호화됩니다. 그래서 나는 두 번째 방법을 선호하고 실제로 사용합니다 ;-)

관련 정보