Mã hóa, giải mã các tập tin và bảo vệ bằng mật khẩu trên Linux
Bài viết này sẽ hướng dẫn các bạn mã hóa, giải mã và bảo vệ với các tập tin trên hệ điều hành Linux. Trong bài viết này sẽ giới thiệu với các bạn công cụ giúp chúng ta có thể mã hóa cũng như cách nén file trên bản phân phối CentOS 7 từ đó giúp cho chúng ta có thể bảo vệ được các tập tin quan trọng.
1. Mã hóa bằng GnuPG
1.1 Giới thiệu và cài đặt GnuPG
GnuPG
(GNU Privacy Guard) hay còn gọi GPG
là công cụ cơ bản giúp chúng ta có thể mã hóa trên hệ điều hành Linux.
Nếu gói gnupg
không có trên hệ thống của bạn, bạn cần phải cài đặt nó như sau:
– Đối với bản phân phối Debian/Ubuntu
apt-get install gnupg -y
– Đối với bản phân phối RHEL/CentOS:
yum install gnupg -y
Sau khi cài đặt chúng ta chạy lệnh sau để kiểm tra version của gnupg
hiện tại:
gpg --version
[root@tubt ~]# gpg –version
gpg (GnuPG) 2.0.22
libgcrypt 1.5.3
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ?, ?, ELG, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
Qua kết quả trên chúng ta biết các đoạn thuật toán mà gnupg
hỗ trợ mã hóa là IDEA
, 3DES
, CAST5
, BLOWFISH
, AES
, AES192
, AES256
, TWOFISH
, CAMELLIA128
, CAMELLIA192
, CAMELLIA256
.
1.2 Sử dụng GnuPG
Bước 1: Chúng ta thực hiện tạo một tệp test.txt
như bên dưới và thực hiện xem nội dung của tệp test.txt
như sau:
[root@tubt mnt]# touch test.txt
[root@tubt mnt]# echo nhanhoa 2022 > test.txt
[root@tubt mnt]# cat test.txt
nhanhoa 2022
Bước 2: Tiếp theo chúng ta thực hiện mã hóa tệp test.txt
bằng gpg
cùng với tùy chọn -c
:
[root@tubt mnt]# gpg -c test.txt
gpg: directory `/root/.gnupg’ created
gpg: new configuration file `/root/.gnupg/gpg.conf’ created
gpg: WARNING: options in `/root/.gnupg/gpg.conf’ are not yet active during this run
gpg: keyring `/root/.gnupg/pubring.gpg’ created
Trong quá trình mã hóa thì gpg sẽ yêu cầu chúng ta nhập mật khẩu:
Kết quả sau khi mã hóa xong sẽ xuất hiện một tệp test.txt.gpg
như sau:
[root@tubt mnt]# ll
total 8
-rw-r–r–. 1 root root 13 Sep 27 15:00 test.txt
-rw-r–r–. 1 root root 60 Sep 27 15:04 test.txt.gpg
[root@tubt mnt]#
Kiểm tra nội dung của tệp sau khi đã được mã hóa:
[root@tubt mnt]# cat test.txt.gpg
▒▒ۑ▒”P▒▒+֍i▒@q#C▒۞O
S▒o3▒y$5▒▒$”▒1▒Ѳ▒ۂп▒h
Để giải mã tệp được mã hóa ở trên , chúng ta sử dụng lệnh gpg
như sau:
[root@tubt mnt]# rm -rf test.txt
[root@tubt mnt]# ll
total 4
-rw-r–r–. 1 root root 60 Sep 27 15:04 test.txt.gpg
[root@tubt mnt]# gpg test.txt.gpg
gpg: keyring `/root/.gnupg/secring.gpg’ created
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected
[root@tubt mnt]# ll
total 8
-rw-r–r–. 1 root root 13 Sep 27 15:10 test.txt
-rw-r–r–. 1 root root 60 Sep 27 15:04 test.txt.gpg
[root@tubt mnt]# cat test.txt
nhanhoa 2022
Đầu tiên ta cần xóa file test.txt
gốc đã có sẵn trước đó. Sau đó ta thực hiện giải mã tệp test.txt.gpg
bằng lệnh
gpg test.txt.gpg
Sau khi giải mã thành công chúng ta có thể đọc được nội dung và nội dung hoàn toàn giống với nội dung tệp gốc mà chúng ta đã xóa đi
2. Mã hóa bằng bcrypt
2.1 Giới thiệu và cài đặt bcrypt
bcrypt
là một công cụ mã hóa và giải mã tập tin. Các tệp mã hóa sẽ được lưu với phần mở rộng là .bfe. Theo mặc định, bcrypt
sẽ nén các tệp đầu vào trước khi mã hóa, xóa các tệp đầu vào và ghi đè lên các tệp đầu vào với các dữ liệu ngẫu nhiên để ngăn phục hồi dữ liệu
Cài đặt bcrypt
như sau:
– Đối với bản phân phối Debian/Ubuntu:
apt-get -y install bcrypt
– Đối với bản phân phối RHEL/CentOS:
yum install -y bcrypt
2.2 Sử dụng bcrypt
Bước 1: Thực hiện tạo tệp test-bcrypt.txt
và xem nội dung tệp như bên dưới:
[root@tubt mnt]# touch test-bcrypt.txt
[root@tubt mnt]# echo Test bcrypt > test-bcrypt.txt
[root@tubt mnt]# cat test-bcrypt.txt
Test bcrypt
Bước 2: Chúng ta mã hóa tệp bằng cách sử dụng lệnh bcrypt
. Trong quá trình mã hóa chúng ta cần thực hiện nhập mật khẩu 2 lần:
[root@tubt mnt]# bcrypt test-bcrypt.txt
Encryption key:
Again:
Sau khi mã hóa tệp thành công thì sẽ xuất hiện một tệp mới có tên test-bcrypt.txt.bfe
được tạo từ tệp gốc và sẽ thay thế tệp gốc:
[root@tubt mnt]# ll
total 4
-rw-r–r–. 1 root root 86 Sep 27 15:41 test-bcrypt.txt.bfe
Kiểm tra nội dung của tệp sau khi mã hóa:
[root@tubt mnt]# cat test-bcrypt.txt.bfe
T^A+dÝdå^@<8c><81>^FRq^LòÕ<9c>\Iî<88>÷¥^HÙ^R^Sʺù³ýæÉã<87>^@^@^@
Để có thể đọc được tệp trên ta cần giải mã tệp đã bị mã hóa, trong quá trình giải mã chúng ta cần nhập đúng mật khẩu với mật khẩu đã tạo mã hóa ban đầu:
[root@tubt mnt]# bcrypt test-bcrypt.txt.bfe
Encryption key:
Sau khi chạy lệnh trên và nhập đúng password thì tệp test-bcrypt.txt
đã xuất hiện và thay thế tệp test-bcrypt.txt.bfe
và chúng ta có thể xem nội dung tệp một cách bình thường:
[root@tubt mnt]# ll
total 4
-rw-r–r–. 1 root root 12 Sep 27 15:58 test-bcrypt.txt
[root@tubt mnt]# cat test-bcrypt.txt
Test bcrypt
3. Mã hóa bằng ccrypt
3.1 Giới thiệu và cài đặt ccrypt
ccrypt
là một tiện ích dùng để mã hóa và giải mã tập tin dựa trên thuật toán Rjindael cypher. Mã hóa một tập tin bằng cách sử dụng ccrypt
. Nó sử dụng ccrypt
để mã hóa và ccdecrypt
để giải mã.
Cài đặt ccrypt
như sau:
– Đối với bản phân phối Debian/Ubuntu:
apt-get install -y ccrypt
– Đối với bản phân phối RHEL/CentOS:
yum -y install ccrypt
3.2 Sử dụng ccrypt
Bước 1: Chúng ta thực hiện tạo một tệp test-ccrypt.txt
, thêm nội dung và thực hiện xem nội dung của tệp như sau:
[root@tubt mnt]# touch test-ccrypt.txt
[root@tubt mnt]# echo Test ccrypt > test-ccrypt.txt
[root@tubt mnt]# cat test-ccrypt.txt
Test ccrypt
Bước 2: Thực hiện mã hóa tệp test-ccrypt.txt
. Khi chạy lệnh mã hóa ta cần nhập mật khẩu 2 lần để mã hóa thành công và sau khi mã hóa thành công thì tệp test-ccrypt.txt
được thay thế bằng tệp test-ccrypt.txt.cpt
:
[root@tubt mnt]# ccencrypt test-ccrypt.txt
Enter encryption key:
Enter encryption key: (repeat)
[root@tubt mnt]# ll
total 4
-rw-r–r–. 1 root root 44 Sep 27 16:19 test-ccrypt.txt.cpt
Kiểm tra lại nội dung của tệp sau khi đã mã hóa:
[root@tubt mnt]# cat test-ccrypt.txt.cpt
ԥ▒▒▒▒▒▒W▒0lz’L▒Q▒▒x!▒4▒N▒+▒U▒▒▒q▒P▒d]▒▒[root@tubt mnt]#
Để có thể xem được nội dung của tệp chúng ta cần thực thi lệnh ccdecrypt
để giải mã tệp test-ccrypt.txt.cpt
. Khi giải mã chúng ta cần nhập đúng mật khẩu mà chúng ta đã tạo trong quá trình mã hóa:
[root@tubt mnt]# ccdecrypt test-ccrypt.txt.cpt
Enter decryption key:
[root@tubt mnt]# ll
total 4
-rw-r–r–. 1 root root 12 Sep 27 16:19 test-ccrypt.txt
[root@tubt mnt]# cat test-ccrypt.txt
Test ccrypt
4. Mã hóa bằng openssl
4.1 Giới thiệu và cài đặt openssl
OpenSSL
là một công cụ thực hiện các chức năng mã hóa dòng lệnh có thể được sử dụng để mã hóa tin nhắn cũng như các tập tin với tiêu chuẩn giao thức mã hóa của SSL và TLS
Để cài đặt openssl
ta sử dụng lệnh sau:
– Đối với bản phân phối Debian/Ubuntu:
apt-get install openssl
– Đối với bản phân phối RHEL/CentOS:
yum -y install openssl
4.2 Cách sử dụng openssl
Bước 1: Chúng ta thực hiện tạo một tệp có tên test-openssl.txt
và thêm vào nội dung như sau:
[root@tubt mnt]# touch test-openssl.txt
[root@tubt mnt]# echo Test OpenSSL > test-openssl.txt
[root@tubt mnt]# cat test-openssl.txt
Test OpenSSL
Bước 2: Sau khi tạo tệp chúng ta thực hiện mã hóa tệp đã tạo, trong quá trình mã hóa chúng ta cần nhập mật khẩu 2 lần:
[root@tubt mnt]# openssl enc -aes-256-cbc -in test-openssl.txt -out test-openssl.dat
enter aes-256-cbc encryption password:
Verifying – enter aes-256-cbc encryption password:
[root@tubt mnt]# ls -l
total 8
-rw-r–r–. 1 root root 32 Sep 28 09:16 test-openssl.dat
-rw-r–r–. 1 root root 13 Sep 28 09:11 test-openssl.txt
Trong đó các tùy chọn có ý nghĩa như sau:
enc
: Mã hóa-aes-256-cbc
: Thuật toán được sử dụng-in
: Đường dẫn đầy đủ của tệp được mã hóa-out
: Đường dẫn đầy đủ nơi nó sẽ được giải mã
Kiểm tra nội dung của tệp sau khi được mã hóa:
[root@tubt mnt]# cat test-openssl.dat
Salted__K▒d▒▒qSښ▒▒(S▒▒0XLT▒▒▒
Để giải mã được tệp mã hóa ở trên, chúng ta sử dụng lệnh openssl
như sau. Để kiểm tra chính xác chúng ta thực hiện xóa tệp gốc trước khi giải mã và để lại tệp mã hóa test-openssl.dat
như bên dưới:
[root@tubt mnt]# rm -rf test-openssl.txt
[root@tubt mnt]# ls -l
total 4
-rw-r–r–. 1 root root 32 Sep 28 09:16 test-openssl.dat
[root@tubt mnt]# openssl enc -aes-256-cbc -d -in test-openssl.dat -out test-openssl-decrypt.dat
enter aes-256-cbc decryption password:
[root@tubt mnt]# ll
total 8
-rw-r–r–. 1 root root 32 Sep 28 09:16 test-openssl.dat
-rw-r–r–. 1 root root 13 Sep 28 10:12 test-openssl-decrypt.dat
[root@tubt mnt]# cat test-openssl-decrypt.dat
Test OpenSSL
Khi giải mã chúng ta cần nhập đúng mật khẩu mà chúng ta đã tạo trong quá trình mã hóa
5. Lời kết
Bài viết trên đã giúp chúng ta hiểu hơn về mã hóa, giải mã và bảo vệ bằng mật khẩu với tập tin trên hệ điều hành Linux. Hy vọng bài viết này sẽ đem lại hữu ích cho các bạn
Chúc các bạn thành công và hẹn gặp lại các bạn trong các bài viết sau tại wiki.nhanhoa.com