banner
 .::*nix::. Mã hóa trong Linux với GnuPG - Phần 1 Go to original post Author: linsec.ca - Translator: Tống Anh Quân (quanta) - Entry Date: 13/02/2009 16:45:18
Trước tiên các bạn đọc bài viết của tranvanminh tại /hvaonline/posts/list/2303.html

Nguồn: http://linsec.ca/Using_GnuPG

Giới thiệu
GnuPG được sử dụng để mã hóa hoặc tạo các chữ ký số cho emails hoặc files. Nó sử dụng hệ thống 2 khoá: private key được dùng để đánh dấu và mã hoá, public key dùng để giải mã và xác nhận.

Generating a Key
Code:


[quanta@localhost ~]$ gpg --gen-key

gpg (GnuPG) 1.4.7; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: quanta
Email address: <a href="mailto:quanta@love.com">quanta@love.com</a>
Comment: Linux is my hobby
You selected this USER-ID:
"quanta (Linux is my hobby) <quanta@love.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++.+++++++++++++++...++++++++++++++++++++++++++++++.+++++++++++++++.+++++>.++++++++++....................................................................+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
.+++++.++++++++++++++++++++.++++++++++++++++++++.+++++++++++++++.+++++++++++++++..+++++++++++++++..+++++.++++++++++++++++++++++++++++++++++++++++++++++++++>....++++++++++>+++++................>.+++++.....................<..+++++............................................................+++++^^^
gpg: key F5A60BA5 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
pub 1024D/F5A60BA5 2007-12-11
Key fingerprint = CE51 C39F 1D65 B1FF DAF2 B526 5F96 C546 F5A6 0BA5
uid quanta (Linux is my hobby) <quanta@love.com>
sub 2048g/A27B406C 2007-12-11


Sau đó, bạn có thể sử dụng GPG để liệt kê thông tin về khoá mới của bạn:
Code:


$ gpg --list-keys

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
/home/quanta/.gnupg/pubring.gpg
-------------------------------
pub 1024D/F5A60BA5 2007-12-11
uid quanta (Linux is my hobby) <quanta@love.com>
sub 2048g/A27B406C 2007-12-11


Lệnh này sẽ trả về thông tin public cũng như private về khoá của bạn. Bây giờ hãy chú ý đến key fingerprint của bạn, mỗi fingerprint của key sẽ định danh duy nhất cho key. Khi bạn đưa ra key của bạn, mọi người có thể so sánh fingerprint được cung cấp với key bạn đưa cho họ để chắc chắn rằng key đó là chính xác:

$ gpg --fingerprint quanta@love.com
pub 1024D/F5A60BA5 2007-12-11
Key fingerprint = CE51 C39F 1D65 B1FF DAF2 B526 5F96 C546 F5A6 0BA5
uid quanta (Linux is my hobby) <quanta@love.com>
sub 2048g/A27B406C 2007-12-11
 

fingerprint cho key này là: CE51 C39F 1D65 B1FF DAF2 B526 5F96 C546 F5A6 0BA5. Bạn nên chép ra hoặc lưu nó ở đâu đó an toàn. Bạn có thể thêm nó vào email như một phần chữ ký của bạn. Bạn có thể sử dụng nó để xác nhận một thông báo là hợp lệ nếu key được sử dụng để đánh dấu thông báo giống với fingerprint trong chữ ký của bạn.

Sử dụng GnuPG để đánh dấu/mã hoá
Sau khi đã có key-pair bạn có thể bắt đầu tạo chữ ký số cho email hoặc files và mã hoá dữ liệu.
Đầu tiên bạn tạo một file wish.txt với nội dung: I want to become a white-hat hacker:
Code:


$ echo "I want to become a white-hat hacker" > wish.txt


Để mã hoá file này, bạn thực hiện:
Code:


$ gpg -ea -r quanta wish.txt


Lệnh này sẽ mã hoá file wish.txt sử dụng public key của quanta - điều này có nghĩa là chỉ có quanta mới có thể giải mã file này.
-e: encrypt
-a: ASCII
-r: recipient (quanta): bạn có thể sử dụng tên đầy đủ hoặc email
Kết thúc lệnh này, một file mới với tên gọi wish.txt.asc được tạo ra, chứa đựng các dữ liệu đã được mã hoá. Thử cat file này xem sao:

$ cat wish.txt.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.7 (GNU/Linux)

hQIOA6yzMbyie0BsEAgAl9AcgLdHFu0SSs/PKkJm5+i/aerrmBH5j7kcmdJIbvFA
1mHI8lEAgTFi4m5Eyedc19LNPPniHcyJwc1slVI2CuzsKYdnEevytNwzJhzwKI76
GZqgIPXsvT/+b33HQV82kkPQQoi+lUT4WceWzZ9eGVUQSn2bAW523gADXIXsnKhz
6Dl77fq8C+ielPH9CeDu1jMbjSEb+TSbut8tow+lGRdLd/S8AtHnFYN9wu1G4tgv
B60gWuw1Xx7Bptd4Dg2DMV9yFiviQD3C4vEN7zSRg7ADVcE1BZ6uPrMHw5Aen4zq
U4e7q6ShyefxDiufLgs+Z/36/9QjHnZrXLTDYZKPJwf/bDtu6U+eG4h9T57sedLx
STC6Jv+gaEyY4MU2TZNkItkoCLOvwKSbV8YvD9+J4fu0IwAi1tDD7fBMu5nGHe3o
Gg+wQQw2rfhzpwLKDO431O7BZAMcWVx/O1eKXKZDZbobRc3pf9aoK3HX0OTLKXTl
7ITsddnxfQuYaX/9xpecjtyVf0vD7KtDMu3D4Ypr0WU3mNP1JCChqW6pMMmApO26
t73lnUpjj1p6yhU/Vd2sDYqsIay5dtDQ4OWVM8ssKXjMYekKaVppX254yfC00euf
PGW9WtvkECAk2w6SSbOESRUwlaPJchG3B7/pQPNvqdDM5ePKfahzYeGLKzCkInEZ
jNJnAQO9PYBid2KhMKqkl8bevKLndeQpJsfoY89gB6AG21joHylH55m3m1KFSAwL
OlCH8+a/OkZXO3/OJsnM200FkEhnPgFFqYJR+NSpEK4Qzrtu5ZeaNI1bhepYs281
SS+/mloG3HgzpQ==
=/1oo
-----END PGP MESSAGE-----
 

Muốn giả mã, bạn thực hiện lệnh:
Code:


$ gpg -d wish.txt.asc > wish.txt


Lệnh này sẽ nhắc bạn nhập passphrase khi giả mã, sau khi nhập đúng, dữ liệu sẽ được giải mã và chi tiết về khoá mã hoá sẽ in ra trên màn hình:

$ gpg -d wish.txt.asc > wish.txt

You need a passphrase to unlock the secret key for
user: "quanta (Linux is my hobby) <quanta@love.com>"
2048-bit ELG-E key, ID A27B406C, created 2007-12-11 (main key ID F5A60BA5)

gpg: encrypted with 2048-bit ELG-E key, ID A27B406C, created 2007-12-11
"quanta (Linux is my hobby) <quanta@love.com>"
 

Như bạn nhìn thấy, dữ liệu đã được giải mã với key bí mật của quanta

Sử dụng GnuPG để đánh dấu chữ ký số cho files
Có 2 cách:
+ Nhúng luôn chữ ký vào bản thân file đó (thường dùng cho các tài liệu dạng text)
+ Đính kèm chữ ký số (binary files)
Code:


$ gpg --clearsign -a wish.txt


Lệnh này sẽ tạo một file với tên: wish.txt.asc có nội dung như sau:

$ cat wish.txt.asc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I want to become a white-hat hacker
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)

iD8DBQFHXtufX5bFRvWmC6URAgh2AKC6nCq8RNv+eVdbyvtCdJfGOgCTGQCeJOu4
omRfpVfhnW4Amgb6ZNO8otA=
=kSyl
-----END PGP SIGNATURE-----
 

Như bạn nhìn thấy, đầu tiên là nội dung của file đó, sau đó là thông tin về chữ ký.

Bây giờ bạn thử mở file wish.txt.asc ra và thêm một dấu ! vào cuối, sau đó thử verify lại, GPG sẽ chỉ ra rằng chữ ký của bạn là không hợp lệ:

$ gpg --verify wish.txt.asc
gpg: Signature made Wed 12 Dec 2007 01:49:03 AM ICT using DSA key ID F5A60BA5
gpg: BAD signature from "quanta (Linux is my hobby) <quanta@love.com>"
 

Bạn cũng có thể đánh dấu file theo cách không rõ ràng (non-clearsigned), nó sẽ tạo ra 1 file .asc khác, nhìn qua thì có vẻ mã hoá, nhưng thật sự thì không. Bất kỳ ai cũng có thể sử dụng tùy chọn -d để giải mã và xem nội dung của nó. Để đánh dấu theo cách này bạn sử dụng tùy chọn -s thay vì --clearsign

$ gpg -s -a wish.txt

You need a passphrase to unlock the secret key for
user: "quanta (Linux is my hobby) <quanta@love.com>"
1024-bit DSA key, ID F5A60BA5, created 2007-12-11
 


$ cat wish.txt.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.7 (GNU/Linux)

owGbwMvMwCQYP+2o29dl3EsZ11glcZRnFmfolVSUuMfdv+epUJ6YV6JQkq+QlJqc
n5uqkKhQnpFZkqqbkViikJGYnJ1apKgQlJqYk1PJ1WHPzMoA0gQzTZDpJAvD/Orz
exfecmesPDot0+eIUnX118s5yxkWrD+84lLE4lNTD2TtMHvEm3HyTcqFDgA=
=QyNg
-----END PGP MESSAGE-----
 


Nếu bạn muốn tạo một chữ ký số cho một file nhị phân, bạn phải sử dụng tùy chọn -b. Giả sử bạn đã có một file dream.tar.gz, bạn có thể tạo một chữ ký đính kèm cho nó bằng lệnh:

$ gpg -ba dream.tar.gz

You need a passphrase to unlock the secret key for
user: "quanta (Linux is my hobby) <quanta@love.com>"
1024-bit DSA key, ID F5A60BA5, created 2007-12-11
 

Chữ ký đính kèm sẽ được lưu trong file dream.tar.gz.asc. Bây giờ nếu ai đó download file của bạn và cả file chữ ký đính kèm, để kiểm tra xem file này có nguyên vẹn hay không họ có thể thi hành lệnh:

$ gpg --verify dream.tar.gz.asc
gpg: Signature made Wed 12 Dec 2007 02:17:34 AM ICT using DSA key ID F5A60BA5
gpg: Good signature from "quanta (Linux is my hobby) <quanta@love.com>"
 

Lệnh này sẽ so sánh chữ ký trong .asc file với lại file thật sự và GPG sẽ trả về good signature nếu chúng giống nhau, ngược lại là bad signature.

Những phần tiếp theo:
  • Importing and Managing GPG Keys

  • Revoking a GPG Key

  • GPG Signatures in RPM Files



[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Other posts in the same group:

Mã hóa trong Linux với GnuPG - Phần 1
Go to top Go to original post  

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|