GnuPG หรือ GPG นั้นคืออะไร
GnuPG หรือ GPG (คนส่วนใหญ่จะเรียกว่า GPG) คือ cryptographic software หรือ ซอฟท์แวร์ที่เอาไว้เข้ารหัสไฟล์
แล้ว GnuPG หรือ GPG มันมีประโยชน์อย่างไร
ผมจะสมมตุเหตุการณ์ขึ้นมาดังนี้ ผมมีไฟล์ข้อมูลของ server ตัวหนึ่งซึ่งถูกเก็บอยู่ในไฟล์ server-info.txt ซึ่งในนั้นจะประกอบไปด้วย host, username, password และผมต้องการส่งไฟล์นี้ไปให้เพื่อนผ่าน thumbdrive (สมมตินะครับเพราะชีวิตจริงผมคงไม่ส่งรหัสผ่านให้เพื่อนผ่าน thumbdrive ถ้าไม่จำเป็นจริงๆ) จากนั้นถ้าผมทำเจ้า thumbdrive นี้หายและมีคนที่เชี่ยวชาญเรื่อง IT เก็บได้ อะไรจะเกิดขึ้น? หรือถ้าคุณส่งไฟล์ผ่าน network คุณจะรู้ได้อย่างไรละว่าจะไม่มี Hacker คอย sniff ข้อมูลของคุณอยู่ นี้ละครับความหายนะจะเกิดขึ้นถ้าเราไม่ได้ทำการเข้ารหัสไฟล์
มาดูวิธีการใช้งานเจ้า GnuPG หรือ GPG กันเถอะ
1.ในขั้นแรกเราต้อง generate key ขึ้นมาด้วยคำสั่ง
gpg --gen-key
จากนั้นเราจะต้องตอบคำถามต่างๆดังนี้
เลือกชนิดของ key เป็น RSA กรอก 1
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 1
จากนั้นกำหนดขนาดของ key เท่ากับ 2048
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 2048
เลือกการหมดอายุของ key เป็นแบบ "ไม่มีวันหมดอายุ"
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
แล้วก็ตอบ y เมื่อข้อมูลของคุณถูกต้องแล้ว
Is this correct? (y/N) y
จากนั้นก็ให้กรอก ชื่อจริง, อีเมล์, และคอมเมนต์ (คอมเมนต์คือสิ่งที่บ่งบอกว่าเป็นคุณ) ในตัวอย่างนี้ผมใช้ชื่อว่า Neo Anderson (เป็นภาษาอังกฤษเท่านั้นนะครับ ส่วนนี้สำคัญมาก เพราะต้องใช้ในการระบุตัวตนเจ้าของ key ที่แท้จริง)
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: Neo Anderson
Email address: neo_anderson@youremail.com
Comment: Delve Dev
ให้ตรวจสอบข้อมูลว่าถูกต้องหรือไม่จากนั้นก็กรอก o ถ้าข้อมูลถูกต้อง
You selected this USER-ID:
"Neo Anderson (Delve Dev) <neo_anderson youremail.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
ขั้นตอนต้องกรอกรหัสผ่านที่เรียกว่า passphrase สำหรับป้องกัน private key ของเรา
You need a Passphrase to protect your secret key.
Enter passphrase:
ขั้นตอนนี้คือการ generate key โดยคุณจะต้องทำให้ CPU ของคุณทำงานโดยการพิมพ์อะไรก็ได้ที่ terminal ขั้นตอนนี้ทำเพื่ออะไร? เพื่อให้โปรแกรม generate key โดยการคำนวนจากการใช้งานทรัพยากร เพื่อให้ key ของเรามีความซับซ้อนมากขึ้น และไม่เกิด 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.
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 284 more bytes)
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.
พิมพ์ keyboard มั่วๆไปเรื่อยๆ สลับกับขยับ mouse จนกว่าจะมี output เหมือนด้านล่าง
grngpg: /home/delvedev/.gnupg/trustdb.gpg: trustdb created
gpg: key 4EB54E6C 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: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 2048R/4EB54E6C 2013-05-13
Key fingerprint = FD42 8E30 4C81 5977 AE6D CEF0 9279 A047 4EB5 4E6C
uid Neo Anderson (Delve Dev)
sub 2048R/FEC8F755 2013-05-13
เสร็จสิ้นการ generate key
ตรวจสอบ key ด้วยคำสั่ง
gpg --list-key
ผลลัพท์ที่ได้
/home/delvedev/.gnupg/pubring.gpg
---------------------------------
pub 2048R/4EB54E6C 2013-05-13
uid Neo Anderson (Delve Dev) <neo_anderson youremail.com>
sub 2048R/FEC8F755 2013-05-13
เดี๋ยวมาติดตามกันต่อนะครับ