파일 시스템 수준 RAID로 데이터를 한 번만 암호화하는 방법은 무엇입니까?

파일 시스템 수준 RAID로 데이터를 한 번만 암호화하는 방법은 무엇입니까?

파일 시스템에 비트로트 보호 기능이 있으므로 btrfs와 함께 dm-crypt를 사용하고 싶습니다. 내 관심사는 RADI1이 dm-crypt보다 높은 파일 시스템 수준에 있으므로 파일에 쓰면 두 번 암호화된다는 것입니다.

HDD.x ⇄ dm-crypt.x ↰
                    btrfs-raid1 ⇒ btrfs
HDD.y ⇄ dm-crypt.y ↲

dm-crypt.x예를 들어 두 개의 하드 드라이브에 동일한 복사본을 저장하는 등 데이터를 한 번만 암호화하는 방법이 있습니까 ? (에 따르면btrfs FAQ다음과 같은 작업을 수행하려면 encryptfs가 필요합니다.

HDD.x ↰
       btrfs-raid1 ⇒ btrfs ⇄ ecryptfs
HDD.y ↲

그러나 btrfs RAID1을 사용하여 추가 성능 저하를 피할 수 있다면 dm-crypt를 사용하는 것이 좋습니다.

답변1

현재 BTRFS에는 직접 통합할 수 있는 옵션이 없습니다. 과거에는 BTRFS 메일링 리스트에서 VFS 암호화 API 지원 추가에 대한 논의가 있었지만(ext4 및 F2FS 투명 파일 암호화도 동일한 API를 사용함) 아무런 진전이 없는 것 같습니다.

현재 원하는 것을 달성하는 유일한 방법은 BTRFS 외부에 복제를 배치하는 것입니다. 이렇게 하면 BTRFS에서 체크섬을 수행할 때 얻을 수 있는 이점이 대부분 제거됩니다. eCryptFS는 옵션이지만 BTRFS에서 dm-crypt를 사용하는 것보다 거의 항상 느립니다. EncFS가 옵션일 수 있지만 성능에 대해서는 전혀 모릅니다. FUSE를 기반으로 하지만 일반적으로 BTRFS 위에 있는 FUSE 레이어는 매우 느립니다.

이 모든 것에 대한 대안으로 일반 RAID, dm-integrity 대상(저장된 데이터에 대해 암호화 확인을 수행함) 위에 보다 전통적인 파일 시스템(MD 또는 LVM을 통해)을 사용하는 것을 고려할 수 있습니다. Android 및 ChromeOS가 시스템 파티션의 무결성을 확인하는 데 사용하는 dm-verity 대상의 쓰기 가능한 버전입니다. 그런 다음 이를 dm-crypt 위에 계층화합니다. 이를 위해서는 dm-integrity를 ​​지원하는 커널(언제 추가되었는지는 기억나지 않지만 작년에 추가된 것임)과 이를 지원하는 cryptsetup 버전이 필요합니다. 이렇게 하면 AEAD 스타일 암호화와 동일한 수준의 무결성 검사가 제공됩니다. 하지만 불행하게도 BTRFS와 동일한 오류 수정 기능을 제공하려면 dm-crypt 및 dm-integrity를 ​​RAID 레이어 아래에 두어야 합니다(그렇지 않으면 RAID는 dm-integrity의 I/O 오류를 볼 수 없습니다). 절대로 올바르게 수정되지 않습니다.)

답변2

다음 설정에서는 동일한 드라이브의 단일 LUKS 컨테이너 내에서 RAID 1을 설정하는 방법을 설명합니다.

동영상 설명: https://youtu.be/PWxxV98DB4c

필요한 경우 제거(디스크 사용)

어떤 개발자와 협력하고 있는지 확인하세요

lsblk

sdb를 사용한다고 가정하면 - 이중 확인 - 문제가 발생할 경우를 대비하여 모든 데이터를 백업하십시오.

Luks 컨테이너 생성

sudo cryptsetup luksFormat /dev/sdb

오픈 컨테이너

sudo cryptsetup luksOpen /dev/sdb mount_name

mount_name을 원하는 이름으로 변경할 수 있습니다.

임의로 선택할 수 있는:

sudo wipefs --all --backup /dev/mapper/mount_name

LVM2 PV 생성:

sudo pvcreate /dev/mapper/mount_name 

선택적으로 PV가 생성되었는지 확인합니다.

sudo pvdisplay

볼륨 그룹 생성

sudo vgcreate backup /dev/mapper/mount_name

논리 볼륨 생성

sudo lvcreate -n part_one -l 50%FREE backup

sudo lvcreate -n part_two -l 100%FREE backup

%필요한 것으로 변경하십시오 . part_one과 part_two를 원하는 대로 변경하세요.

디스크로 이동: 다음과 같이 설치됩니다.

/dev/backup/part_one

/dev/backup/part_two

공격대 만들기:

sudo mkfs.btrfs -L laptop_backup_c -d raid1 -m raid1 -f /dev/backup/part_one /dev/backup/part_two

laptop_backup_c는 태그입니다. 마음에 드는 것으로 바꾸세요.

gnome 디스크를 사용하여 이들 중 하나를 설치하십시오. 그것은 나타날 것이다

/media/<user>/laptop_backup_c

사용자는 귀하의 사용자 이름입니다

또는 마운트 폴더를 생성하여 마운트한 후 마운트 폴더를 삭제하세요.

제거:

sudo umount /media/<user>/laptop_backup_c

그룹에서 열려 있는 모든 볼륨을 닫습니다.

sudo lvchange -an backup

Luks 컨테이너를 닫습니다.

sudo cryptsetup luksClose mount_name

이제 드라이브를 연결하면 비밀번호를 한 번만 묻습니다. /media/<user>/laptop_backup_cgnome 디스크 또는 CLI(여기에는 표시되지 않음)를 사용하여 논리 볼륨을 마운트하면 RAID 1이 마운트됩니다.

관련 정보