Cryptography อะไรคือ?

บทความนี้จะอธิบายแนวทางปฏิบัติและการศึกษาเทคนิคการสื่อสารที่ปลอดภัยเมื่อมีศัตรูอยู่

Cryptography อะไรคือ?

คำนิยาม

การเข้ารหัส (Cryptography) คือกระบวนการซ่อนหรือเข้ารหัสข้อมูลเพื่อให้เฉพาะผู้รับข้อความเท่านั้นที่สามารถอ่านได้ ศิลปะการเข้ารหัสถูกนำมาใช้ในการเข้ารหัสข้อความมานานหลายพันปี และยังคงถูกนำมาใช้ในบัตรธนาคาร รหัสผ่านคอมพิวเตอร์ และอีคอมเมิร์ซ

เทคนิคการเข้ารหัสสมัยใหม่ประกอบด้วยอัลกอริทึมและรหัสลับที่ช่วยให้สามารถ เข้ารหัส และถอดรหัสข้อมูลได้ เช่น คีย์เข้ารหัส 128 บิต และ 256 บิต รหัสลับ สมัยใหม่ เช่น มาตรฐานการเข้ารหัสขั้นสูง (AES) ถือว่าแทบจะไม่สามารถถอดรหัสได้

นิยามทั่วไปของการเข้ารหัสข้อมูล (cryptography) คือ การเข้ารหัสข้อมูลเพื่อให้แน่ใจว่ามีเพียงผู้รับข้อความเท่านั้นที่สามารถอ่านและประมวลผลข้อมูลได้ แนวทางปฏิบัติ ด้านความปลอดภัยทางไซเบอร์ นี้ หรือที่รู้จักกันในชื่อ การเข้ารหัสลับ (cryptology) ผสมผสานศาสตร์แขนงต่างๆ เช่น วิทยาการคอมพิวเตอร์ วิศวกรรมศาสตร์ และคณิตศาสตร์ เพื่อสร้างรหัสที่ซับซ้อนซึ่งซ่อนความหมายที่แท้จริงของข้อความ

การเข้ารหัสสามารถสืบย้อนไปถึงอักษรภาพอียิปต์โบราณ แต่ยังคงมีความสำคัญอย่างยิ่งต่อความมั่นคงปลอดภัยของการสื่อสารและข้อมูลระหว่างการส่ง และป้องกันไม่ให้ถูกอ่านโดยบุคคลที่ไม่น่าเชื่อถือ การเข้ารหัสใช้อัลกอริทึมและแนวคิดทางคณิตศาสตร์เพื่อแปลงข้อความให้เป็นรหัสที่ยากต่อการถอดรหัส ผ่านเทคนิคต่างๆ เช่น คีย์การเข้ารหัสและลายเซ็นดิจิทัล เพื่อปกป้องความเป็นส่วนตัวของข้อมูล การทำธุรกรรมบัตรเครดิต อีเมล และการท่องเว็บ

ความสำคัญของการเข้ารหัส

การเข้ารหัสยังคงมีความสำคัญต่อการปกป้องข้อมูลและผู้ใช้ การรับประกันความลับ และการป้องกันอาชญากรไซเบอร์จากการดักจับข้อมูลสำคัญขององค์กร ตัวอย่างและการใช้งานทั่วไปของการเข้ารหัสมีดังนี้:

1. ความเป็นส่วนตัวและความลับ

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

การเข้ารหัสยังช่วยรักษาความปลอดภัยในการท่องเว็บ เช่น เครือข่ายส่วนตัวเสมือน (VPN) ซึ่งใช้การเข้ารหัสแบบอุโมงค์ การเข้ารหัสแบบอสมมาตร และคีย์สาธารณะและส่วนตัวที่แชร์กัน

2. การตรวจสอบความถูกต้อง

• ความซื่อสัตย์

เช่นเดียวกับที่การเข้ารหัสสามารถยืนยันความถูกต้องของข้อความได้ การเข้ารหัสยังสามารถพิสูจน์ความสมบูรณ์ของข้อมูลที่ถูกส่งและรับได้อีกด้วย การเข้ารหัสช่วยให้มั่นใจได้ว่าข้อมูลจะไม่ถูกเปลี่ยนแปลงในระหว่างการจัดเก็บหรือระหว่างการขนส่งระหว่างผู้ส่งและผู้รับ ตัวอย่างเช่น ลายเซ็นดิจิทัลสามารถตรวจจับการปลอมแปลงหรือการดัดแปลงแก้ไขในการจัดจำหน่ายซอฟต์แวร์และธุรกรรมทางการเงิน

• การไม่ปฏิเสธ

การเข้ารหัสลับ (Cryptography) ยืนยันความรับผิดชอบของผู้ส่งข้อความ ซึ่งหมายความว่าผู้ส่งข้อความจะไม่สามารถปฏิเสธเจตนาของตนได้ในภายหลังเมื่อสร้างหรือส่งข้อมูล ลายเซ็นดิจิทัลเป็นตัวอย่างที่ดี เพราะช่วยให้ผู้ส่งไม่สามารถอ้างสิทธิ์ในข้อความ สัญญา หรือเอกสารที่ตนสร้างขึ้นว่าเป็นการฉ้อโกง นอกจากนี้ การติดตามอีเมลยังช่วยให้มั่นใจได้ว่าผู้ส่งไม่สามารถปฏิเสธการส่งข้อความ และผู้รับไม่สามารถปฏิเสธการรับข้อความได้

3. การแลกเปลี่ยนกุญแจ

การแลกเปลี่ยนคีย์คือวิธีการที่ใช้ในการแบ่งปันคีย์การเข้ารหัสระหว่างผู้ส่งและผู้รับ

ประเภทของอัลกอริทึมการเข้ารหัส

มีอัลกอริทึมการเข้ารหัสหลายประเภทให้เลือกใช้ ความซับซ้อนและความปลอดภัยแตกต่างกันไป ขึ้นอยู่กับประเภทของการสื่อสารและความละเอียดอ่อนของข้อมูลที่ถูกแบ่งปัน

1. การเข้ารหัสคีย์ลับ

การเข้ารหัสลับด้วยกุญแจลับ หรือที่รู้จักกันในชื่อการเข้ารหัสแบบสมมาตร ใช้กุญแจเพียงดอกเดียวในการเข้ารหัสและถอดรหัสข้อความ ผู้ส่งจะเข้ารหัสข้อความธรรมดาโดยใช้กุญแจนั้นและส่งไปยังผู้รับ ซึ่งจะใช้กุญแจเดียวกันนี้เพื่อถอดรหัสและปลดล็อกข้อความธรรมดาต้นฉบับ

• รหัสสตรีม

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

• รหัสบล็อก

การเข้ารหัสแบบบล็อกจะเข้ารหัสข้อมูลขนาดคงที่ทีละบล็อก โดยจะเข้ารหัสบล็อกข้อมูลแบบข้อความธรรมดาให้เป็นข้อความเข้ารหัสเดียวกันเสมอเมื่อใช้คีย์เดียวกัน ตัวอย่างที่ดีคือการเข้ารหัสแบบ Feistel ซึ่งใช้องค์ประกอบต่างๆ เช่น การขยายคีย์ การเรียงสับเปลี่ยน และการแทนที่ เพื่อสร้างความสับสนและการแพร่กระจายอย่างมากในการเข้ารหัส 

ขั้นตอนการเข้ารหัสและถอดรหัสจะคล้ายคลึงกันหรือเหมือนกันทุกประการ ซึ่งหมายความว่าการย้อนกลับคีย์จะช่วยลดขนาดรหัสและวงจรที่จำเป็นสำหรับการใช้รหัสในซอฟต์แวร์หรือฮาร์ดแวร์

2. การเข้ารหัสคีย์สาธารณะ

การเข้ารหัสด้วยคีย์สาธารณะ (PKC) หรือการเข้ารหัสแบบอสมมาตร ใช้ฟังก์ชันทางคณิตศาสตร์เพื่อสร้างรหัสที่ยากต่อการถอดรหัสอย่างยิ่ง ช่วยให้ผู้คนสามารถสื่อสารได้อย่างปลอดภัยผ่านช่องทางการสื่อสารที่ไม่ปลอดภัยโดยไม่จำเป็นต้องใช้คีย์ลับ ตัวอย่างเช่น การเข้ารหัสซ้ำด้วยพร็อกซีช่วยให้เอนทิตีพร็อกซีสามารถเข้ารหัสข้อมูลจากคีย์สาธารณะหนึ่งไปยังอีกคีย์หนึ่งได้อีกครั้งโดยไม่จำเป็นต้องเข้าถึงข้อความธรรมดาหรือคีย์ส่วนตัว 

ประเภท PKC ทั่วไปคือการคูณกับการแยกตัวประกอบ ซึ่งนำจำนวนเฉพาะขนาดใหญ่สองตัวมาคูณกันเพื่อให้ได้ผลลัพธ์จำนวนมหาศาลที่ทำให้การถอดรหัสทำได้ยาก อีกรูปแบบหนึ่งของ PKC คือการยกกำลังกับลอการิทึม เช่น การเข้ารหัส 256 บิต ซึ่งเพิ่มการป้องกันจนถึงจุดที่แม้แต่คอมพิวเตอร์ที่สามารถค้นหาชุดค่าผสมได้หลายล้านล้านชุดต่อวินาทีก็ไม่สามารถถอดรหัสได้

รูปแบบทั่วไปของ PKC ใช้คีย์สองอันที่สัมพันธ์กันทางคณิตศาสตร์ แต่ไม่สามารถระบุคีย์ใดคีย์หนึ่งได้ พูดง่ายๆ คือ ผู้ส่งสามารถเข้ารหัสข้อความธรรมดาโดยใช้คีย์ส่วนตัว จากนั้นผู้รับจะถอดรหัสข้อความเข้ารหัสโดยใช้คีย์สาธารณะของผู้ส่ง 

อัลกอริทึม PKC ทั่วไปที่ใช้สำหรับลายเซ็นดิจิทัลและการแลกเปลี่ยนคีย์ ได้แก่:

• อาร์เอสเอ

RSA เป็นอัลกอริทึมแรกและยังคงเป็นอัลกอริทึม PKC ที่ใช้กันมากที่สุด อัลกอริทึมนี้ตั้งชื่อตามนักพัฒนาคณิตศาสตร์จาก MIT ได้แก่ Ronald Rivest, Adi Shamir และ Leonard Adleman และใช้ในการเข้ารหัสข้อมูล ลายเซ็นดิจิทัล และการแลกเปลี่ยนคีย์ อัลกอริทึมนี้ใช้ตัวเลขจำนวนมากซึ่งเป็นผลลัพธ์จากการแยกตัวประกอบของจำนวนเฉพาะสองตัวที่เลือกไว้ ผู้โจมตีไม่สามารถหาตัวประกอบเฉพาะได้ ซึ่งทำให้ RSA มีความปลอดภัยเป็นพิเศษ

• การเข้ารหัสเส้นโค้งรูปวงรี (ECC)

ECC คืออัลกอริทึม PKC ที่ใช้เส้นโค้งวงรีในการเข้ารหัส ออกแบบมาเพื่อใช้กับอุปกรณ์ที่มีกำลังการประมวลผลหรือหน่วยความจำจำกัด เพื่อเข้ารหัสการรับส่งข้อมูลทางอินเทอร์เน็ต การใช้งาน ECC ทั่วไปมักพบในคอมพิวเตอร์ฝังตัว สมาร์ทโฟน และเครือข่ายคริปโทเคอร์เรนซีอย่างบิตคอยน์ ซึ่งใช้พื้นที่จัดเก็บข้อมูลและแบนด์วิดท์ประมาณ 10% ของที่ RSA ต้องการ

• อัลกอริทึมลายเซ็นดิจิทัล (DSA)

DSA เป็นมาตรฐานที่อนุญาตให้ใช้ลายเซ็นดิจิทัลในการยืนยันตัวตนข้อความ สถาบันมาตรฐานและเทคโนโลยีแห่งชาติ (NIST) เป็นผู้ริเริ่มมาตรฐานนี้ในปี พ.ศ. 2534 เพื่อให้มั่นใจว่าจะมีวิธีการสร้างลายเซ็นดิจิทัลที่ดีขึ้น

• การเข้ารหัสตามตัวตน (IBE)

IBE เป็นระบบ PKC ที่ช่วยให้สามารถคำนวณคีย์สาธารณะจากข้อมูลเฉพาะที่อิงตามตัวตนของผู้ใช้ เช่น ที่อยู่อีเมล จากนั้นบุคคลที่สามหรือผู้สร้างคีย์ส่วนตัวที่เชื่อถือได้จะใช้อัลกอริทึมการเข้ารหัสเพื่อคำนวณคีย์ส่วนตัวที่สอดคล้องกัน วิธีนี้ช่วยให้ผู้ใช้สามารถสร้างคีย์ส่วนตัวของตนเองได้โดยไม่ต้องกังวลเรื่องการแจกจ่ายคีย์สาธารณะ

• มาตรฐานการเข้ารหัสคีย์สาธารณะ (PKCS)

อัลกอริทึมและการใช้งาน PKC ทั้งหมดอยู่ภายใต้ชุดมาตรฐานและแนวทางที่ออกแบบโดย RSA Data Security ดังต่อไปนี้:

  • PKCS #1 หรือ RFC 8017: มาตรฐานการเข้ารหัส RSA
  • PKCS #3: มาตรฐานข้อตกลงคีย์ Diffie-Hellman
  • PKCS #5 และ PKCS #5 v2.1 หรือ RFC 8018: มาตรฐานการเข้ารหัสด้วยรหัสผ่าน
  • PKCS #6: มาตรฐานไวยากรณ์ใบรับรองขยาย (ถูกแทนที่ด้วย X.509v3)
  • PKCS #7 หรือ RFC 2315: มาตรฐานไวยากรณ์ข้อความเข้ารหัส 
  • PKCS #8 หรือ RFC 5958: มาตรฐานไวยากรณ์ข้อมูลคีย์ส่วนตัว
  • PKCS #9 หรือ RFC 2985: ประเภทแอตทริบิวต์ที่เลือก
  • PKCS #10 หรือ RFC 2986: มาตรฐานไวยากรณ์คำขอการรับรอง
  • PKCS #11: มาตรฐานอินเทอร์เฟซโทเค็นการเข้ารหัส
  • PKCS #12 หรือ RFC 7292: มาตรฐานไวยากรณ์การแลกเปลี่ยนข้อมูลส่วนบุคคล 
  • PKCS #13: มาตรฐานการเข้ารหัสเส้นโค้งวงรี
  • PKCS #14: มาตรฐานการสร้างตัวเลขสุ่มเทียม
  • PKCS #15: มาตรฐานรูปแบบข้อมูลโทเค็นการเข้ารหัส

• Diffie-Hellman และอัลกอริทึมการแลกเปลี่ยนคีย์ (KEA)

อัลกอริทึมดิฟฟี-เฮลล์แมนถูกคิดค้นขึ้นในปี พ.ศ. 2519 โดยมาร์ติน เฮลล์แมน ศาสตราจารย์จากมหาวิทยาลัยสแตนฟอร์ด และวิทฟิลด์ ดิฟฟี นักศึกษาระดับบัณฑิตศึกษาของเขา ซึ่งถือเป็นผู้ริเริ่มแนวคิด PKC อัลกอริทึมนี้ใช้สำหรับการแลกเปลี่ยนคีย์ลับ และจำเป็นต้องมีคนสองคนตกลงกันในเรื่องจำนวนเฉพาะขนาดใหญ่ 

KEA เป็นรูปแบบหนึ่งของอัลกอริทึม Diffie-Hellman และได้รับการเสนอให้เป็นวิธีการแลกเปลี่ยนคีย์ในโครงการ Capstone ของ NIST/National Security Agency (NSA) ซึ่งพัฒนามาตรฐานการเข้ารหัสสำหรับการใช้งานสาธารณะและรัฐบาล

• ฟังก์ชันแฮช

ฟังก์ชันแฮชช่วยรับประกันความสมบูรณ์ของข้อมูลในขั้นตอนการเข้ารหัสและถอดรหัสของวิทยาการเข้ารหัสลับ นอกจากนี้ยังใช้ในฐานข้อมูลเพื่อให้สามารถดึงข้อมูลได้เร็วขึ้นอีกด้วย 

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

ฟังก์ชันแฮชทั่วไปคือการพับ (folding) ซึ่งนำค่ามาแบ่งออกเป็นหลายส่วน เพิ่มส่วนต่างๆ และใช้ตัวเลขสี่หลักสุดท้ายที่เหลือเป็นคีย์หรือค่าแฮช อีกวิธีหนึ่งคือการจัดเรียงตัวเลขใหม่ (digit rearrangement) ซึ่งนำตัวเลขเฉพาะจากค่าเดิมมากลับด้าน แล้วใช้ตัวเลขที่เหลือเป็นค่าแฮช ตัวอย่างของประเภทฟังก์ชันแฮช ได้แก่ Secure Hash Algorithm 1 (SHA-1), SHA-2 และ SHA-3

บทความที่เกี่ยวข้อง

Cryptography อะไรคือ?

บทความนี้จะอธิบายแนวทางปฏิบัติและการศึกษาเทคนิคการสื่อสารที่ปลอดภัยเมื่อมีศัตรูอยู่

นักเขียนบทความ
by 
นักเขียนบทความ
Cryptography อะไรคือ?

Cryptography อะไรคือ?

บทความนี้จะอธิบายแนวทางปฏิบัติและการศึกษาเทคนิคการสื่อสารที่ปลอดภัยเมื่อมีศัตรูอยู่

คำนิยาม

การเข้ารหัส (Cryptography) คือกระบวนการซ่อนหรือเข้ารหัสข้อมูลเพื่อให้เฉพาะผู้รับข้อความเท่านั้นที่สามารถอ่านได้ ศิลปะการเข้ารหัสถูกนำมาใช้ในการเข้ารหัสข้อความมานานหลายพันปี และยังคงถูกนำมาใช้ในบัตรธนาคาร รหัสผ่านคอมพิวเตอร์ และอีคอมเมิร์ซ

เทคนิคการเข้ารหัสสมัยใหม่ประกอบด้วยอัลกอริทึมและรหัสลับที่ช่วยให้สามารถ เข้ารหัส และถอดรหัสข้อมูลได้ เช่น คีย์เข้ารหัส 128 บิต และ 256 บิต รหัสลับ สมัยใหม่ เช่น มาตรฐานการเข้ารหัสขั้นสูง (AES) ถือว่าแทบจะไม่สามารถถอดรหัสได้

นิยามทั่วไปของการเข้ารหัสข้อมูล (cryptography) คือ การเข้ารหัสข้อมูลเพื่อให้แน่ใจว่ามีเพียงผู้รับข้อความเท่านั้นที่สามารถอ่านและประมวลผลข้อมูลได้ แนวทางปฏิบัติ ด้านความปลอดภัยทางไซเบอร์ นี้ หรือที่รู้จักกันในชื่อ การเข้ารหัสลับ (cryptology) ผสมผสานศาสตร์แขนงต่างๆ เช่น วิทยาการคอมพิวเตอร์ วิศวกรรมศาสตร์ และคณิตศาสตร์ เพื่อสร้างรหัสที่ซับซ้อนซึ่งซ่อนความหมายที่แท้จริงของข้อความ

การเข้ารหัสสามารถสืบย้อนไปถึงอักษรภาพอียิปต์โบราณ แต่ยังคงมีความสำคัญอย่างยิ่งต่อความมั่นคงปลอดภัยของการสื่อสารและข้อมูลระหว่างการส่ง และป้องกันไม่ให้ถูกอ่านโดยบุคคลที่ไม่น่าเชื่อถือ การเข้ารหัสใช้อัลกอริทึมและแนวคิดทางคณิตศาสตร์เพื่อแปลงข้อความให้เป็นรหัสที่ยากต่อการถอดรหัส ผ่านเทคนิคต่างๆ เช่น คีย์การเข้ารหัสและลายเซ็นดิจิทัล เพื่อปกป้องความเป็นส่วนตัวของข้อมูล การทำธุรกรรมบัตรเครดิต อีเมล และการท่องเว็บ

ความสำคัญของการเข้ารหัส

การเข้ารหัสยังคงมีความสำคัญต่อการปกป้องข้อมูลและผู้ใช้ การรับประกันความลับ และการป้องกันอาชญากรไซเบอร์จากการดักจับข้อมูลสำคัญขององค์กร ตัวอย่างและการใช้งานทั่วไปของการเข้ารหัสมีดังนี้:

1. ความเป็นส่วนตัวและความลับ

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

การเข้ารหัสยังช่วยรักษาความปลอดภัยในการท่องเว็บ เช่น เครือข่ายส่วนตัวเสมือน (VPN) ซึ่งใช้การเข้ารหัสแบบอุโมงค์ การเข้ารหัสแบบอสมมาตร และคีย์สาธารณะและส่วนตัวที่แชร์กัน

2. การตรวจสอบความถูกต้อง

• ความซื่อสัตย์

เช่นเดียวกับที่การเข้ารหัสสามารถยืนยันความถูกต้องของข้อความได้ การเข้ารหัสยังสามารถพิสูจน์ความสมบูรณ์ของข้อมูลที่ถูกส่งและรับได้อีกด้วย การเข้ารหัสช่วยให้มั่นใจได้ว่าข้อมูลจะไม่ถูกเปลี่ยนแปลงในระหว่างการจัดเก็บหรือระหว่างการขนส่งระหว่างผู้ส่งและผู้รับ ตัวอย่างเช่น ลายเซ็นดิจิทัลสามารถตรวจจับการปลอมแปลงหรือการดัดแปลงแก้ไขในการจัดจำหน่ายซอฟต์แวร์และธุรกรรมทางการเงิน

• การไม่ปฏิเสธ

การเข้ารหัสลับ (Cryptography) ยืนยันความรับผิดชอบของผู้ส่งข้อความ ซึ่งหมายความว่าผู้ส่งข้อความจะไม่สามารถปฏิเสธเจตนาของตนได้ในภายหลังเมื่อสร้างหรือส่งข้อมูล ลายเซ็นดิจิทัลเป็นตัวอย่างที่ดี เพราะช่วยให้ผู้ส่งไม่สามารถอ้างสิทธิ์ในข้อความ สัญญา หรือเอกสารที่ตนสร้างขึ้นว่าเป็นการฉ้อโกง นอกจากนี้ การติดตามอีเมลยังช่วยให้มั่นใจได้ว่าผู้ส่งไม่สามารถปฏิเสธการส่งข้อความ และผู้รับไม่สามารถปฏิเสธการรับข้อความได้

3. การแลกเปลี่ยนกุญแจ

การแลกเปลี่ยนคีย์คือวิธีการที่ใช้ในการแบ่งปันคีย์การเข้ารหัสระหว่างผู้ส่งและผู้รับ

ประเภทของอัลกอริทึมการเข้ารหัส

มีอัลกอริทึมการเข้ารหัสหลายประเภทให้เลือกใช้ ความซับซ้อนและความปลอดภัยแตกต่างกันไป ขึ้นอยู่กับประเภทของการสื่อสารและความละเอียดอ่อนของข้อมูลที่ถูกแบ่งปัน

1. การเข้ารหัสคีย์ลับ

การเข้ารหัสลับด้วยกุญแจลับ หรือที่รู้จักกันในชื่อการเข้ารหัสแบบสมมาตร ใช้กุญแจเพียงดอกเดียวในการเข้ารหัสและถอดรหัสข้อความ ผู้ส่งจะเข้ารหัสข้อความธรรมดาโดยใช้กุญแจนั้นและส่งไปยังผู้รับ ซึ่งจะใช้กุญแจเดียวกันนี้เพื่อถอดรหัสและปลดล็อกข้อความธรรมดาต้นฉบับ

• รหัสสตรีม

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

• รหัสบล็อก

การเข้ารหัสแบบบล็อกจะเข้ารหัสข้อมูลขนาดคงที่ทีละบล็อก โดยจะเข้ารหัสบล็อกข้อมูลแบบข้อความธรรมดาให้เป็นข้อความเข้ารหัสเดียวกันเสมอเมื่อใช้คีย์เดียวกัน ตัวอย่างที่ดีคือการเข้ารหัสแบบ Feistel ซึ่งใช้องค์ประกอบต่างๆ เช่น การขยายคีย์ การเรียงสับเปลี่ยน และการแทนที่ เพื่อสร้างความสับสนและการแพร่กระจายอย่างมากในการเข้ารหัส 

ขั้นตอนการเข้ารหัสและถอดรหัสจะคล้ายคลึงกันหรือเหมือนกันทุกประการ ซึ่งหมายความว่าการย้อนกลับคีย์จะช่วยลดขนาดรหัสและวงจรที่จำเป็นสำหรับการใช้รหัสในซอฟต์แวร์หรือฮาร์ดแวร์

2. การเข้ารหัสคีย์สาธารณะ

การเข้ารหัสด้วยคีย์สาธารณะ (PKC) หรือการเข้ารหัสแบบอสมมาตร ใช้ฟังก์ชันทางคณิตศาสตร์เพื่อสร้างรหัสที่ยากต่อการถอดรหัสอย่างยิ่ง ช่วยให้ผู้คนสามารถสื่อสารได้อย่างปลอดภัยผ่านช่องทางการสื่อสารที่ไม่ปลอดภัยโดยไม่จำเป็นต้องใช้คีย์ลับ ตัวอย่างเช่น การเข้ารหัสซ้ำด้วยพร็อกซีช่วยให้เอนทิตีพร็อกซีสามารถเข้ารหัสข้อมูลจากคีย์สาธารณะหนึ่งไปยังอีกคีย์หนึ่งได้อีกครั้งโดยไม่จำเป็นต้องเข้าถึงข้อความธรรมดาหรือคีย์ส่วนตัว 

ประเภท PKC ทั่วไปคือการคูณกับการแยกตัวประกอบ ซึ่งนำจำนวนเฉพาะขนาดใหญ่สองตัวมาคูณกันเพื่อให้ได้ผลลัพธ์จำนวนมหาศาลที่ทำให้การถอดรหัสทำได้ยาก อีกรูปแบบหนึ่งของ PKC คือการยกกำลังกับลอการิทึม เช่น การเข้ารหัส 256 บิต ซึ่งเพิ่มการป้องกันจนถึงจุดที่แม้แต่คอมพิวเตอร์ที่สามารถค้นหาชุดค่าผสมได้หลายล้านล้านชุดต่อวินาทีก็ไม่สามารถถอดรหัสได้

รูปแบบทั่วไปของ PKC ใช้คีย์สองอันที่สัมพันธ์กันทางคณิตศาสตร์ แต่ไม่สามารถระบุคีย์ใดคีย์หนึ่งได้ พูดง่ายๆ คือ ผู้ส่งสามารถเข้ารหัสข้อความธรรมดาโดยใช้คีย์ส่วนตัว จากนั้นผู้รับจะถอดรหัสข้อความเข้ารหัสโดยใช้คีย์สาธารณะของผู้ส่ง 

อัลกอริทึม PKC ทั่วไปที่ใช้สำหรับลายเซ็นดิจิทัลและการแลกเปลี่ยนคีย์ ได้แก่:

• อาร์เอสเอ

RSA เป็นอัลกอริทึมแรกและยังคงเป็นอัลกอริทึม PKC ที่ใช้กันมากที่สุด อัลกอริทึมนี้ตั้งชื่อตามนักพัฒนาคณิตศาสตร์จาก MIT ได้แก่ Ronald Rivest, Adi Shamir และ Leonard Adleman และใช้ในการเข้ารหัสข้อมูล ลายเซ็นดิจิทัล และการแลกเปลี่ยนคีย์ อัลกอริทึมนี้ใช้ตัวเลขจำนวนมากซึ่งเป็นผลลัพธ์จากการแยกตัวประกอบของจำนวนเฉพาะสองตัวที่เลือกไว้ ผู้โจมตีไม่สามารถหาตัวประกอบเฉพาะได้ ซึ่งทำให้ RSA มีความปลอดภัยเป็นพิเศษ

• การเข้ารหัสเส้นโค้งรูปวงรี (ECC)

ECC คืออัลกอริทึม PKC ที่ใช้เส้นโค้งวงรีในการเข้ารหัส ออกแบบมาเพื่อใช้กับอุปกรณ์ที่มีกำลังการประมวลผลหรือหน่วยความจำจำกัด เพื่อเข้ารหัสการรับส่งข้อมูลทางอินเทอร์เน็ต การใช้งาน ECC ทั่วไปมักพบในคอมพิวเตอร์ฝังตัว สมาร์ทโฟน และเครือข่ายคริปโทเคอร์เรนซีอย่างบิตคอยน์ ซึ่งใช้พื้นที่จัดเก็บข้อมูลและแบนด์วิดท์ประมาณ 10% ของที่ RSA ต้องการ

• อัลกอริทึมลายเซ็นดิจิทัล (DSA)

DSA เป็นมาตรฐานที่อนุญาตให้ใช้ลายเซ็นดิจิทัลในการยืนยันตัวตนข้อความ สถาบันมาตรฐานและเทคโนโลยีแห่งชาติ (NIST) เป็นผู้ริเริ่มมาตรฐานนี้ในปี พ.ศ. 2534 เพื่อให้มั่นใจว่าจะมีวิธีการสร้างลายเซ็นดิจิทัลที่ดีขึ้น

• การเข้ารหัสตามตัวตน (IBE)

IBE เป็นระบบ PKC ที่ช่วยให้สามารถคำนวณคีย์สาธารณะจากข้อมูลเฉพาะที่อิงตามตัวตนของผู้ใช้ เช่น ที่อยู่อีเมล จากนั้นบุคคลที่สามหรือผู้สร้างคีย์ส่วนตัวที่เชื่อถือได้จะใช้อัลกอริทึมการเข้ารหัสเพื่อคำนวณคีย์ส่วนตัวที่สอดคล้องกัน วิธีนี้ช่วยให้ผู้ใช้สามารถสร้างคีย์ส่วนตัวของตนเองได้โดยไม่ต้องกังวลเรื่องการแจกจ่ายคีย์สาธารณะ

• มาตรฐานการเข้ารหัสคีย์สาธารณะ (PKCS)

อัลกอริทึมและการใช้งาน PKC ทั้งหมดอยู่ภายใต้ชุดมาตรฐานและแนวทางที่ออกแบบโดย RSA Data Security ดังต่อไปนี้:

  • PKCS #1 หรือ RFC 8017: มาตรฐานการเข้ารหัส RSA
  • PKCS #3: มาตรฐานข้อตกลงคีย์ Diffie-Hellman
  • PKCS #5 และ PKCS #5 v2.1 หรือ RFC 8018: มาตรฐานการเข้ารหัสด้วยรหัสผ่าน
  • PKCS #6: มาตรฐานไวยากรณ์ใบรับรองขยาย (ถูกแทนที่ด้วย X.509v3)
  • PKCS #7 หรือ RFC 2315: มาตรฐานไวยากรณ์ข้อความเข้ารหัส 
  • PKCS #8 หรือ RFC 5958: มาตรฐานไวยากรณ์ข้อมูลคีย์ส่วนตัว
  • PKCS #9 หรือ RFC 2985: ประเภทแอตทริบิวต์ที่เลือก
  • PKCS #10 หรือ RFC 2986: มาตรฐานไวยากรณ์คำขอการรับรอง
  • PKCS #11: มาตรฐานอินเทอร์เฟซโทเค็นการเข้ารหัส
  • PKCS #12 หรือ RFC 7292: มาตรฐานไวยากรณ์การแลกเปลี่ยนข้อมูลส่วนบุคคล 
  • PKCS #13: มาตรฐานการเข้ารหัสเส้นโค้งวงรี
  • PKCS #14: มาตรฐานการสร้างตัวเลขสุ่มเทียม
  • PKCS #15: มาตรฐานรูปแบบข้อมูลโทเค็นการเข้ารหัส

• Diffie-Hellman และอัลกอริทึมการแลกเปลี่ยนคีย์ (KEA)

อัลกอริทึมดิฟฟี-เฮลล์แมนถูกคิดค้นขึ้นในปี พ.ศ. 2519 โดยมาร์ติน เฮลล์แมน ศาสตราจารย์จากมหาวิทยาลัยสแตนฟอร์ด และวิทฟิลด์ ดิฟฟี นักศึกษาระดับบัณฑิตศึกษาของเขา ซึ่งถือเป็นผู้ริเริ่มแนวคิด PKC อัลกอริทึมนี้ใช้สำหรับการแลกเปลี่ยนคีย์ลับ และจำเป็นต้องมีคนสองคนตกลงกันในเรื่องจำนวนเฉพาะขนาดใหญ่ 

KEA เป็นรูปแบบหนึ่งของอัลกอริทึม Diffie-Hellman และได้รับการเสนอให้เป็นวิธีการแลกเปลี่ยนคีย์ในโครงการ Capstone ของ NIST/National Security Agency (NSA) ซึ่งพัฒนามาตรฐานการเข้ารหัสสำหรับการใช้งานสาธารณะและรัฐบาล

• ฟังก์ชันแฮช

ฟังก์ชันแฮชช่วยรับประกันความสมบูรณ์ของข้อมูลในขั้นตอนการเข้ารหัสและถอดรหัสของวิทยาการเข้ารหัสลับ นอกจากนี้ยังใช้ในฐานข้อมูลเพื่อให้สามารถดึงข้อมูลได้เร็วขึ้นอีกด้วย 

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

ฟังก์ชันแฮชทั่วไปคือการพับ (folding) ซึ่งนำค่ามาแบ่งออกเป็นหลายส่วน เพิ่มส่วนต่างๆ และใช้ตัวเลขสี่หลักสุดท้ายที่เหลือเป็นคีย์หรือค่าแฮช อีกวิธีหนึ่งคือการจัดเรียงตัวเลขใหม่ (digit rearrangement) ซึ่งนำตัวเลขเฉพาะจากค่าเดิมมากลับด้าน แล้วใช้ตัวเลขที่เหลือเป็นค่าแฮช ตัวอย่างของประเภทฟังก์ชันแฮช ได้แก่ Secure Hash Algorithm 1 (SHA-1), SHA-2 และ SHA-3

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Cryptography อะไรคือ?

Cryptography อะไรคือ?

บทความนี้จะอธิบายแนวทางปฏิบัติและการศึกษาเทคนิคการสื่อสารที่ปลอดภัยเมื่อมีศัตรูอยู่

Lorem ipsum dolor amet consectetur adipiscing elit tortor massa arcu non.

คำนิยาม

การเข้ารหัส (Cryptography) คือกระบวนการซ่อนหรือเข้ารหัสข้อมูลเพื่อให้เฉพาะผู้รับข้อความเท่านั้นที่สามารถอ่านได้ ศิลปะการเข้ารหัสถูกนำมาใช้ในการเข้ารหัสข้อความมานานหลายพันปี และยังคงถูกนำมาใช้ในบัตรธนาคาร รหัสผ่านคอมพิวเตอร์ และอีคอมเมิร์ซ

เทคนิคการเข้ารหัสสมัยใหม่ประกอบด้วยอัลกอริทึมและรหัสลับที่ช่วยให้สามารถ เข้ารหัส และถอดรหัสข้อมูลได้ เช่น คีย์เข้ารหัส 128 บิต และ 256 บิต รหัสลับ สมัยใหม่ เช่น มาตรฐานการเข้ารหัสขั้นสูง (AES) ถือว่าแทบจะไม่สามารถถอดรหัสได้

นิยามทั่วไปของการเข้ารหัสข้อมูล (cryptography) คือ การเข้ารหัสข้อมูลเพื่อให้แน่ใจว่ามีเพียงผู้รับข้อความเท่านั้นที่สามารถอ่านและประมวลผลข้อมูลได้ แนวทางปฏิบัติ ด้านความปลอดภัยทางไซเบอร์ นี้ หรือที่รู้จักกันในชื่อ การเข้ารหัสลับ (cryptology) ผสมผสานศาสตร์แขนงต่างๆ เช่น วิทยาการคอมพิวเตอร์ วิศวกรรมศาสตร์ และคณิตศาสตร์ เพื่อสร้างรหัสที่ซับซ้อนซึ่งซ่อนความหมายที่แท้จริงของข้อความ

การเข้ารหัสสามารถสืบย้อนไปถึงอักษรภาพอียิปต์โบราณ แต่ยังคงมีความสำคัญอย่างยิ่งต่อความมั่นคงปลอดภัยของการสื่อสารและข้อมูลระหว่างการส่ง และป้องกันไม่ให้ถูกอ่านโดยบุคคลที่ไม่น่าเชื่อถือ การเข้ารหัสใช้อัลกอริทึมและแนวคิดทางคณิตศาสตร์เพื่อแปลงข้อความให้เป็นรหัสที่ยากต่อการถอดรหัส ผ่านเทคนิคต่างๆ เช่น คีย์การเข้ารหัสและลายเซ็นดิจิทัล เพื่อปกป้องความเป็นส่วนตัวของข้อมูล การทำธุรกรรมบัตรเครดิต อีเมล และการท่องเว็บ

ความสำคัญของการเข้ารหัส

การเข้ารหัสยังคงมีความสำคัญต่อการปกป้องข้อมูลและผู้ใช้ การรับประกันความลับ และการป้องกันอาชญากรไซเบอร์จากการดักจับข้อมูลสำคัญขององค์กร ตัวอย่างและการใช้งานทั่วไปของการเข้ารหัสมีดังนี้:

1. ความเป็นส่วนตัวและความลับ

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

การเข้ารหัสยังช่วยรักษาความปลอดภัยในการท่องเว็บ เช่น เครือข่ายส่วนตัวเสมือน (VPN) ซึ่งใช้การเข้ารหัสแบบอุโมงค์ การเข้ารหัสแบบอสมมาตร และคีย์สาธารณะและส่วนตัวที่แชร์กัน

2. การตรวจสอบความถูกต้อง

• ความซื่อสัตย์

เช่นเดียวกับที่การเข้ารหัสสามารถยืนยันความถูกต้องของข้อความได้ การเข้ารหัสยังสามารถพิสูจน์ความสมบูรณ์ของข้อมูลที่ถูกส่งและรับได้อีกด้วย การเข้ารหัสช่วยให้มั่นใจได้ว่าข้อมูลจะไม่ถูกเปลี่ยนแปลงในระหว่างการจัดเก็บหรือระหว่างการขนส่งระหว่างผู้ส่งและผู้รับ ตัวอย่างเช่น ลายเซ็นดิจิทัลสามารถตรวจจับการปลอมแปลงหรือการดัดแปลงแก้ไขในการจัดจำหน่ายซอฟต์แวร์และธุรกรรมทางการเงิน

• การไม่ปฏิเสธ

การเข้ารหัสลับ (Cryptography) ยืนยันความรับผิดชอบของผู้ส่งข้อความ ซึ่งหมายความว่าผู้ส่งข้อความจะไม่สามารถปฏิเสธเจตนาของตนได้ในภายหลังเมื่อสร้างหรือส่งข้อมูล ลายเซ็นดิจิทัลเป็นตัวอย่างที่ดี เพราะช่วยให้ผู้ส่งไม่สามารถอ้างสิทธิ์ในข้อความ สัญญา หรือเอกสารที่ตนสร้างขึ้นว่าเป็นการฉ้อโกง นอกจากนี้ การติดตามอีเมลยังช่วยให้มั่นใจได้ว่าผู้ส่งไม่สามารถปฏิเสธการส่งข้อความ และผู้รับไม่สามารถปฏิเสธการรับข้อความได้

3. การแลกเปลี่ยนกุญแจ

การแลกเปลี่ยนคีย์คือวิธีการที่ใช้ในการแบ่งปันคีย์การเข้ารหัสระหว่างผู้ส่งและผู้รับ

ประเภทของอัลกอริทึมการเข้ารหัส

มีอัลกอริทึมการเข้ารหัสหลายประเภทให้เลือกใช้ ความซับซ้อนและความปลอดภัยแตกต่างกันไป ขึ้นอยู่กับประเภทของการสื่อสารและความละเอียดอ่อนของข้อมูลที่ถูกแบ่งปัน

1. การเข้ารหัสคีย์ลับ

การเข้ารหัสลับด้วยกุญแจลับ หรือที่รู้จักกันในชื่อการเข้ารหัสแบบสมมาตร ใช้กุญแจเพียงดอกเดียวในการเข้ารหัสและถอดรหัสข้อความ ผู้ส่งจะเข้ารหัสข้อความธรรมดาโดยใช้กุญแจนั้นและส่งไปยังผู้รับ ซึ่งจะใช้กุญแจเดียวกันนี้เพื่อถอดรหัสและปลดล็อกข้อความธรรมดาต้นฉบับ

• รหัสสตรีม

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

• รหัสบล็อก

การเข้ารหัสแบบบล็อกจะเข้ารหัสข้อมูลขนาดคงที่ทีละบล็อก โดยจะเข้ารหัสบล็อกข้อมูลแบบข้อความธรรมดาให้เป็นข้อความเข้ารหัสเดียวกันเสมอเมื่อใช้คีย์เดียวกัน ตัวอย่างที่ดีคือการเข้ารหัสแบบ Feistel ซึ่งใช้องค์ประกอบต่างๆ เช่น การขยายคีย์ การเรียงสับเปลี่ยน และการแทนที่ เพื่อสร้างความสับสนและการแพร่กระจายอย่างมากในการเข้ารหัส 

ขั้นตอนการเข้ารหัสและถอดรหัสจะคล้ายคลึงกันหรือเหมือนกันทุกประการ ซึ่งหมายความว่าการย้อนกลับคีย์จะช่วยลดขนาดรหัสและวงจรที่จำเป็นสำหรับการใช้รหัสในซอฟต์แวร์หรือฮาร์ดแวร์

2. การเข้ารหัสคีย์สาธารณะ

การเข้ารหัสด้วยคีย์สาธารณะ (PKC) หรือการเข้ารหัสแบบอสมมาตร ใช้ฟังก์ชันทางคณิตศาสตร์เพื่อสร้างรหัสที่ยากต่อการถอดรหัสอย่างยิ่ง ช่วยให้ผู้คนสามารถสื่อสารได้อย่างปลอดภัยผ่านช่องทางการสื่อสารที่ไม่ปลอดภัยโดยไม่จำเป็นต้องใช้คีย์ลับ ตัวอย่างเช่น การเข้ารหัสซ้ำด้วยพร็อกซีช่วยให้เอนทิตีพร็อกซีสามารถเข้ารหัสข้อมูลจากคีย์สาธารณะหนึ่งไปยังอีกคีย์หนึ่งได้อีกครั้งโดยไม่จำเป็นต้องเข้าถึงข้อความธรรมดาหรือคีย์ส่วนตัว 

ประเภท PKC ทั่วไปคือการคูณกับการแยกตัวประกอบ ซึ่งนำจำนวนเฉพาะขนาดใหญ่สองตัวมาคูณกันเพื่อให้ได้ผลลัพธ์จำนวนมหาศาลที่ทำให้การถอดรหัสทำได้ยาก อีกรูปแบบหนึ่งของ PKC คือการยกกำลังกับลอการิทึม เช่น การเข้ารหัส 256 บิต ซึ่งเพิ่มการป้องกันจนถึงจุดที่แม้แต่คอมพิวเตอร์ที่สามารถค้นหาชุดค่าผสมได้หลายล้านล้านชุดต่อวินาทีก็ไม่สามารถถอดรหัสได้

รูปแบบทั่วไปของ PKC ใช้คีย์สองอันที่สัมพันธ์กันทางคณิตศาสตร์ แต่ไม่สามารถระบุคีย์ใดคีย์หนึ่งได้ พูดง่ายๆ คือ ผู้ส่งสามารถเข้ารหัสข้อความธรรมดาโดยใช้คีย์ส่วนตัว จากนั้นผู้รับจะถอดรหัสข้อความเข้ารหัสโดยใช้คีย์สาธารณะของผู้ส่ง 

อัลกอริทึม PKC ทั่วไปที่ใช้สำหรับลายเซ็นดิจิทัลและการแลกเปลี่ยนคีย์ ได้แก่:

• อาร์เอสเอ

RSA เป็นอัลกอริทึมแรกและยังคงเป็นอัลกอริทึม PKC ที่ใช้กันมากที่สุด อัลกอริทึมนี้ตั้งชื่อตามนักพัฒนาคณิตศาสตร์จาก MIT ได้แก่ Ronald Rivest, Adi Shamir และ Leonard Adleman และใช้ในการเข้ารหัสข้อมูล ลายเซ็นดิจิทัล และการแลกเปลี่ยนคีย์ อัลกอริทึมนี้ใช้ตัวเลขจำนวนมากซึ่งเป็นผลลัพธ์จากการแยกตัวประกอบของจำนวนเฉพาะสองตัวที่เลือกไว้ ผู้โจมตีไม่สามารถหาตัวประกอบเฉพาะได้ ซึ่งทำให้ RSA มีความปลอดภัยเป็นพิเศษ

• การเข้ารหัสเส้นโค้งรูปวงรี (ECC)

ECC คืออัลกอริทึม PKC ที่ใช้เส้นโค้งวงรีในการเข้ารหัส ออกแบบมาเพื่อใช้กับอุปกรณ์ที่มีกำลังการประมวลผลหรือหน่วยความจำจำกัด เพื่อเข้ารหัสการรับส่งข้อมูลทางอินเทอร์เน็ต การใช้งาน ECC ทั่วไปมักพบในคอมพิวเตอร์ฝังตัว สมาร์ทโฟน และเครือข่ายคริปโทเคอร์เรนซีอย่างบิตคอยน์ ซึ่งใช้พื้นที่จัดเก็บข้อมูลและแบนด์วิดท์ประมาณ 10% ของที่ RSA ต้องการ

• อัลกอริทึมลายเซ็นดิจิทัล (DSA)

DSA เป็นมาตรฐานที่อนุญาตให้ใช้ลายเซ็นดิจิทัลในการยืนยันตัวตนข้อความ สถาบันมาตรฐานและเทคโนโลยีแห่งชาติ (NIST) เป็นผู้ริเริ่มมาตรฐานนี้ในปี พ.ศ. 2534 เพื่อให้มั่นใจว่าจะมีวิธีการสร้างลายเซ็นดิจิทัลที่ดีขึ้น

• การเข้ารหัสตามตัวตน (IBE)

IBE เป็นระบบ PKC ที่ช่วยให้สามารถคำนวณคีย์สาธารณะจากข้อมูลเฉพาะที่อิงตามตัวตนของผู้ใช้ เช่น ที่อยู่อีเมล จากนั้นบุคคลที่สามหรือผู้สร้างคีย์ส่วนตัวที่เชื่อถือได้จะใช้อัลกอริทึมการเข้ารหัสเพื่อคำนวณคีย์ส่วนตัวที่สอดคล้องกัน วิธีนี้ช่วยให้ผู้ใช้สามารถสร้างคีย์ส่วนตัวของตนเองได้โดยไม่ต้องกังวลเรื่องการแจกจ่ายคีย์สาธารณะ

• มาตรฐานการเข้ารหัสคีย์สาธารณะ (PKCS)

อัลกอริทึมและการใช้งาน PKC ทั้งหมดอยู่ภายใต้ชุดมาตรฐานและแนวทางที่ออกแบบโดย RSA Data Security ดังต่อไปนี้:

  • PKCS #1 หรือ RFC 8017: มาตรฐานการเข้ารหัส RSA
  • PKCS #3: มาตรฐานข้อตกลงคีย์ Diffie-Hellman
  • PKCS #5 และ PKCS #5 v2.1 หรือ RFC 8018: มาตรฐานการเข้ารหัสด้วยรหัสผ่าน
  • PKCS #6: มาตรฐานไวยากรณ์ใบรับรองขยาย (ถูกแทนที่ด้วย X.509v3)
  • PKCS #7 หรือ RFC 2315: มาตรฐานไวยากรณ์ข้อความเข้ารหัส 
  • PKCS #8 หรือ RFC 5958: มาตรฐานไวยากรณ์ข้อมูลคีย์ส่วนตัว
  • PKCS #9 หรือ RFC 2985: ประเภทแอตทริบิวต์ที่เลือก
  • PKCS #10 หรือ RFC 2986: มาตรฐานไวยากรณ์คำขอการรับรอง
  • PKCS #11: มาตรฐานอินเทอร์เฟซโทเค็นการเข้ารหัส
  • PKCS #12 หรือ RFC 7292: มาตรฐานไวยากรณ์การแลกเปลี่ยนข้อมูลส่วนบุคคล 
  • PKCS #13: มาตรฐานการเข้ารหัสเส้นโค้งวงรี
  • PKCS #14: มาตรฐานการสร้างตัวเลขสุ่มเทียม
  • PKCS #15: มาตรฐานรูปแบบข้อมูลโทเค็นการเข้ารหัส

• Diffie-Hellman และอัลกอริทึมการแลกเปลี่ยนคีย์ (KEA)

อัลกอริทึมดิฟฟี-เฮลล์แมนถูกคิดค้นขึ้นในปี พ.ศ. 2519 โดยมาร์ติน เฮลล์แมน ศาสตราจารย์จากมหาวิทยาลัยสแตนฟอร์ด และวิทฟิลด์ ดิฟฟี นักศึกษาระดับบัณฑิตศึกษาของเขา ซึ่งถือเป็นผู้ริเริ่มแนวคิด PKC อัลกอริทึมนี้ใช้สำหรับการแลกเปลี่ยนคีย์ลับ และจำเป็นต้องมีคนสองคนตกลงกันในเรื่องจำนวนเฉพาะขนาดใหญ่ 

KEA เป็นรูปแบบหนึ่งของอัลกอริทึม Diffie-Hellman และได้รับการเสนอให้เป็นวิธีการแลกเปลี่ยนคีย์ในโครงการ Capstone ของ NIST/National Security Agency (NSA) ซึ่งพัฒนามาตรฐานการเข้ารหัสสำหรับการใช้งานสาธารณะและรัฐบาล

• ฟังก์ชันแฮช

ฟังก์ชันแฮชช่วยรับประกันความสมบูรณ์ของข้อมูลในขั้นตอนการเข้ารหัสและถอดรหัสของวิทยาการเข้ารหัสลับ นอกจากนี้ยังใช้ในฐานข้อมูลเพื่อให้สามารถดึงข้อมูลได้เร็วขึ้นอีกด้วย 

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

ฟังก์ชันแฮชทั่วไปคือการพับ (folding) ซึ่งนำค่ามาแบ่งออกเป็นหลายส่วน เพิ่มส่วนต่างๆ และใช้ตัวเลขสี่หลักสุดท้ายที่เหลือเป็นคีย์หรือค่าแฮช อีกวิธีหนึ่งคือการจัดเรียงตัวเลขใหม่ (digit rearrangement) ซึ่งนำตัวเลขเฉพาะจากค่าเดิมมากลับด้าน แล้วใช้ตัวเลขที่เหลือเป็นค่าแฮช ตัวอย่างของประเภทฟังก์ชันแฮช ได้แก่ Secure Hash Algorithm 1 (SHA-1), SHA-2 และ SHA-3

Related articles