Cryptography 101

Chitipat Thabsuwan
2 min readFeb 19, 2023

--

เมื่อไม่นานมานี้ ผมได้มีโอกาสเข้าร่วม Workshop เกี่ยวกับมาตรฐานการเชื่อมโยงและแลกเปลี่ยนข้อมูลภาครัฐ (Thailand Government Information eXchange : TGIX) เลยถือโอกาสนี้ทบทวนและสรุปความรู้คร่าว ๆ เกี่ยวกับการเข้ารหัสข้อมูลที่เคยได้เรียนมาด้วย

จุดประสงค์หลักของศาสตร์การเข้ารหัสมีด้วยกันอยู่ 3 อย่าง ได้แก่

  1. Confidentiality — ข้อมูลต้องเป็นความลับ
  2. Integrity — ข้อมูลต้องถูกต้องและน่าเชื่อถือ
  3. Availability — ข้อมูลต้องเข้าถึงได้เฉพาะผู้ได้รับอนุญาต
Source: https://www.f5.com/labs/learning-center/what-is-the-cia-triad

เราสามารถแบ่งประเภทของระบบการเข้ารหัส (Cryptosystems) ได้เป็น 2 แบบ คือ สมมาตร (Symmetric) กับ ไม่สมมาตร (Asymmetric)

Symmetric-key cryptography

By MarcT0K (icons by JGraph) — Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=128651167

คือการใช้กุญแจหรือ Key ที่เหมือนกันทั้งการเข้ารหัส และการถอดรหัส ตัวอย่างเช่น การเข้ารหัสของ Julius Caesar ที่โด่งดัง โดยวิธีนี้ ผู้รับสารจะถอดรหัสได้เมื่อใช้ Key เดียวกันกับที่ผู้ส่งสารใช้ในการเข้ารหัส

Asymmetric-key cryptography

(Left) By Davidgothberg — Own work, Public Domain, https://commons.wikimedia.org/w/index.php?curid=1028460 (Right) By FlippyFlink — Combined changed the image https://en.wikipedia.org/wiki/File:Public_key_encryption.svg from encryption to signing., CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=78867393

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

โดยมีการใช้งานที่แพร่หลายอยู่ 2 รูปแบบ ได้แก่

1. Public key encryption

เมื่อเราต้องการส่งข้อความให้ใคร และต้องการให้เขาเป็นคนเดียวที่อ่านข้อความของเราได้ => เราจะใช้ Public key ของเขาเข้ารหัส และเขาใช้ Private key ถอดรหัส

หรือพูดอีกมุมก็คือ ใคร ๆ ก็เข้ารหัสข้อความให้เราได้ด้วย Public key ของเรา (ที่เป็นสาธารณะตามชื่อ) แต่จะมีเพียงเราคนเดียวเท่านั้นที่ถอดรหัสข้อความได้ (เพราะเราเป็นคนเดียวที่มี Private key)

2. Digital signatures

เมื่อเราจะยืนยันว่าข้อความที่ส่งให้เขา มาจากเราจริง ๆ => เราจะใช้ Private key ของเราเข้ารหัส และให้เขาใช้ Public key ถอดรหัส

ซึ่งถ้าข้อความนั้น ไม่สามารถถอดรหัสได้ด้วย Public key ของเรา ก้แปลว่ามันไม่ได้ถูกเข้ารหัสมาจาก Private key ของเรานั่นเอง

แม้ว่าการใช้ Public-key cryptography จะฟังดูปลอดภัย แต่มันก็ยังมีประเด็นอยู่ที่ Public key นี่แหละ ว่าเราจะรู้ได้อย่างไรว่า Public key ที่เราใช้ เป็นของคน ๆ นั้นจริง ๆ หรือเปล่า ซึ่งหนึ่งในวิธีแก้ปัญหาคือการใช้ Public key ที่มาจาก Certificate authority (CA) ที่น่าเชื่อถือนั่นเอง

--

--