Cách mã hóa file bằng Gocryptfs

Mã hóa gần như là một điều vô cùng cấp thiết ở thời điểm hiện tại, khi những tiêu chuẩn bảo mật và quyền riêng tư không còn được các công ty tuân thủ nghiêm ngặt nữa. Nếu thực sự lo lắng về tính bảo mật của dữ liệu đã lưu trữ trên đám mây, tốt nhất người dùng nên mã hóa dữ liệu đó trước khi upload lên đám mây.

Gocryptfs là một Overlay Filesystem (hay viết tắt là OverlayFS - sự triển khai hệ thống file cho phép hợp nhất ảo nhiều thư mục, trong khi giữ cho nội dung thực tế của chúng tách biệt) được mã hóa, viết bằng Go và xây dựng trên thư viện go-fuse FUSE. Không giống như các hệ thống mã hóa toàn bộ ổ đĩa, Gocryptfs mã hóa các file riêng lẻ bằng cách sử dụng AES-GCM (Galois Counter Mode) và mã hóa tên file bằng AES-EME (ECB-Mix-ECB). Gocryptfs cũng tương thích đa nền tảng, có nghĩa là bạn có thể truy cập các file của mình trên bất kỳ nền tảng nào.

Trong hướng dẫn này, Quản Trị Mạng sẽ chỉ cho bạn đọc cách sử dụng Gocryptfs để mã hóa file.

Cài đặt Gocryptfs

Linux

Gocryptfs đi kèm với một deb package và có sẵn trong kho lưu trữ của Debian và Ubuntu, nghĩa là bạn có thể dễ dàng cài đặt nó bằng lệnh:

sudo apt install gocryptfs

Tương tự với Arch Linux, bạn có thể cài đặt Gocryptfs qua Pacman:

sudo pacman -S gocryptfs

Đối với các bản phân phối Linux khác, bạn có thể tải xuống tệp nhị phân từ trang Github. (Link tham khảo: https://github.com/rfjakob/gocryptfs/releases)

Mac

Để sử dụng Gocryptfs trong macOS, trước tiên phải cài đặt Homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Rồi sử dụng lệnh sau để cài đặt Gocryptfs:

brew install gocryptfs

Windows

Về cơ bản, Gocryptfs không được hỗ trợ trong Windows do hệ điều hành này thiếu hỗ trợ cho FUSE. Tuy nhiên, cppcryptfs thực thi Gocryptfs trong C++ cho Windows, vì vậy người dùng vẫn có thể làm cho nó hoạt động trong Windows. Thực hiện theo hướng dẫn build sau:

  • Bạn sẽ cần những phần mềm sau (tất cả đều có sẵn miễn phí) để build cppcryptfs: Microsoft Visual Studio 2017 (Phiên bản Community), Perl, Nasm và Git (Git không bắt buộc). 
  • Bạn cũng sẽ cần phải cài đặt Dokany, tải xuống mã nguồn cho OpenSSL và RapidJSON từ Github. Chỉ OpenSSL mới cần được build riêng. Cppcryptfs chỉ sử dụng các file header từ RapidJSON, vì vậy không cần phải build RapidJSON.

Microsoft Visual Studio 2017

Trước tiên, cần có Microsoft Visual Studio 2017. Phiên bản Community của Microsoft Visual Studio 2017 sẽ hoạt động và hoàn toàn miễn phí. Nếu không có thể thay thế bằng phiên bản Professional hoặc Enterprise.

Cài đặt Visual Studio sao cho có thể biên dịch các ứng dụng C++ với sự hỗ trợ của Microsoft Foundation Classes (MFC).

Khi cài đặt Visual Studio 2017, chọn "Desktop development with C++""MFC and ATL support (x86 and x64)".

Cai đặt Visual Studio 2017

Perl và Nasm

Để build OpenSSL, bạn cũng sẽ cần Perl và Nasm.

  • Đối với Perl, tài liệu OpenSSL khuyên nên sử dụng ActiveState ActivePerl miễn phí.
  • Nasm (Netwide Assembler) có sẵn tại đây. Nên sử dụng trình cài đặt Nasm nếu muốn thực hiện theo hướng dẫn này.

Lưu ý: Bạn nên chạy trình cài đặt Nasm với vai trò người dùng thông thường. Khi được nhắc chạy lại trình cài đặt với quyền admin, chỉ cần nhấn OK. Điều này sẽ khiến nasm được cài đặt trong thư mục Appdata cục bộ của người dùng hiện tại.

Git

Git có sẵn tại đây. Git đi kèm với cygwin cũng sẽ hoạt động. Nhưng sẽ không cần đến Git nếu bạn tải xuống các file zip nguồn từ Github và giải nén chúng.

Hướng dẫn này giả định rằng bạn đang sử dụng Git. Không cần phải có tài khoản Github để sử dụng Git.

Dokany

Trừ khi muốn phát triển hoặc gỡ lỗi Dokany, bạn chỉ nên cài đặt một trong các nhị phân được phát hành của Dokany tại đây.

Sử dụng DokanSetup_redist.exe có lẽ là lựa chọn an toàn nhất. Hãy chắc chắn đã chọn "Install development files" trong tùy chọn của trình cài đặt.

OpenSSL

Cppcryptfs sử dụng OpenSSL để thực hiện mã hóa và giải mã dữ liệu.

Bạn sẽ cần build OpenSSL từ mã nguồn của nó.

Vui lòng tham khảo file "INSTALL" từ bản phân phối OpenSSL nếu các hướng dẫn này không có tác dụng.

Sau khi cài đặt Visual Studio, Nasm, Git và ActiveState perl, hãy mở một Command Prompt mới trên Windows (cmd.exe).

Bạn sẽ cần mở Command Prompt với quyền admin để chạy lệnh cài đặt OpenSSL. Tuy nhiên, cũng có thể build nó trong một Command Prompt bình thường.

Để bắt đầu một cmd admin trong Windows 10, nhấp vào biểu tượng tìm kiếm (kính lúp) ở phía dưới bên trái màn hình và nhập "cmd". Sau đó nhấp chuột phải vào "Command Prompt" và chọn "Run as administrator".

Bắt đầu một Elevated command prompt trong Windows 10

Cho dù có sử dụng Git hay không, sẽ dễ dàng hơn nếu đặt mọi thứ vào C:\git.

Đầu tiên, tạo thư mục C:\git, vào thư mục này và sao chép mã nguồn OpenSSL từ Github, sau đó vào thư mục Openssl được tạo bởi Git.

c:
 mkdir \git
 cd \git
 git clone https://github.com/openssl/openssl.git
 cd openssl

Chạy lệnh này để đặt Nasm vào đường dẫn (giả sử đã sử dụng trình cài đặt Nasm).

set PATH=%LOCALAPPDATA%\bin\NASM;%PATH%

Sau đó chạy file batch đi kèm với Visual Studio, thiết lập các biến môi trường để biên dịch từ dòng lệnh.

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64

Sử dụng "x86" thay cho "amd64" nếu đang thực hiện build 32 bit.

Vcvarsall.bat từ Visual Studio 2017 phải được chạy trong command shell cmd.exe của Windows, chứ không phải của bên thứ ba.

Sau đó chạy perl (ActiveState) để cấu hình OpenSSL cho bản build tĩnh Visual Studio AMD64/X86_64.

Sử dụng "VC-WIN32" thay cho "VC-WIN64A" nếu đang thực hiện bản build 32 bit.

perl Configure VC-WIN64A no-shared

Sau đó chạy "nmake" để build OpenSSL.

nmake

Sau đó chạy "nmake install" để cài đặt nó.

nmake install

Lệnh "nmake install" phải được chạy từ cmd admin. Nếu đã build OpenSSL từ một Command prompt thông thường, thì hãy bắt đầu một cmd admin, vào C:\git\openssl và chắc chắn gọi vcvarsall.bat như được hiển thị ở trên trong cmd admin trước khi chạy cài đặt nmake trong đó.

RapidJson

RapidJSON được sử dụng để phân tích file cấu hình gocryptfs.conf. Cppcryptfs chỉ sử dụng các file header từ RapidJSON, do đó không cần phải build RapidJSON riêng.

c:
 cd \git
 git clone https://github.com/Tencent/rapidjson.git

Cppcryptfs

Đầu tiên, nhân bản cppcryptfs.

c:
 cd \git
 git clone https://github.com/bailey27/cppcryptfs.git

Truy cập C:\git\cppcryptfs trong Windows Explorer và nhấp đúp vào cppcryptfs.sln. Sau đó thay đổi cấu hình bản build thành "Release" và nền tảng đích thành "x64".

Thay đổi cấu hình bản build

Vào Build > Build Solution hoặc chỉ nhấn phím F7.

Không có chương trình cài đặt cho cppcryptfs. Bạn sẽ cần sao chép cppcryptfs.exe (ví dụ: C:\git\cppcryptfs\x64\Release\cppcryptfs.exe) vào một số thư mục trong đường dẫn hoặc trên desktop.

Bản build 32 bit sẽ hoạt động. Tuy nhiên, nó đã không được thử nghiệm trong một thời gian.

Bất cứ khi nào phát hành phiên bản mới, Dokany sẽ cài đặt các file header (bao gồm) và thư viện trong một đường dẫn, có kèm số phiên bản Dokany trong tên. Do đó, nếu cppcryptfs hỗ trợ phiên bản Dokany hiện tại, thì bạn sẽ cần thay đổi đường dẫn file header và thư viện trong project Visual Studio của cppcryptfs.

Để thay đổi đường dẫn file header trong Visual Studio, nhấp chuột phải vào "cppcryptfs" trong bảng điều khiển Solution Explorer. Sau đó chọn "Properties" và chuyển đến "C/C++", rồi tới "General". Sau đó chỉnh sửa "Additional Include Directories" để phiên bản Dokany hiện tại có trong đường dẫn cho các file header Dokany.

Thay đổi đường dẫn file header

Để thay đổi đường dẫn thư viện, hãy chuyển đến "Linker", sau đó chọn "Input" và chỉnh sửa "Additional Dependencies".

Thay đổi đường dẫn thư viện

Sử dụng Gocryptfs để mã hóa file

Để bắt đầu sử dụng Gocryptfs, trước tiên cần tạo hai thư mục trống:

mkdir encrypted plain

Tiếp theo, khởi tạo Gocryptfs:

gocryptfs -init encrypted

Cuối cùng, hãy mount thư mục “encrypted” vào thư mục “plain”.

gocryptfs encrypted plain

Bây giờ, bất kỳ file nào đặt trong thư mục “plain” sẽ được mã hóa và lưu trữ trong thư mục “encrypted”.

Ví dụ, nếu muốn lưu trữ file được mã hóa trong Dropbox và mount nó vào thư mục “Private” trong thư mục Home, bạn có thể chạy các lệnh sau:

cd
 mkdir ~/Dropbox/encrypted ~/Private
 gocryptfs -init ~/Dropbox/encrypted
 gorcypted ~/Dropbox/encrypted ~/Private

Mỗi file đặt trong thư mục “Private” sẽ được mã hóa trong thư mục “Encrypted” và được upload lên máy chủ Dropbox.

SiriKali - công cụ GUI để sử dụng Gocryptfs

SiriKali là một công cụ GUI có thể được sử dụng cho việc mã hóa bằng Gocryptfs và các tiêu chuẩn khác. SiriKali có sẵn cho Linux, macOS và Windows, mặc dù phiên bản Windows không có hỗ trợ cho Gocryptfs.

1. Truy cập trang web SiriKali và tải xuống gói phù hợp với hệ thống. Gói cho Linux cung cấp nguồn mà bạn có thể trích xuất và build. Gói này cũng có sẵn với kho lưu trữ riêng cho nhiều bản phân phối và có thể tìm thấy ở đây

2. Trên Ubuntu, hãy chạy lệnh sau trong Terminal:

sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/obs_mhogomchungu/xUbuntu_18.04/ /' > /etc/apt/sources.list.d/home:obs_mhogomchungu.list"

Khi các lệnh đã kết thúc, bạn nên chạy code này để cho hệ thống biết bạn “tin tưởng” key và cho phép cập nhật.

wget -nv https://download.opensuse.org/repositories/home:obs_mhogomchungu/xUbuntu_18.10/Release.key -O Release.key
 sudo apt-key add - < Release.key
 sudo apt-get update
 sudo apt-get install sirikali

3. Bây giờ bạn sẽ thấy rằng SiriKali đã được cài đặt và có sẵn trong menu. Hãy nhấn để mở.

4. SiriKali mở ra một cửa sổ (gợi nhớ đến VeraCrypt) với các tùy chọn ở cuối màn hình, bao gồm Create Volume, Mount Volume, Refresh, Manage Favorites và cuối cùng là Menu.

Các tùy chọn

5. Bây giờ bạn có thể nhấp vào Gocryptfs và tạo một ổ đĩa.

Nhấp vào Gocryptfs

6. Đặt một tên tùy ý cho ổ đĩa vừa tạo và phần Key đại diện cho mật khẩu. Ngoài ra, còn có các tùy chọn khác như Password, Password and Key fileGNOME Wallet. Chọn tùy chọn phù hợp với nhu cầu - chỉ cần nhớ sử dụng mật khẩu không dễ đoán là được.

Đặt tên và tạo mật khẩu

7. Sau khi hoàn tất, thư mục mới được tạo sẽ xuất hiện trong ứng dụng SiriKali. Nhấp vào đây để mở thư mục. Đây là nơi bạn có thể sao chép các file muốn mã hóa, giống như bất kỳ hành động sao chép file nào khác.

Mở thư mục mới

8. Khi đã hoàn tất, hãy nhớ nhấp lại và chọn “Unmount volume”.

Chúc bạn thực hiện thành công!

Thứ Sáu, 22/03/2019 17:38
4,34 👨 178