Linux의 ZFS 암호화 풀?

Linux의 ZFS 암호화 풀?

저는 현재 ZFS를 시도하고 테스트하고 있는데 정말 마음에 듭니다. 이제 저는 Luks 기반 전체 디스크 암호화의 표준 설정에 대한 대안으로 이것을 사용하는 가장 좋은 방법을 찾고 있습니다.

ZFS의 암호화 개념은 무엇입니까? 전체를 암호화합니까?수영장아니면 그냥 사람인가데이터 세트? 내 생각은 부팅하고 비밀번호를 입력하고 나머지는 평소대로 진행하는 것입니다. 풀의 모든 데이터 세트에 대해 비밀번호를 입력하고 싶지 않습니다. 가능합니까?

luks 전체 디스크 암호화 컨테이너 내에서 ZFS 풀을 사용해 보았지만 작동하지만 ZFS를 직접 사용하는 것보다 성능이 훨씬 떨어지는 것 같습니다.

저는 "안정적인" 커널과 NVME SSD를 갖춘 Arch Linux를 사용하고 있습니다. 설명과 권장 설정에 감사드립니다!

아, 그리고 한 가지 더: 기존 데이터세트나 풀을 암호화할 수 없다는 내용을 읽었는데, 아직도 사실인가요?

답변1

  • 버전 0.8이 출시되면서 ZFS On Linux에는 암호화 기능이 추가되었습니다. 따라서 최소한 해당 버전이 필요합니다.

  • ZFS에서 암호화는 풀 기준이 아닌 데이터 세트 단위로 이루어집니다. 그러나 ZFS의 대부분과 마찬가지로 데이터 세트는 상위(또는 상위가 encryptionroot아닌 정의된)로부터 암호화 속성을 상속할 수 있습니다.

  • ZFS의 데이터 세트에 대한 암호화를 설정하면아니요이미 포함된 모든 데이터를 자동으로 암호화합니다. 압축 활성화(또는 압축 유형 변경)와 마찬가지로 새 데이터만 암호화됩니다.

  • 기존 데이터를 암호화하려면 해당 데이터를 암호화가 활성화된 다른 데이터 세트로 rsync이동한 zfs send다음 이전 데이터 세트를 암호화된 새 데이터 세트로 바꿀 수 있습니다. 이를 위해서는 시스템이 단일 사용자 모드에 있어야 합니다(또는 이전 데이터 세트에 파일을 쓰거나 열 수 있는 모든 프로그램을 적어도 일시적으로 종료해야 함).

저는 zpool에서 암호화를 사용하지 않으므로 이것이 제가 아는 전부입니다. 더 많은 조사를 해보고 ZOL 메일링 리스트 아카이브를 읽고 검색해 보시기 바랍니다.암호화 관련 문제~에ZOL github 창고.

~에서암호화부분 man zfs:

암호화

암호화를 활성화하면 암호화된 파일 시스템과 볼륨이 생성됩니다. ZFS는 파일 및 zvol 데이터, 파일 속성, ACL, 권한 비트, 디렉터리 목록, FUID 매핑 및 userused/ groupused데이터를 암호화합니다. ZFS는 데이터 세트 및 스냅샷 이름, 데이터 세트 계층, 속성, 파일 크기, 파일 취약성 및 중복 제거 테이블을 포함하여 풀 구조와 관련된 메타데이터를 암호화하지 않습니다(중복 제거된 데이터 자체는 암호화됨).

키 순환은 ZFS에서 관리됩니다. 사용자 키(예: 비밀번호)를 변경해도 전체 데이터 세트를 다시 암호화할 필요는 없습니다. 암호화 키를 로드하지 않고도 데이터 세트를 정리하고, 재동기화하고, 이름을 바꾸고, 삭제할 수 있습니다( zfs load-key키 로드에 대한 자세한 내용은 하위 명령 참조).

암호화된 데이터세트를 생성하려면 생성 시 encryption및 속성을 지정해야 하며, 선택적으로 및 을 지정해야 합니다 . 암호화 키를 입력하면 생성된 데이터 세트가 암호화 루트가 됩니다. 기본적으로 모든 하위 데이터 세트는 암호화 루트에서 암호화 키를 상속합니다. 즉, 암호화 루트의 키를 로드, 언로드 또는 변경하면 상속된 모든 데이터 세트에 대해 암시적으로 동일한 작업이 수행됩니다. 이 상속이 필요하지 않은 경우 하위 데이터 세트를 생성할 때 을 제공하거나 이를 사용하여 기존 관계를 파괴하고 하위 데이터 세트에 새 암호화 루트를 생성합니다.keyformatkeylocationpbkdf2iterskeyformatzfs change-key

하위 항목은 keyformat새 루트를 생성하는 동안 상위 항목과 일치할 수 있으며 encryption, 암호화 속성을 변경하는 것만으로는 새 암호화 루트가 생성되지 않습니다. 이는 단순히 암호화 루트와 동일한 키를 가진 다른 암호화 제품군을 사용하게 됩니다. 한 가지 예외는 클론이 항상 소스의 암호화 키를 사용한다는 것입니다. 이 예외로 인해 일부 암호화 관련 속성(즉 keystatus, keyformat, , keylocationpbkdf2iters)은 다른 ZFS 속성처럼 상속되지 않고 대신 암호화 루트에 의해 결정된 값을 사용합니다. Cryptoroot 상속은 다음을 통해 추적할 수 있습니다.읽기 전용 encryptionroot재산.

암호화는 일부 ZFS 작업의 동작을 변경합니다. 압축 후 암호화가 적용되므로 압축률이 유지됩니다. 일반적으로 ZFS의 체크섬 길이는 256비트이지만 암호화된 데이터의 경우 체크섬은 사용자가 선택한 체크섬의 128비트와 암호화 제품군의 128비트 MAC이므로 데이터에 대한 악의적인 변경에 대한 추가 보호를 제공합니다. 암호화가 활성화된 경우에도 중복 제거는 가능하지만 보안을 위해 데이터 세트 자체, 스냅샷 및 복제본에서만 중복 제거됩니다.

데이터 세트 암호화에는 몇 가지 제한 사항이 있습니다. 암호화된 데이터는 이 기능을 통해 삽입될 수 없습니다 embedded_data. 구현 시 세 번째 복제본이 일반적으로 있는 일부 암호화 메타데이터를 저장하기 때문에 암호화된 데이터 세트에는 복제본=3이 없을 수 있습니다. 암호화 전에 압축이 적용되기 때문에 데이터에 액세스하는 애플리케이션에서 허용하는 경우 데이터 세트는 유사한 범죄에 취약할 수 있습니다. 암호화된 중복 제거는 데이터 세트의 어떤 블록이 동등한지에 대한 정보를 표시하며 기록된 각 블록에 대해 추가 CPU 비용이 발생합니다.

관련 정보