새로운 4.1 커널을 사용하여 Ubuntu 15.04에서 ext4 암호화 파티션을 만드는 방법은 무엇입니까?

새로운 4.1 커널을 사용하여 Ubuntu 15.04에서 ext4 암호화 파티션을 만드는 방법은 무엇입니까?

ext4Ubuntu 15.04에서 커널 4.1을 사용하여 새로운 암호화된 파티션을 생성할 수 있습니까 ?

답변1

먼저 면책 조항: 저는 Ubuntu에서 이 작업을 수행한 것이 아니라 제가 활성화한 사용자 정의 Linux 4.2.3 커널을 사용하여 Debian "Stretch"가 설치된 시스템에서 이 작업을 수행했습니다 EXT4_FS_ENCRYPTION.

에 의해 주어진 지시킬로미터게시된 대로 정확하게 작동하지 않습니다. 몇 가지 사항이 생략되었습니다(명령줄 매개변수 및 단계).

  • e2fsprogs위와 같이 업데이트
  • 임의의 소금을 생성하십시오. 나는 "안전한 장소"에 저장하기 위해 다음을 사용했습니다.

    head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt
    echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
    
  • 파일 시스템에서 ext4 암호화를 사용하려면 슈퍼 블록에 "encrypt" 플래그를 설정해야 합니다. 이는 ext4 파일 시스템이 생성될 때 기본값이 아닙니다. e2fsprogs 1.43 이상에서 "tune2fs" 유틸리티를 사용하여 "encrypt" 옵션을 설정합니다.

    sudo tune2fs -O encrypt /dev/sda4
    
  • 커널이 변경 사항을 알 수 있도록 파일 시스템을 마운트하거나 다시 마운트합니다(자동일 수도 있지만 이 작업을 별도의 파티션에서만 수행했기 때문에 확실하지 않습니다.)

  • 암호화가 활성화된 상태로 마운트된 파일 시스템에 디렉터리를 만듭니다.

    sudo mkdir -p /secret/home/$USER
    sudo chown $USER:$USER /secret/home/$USER
    
  • 키링에 키를 생성하고 이를 사용하여 암호화할 디렉터리에 대한 정책을 설정합니다( sudo여기서는 명령이 필요하지 않음).

    $ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
    Enter passphrase (echo disabled):
    Added key with descriptor [0132fed69f946c86]
    $ /usr/bin/e4crypt set_policy 0132fed69f946c86 /secret/home/$USER
    Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
    
  • 재부팅할 때마다 다음 add_key명령을 사용하여 디렉터리 및 해당 하위 항목의 암호 해독을 위한 키를 설정할 수 있습니다.

    $ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
    Enter passphrase (echo disabled):
    Added key with descriptor [0132fed69f946c86]
    

    이전 단계에서 사용한 것과 동일한 비밀번호를 입력하면 설명자 16진수 문자열을 기억할 필요가 없습니다.

  • 직접 사용할 수도 있습니다 add_key. 이것은 파일 시스템 특정 솔트를 사용합니다(따라서 해당 파티션 아래의 모든 폴더는 동일한 솔트를 갖습니다).

    $ /usr/sbin/e4crypt add_key /secret/home/$USER
    Added key with descriptor [0132fed69f946c86]
    Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
    

답변2

Linux 4.1에는 파일 시스템의 디렉토리를 암호화하는 새로운 Ext4 기능이 제공됩니다. 암호화 키는 키링에 저장됩니다. 시작하려면 커널 옵션을 활성화하고 커널 4.1 이상이 있는지 확인 CONFIG_KEYS하십시오 CONFIG_EXT4_FS_ENCRYPTION.

우선, e2fsprogs를 최소 버전 1.43으로 업데이트해야 합니다. 이 버전은 작성 당시 여전히 WIP이므로 다음에서 가져와야 합니다.Git 저장소:

$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git

e4crypt 소스는 소스 코드에서 관련 섹션을 비활성화했습니다. misc/e4crypt.c를 편집하고 714행 근처의 다음 두 줄을 제거하여 활성화하십시오.

    printf("arg %s\n", argv[optind]);
    exit(0);

이제 새로운 e2fsprogs를 빌드하고 설치하십시오.

$ sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ sudo dpkg -i e2fsprogs_1.43-WIP_amd64.deb

지금 버전을 확인하세요. 1.43-WIP여야 합니다.

# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
        Using EXT2FS Library version 1.43-WIP, 18-May-2015

키를 사용하려면 패키지를 설치해야 합니다 keyutils.

$ sudo apt-get install keyutils

암호화할 디렉터리를 만들어 보겠습니다. 암호화 정책은 빈 디렉터리에만 설정할 수 있습니다.

$ sudo mkdir -p /encrypted/dir

먼저 임의의 솔트 값을 생성하고 안전한 장소에 저장하십시오.

$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459

이제 키링에 새 키를 생성하고 추가하세요. 키체인을 비울 때마다(재부팅) 이 단계를 반복해야 합니다.

$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled): 
Added key with descriptor [f88747555a6115f5]

이제 키에 대한 설명자를 알았습니다. 키체인에 키를 추가했는지 확인하세요.

$ keyctl show
Session Keyring
1021618178 --alswrv   1000  1000  keyring: _ses
 176349519 --alsw-v   1000  1000   \_ logon: ext4:f88747555a6115f5

거의 완료되었습니다. 이제 디렉터리에 대한 암호화 정책을 설정합니다.

$ e4crypt set_policy f88747555a6115f5 /encrypted/dir

그게 다야. 키체인에 키를 추가하지 않고 디스크에 액세스하려고 하면 파일 이름과 해당 내용이 암호화된 의미 없는 내용으로 표시됩니다. 파일 시스템에서 이전 버전의 e2fsck를 실행할 때는 주의하세요. 암호화된 파일 이름은 유효하지 않은 것으로 처리됩니다.

관련 정보