내 노트북에서 전체 시스템 암호화를 원합니다. 하지만 집과 직장에 각각 하나씩 두 명의 사용자가 있는데 두 사용자 모두에 대해 별도의 암호화를 원합니다. 물론 전체 디스크 암호화에는 dm-crypt를 사용하고 홈 디렉터리를 암호화하려면 ecryptfs의 두 번째 암호화 계층을 사용할 수 있습니다. 그러나 성능상의 이유로 이는 좋은 생각이 아닌 것 같습니다. 그렇다면 다음과 같은 시스템을 어떻게 설정할 수 있습니까?
- 전체 하드 드라이브가 암호화됩니다.
- 사용자 1이 로그인되어 있고 사용자 2가 로그인되어 있지 않으면 사용자 2의 데이터는 사용자 1에 대해 암호화되고 그 반대의 경우도 마찬가지입니다.
- 시스템 암호를 해독하려면 부팅 시 암호를 입력해야 하며(일반적인 LVM/dm-crypt 설정처럼) 사용자 x에 로그인하고 해당 파티션의 암호를 해독하려면 두 번째 암호만 입력하면 됩니다.
- 성능은 단순한 전체 디스크 암호화와 유사합니다.
- 이 솔루션은 SSD와 함께 작동해야 합니다. 즉, TRIM을 지원해야 합니다.
그것이 중요하다면 우분투를 배포판으로 사용하고 싶습니다.
답변1
전체 하드 드라이브를 암호화하지 마십시오( 에 표시된 대로
/dev/sda
각 파티션(또는 더 정확하게는 각 파일 시스템 - 아래 참조)을 암호화하십시오.집에서 두 사용자 모두에 대해 별도의 파일 시스템을 설치하십시오. 저는 의도적으로 별도의 파티션을 작성하는 것을 피했습니다. 이는 일반적인 작업 방식이지만 어떤 면에서는 제한적이기 때문입니다. 암호화된 파일 시스템이 포함된 대용량 파일을 보관하고 필요에 따라 마운트하는 대규모 기본 파티션을 갖는 것이 더 편리할 수 있습니다. 장점은 사용자의 집을 별도로 유지하면서 크기를 조정하는 것이 더 쉽다는 것입니다.
PAM은 로그인 시 자동 설치를 허용합니다. 로그인과 실제 작업에 동일한 비밀번호를 사용하고 싶지는 않습니다.데이터 암호화. 대신 LUKS를 사용하거나 로그인 비밀번호로 암호화된 파일에 암호화 키를 저장하여 이를 모방할 수 있습니다. 이렇게 하면 로그인 비밀번호 변경이 암호화된 데이터에는 영향을 주지 않고 암호화된 키에만 영향을 미치므로 전체 사용자 가족을 다시 암호화할 책임이 없습니다.
일반 지침:
파티션 사용법
gdisk
(때로는라고도 함gptfdisk
)parted
또는 기타 적절한 프로그램에 대한 자세한 내용은 매뉴얼 페이지를 읽어보십시오(파티셔닝은 이 QA의 범위를 약간 벗어납니다).암호화된 파일을 기반으로 한 파일 시스템 - 저는 LUKS의 설계에 대해 약간의 이의가 있기 때문에 일반적으로
cryptsetup
어떤 면에서 LUKS를 모방하는 "일반" 모드를 사용합니다. LUKS를 선택하면cryptsetup
(옵션을 적절하게 수정하여) 단계를 줄일 수 있습니다.암호화 키와 비밀번호를 준비하세요. 흥미로운 부분은 다음과 같습니다. 데이터를 암호화하려면 무작위로 필요한 것이 필요한 반면(8자 비밀번호로는 충분하지 않습니다), 비밀번호의 경우 쉽게 변경할 수 있으며(전체 파일 시스템을 다시 암호화하지 않고도) 합리적으로 쉽게 변경할 수 있습니다. 기억하고 들어가세요. 이러한 요구 사항은 모순됩니다. 따라서 우리는 LUKS와 동일한 트릭을 사용할 것입니다(실제로는 LUKS의 변형으로 간주될 수 있음).하이브리드 암호 시스템어떤 의미에서)). 이것암호화 키다소 무작위일 수 있습니다. (최근 사건에 비추어 궁금해하는 경우와 같은) 진정한 무작위 데이터를 사용하거나
/dev/random
암호문이 상당히 깁니다.첫 번째 경우(및 실제 무작위 데이터의 경우) 상당히 길다는 것은 길이가 사용된 암호에 대해 선택된 키 길이와 대략 같아야 함을 의미합니다.추가하다길이초기화 벡터. 두 번째 경우는 어렵다는 뜻이다.무차별 대입 크래킹그것. 해시를 사용하면 키가 손상되거나 분실된 경우 키를 복구할 수 있다는 장점이 있습니다(물론 해시된 초기 비밀번호를 기억하는 경우). 그러면 키가 암호화되어 파일에 저장됩니다. 귀하의 경우 암호화 키의 비밀번호는 로그인 비밀번호와 동일합니다.
# 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는 키를 헤더에 저장하므로 독립적입니다. 반면에 특정 도구 세트를 사용해야 합니다. 비록 잘 설계되지 않았고 대부분의 설치에 존재하지만필요액세스할 수 있는 특수 도구입니다.
반면에 별도의 파일을 사용하면 키를 저장하는 방법을 자유롭게 선택할 수 있습니다. 이동식 미디어에 넣고 로그인하기 전에 삽입하고 파일 시스템을 마운트한 후에 제거할 수도 있습니다(미디어가 컴퓨터에 연결되면 자동 로깅에 연결할 수도 있습니다). 물론 이 모든 것은 안전 지침으로서 잘 고려되어야 합니다.“자신만의 암호화폐를 만들지 마세요”적용 가능(예:보안 SE에 관한 이 기사) - 이는 실제로 LUKS를 사용하는 이유가 될 수 있습니다. 키를 백업하는 것은 확실히 쉽습니다.
파일 시스템을 보관할 빈 파일을 만듭니다.
dd if=/dev/zero of=/path/to/backing_file.enc bs=1M count=X
암호화 장치 만들기
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 -d
표준 입력에서 비밀번호를 요청하고 암호화 키의 암호 해독을 시도합니다.cryptsetup create ... encryptedfs /path/to/backing_file.enc
생성된 암호화된 DM 장치encryptedfs
는 이전에 생성된 파일에서 호출됩니다.-c
암호화된 비밀번호 선택을 위한 중요한 옵션그리고작동 원리장치를 0으로 채웁니다. 이렇게 하면 백업 파일에 "임의의 쓰레기"가 효과적으로 배치되고 파일의 내용이 무엇인지 명확하지 않게 됩니다. 그렇지 않으면 0이 아닌 블록을 스캔하여 내용이 기록되었음을 알 수 있습니다. 2)단계부터 시작하세요.
dd if=/dev/zero of=/dev/mapper/encryptedfs bs=1M
파일 시스템 생성
mkfs.[favourite_filesystem] [tuning options] /dev/mapper/encryptedfs
/etc/fstab
모든 작업을 직접 수행하려면 해당 줄을 입력하거나 다음을 입력하세요./etc/crypttab
시스템 도구와의 일종의 통합을 원하는 경우.
로그인/로그아웃 시 자동(제거) 설치에 대해서는 다음을 참조하세요.pam_mount 문서.
답변2
집을 두 번 암호화하지 않고도 이러한 시스템을 구현하는 두 가지 귀중한 방법을 생각해 볼 수 있습니다.
- 별도의 기본 파티션:별도의 파티션을 생성하고 에 마운트합니다
/home
. 그런 다음 각 사용자는 자신의 집을 암호화합니다encfs
. - 각 사용자는 별도의 기본 파티션을 갖습니다.각 사용자의 집에는 자체적으로 사용되는 별도의 파티션이 있습니다
dm-crypt
./home/user
로그인하면 이 파티션이 마운트됩니다.
물론 암호화도 추가됩니다 /
;-)
두 경우 모두 로그인과 암호화에 동일한 비밀번호를 사용하면 로그인 과정에서 홈이 자동으로 설치될 수 있습니다. (예를 들어 구성할 수 있으며 /etc/security/pam_mount.conf.xml
다양한 방법이 있습니다.) 첫 번째 방법은 사용자 폴더의 이름을 암호화하지 않지만 두 번째 방법을 사용하면 거의 모든 것이 암호화됩니다. 그래서 저는 두 번째 방법을 선호합니다(그리고 실제로 사용합니다). ;-)