Ubuntu 15.10에서 EncFS로 데이터 암호화

Ubuntu 15.10에서 EncFS로 데이터 암호화

2022-10-19 last update

9 minutes reading security ubuntu
EncFS 사용자 공간에 암호화된 파일 시스템을 제공합니다. 특별한 권한 없이 실행되며 FUSE 라이브러리와 Linux 커널 모듈을 사용하여 파일 시스템 인터페이스를 제공합니다. 암호화된 블록 기기가 아닌 통과 파일 시스템입니다. 즉, 기존 파일 시스템 위에 생성됩니다. 이 튜토리얼은 Ubuntu 15.10(Wiley Werewolf)에서 EncFS를 사용하여 데이터를 암호화하는 방법을 보여줍니다.

1 서문


이 튜토리얼에서는 Ubuntu 15.10 시스템에서 사용자 이름 falko를 사용하고 있습니다. 보안 감사 결과 encfs의 현재 구현에서 몇 가지 문제가 발견되었습니다. 아래 보안 경고를 참조하여 encfs를 사용하려는 방식이 이러한 문제의 영향을 받는지 결정하세요. encfs의 대안은 다른 튜토리얼에서 다룰 ecryptfs( https://launchpad.net/ecryptfs )입니다.

Encfs 보안 정보


"Taylor Hornby(Defuse Security)의 보안 감사에 따르면 Encfs의 현재 구현은 여러 유형의 공격에 취약하거나 잠재적으로 취약합니다. 예를 들어, 암호화된 데이터에 대한 읽기/쓰기 액세스 권한이 있는 공격자는 이후의 암호 해독 복잡성을 낮출 수 있습니다. 암호화된 데이터를 합법적인 사용자가 눈치채지 못하게 하거나 타이밍 분석을 사용하여 정보를 추론할 수 있습니다. 이러한 문제가 해결될 때까지 encfs는 이러한 공격이 가능한 시나리오에서 민감한 데이터의 안전한 장소로 간주되어서는 안 됩니다."

2 EncFS 설치


EncFS는 다음과 같이 설치할 수 있습니다(루트 권한이 필요하므로 sudo를 사용합니다).
sudo apt-get install encfs
이제 EncFS 매뉴얼 페이지를 살펴보고 옵션에 익숙해져야 합니다.
man encfs

3 EncFS 사용


이제 홈 디렉토리에 암호화 및 암호 해독된 디렉토리를 생성하겠습니다.
mkdir -p ~/encrypted
mkdir -p ~/decrypted
해독된 디렉토리는 암호화된 디렉토리의 마운트 지점 역할을 합니다. ~/encrypted를 ~/decrypted에 마운트하려면 다음을 실행하기만 하면 됩니다.
encfs ~/encrypted ~/decrypted
이 명령을 처음 실행하면 EncFS 설정이 시작되고 암호화된 볼륨에 대한 암호를 정의해야 합니다.
[email protected]:~$ encfs ~/encrypted ~/decrypted
Creating new encrypted volume.
Please choose from one of the following options:
enter "x" for expert configuration mode,
enter "p" for pre-configured paranoia mode,
anything else, or an empty line will select standard mode.
?> <-- p
Paranoia configuration selected.
Configuration finished. The filesystem to be created has
the following properties:
Filesystem cipher: "ssl/aes", version 3:0:2
Filename encoding: "nameio/block", version 4:0:2
Key Size: 256 bits
Block Size: 1024 bytes, including 8 byte MAC header
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File data IV is chained to filename IV.
File holes passed through to ciphertext.
-------------------------- WARNING --------------------------
The external initialization-vector chaining option has been
enabled. This option disables the use of hard links on the
filesystem. Without hard links, some programs may not work.
The programs 'mutt' and 'procmail' are known to fail. For
more information, please see the encfs mailing list.
If you would like to choose another configuration setting,
please press CTRL-C now to abort and start over.
Now you will need to enter a password for your filesystem.
You will need to remember this password, as there is absolutely
no recovery mechanism. However, the password can be changed
later using encfsctl.
New Encfs Password: <-- Enter a secure password here
Verify Encfs Password: <-- Enter the secure password a second time
암호를 잊어버리면 암호화된 데이터를 복구할 수 있는 방법이 없으므로 암호를 기억해 두십시오!
이제 출력에서 ​​EncFS 볼륨을 찾아야 합니다.
mount
[email protected]:~$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1006420k,nr_inodes=251605,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204480k,mode=755)
/dev/mapper/server1--vg-root on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset,clone_children)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=21,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda1 on /boot type ext2 (rw,relatime)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204480k,mode=700,uid=1000,gid=1000)
encfs on /home/falko/decrypted type fuse.encfs (rw,nosuid,nodev,relatime,user_id=1001,group_id=1001)
그리고
df -h
[email protected]:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 983M 0 983M 0% /dev
tmpfs 200M 4.9M 195M 3% /run
/dev/dm-0 28G 1.7G 25G 7% /
tmpfs 999M 0 999M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 999M 0 999M 0% /sys/fs/cgroup
/dev/sda1 236M 51M 173M 23% /boot
tmpfs 200M 0 200M 0% /run/user/1000
encfs 28G 1.7G 25G 7% /home/falko/decrypted
암호화된 형식으로 데이터를 저장하려면 일반 디렉터리에서와 마찬가지로 데이터를 해독된 디렉터리에 넣습니다.
cd ~/decrypted
echo "hello foo" > foo
echo "hello bar" > bar
ln -s foo foo2
디렉토리의 내용을 확인하면 암호화되지 않은 형태로 볼 수 있음을 알 수 있습니다...
ls -l
[email protected]:~/decrypted$ ls -l
total 8
-rw-rw-r-- 1 falko falko 10 Nov 10 14:57 bar
-rw-rw-r-- 1 falko falko 10 Nov 10 14:57 foo
lrwxrwxrwx 1 falko falko 3 Nov 10 14:57 foo2 -> foo
... 암호화된 디렉토리에 있는 동안 암호화됩니다.
cd ~/encrypted
ls -l
[email protected]:~/encrypted$ ls -l
total 8
lrwxrwxrwx 1 falko falko 24 Nov 10 14:57 gIKlbEtIpTfiGOCy,wKFpMFd -> nZgFI3s62v5LtaHOu-V4lUSy
-rw-rw-r-- 1 falko falko 26 Nov 10 14:57 mEqwt,ssEJhGYpN8HfJMoVxk
-rw-rw-r-- 1 falko falko 26 Nov 10 14:57 nZgFI3s62v5LtaHOu-V4lUSy
암호화된 볼륨을 마운트 해제하려면 다음을 실행합니다.
cd
fusermount -u ~/decrypted
의 출력을 확인하십시오 ...
mount
... 그리고...
df -h
... EncFS 볼륨이 더 이상 나열되지 않는 것을 볼 수 있습니다.
다시 마운트하려면 다음을 실행하십시오.
encfs ~/encrypted ~/decrypted
이전에 정의한 비밀번호를 묻는 메시지가 표시됩니다.
[email protected]:~$ encfs ~/encrypted ~/decryptedEncFS 비밀번호: <-- yoursecretpassword
올바른 암호를 지정하면 ~/encrypted 디렉토리가 ~/decrypted에 마운트되어 암호화되지 않은 형식으로 암호화된 데이터에 액세스할 수 있습니다. 비밀번호를 잊어버리면 암호화된 데이터가 손실됩니다!
암호를 변경하려면 다음을 사용하여 수행할 수 있습니다.
encfsctl passwd ~/encrypted
명령.
false

4 링크


  • EncFS: http://www.arg0.net/encfs
  • 우분투: http://www.ubuntu.com/