Clear
Lead Graphic Papers

การใช้ PGP ด้วย Command line

ผู้เขียน: วิศัลย์ ประสงค์สุข
วันที่เผยแพร่: 1 มีนาคม 2556
ปรับปรุงล่าสุด: 1 มีนาคม 2556

Share on Facebook Share on Twitter Share on Google+

บทความของไทยเซิร์ตก่อนหน้านี้ ได้อธิบายที่มา รวมถึงวิธีการใช้งาน PGP ด้วยการใช้โปรแกรมแบบ GUI ซึ่งสามารถใช้งานโดยใช้เมาส์คลิกได้ ทั้งในระบบปฏิบัติการ Windows และ MAC OS X สำหรับบทความนี้ จะพาท่านผู้อ่าน หันมาลองใช้ Command line กันบ้าง เนื่องจากหากใช้ Command line ได้แล้ว ไม่ว่าผู้ใช้จะทดลองเปลี่ยนไปใช้คอมพิวเตอร์ระบบปฏิบัติการใด ก็จะสามารถใช้งาน PGP ได้ ก่อนที่จะเริ่ม ขอทบทวน Concept กันก่อน

ทบทวน Concept

เนื่องจากเป็นการทบทวนดังนั้นในส่วนนี้จึงเป็นเขียนเป็นคำอธิบายสั้น ๆ ที่ไม่ได้ลงรายละเอียดลึกมากนัก แต่เพียงพอที่จะทำให้เห็นภาพว่าหัวข้อดังต่อไปนี้คืออะไร และมี Concept เป็นอย่างไร

Public key cryptography

Public key cryptography จะประกอบด้วย key อยู่ 2 ชนิดที่มีความสัมพันธ์กันทางคณิตศาสตร์ เรียกว่า คู่กุญแจ คือ Private key ซึ่งเก็บไว้กับเจ้าของเท่านั้น และ Public key ซึ่งสามารถแจกจ่ายให้ผู้อื่นได้ แน่นอนว่าทั้ง Private และ Public key นั้น เจ้าของต้องเป็นผู้สร้างเอง แต่เจ้าของไม่จำเป็นต้องแจก Public key ด้วยตัวเอง เพราะว่าในปัจจุบันมีเครื่องให้บริการกุญแจสาธารณะ (Public key server) ซึ่งเจ้าของกุญแจสามารถอัพโหลดไฟล์ Public key ของตนเองขึ้นไปเก็บไว้ที่เครื่องได้ ซึ่งทำให้ผู้อื่นสามารถดาวน์โหลด Public key ของท่านไปใช้งานได้ การใช้งาน Public key cryptography หลักๆ มีอยู่ 2 กระบวนการด้วยกัน คือ กระบวนการเข้ารหัสลับ (Encryption) และ กระบวนการตรวจสอบลายมือชื่อดิจิทัล (Digital Signature Verification)

การเข้ารหัสลับ (Encryption)

สมมุติให้ Alice เป็นผู้ส่ง และ Bob เป็นผู้รับ ในการส่งข้อความลับ Alice จะใช้ Public key ของ Bob ซึ่งอาจได้มาจาก Public key server หรือ Bob ส่งมาให้ เข้ารหัสลับข้อความแล้วจึงส่งไปให้ Bob เมื่อ Bob ได้รับข้อความที่เข้ารหัสลับแล้ว ก็จะใช็ Private key ของตนเองในการถอดรหัสลับเพื่ออ่านข้อความ เป็นต้น

การตรวจสอบลายมือชื่อดิจิทัล (Digital Signature Verification)

ในกรณีที่ Bob ได้รับข้อความมาจาก Alice ในการนี้ Bob จะแน่ใจได้อย่างไรว่ามาจาก Alice จริง ผู้อ่านลองนึกถึงตอนที่มีคนส่งกระดาษโน๊ตมาให้ บอกว่าผู้จัดการอยากให้ทำงานอย่างหนึ่ง ผู้อ่านจะทราบได้อย่างไรว่ากระดาษโน๊ตนั้นมาจากผู้จัดการจริง วิธีการหนึ่งที่ใช้กันอยู่ทั่วไปคือการใช้ลายมือชื่อหรือการเซ็นกำกับ ในทางดิจิทัลก็เช่นกัน Alice สามารถใช้ Private key ในการลงลายมือชื่อ (Sign) หรือเซ็นรับรองเอกสารได้ (อย่าลืมว่า Private key ของ Alice มีเพียง Alice ที่ใช้ได้) เมื่อ Bob ได้รับเอกสารก็จะสามารถใช้ Public key ของ Alice ในการตรวจสอบลายเซ็นได้ [1]

Web of Trust

ย้อนกลับไปตรงที่ Alice หรือ Bob ทำการดาวน์โหลด Public key มาจาก Public key server พวกเขาจะทราบได้อย่างไรว่าดาวน์โหลด Public key มาถูกอัน ไม่ใช่อันที่ผู้ไม่หวังดีสร้างขึ้นมาเพื่อหลอกลวงผู้อื่น ในกรณีเช่นนี้ Web of Trust สามารถเข้ามาแก้ปัญหาได้ โดยใช้วิธีการให้ผู้อื่นมารับรอง Public key ว่า Public key นั้นเป็นของคนผู้นั้นจริง [1] ลองนึกถึงโลกความเป็นจริง สมมติมีเพื่อนของน้องสาวมาที่บ้าน ผู้อ่านจะทราบได้อย่างไรว่าคนผู้นั้นเป็นเพื่อนของน้องสาวจริง ซึ่งก็แน่นอน ผู้อ่านก็ต้องถามน้องสาวว่าใช่เพื่อนของน้องจริงหรือไม่ หลักการนี้อาศัยการที่ผู้อ่านเชื่อคนที่สามารถเชื่อใจได้ ว่าบุคคลแปลกหน้านั้นไม่ใช่คนอันตราย ในการแลกเปลี่ยน Public key ก็เช่นเดียวกัน หาก Alice ต้องการ Public key ของ Bob แต่ไม่แน่ใจว่า Public key นั้นเป็นของ Bob จริง แต่หาก Alice พบว่า Public key นั้นมี Carol เซ็นรับรองอยู่ และ Carol เป็นคนที่ Alice เชื่อใจได้ Alice ก็สามารถยอมรับว่า Public key เป็นของ Bob ได้ อันที่จริงแล้วหลักการการเชื่อใจยังมีความวุ่นวายมากกว่านี้ อย่างเช่นเรื่องระดับของความเชื่อถือ (Trust level) ซึ่งจะกล่าวถึงในหัวข้อการตั้งระดับความเชื่อถือของเจ้าของ Public key

การใช้ PGP ด้วย Command line

การสร้างคู่กุญแจ

ผู้อ่านสามารถสร้างคู่กุญแจได้ด้วยการใช้คำสั่ง gpg --gen-key ซึ่งจะมีคำถามเกี่ยวกับรายละเอียดของกุญแจขึ้นมาให้ผู้ใช้เลือกดังรูปที่ 1

Pa2013ge002-1.jpg
รูปที่ 1 รายละเอียดของคู่กุญแจ

หมายเลข 1 คือการเรียกใช้คำสั่ง gpg --gen-key

หมายเลข 2 คือการเลือกอัลกอริทึมของการสร้างคู่กุญแจ ในที่นี้เลือกใช้ RSA เป็นอัลกอริทึมที่สร้าง Public key และ private key

หมายเลข 3 คือการเลือก keysize ซึ่งในที่นี้คือ 2048 bits การเลือก keysize นี้ หากเลือกขนาดเล็ก จะทำให้ประสิทธิภาพของการคำนวนเร็ว แต่มีความมั่นคงปลอดภัยน้อย เพราะถูกแคร็ก (Crack) ได้ง่าย กลับกันหากเลือก keysize ใหญ่ ก็จะทำให้การคำนวนช้า แต่มีความมั่นคงปลอดภัยเพิ่มขึ้น
* keysize ทำไมหน่วยเป็น bit?
จากหมายเลข 2 ที่เราเลือกอัลกอริทึมเป็น RSA วิธีการสร้างคู่กุญแจของอัลกอรึทึมนี้คือการเลือกตัวเลขจำนวนเฉพาะ (Prime number) มาใช้ในการคำนวนเพื่อสร้างคู่กุญแจ หากเป็นคนคำนวน ก็คงเลือกจำนวนเฉพาะที่มีค่าน้อยเช่น 3 5 7 หรืออื่น ๆ มาคำนวน ซึ่งหากเป็นเลข 7 นี้เมื่อแปลงเป็นเลขฐานสองแล้วจะใช้ bit จำนวน 5 bit ในการแสดงค่า (7 = 10001, ใช้ 5 bits ในการแสดงค่า) แต่ในที่นี้เลือกใช้จำนวนเฉพาะที่ใช้ bit ในการแสดงค่าถึง 2048 bits
* ทำไมต้องใช้จำนวนเฉพาะ?
ขั้นตอนหนึ่งของการคำนวนเพื่อสร้างคู่กุญแจของอัลกอริทึม RSA จะต้องใช้จำนวนเฉพาะและผลคูณของจำนวนเฉพาะมาใช้ในสมการ คุณสมบัติหนึ่งของจำนวนเฉพาะคือเมื่อนำมาคูณกัน จะมีแต่จำนวนเฉพาะ 2 ตัวนี้เท่านั้นที่เป็นตัวประกอบของผลคูณ ซึ่งเมื่อเราเลือก keysize เป็น 2048 bits ก็ทำให้แทบที่จะเป็นไปไม่ได้เลย ที่จะหาจำนวนเฉพาะขนาด 2048 bits 2 ตัว มาสร้างคู่กุญแจ เพื่อเลียนแบบได้

หมายเลข 4 คือการกำหนดอายุของคู่กุญแจ ในที่นี้กำหนดให้ใช้ได้เป็นเวลา 2 ปี การตั้งวันหมดอายุของคู่กุญแจนี้มีความสำคัญ เนื่องจากหาก Private key ถูกขโมยออกไปโดยที่ผู้ใช้ไม่ทราบ และผู้ใช้ไม่ตั้งวันหมดอายุก็จะทำให้ผู้ไม่หวังทำการ Crack Passphrase ได้อย่างสบายใจ แต่หากตั้งวันหมดอายุเอาไว้ ผู้ไม่หวังดีต้องทำงานแข่งกับเวลา ซึ่งการตั้งวันหมดอายุที่เหมาะสมนั้น จึงเป็นการกำหนดเวลาที่คาดว่า Passphrase นี้จะไม่ถูก Crack ภายในเวลาที่กำหนด

หมายเลข 5 คือการยืนยันวันที่ที่กุญแจหมดอายุ

หมายเลข 6 คือการกรอกรายละเอียดของเจ้าของกุญแจ ซึ่งจะประกอบไปด้วย ชื่อ และอีเมล ของผู้ใช้

หมายเลข 7 คือการยืนยันความถูกต้องของข้อมูลรายละเอียดของเจ้าของกุญแจ

หมายเลข 8 คือการกำหนด Passphrase ให้กับกุญแจ ผู้ใช้จำเป็นต้องจำ Passphrase ให้ได้ เนื่องจากการจะใช้งาน Private key ระบบจะให้ป้อน Passphrase ในการยืนยันว่าเป็นเจ้าของคู่กุญแจนั้นจริง

เมื่อดำเนินการทั้งหมดเรียบร้อยแล้ว โปรแกรมจะแสดงรายละเอียดของคู่กุญแจที่พี่งถูกสร้าง ซึ่งจากรูปที่ 1 จะพบว่ารายละเอียดของคู่กุญแจที่ควรทราบมีดังนี้
UID คือ Alice Thesender
key ID คือ 50DC73A7
Fingerprint คือ B3E5 73B7 4579 E458 DC01 4A56 3561 B6F6 50DC 73A7
* Fingerprint ใช้สำหรับตรวจสอบความครบถ้วนสมบูรณ์ของ Public key (รายละเอียดอธิบายในหัวข้อการเซ็นรับรองกุญแจสาธารณะที่นำเข้าสู่ระบบ)

การสร้าง Revocation Certificate

ในกรณีที่ต้องการยกเลิกคู่กุญแจด้วยเหตุผลบางประการ เช่น ผู้ไม่ประสงค์ดีทราบ Passphrase และได้ Private key ของผู้ใช้ไป หรือเทคโนโลยีพัฒนามากขึ้น ทำให้อัลกอริทึมที่ใช้สร้างคู่กุญแจมีความมั่นคงปลอดภัยไม่เพียงพอ ผู้ใช้สามารถใช้ Revocation Certificate ในการประกาศหยุดการใช้งานคู่กุญแจนั้นได้ แต่ในการสร้าง Revocation Certificate นั้นจำเป็นต้องมี Private key และ จำ Passphrase ได้ จึงเป็นการดีกว่าที่จะสร้าง Revocation Certificate เอาไว้ในตอนที่ยังมีสิ่งเหล่านี้อยู่ เมื่อสร้างเสร็จแล้วก็ควรจะเก็บ Revocation Certificate เอาไว้อย่างดี [2] และไม่ควรเก็บไว้ที่เดียวกับ Private key การสร้าง Revocation Certificate สามารถทำได้โดยใช้คำสั่ง

gpg -o [output file name] --gen-revoke [UID]
เช่น
gpg -o Alice_revoke --gen-revoke “Alice Thesender” ดังรูปที่ 2

Pa2013ge002-2.jpg
รูปที่ 2 การสร้าง Revocation Certificate

หมายเลข 1 คือการใช้คำสั่งในการสร้าง Revocation Certificate
-o หมายถึง การเขียนผลลัพธ์ของคำสั่งลงในไฟล์ ซึ่งในที่นี้กำหนดให้ไฟล์ชื่อ Alice_revoke

หมายเลข 2 คือการยืนยันความถูกต้องของ Private key ที่ต้องการทำ Revocation Certificate

หมายเลข 3 คือการเลือกเหตุผลของการทำ Revocation Certificate ในที่นี้เลือก key is no longer used.

หมายเลข 4 คือการอธิบายเหตุผลเพิ่มเติม อาจจะเป็นเหตุผลสนับสนุนเหตุผลที่เลือกในหมายเลข 3 ในที่นี้ไม่ได้ใส่เหตุผลใดเพิ่มเติม

หมายเลข 5 คือการยืนยันว่าผู้ใช้ต้องการสร้าง Revocation key นั้นจริง ด้วยเหตุผลตามหมายเลข 3 และ 4

หมายเลข 6 คือการใส่ Passphrase ของ Private key เพื่อยืนยันว่าเจ้าของกุญแจเป็นผู้ดำเนินการสร้าง Revocation Certificate

หลังจากสร้างแล้ว เมื่อเกิดเหตุที่ต้องการยกเลิกการใช้งานกุญแจ ผู้ใช้จะต้องอัพโหลด Revocation Certificate ไปยัง Public key server ซึ่งวิธีการอัพโหลดนั้นจะกล่าวในลำดับถัดไป

การแลกเปลี่ยนกุญแจสาธารณะ

การส่งกุญแจสาธารณะให้กับผู้รับ

ผู้ใช้สามารถส่งกุญแจสาธารณะให้กับผู้รับได้ 2 วิธี คือส่งด้วยตนเอง และให้ผู้รับดาวน์โหลด Public key จาก Public key server ทั้งสองวิธีจะต้องทำการ Export ด้วยคำสั่งที่แตกต่างกัน โดยที่
การส่ง Public key ด้วยตนเอง สามารถใช้คำสั่ง

gpg --export -u [UID] -o [output file name]
เช่น
gpg --export -u “Alice Thesender” -o alice_pub

-u คือการเลือกกุญแจตาม UID หรือส่วนของ UID (เช่น Alice) ในกรณีที่ในคอมพิวเตอร์เครื่องนั้นมี Public key อยู่หลายอัน ผู้ใช้สามารถเลือก Public key ที่ต้องการ Export ได้ด้วยการระบุ UID หรือ key Id ได้

หลังจากได้ไฟล์ alice_pub ผู้ใช้สามารถส่ง Public key นี้ด้วยการคัดลอกลง Thumb drive หรือ แนบไฟล์ในอีเมลส่งไปหาผู้รับได้

การส่ง Public key ไปเก็บไว้ที่ Public key server สามารถใช้คำสั่ง
gpg --send-key --keyserver [key server] [key id]
เช่น
gpg --send-key --keyserver pgp.mit.edu 50DC73A7

Public key server นั้นมีอยู่หลาย Server ด้วยกัน [3] แต่ทั้งหมดจะทำการ Synchronize ข้อมูลกัน ดังนั้นไม่ว่าผู้ใช้จะอัพโหลด Public key ไปไว้กับ Server ใด Server อื่น ๆ ก็จะมีข้อมูล Public key ของผู้ใช้

การนำเข้ากุญแจสาธารณะ

ผู้ใช้สามารถนำเข้ากุญแจสาธารณะได้ 2 รูปแบบ คือ นำเข้าจากไฟล์ที่ได้รับ และ นำเข้าจาก Public key server ซึ่งมีวิธีการที่แตกต่างกันดังต่อไปนี้
การนำเข้า Public key จากไฟล์
ผู้ใช้สามารถนำเข้า Public key จากไฟล์ได้โดยใช้คำสั่ง
gpg --import [public key file name]
เช่น
gpg --import alice_pub
การนำเข้า Public key จาก Public key server
gpg --search-keys [email หรือ UID]
เช่น
gpg --search-keys alice.thesenderwonderland.com
หรือ
gpg --search-keys “Alice Thesender”

หากมีผลลัพธ์ที่ตรงกับสิ่งที่ค้นหา จะมีข้อความแสดงขึ้นมาเพื่อให้ผู้ใช้เลือก Public key ที่ต้องการ ดังแสดงในรูปที่ 3

Pa2013ge002-3.jpg
รูปที่ 3 เลือก Public key ที่ต้องการ

ในกรณีที่ทราบ key id ของ Public key ที่ต้องการอยู่แล้ว ผู้ใช้สามารถใช้คำสั่งดังต่อไปนี้เพื่อนำกุญแจสาธารณะเข้าสู่ระบบ
gpg --recv-keys [key_id]
เช่น
gpg --recv-keys 50DC73A7

การเซ็นรับรองกุญแจสาธารณะที่นำเข้าสู่ระบบ

เมื่อผู้ใช้นำเข้ากุญแจสาธารณะที่ต้องการได้แล้ว ลำดับถัดไป ในการที่จะนำกุญแจสาธารณะนั้นมาใช้ ผู้ใช้จะต้องทำการเซ็นรับรองกุญแจสาธารณะก่อน มิเช่นนั้นระบบจะทำการเตือนทุกครั้งเมื่อกุญแจสาธารณะนี้ถูกเรียกใช้งาน การเซ็นรับรองกุญแจสาธารณะ เปรียบเสมือนผู้ใช้ทำการรับรองว่ากุญแจสาธารณะนั้นเป็นของเจ้าของตามที่ระบุใน UID จริง ซึ่งผู้ใช้สามารถตรวจสอบความถูกต้องของกุญแจสาธาณะนี้ได้โดยการตรวจสอบ Fingerprint ของ Public key ว่าตรงตามที่เจ้าของประกาศไว้หรือไม่ [4] ดังนั้นการประกาศ Fingerprint ของกุญแจนั้นจึงเป็นสิ่งสำคัญ หน่วยงาน หรือบุคคลอาจจะเลือกใช้วิธีการประกาศโดยเขียนเอาไว้บนเว็บไซต์ของหน่วยงานหรือเว็บไซต์ส่วนตัว หรืออีกวิธีหนึ่งคือพิมพ์ Fingerprint ไว้ในนามบัตรก็ได้ การดู Fingerprint ของ Public key ที่รับมาสามารถทำได้ด้วยคำสั่ง
gpg --fingerprint [UID]
เช่น
gpg --fingerprint Alice Thesender

หลังจากที่ผู้ใช้ทำการตรวจสอบจนมั่นใจได้แล้วว่า Public key ที่รับมานั้นเป็นของเจ้าของจริง ผู้ใช้สามารถทำการเซ็นรับรอง Public key ได้โดยใช้คำสั่ง

gpg --sign-key [Public key]

ซึ่งคำสั่งด้านบนนี้จะใช้ Private key ที่เป็น Default key (Default key เป็น Private key ตัวแรกที่มีอยู่ในคอมพิวเตอร์ ส่วนใหญ่จะเป็นคู่กุญแจที่ผู้ใช้สร้างในคอมพิวเตอร์เครื่องนั้นเป็นครั้งแรก) เป็นตัวเซ็นรับรอง แต่หากต้องการใช้เลือก Private key อื่นในการเซ็นรับรอง สามารถทำได้ด้วยคำสั่ง

gpg --local-user [UID of Private key] --sign-key [UID of Public key]
เช่น
gpg --local-user Alice --sign-key Bob

คำสั่งด้านบนนี้หมายถึง ใช้ Private key ที่มี UID คือ Alice ในการเซ็นรับรอง Public key ที่มี UID คือ Bob

การตั้งระดับความเชื่อถือของ Public key

ระดับความเชื่อถือ (Trust level) เป็นเหมือนการแสดงความคิดเห็นของผู้ใช้ว่า เจ้าของ Public key ที่ผู้ใช้รับมานั้น มีความน่าเชื่อถือเพียงใด อาจจะดูจากลักษณะนิสัยว่าเป็นคนมีความตระหนักในการใช้งานระบบคอมพิวเตอร์มากน้อยเพียงใด เช่นมีการตรวจสอบความถูกต้องของ Public key ก่อนเซ็นรับรอง Public key ของผู้อื่นหรือไม่ ระดับความเชื่อถือนี้จะมีผลต่อระบบ Web of Trust ซึ่งระดับความเชื่อถือ มีดังนี้
  1. Unknown trust ผู้ใช้ควรเลือกก็ต่อเมื่อผู้ใช้ไม่ทราบว่าเจ้าของ Public key นั้นทำการตรวจสอบ Public key ของผู้อื่นก่อนเซ็นรับรองความถูกต้องหรือไม่ Trust level นี้จะทำให้ Web of Trust ของผู้ใช้ไม่เชื่อว่า Public key ที่ผู้นั้นเซ็นรับรองเป็นของเจ้าของจริง
  2. Never Trust ผู้ใช้ควรเลือกก็ต่อเมื่อ ผู้ใช้ทราบว่าเจ้าของ Public key ที่ผู้ใช้รับมานั้น ไม่มีการตรวจสอบความถูกต้องของ Public key เลย แต่เซ็นรับรองความถูกต้อง Public key ของผู้อื่น Trust level นี้จะทำให้ Web of Trust ของผู้ใช้ไม่เชื่อว่า Public key ที่ผู้นั้นเซ็นรับรองเป็นของเจ้าของจริง
  3. Marginal Trust ผู้ใช้ควรเลือกก็ต่อเมื่อ ผู้ใช้เห็นว่าเจ้าของ Public key ที่ผู้ใช้รับมานั้นทำการตรวจสอบความถูกต้องของ Public key เป็นบางครั้ง ก่อนเซ็นรับรองความถูกต้อง Public key ของผู้อื่น Trust level นี้จะทำให้ Web of Trust ของผู้ใช้ยังไม่เชื่อว่า Public key ที่ผู้นั้นรับรองเป็นของเจ้าของจริง จนกว่าจะมีผู้ที่อยู่ในระดับ Marginal Trust 3 คน เซ็นรับรอง Public key นั้น
  4. Full Trust ผู้ใช้ควรเลือกก็ต่อเมื่อ ผู้ใช้เห็นว่าเจ้าของ Public key ที่ผู้ใช้รับมานั้น ทำการตรวจสอบความถูกต้องของ Public key ก่อนทำการเซ็นรับรองอยู่เสมอ Trust level นี้จะทำให้ Web of Trust ของผู้ใช้เชื่อว่า Public key ที่ผู้นั้นรับรองเป็นของเจ้าของจริง
  5. Ultimate trust สำหรับ Trust level นี้ ควรเลือกก็ต่อเมื่อเป็น Public key ของผู้ใช้เอง เช่น ในกรณีผู้ใช้นำเข้า Public key ของตนเองในคอมพิวเตอร์อีกเครื่องหนึ่ง
ผู้ใช้สามารถตั้งระดับความเชื่อถือของ Public key ที่รับเข้ามาได้ด้วยคำสั่ง
gpg --edit-key [UID]
เช่น
gpg --edit-key Bob ดังรูปที่ 4

Pa2013ge002-4.jpg
รูปที่ 4 กำหนด Trust level ให้ Public key

หมายเลข 1 คือการเรียกใช้คำสั่ง Edit key

หมายเลข 2 จะเห็นว่า Public key ที่ผ่านการเซ็นรับรองแล้วจะมีความถูกต้อง (Validity) เป็น Full ส่วน Trust จะเป็น unknown

หมายเลข 3 เป็นการพิมพ์คำสั่ง trust เพื่อตั้งระดับของ Trust level

หมายเลข 4 เป็นการเลือก Trust level ซึ่งในที่นี้เลือกเป็น Marginal trust

หมายเลข 5 จะเห็นว่าหลังจากตั้ง Trust level แล้วค่า Trust จะเปลี่ยนเป็น marginal

การลงลายมือชื่อและการตรวจสอบ

การลงลายมือชื่อ

การลงลายมือชื่อหรือการเซ็นรับรองในที่นี้ มี 3 คำสั่งที่แตกต่างกันดังนี้
คำสั่ง Sign
คำสั่ง Sign นี้จะเป็นการเข้ารหัสลับ (Encrypt) ข้อความหรือไฟล์ด้วย Private key ของผู้ใช้ ซึ่งผู้รับจะต้องนำ Public key ของผู้ใช้ในการถอดรหัสลับ (Decrypt) เพื่ออ่านข้อความภายใน ผู้ใช้สามารถทำการเซ็นรับรองเอกสารได้โดยใช้คำสั่ง

gpg -a --sign [file name]

-a หมายถึง การกำหนดให้เปลี่ยนรูปแบบของผลลัพธ์จากรูปแบบ Binary เป็นรูปแบบ ASCII ซึ่งเหมาะกับใช้ในการส่งอีเมลมากกว่า [5]

คำสั่ง Clearsign คำสั่ง Clearsign จะแสดงข้อความหรือเนื้อของไฟล์ไว้ และนำผลการเข้ารหัสลับมาต่อท้ายเป็นส่วนของ Signature ซึ่งผู้รับยังสามารถใช้ Public key ของผู้ส่งในการตรวจสอบได้ ผู้ใช้สามารถทำการเซ็นรับรองเอกสารได้โดยใช้คำสั่ง

gpg --clearsign [file name]

* คำสั่ง Clearsign ไม่จำเป็นต้องใส่ -a เนื่องจากผลลัพธ์ออกมาในรูปแบบ ASCII อยู่แล้ว

คำสั่ง Detach-sign คำสั่ง Detach-sign จะแยกเอาเฉพาะส่วน Signature ของ Clearsign มาไว้อีกไฟล์หนึ่งทำให้มีขนาดเล็กมาก ซึ่งจะทำให้เกิดประโยชน์เมื่อไฟล์ที่ต้องการเซ็นรับรองมีขนาดใหญ่ ช่วยให้ประหยัดพื้นที่ในการจัดเก็บไฟล์ ผู้ใช้สามารถทำการเซ็นรับรองเอกสารได้โดยใช้คำสั่ง

gpg -a --detach-sign [file name]

* ทั้งสามคำสั่ง หากผู้ใช้ต้องการเลือก Private key อื่นนอกจาก Default key ให้เพิ่ม -u [UID] หลัง -a

ผลลัพธ์ของการ Sign ด้วยคำสั่งทั้งสามดังกล่าวแสดงไว้ในตารางที่ 1
ตารางที่ 1 ผลของการเซ็นรับรองข้อความหรือไฟล์ด้วยคำสั่งทั้งสาม
คำสั่งผลลัพธ์
Sign with -a optionPa2013ge002-6.jpg
ClearsignPa2013ge002-7.jpg
Detach sign with -a optionPa2013ge002-8.jpg

การตรวจสอบ

ผู้ใช้สามารถตรวจสอบเอกสารที่ได้รับการเซ็นรับรองได้ หากทำการนำเข้า Public key ของผู้ส่งมาแล้ว สามารถใข้คำสั่งต่อไปนี้ในการตรวจสอบ

gpg --verify [Sign_file name]
เช่น
gpg --verify Sign-a-Myfile.txt.sig ผลของการตรวจสอบแสดงดังรูปที่ 5

Pa2013ge002-5.jpg
รูปที่ 5 ตรวจสอบ

หมายเลข 1 คือการใช้คำสั่งในการตรวจสอบไฟล์ที่ได้รับการเซ็นรับรอง

หมายเลข 2 จะเห็น วัน เวลา และ key id ที่ใช้ในการเซ็นรับรองเอกสาร

หมายเลข 3 แสดงให้เห็นว่า key id ที่แสดงดังกล่าว เป็นของ Alice Thesender

* ในการตรวจสอบ Detach Signature สามารถทำได้ด้วยคำสั่ง
gpg --verify [Sign_file name] [file name]
เช่น
gpg --verify Detach-sign-a-Myfile.txt Myfile.txt

การเข้ารหัสลับและการถอดรหัสลับ

การเข้ารหัสลับ

เมื่อผู้ใช้นำเข้า Public key ของผู้รับแล้ว สามารถใช้คำสั่งดังต่อไปนี้ในการเข้ารหัสลับ

gpg -e -r [UID of Receiver] [file name]
เช่น
gpg -e -r Bob Myfile.txt

-r คือ คำสั่งในการระบุผู้รับ

การถอดรหัสลับ

ผู้ใช้สามารถทำการถอดรหัสลับได้ โดยใช้คำสั่ง

gpg -o [New file name] -d [Encrypted file name]
เช่น
gpg -o Myfile.txt -d Myfile.txt.gpg

อ้างอิง

  1. http://www.dewinter.com/gnupg_howto/english/GPGMiniHowto-1.html
  2. http://www.dewinter.com/gnupg_howto/english/GPGMiniHowto-3.html#ss3.4
  3. https://github.com/GPGTools/GPGTools/wiki/Keyservers
  4. http://www.spywarewarrior.com/uiuc/gpg/gpg-com-4.htm#4-6
  5. http://www.spywarewarrior.com/uiuc/gpg/gpg-com-0.htm

Clear