Mã hóa, giải mã các tập tin và bảo vệ bằng mật khẩu trên Linux

Tác giả: 28/09/2022

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

Trả lời