Академический Документы
Профессиональный Документы
Культура Документы
: จากทฤษฎีสูปฏิบัติ
ธํารงรัตน อมรรักษา
ภาควิชาวิศวกรรมคอมพิวเตอร
มหาวิทยาลัยเทคโนโลยีพระจอมเกลาธนบุรี
2551
คํานํา
ในปจจุบนั ความปลอดภัยของขอมูลขาวสารถือเปนเรื่องสําคัญ และมีผลกระทบตอทุกๆ คนทั้งใน
ระดับตัวบุคคล องคกร หรือประเทศ โดยเฉพาะขอมูลที่มีความออนไหวมากๆ เมื่อเกิดการรัว่ ไหลอาจสงผล
กระทบตอผูคนในสังคม เศรษฐกิจ หรือภาพลักษณของประเทศก็เปนได ผูเขียนไดตระหนักถึงความจําเปน
ในเรื่องนี้ จึงไดเปดสอนวิชาทางดานวิทยาการรหัสลับและการประยุกตใชงานขึ้น โดยมีวัตถุประสงคเพื่อ
สรางบุคลากรที่มีความรู ความเขาใจในศาสตรและศิลปของการปกปด ซอนพลางขอมูลชนิดตางๆ โดยเนน
ไปที่ขอมูลสื่อประสม วิชาทีเ่ ปดสอนในสายนี้ไดแบงออกเปน 2 สวนตอกันคือ “บทนําสูวิทยาการรหัสลับ”
(Introduction to Cryptography) และ “ความปลอดภัยของขอมูลสําหรับการสื่อสารสื่อประสม” (Data
Security for Multimedia Communications)
จากประสบการณสอนที่ผานมาของผูเขียนพบวา นักศึกษาสวนใหญจะใชเวลานานในการทําความ
เขาใจทฤษฎีและเนื้อหาของวิชา ซึ่งถานักศึกษาไมเขาใจอยางลึกซึ้งแลวก็จะสงผลตอการนําไปประยุกตใช
งานเพื่อใหมีประสิทธิภาพสูงสุด หรือเพื่อใหเหมาะกับสถานการณมากที่สุด ทั้งนี้จากการพูดคุยและอภิปราย
กับนักศึกษาหลายๆ รุนพบวา นักศึกษาสวนใหญประสบปญหาในเรื่องภาษาอังกฤษอันเนื่องจากหนังสือ
เรียนหรือเอกสารอางอิงตางๆ ทางสาขาวิชานี้สวนมากเปนภาษาอังกฤษทั้งหมด ผูเขียนจึงไดเขียนหนังสือ
เลมนี้ขึ้นมาเพื่อใชประกอบการสอนในวิชา “บทนําสูวิทยาการรหัสลับ” ขางตน โดยมีจุดประสงคหลักคือ
เพื่อชวยใหนักศึกษาไดเขาใจถึงทฤษฎีและแนวคิดตางๆ ทางดานวิทยาการรหัสลับไดอยางรวดเร็วและ
ลึกซึ้งจนเกิดความเชี่ ยวชาญในระดับที่สามารถนําไปประยุกตใชไดจริง นอกจากนี้เมื่อนักศึ กษาเขาใจ
พื้นฐานที่สําคัญเปนอยางดีแลว ก็จะชวยใหเกิดเขาความใจในการเรียนรูเนื้อหาขั้นสูงในวิชา “ความปลอดภัย
ของขอมูลสําหรับการสื่อสารสื่อประสม” ไดรวดเร็วขึ้น
ทายสุดผูเขียนขอขอบพระคุณทุกๆ คนที่ไดใหการสนับสนุนทั้งทางตรงและทางออมจนทําให
หนังสือเลมนี้สําเร็จลุลวง โดยเฉพาะครอบครัวของผูเขียนที่ไดเปนกําลังใจและใหการสนับสนุนผูเขียนใน
ทุกๆ เรื่องตลอดมา หากมีขอผิดพลาดประการใดผูเขียนขอนอมรับไวแตเพียงผูเดียว
ขอขอบพระคุณ
ธํารงรัตน อมรรักษา
ii
สารบัญ
บทที่ 1 บทนําสูวิทยาการรหัสลับ ตอนหนึง่
1.1 เกริ่นนํา 1
1.2 ศัพทเฉพาะทางดานวิทยาการรหัสลับ 4
1.3 พื้นฐานอัลกอริทึมทางดานวิทยาการรหัสลับ 5
1.4 ขอกําหนดทัว่ ไปของระบบการเขารหัสลับ 8
1.5 คําถามทายบท 10
iii
บทที่ 5 อัลกอริทึมสมมาตร ตอนสาม
5.1 ตัวแปลงรหัสแผนใหม 50
5.2 ตัวแปลงรหัสผลคูณ 50
5.3 ตัวแปลงรหัส Feistel 51
5.4 มาตรฐานการเขารหัสลับขอมูล DES 55
5.5 การเขารหัสลับขอมูล DESX 63
5.6 การเขารหัสลับขอมูลนานาชาติ IDEA 63
5.7 มาตรฐานการเขารหัสลับขั้นสูง AES 69
5.8 คําถามทายบท 80
iv
บทที่ 9 ฟงกชนั่ แฮชและลายมือชื่อดิจิทัล
9.1 ฟงกชั่นแฮชทางเดียว 108
9.2 อัลกอริทึม MD5 111
9.3 อัลกอริทึม SHA-1 115
9.4 การโจมตีแบบวันเกิด 117
9.5 คําถามทายบท 121
บทที่ 10 ฟงกชั่นแฮชและลายมือชื่อดิจิทัล
10.1 รหัสพิสูจนตัวจริงของขอความ 122
10.2 ลายมือชื่อดิจทิ ัล 125
10.3 คําถามทายบท 132
บทที่ 11 เทคนิคทางวิทยาการรหัสลับ
11.1 การเลือกใชงานตัวแปลงรหัส 133
11.2 โหมดการทํางานทางวิทยาการรหัสลับ 134
11.3 การเขารหัสลับในระบบสื่อสารขอมูล 144
11.4 การเขารหัสลับในหนวยเก็บขอมูล 146
11.5 การเลือกใชอปุ กรณเขารหัสลับ 149
11.6 การประยุกตใชงานตัวแปลงรหัสแบบกลุม 151
11.7 คําถามทายบท 159
v
บทที่ 13 วิทยาการรหัสลับประยุกต ตอนสอง
13.1 การกระจายกุญแจอสมมาตรและโครงสรางพื้นฐานกุญแจสาธารณะ 167
13.2 การประยุกตใชงานในระบบเครือขายคอมพิวเตอร 169
13.3 โพรโทคอล PGP 170
13.4 คําถามทายบท 173
บรรณานุกรม 185
ดรรชนีทายเลม 189
vi
สารบัญภาพ
1.1 ปญหาที่เกิดขึน้ ในการรักษาความลับ 2
1.2 ปญหาที่เกิดขึน้ ในการพิสูจนตัวจริง 2
1.3 ปญหาที่เกิดขึน้ ในการตรวจสอบบูรณภาพของขอมูล 3
1.4 การดําเนินการหลักทั้งสามชนิดที่กระทําตอตัวขอมูล 3
1.5 แผนผังการเขาและถอดรหัสลับ 4
1.6 การแบงประเภทอัลกอริทึมที่ใชในวิทยาการรหัสลับ 6
1.7 ขอกําหนดเฉพาะสําหรับการใชงานในดานการรักษาความลับและการพิสูจนตัวจริง 10
2.1 รูปแบบการโจมตีระบบการเขารหัสลับ 13
2.2 ตัวอยางโพรโทคอลสําหรับการซื้อขายสินคา 17
2.3 ชนิดของการโจมตีโพรโทคอล 18
2.4 โพรโทคอลสําหรับการสื่อสารในระบบการเขารหัสลับลูกผสม 22
2.5 การโจมตีแบบคนที่อยูตรงกลาง 23
2.6 โพรโทคอลควบโยง 24
3.1 แผนผังการทํางานของตัวแปลงรหัสแบบกระแสที่ใชเวกเตอรเริ่มตน 28
3.2 เรจิสเตอรแบบเลื่อนและฟงกชันปอนกลับ 29
3.3 เรจิสเตอรแบบเลื่อนปอนกลับเชิงเสน 30
3.4 LFSR ขนาด 4 บิต ที่มีการนําบิตในตําแหนงที่หนึ่งและสามมาทําการออรเฉพาะกัน 30
3.5 ตัวอยางการสราง LFSR ขนาด 64 บิต 33
3.6 LFSR ขนาด 4 บิตแบบ x4 + x + 1 33
3.7 ตัวสรางกระแสบิตแบบเจฟว 35
3.8 วงจรภายในตัวสรางกระแสบิตแบบเจฟว 36
3.9 วงจรภายในตัวสรางกระแสบิตแบบขั้นสลับ 36
4.1 ผลลัพธที่ไดจากการเขารหัสลับแบบซีซาร 41
4.2 ตัวอยางการเขารหัสลับแบบซีซาร 42
4.3 ตัวอยางผลลัพธจากการโจมตีแบบตะลุยที่ K คาตางๆ 43
4.4 ผลลัพธที่ไดจากตัวแปลงรหัสแบบคูณที่ K = 2 44
4.5 ผลลัพธที่ไดจากตัวแปลงรหัสแบบคูณที่ K = 3 44
4.6 ผลลัพธที่ไดจากการเขารหัสลับแบบ Vigenère 46
4.7 การเรียงสับเปลี่ยนตําแหนงภายในกลุมตัวอักษร 48
4.8 ตัวอยางการเขารหัสลับโดยวิธีการเรียงสับเปลี่ยน 48
vii
4.9 ตัวอยางการเขารหัสลับโดยวิธีการยายคอลัมน 49
5.1 เครือขายการแทนที่ (S) และการเรียงสับเปลี่ยน (P) 51
5.2 ขั้นตอนการทํางานของตัวแปลงรหัส Feistel 53
5.3 การเขาและถอดรหัสลับของตัวแปลงรหัส Feistel 54
5.4 ตัวอยางของการแทนที่และการเรียงสับเปลี่ยนตัวอักษร 56
5.5 แผนผังการทํางานของ DES 57
5.6 กระบวนการทีเ่ กิดขึ้นในแตละรอบของการประมวลผลโดยอัลกอริทึม DES 58
5.7 กระบวนการแทนที่โดย S-box จํานวน 8 ตัว 60
5.8 โครงสรางของอัลกอริทึม DESX 63
5.9 โครงสราง MA ที่ใชในอัลกอริทึม IDEA 64
5.10 กระบวนการทีเ่ กิดขึ้นในแตละรอบของการประมวลผลโดยอัลกอริทึม IDEA 65
5.11 การจัดเรียงกลุม บิตนําเขาใหอยูในรูปของสเตท 69
5.12 กระบวนการยอย SubBytes 70
5.13 การแทนที่ S-box ในอัลกอริทึม AES 71
5.14 กระบวนการยอย Shift Rows 71
5.15 กระบวนการยอย MixColumns 72
5.16 ขั้นตอนการเขารหัสลับ AES แสดงโดยรหัสเทียม 73
5.17 กระบวนการขยายกุญแจของ AES แสดงโดยรหัสเทียม 74
5.18 กระบวนการยอย InvShiftRows 77
5.19 การแทนที่ S-box ผกผัน 78
5.20 ขั้นตอนการถอดรหัสลับของ AES แสดงโดยรหัสเทียม 79
6.1 ตัวอยางการบวกเลขในมอดุโล 8 83
6.2 ตัวอยางการคูณเลขในมอดุโล 8 83
7.1 ขั้นตอนการสรางกุญแจรวมกันระหวางผูใชงานสองคน 95
7.2 ขั้นตอนการสรางกุญแจรวมกันระหวางคนสามคน 98
7.3 การเขาและถอดรหัสลับดวยอัลกอริทึม El Gamal 99
8.1 การเขาและถอดรหัสลับดวยอัลกอริทึม RSA 103
9.1 แนวคิดการสรางฟงกชันแฮชทางเดียว 109
9.2 แนวคิดการคํานวณหาคาแฮชโดยใชฟงกชนั แฮชทางเดียว 110
9.3 ขั้นตอนการจัดเตรียมกลุมบิตนําเขาสําหรับอัลกอริทึม MD5 111
9.4 ขั้นตอนการคํานวณหาคาแฮชของอัลกอริทึม MD5 112
9.5 แผนผังการดําเนินการ 1 รอบการทํางานของอัลกอริทึม MD5 113
viii
9.6 แผนผังการดําเนินการ 1 รอบการทํางานของอัลกอริทึม SHA-1 117
10.1 การนําฟงกชนั แฮชทางเดียวมาประยุกตใชเปน MAC 122
10.2 แผนผังการทํางานของอัลกอริทึม HMAC 123
10.3 แผนผังการทํางานของอัลกอริทึม MAC โดยใชตวั แปลงรหัสแบบกระแสเปนหลัก 124
10.4 การประยุกตใชอัลกอริทึม RSA เพื่อสรางลายมือชื่อดิจทิ ัล 127
10.5 การสรางลายมือชื่อดิจิทัลจากคาแฮช 127
10.6 การพิสูจนยนื ยันคาแฮชที่ถกู เซ็น 128
10.7 การเซ็นเอกสารพรอมตราเวลา 131
11.1 การทํางานในโหมด ECB 135
11.2 การทํางานในโหมด CBC 137
11.3 การทํางานในโหมด CFB 138
11.4 การทํางานในโหมด OFB 140
11.5 การเขารหัสลับภาพกราฟก "Test" โดยใชอัลกอริทึม DES ในโหมด ECB
(ก) ภาพตนฉบับ (ข) ภาพทีผ่ านการเขารหัสลับมาแลว 142
11.6 การเขารหัสลับรูปภาพ "Lena" โดยใชอัลกอริทึม DES ในโหมด ECB
(ก) รูปภาพตนฉบับ (ข) รูปภาพที่ผานการเขารหัสลับมาแลว 142
11.7 (ก) ภาพตนฉบับ "Test" (ข) ภาพผลลัพธที่ไดจากการเขารหัสลับดวย DES
ในโหมด CBC (ค) โหมด CFB ขนาด 64 บิต (ง) โหมด OFB ขนาด 64 บิต 143
11.8 การเขารหัสลับที่ชั้นกายภาพ 144
11.9 การเขารหัสลับแบบขั้นปลายถึงขั้นปลาย 145
11.10 การเขาและถอดรหัสลับสองครั้ง 152
11.11 การเขารหัสลับสามครั้งดวยกุญแจสองดอก 154
11.12 การเขารหัสลับสามครั้งดวยกุญแจสามดอกทั้ง 2 แบบ 156
11.13 การเขารหัสลับแบบตอเรียงโดยใช 2 อัลกอริทึม 158
12.1 การทํางานของ KDC ในระบบการกระจายกุญแจสมมาตร 161
12.2 การทํางานของโพรโทคอล Needham-Schroeder 163
12.3 การติดตอสื่อสารระหวางที่เกิดขึ้นในโพรโทคอล Kerberos 164
12.4 ขั้นตอนการทํางานของโพรโทคอล Kerberos 165
13.1 การรองขอกุญแจสาธารณะจาก CA 168
13.2 การรองขอใบรับรองจาก CA 168
13.3 โครงสรางพื้นฐานกุญแจสาธารณะ 169
13.4 กลุมโพรโทคอล TCP/IP เทียบกับแบบจําลองโอเอสไอ 170
ix
13.5 PGP เมื่อเทียบกับการทํางานของกลุมโพรโทคอล TCP/IP 171
13.6 ขั้นตอนการสงอีเมลโดยใชโพรโทคอล PGP 172
13.7 แผนผังการทํางานของ PGP ทางฝงผูสง 173
13.8 แผนผังการทํางานของ PGP ทางฝงผูรับ 173
14.1 IPSec เมื่อเทียบกับการทํางานของกลุมโพรโทคอล TCP/IP 174
14.2 รายละเอียดของ IPSec ในโหมดขนสง 175
14.3 การทํางานของ IPSec ในโหมดขนสง 175
14.4 รายละเอียดของ IPSec ในโหมดอุโมงค 176
14.5 การทํางานของ IPSec ในโหมดอุโมงค 176
14.6 โพรโทคอลยอย AH ในโหมดขนสงของ IPSec 177
14.7 โพรโทคอลยอย ESP ในโหมดขนสงของ IPSec 179
14.8 โพรโทคอลยอย AH และ ESP ในโหมดอุโมงคเทียบกับในโหมดขนสง 180
14.9 SSL เมื่อเทียบกับการทํางานของกลุมโพรโทคอล TCP/IP 181
14.10 โพรโทคอลยอยทั้ง 4 ในชุดโพรโทคอล SSL 181
14.11 ขั้นตอนการทํางานของโพรโทคอลยอย Record ในชุดโพรโทคอล SSL 182
x
บทที่ 1
บทนําสูวิทยาการรหัสลับ ตอนหนึ่ง
1.1 เกริ่นนํา
ในปจจุบันความกาวหนาทางดานเทคโนโลยีการสื่อสาร การรับสง และการจัดเก็บขอมูลในรูปแบบ
อิเล็กทรอนิกส ไดจุดประเด็นทางดานการสื่อสารและสารสนเทศที่นําไปสูขอโตเถียงตางๆ ในสังคมอยาง
มากมาย หนึ่งในนั้นก็คือ เรื่องของภาวะความเปนสวนตัว (Privacy) ของคนในสังคม ทุกวันนี้พวกเราทุกคน
รับรู และตระหนักถึงผลลัพธจากการถูกเปดเผยขอมูลสวนตัวของบุคคลใดบุคคลหนึ่งตอสาธารณชน
โดยเฉพาะขอมูลที่มีความเปนสวนตัวจริงๆ ซึ่งเปนผลมาจากความสามารถในการเขาถึงขอมูลสวนตัว
เหลานั้นจากบุคคลที่ไมประสงคดี ระหวางที่มีการรับสงหรือจัดเก็บขอมูลอยูในหนวยเก็บ (Storage)
สวนตัว เชน ในจานบันทึกแบบแข็ง (Hard disk) เปนตน นอกจากนี้เหตุการณขางตนอาจเกิดขึ้นกับขอมูลที่
ถือเปนความลับ (Secret) ของหนวยงานหรือองคกรใดๆ รวมไปถึงขอมูลทางการคาของบริษัททั่วๆ ไปได
เชนเดียวกัน ซึ่งความเสียหายที่เกิดขึ้นนี้ จะสงผลกระทบโดยตรงตอการดําเนินชีวิต การดําเนินกิจการ
โอกาสทางสังคม โอกาสทางธุรกิจ หรืออาจกระทบไปถึงความมั่นคงขององคกร ตลอดจนความมั่นคงของ
ชาติก็ได
ถึงแมวาหลายๆ ประเทศทั่วโลกไดออกกฎหมายที่ครอบคลุมและรองรับตอการกระทําความผิดที่
เกี่ยวของกับการลวงละเมิดขอมูลสวนตัว หรือขอมูลที่เปนความลับของบุคคล หนวยงาน และองคกรตางๆ
รวมทั้งในอีกหลายๆ ประเทศก็ไดมีการพิจารณาและเตรียมพรอมที่จะประกาศใชกฎหมายในลักษณะ
เดียวกัน แตในทางปฏิบัติแลว เจาของขอมูลควรทําการปกปอง (Protect) ปดบังหรืออําพราง (Conceal)
ขอมูลสวนตัวเหลานั้นดวยตนเองเสียกอน กอนที่จะมีความเสียหายใดๆ เกิดขึ้นอันเนื่องมาจากการกระทํา
ของบุคคลที่ไมประสงคดี การรักษาความปลอดภัยของขอมูล (Data Security) ถือเปนแนวทางหนึ่งที่คน
สวนใหญเลือก เพื่อนํามาใชในการปกปองหรือปดบังขอมูลที่เปนความลับของตนเอง ในปจจุบันเทคนิค
(Technique) และวิธีการ (Method) ตางๆ ไดมีการคิดคนและพัฒนาขึ้นอยางมากมาย เพื่อนํามาใชในการ
รักษาความปลอดภัยของขอมูล
ในโลกยุคดิจิทัล (Digital) ขอมูลสวนใหญมักจัดเก็บอยูในรูปของขอมูลสื่อประสม ที่ประกอบไป
ดวยสื่อขอมูลเดี่ยวหลายๆ ชนิดรวมกัน เชน ขอความ ภาพ กราฟก ภาพเคลื่อนไหว วีดีทัศน เสียง คําพูด
ดนตรี ฯลฯ ซึ่งขอมูลสื่อประสมที่สรางขึ้นสามารถนํามาใชในการนําเสนอ (Present) จัดเก็บ (Store) สง
(Transmit) และประมวลผล (Process) ในรูปของสัญญาณดิจิทัลไดโดยตรง การประชุมทางไกลพรอม
ระบบเสียงและภาพเคลื่อนไหวผานเครือขายอินเทอรเน็ต ถือเปนตัวอยางของการประยุกตใชงานขอมูลสื่อ
1
ประสมแบบหนึ่ง จากคุณลักษณะขางตนของขอมูลสื่อประสม สงผลใหคนจํานวนมากเลือกใชขอมูลชนิดนี้
เพื่อเพิ่มประสิทธิภาพในการติดตอสื่อสารหรือแลกเปลี่ยนขาวสารกับคนอื่นๆ ในสังคม จึงเปนที่มาของคํา
วา การสื่อสารสื่อประสม (Multimedia Communications)
เมื่อมีการประมวลผล จัดเก็บ หรือสงขอมูลที่มีขนาดใหญอยางขอมูลสื่อประสม ความจําเปนในการ
รักษาความปลอดภัยของขอมูลยิ่งเพิ่มสูงขึ้น และมีรูปแบบที่แตกตางกันมากขึ้น ตามชนิดของขอมูลที่นํามา
ประกอบกันเปนขอมูลสื่อประสม ยกตัวอยางเชน การรักษาความลับ (Secrecy) ของขอมูลที่สงไปใหบุคคล
ใดบุคคลหนึ่ง การพิสูจนตัวจริง (Authentication) ของขอมูลที่ไดรับมา การพิสูจนตัวตน (Identity
Verification) ของบุคคลที่สงขอมูลมา บูรณภาพ (Integrity) ของขอมูลที่ไดรับมา การรักษาและปองกัน
ขอมูลที่จัดเก็บอยูในระบบฐานขอมูล และการควบคุมการเขาถึงขอมูล เปนตน ปญหาและความซับซอนใน
ดานการรักษาความปลอดภัยของขอมูลไดเพิ่มขึ้นมาก เมื่อเทคโนโลยีการสื่อสารขอมูลมีการพัฒนาอยาง
รวดเร็ว ฉะนั้นความตองการหรือความจําเปน (Requirement) ในการรักษาความปลอดภัยของขอมูลจึงไม
คงเดิม แตจะเปลี่ยนแปลงไปตามเทคโนโลยีตางๆ ที่มีการพัฒนาและนํามาใชงาน ตัวอยางปญหาที่เกี่ยวของ
กับความปลอดภัยของขอมูลใน 3 ดานหลักๆ คือ ปญหาในการรักษาความลับ ปญหาในการพิสูจนตัวจริง
และปญหาในการตรวจสอบบูรณภาพของขอมูล ดูรูปที่ 1.1-1.3 ประกอบ
2
รูปที่ 1.3 ปญหาที่เกิดขึ้นในการตรวจสอบบูรณภาพของขอมูล
3
1.2 ศัพทเฉพาะทางดานวิทยาการรหัสลับ
วิทยาการรหัสลับหมายถึง ศาสตร (Science) หรือ ศิลป (Art) ที่ใชในการรักษาขอมูลขาวสารให
เปนความลับ ในขณะที่การวิเคราะหรหัสลับ (Cryptanalysis) หมายถึง ศาสตรหรือศิลปที่ใชเพื่อใหไดมาซึ่ง
ขอมูลขาวสารตนฉบับ โดยไมจําเปนตองใชวิธีการถอดรหัสลับที่ถูกตอง ผูที่ทําหนาที่สรางหรือออกแบบ
วิทยาการรหัสลับจะเรียกวา นักสรางรหัสลับ (Cryptographer) ผูที่ทําหนาที่วิเคราะหหาจุดออนเพื่อใชใน
การโจมตีหรือเพื่อใหไดมาซึ่งขอมูลขาวสารตนฉบับจะเรียกวา นักวิเคราะหรหัสลับ (Cryptanalyst)
ในโลกของวิทยาการรหัสลับ เราเรียกขอความ (Message) หรือขอมูล (Data) ใดๆ วา ขอความ
ตนฉบับ (Plaintext) เรียกกระบวนการที่แปลงขอความตนฉบับใหอยูในรูปแบบที่มีการปกปดซอนเรน
เนื้อหา (Content) วา การเขารหัสลับ (Encryption) สําหรับขอความหรือขอมูลที่ผานการเขารหัสลับมาแลว
เรียกวา ขอความรหัส (Ciphertext) และเรียกกระบวนการที่แปลงขอความรหัสใหกลับไปอยูในรูปแบบของ
ขอความตนฉบับวา การถอดรหัสลับ (Decryption) โดยปกติการเขาและถอดรหัสลับจะใชกุญแจ (Key) และ
วิธีการเขารหัส (Coding) ในลักษณะที่วา การถอดรหัสลับจะทําสําเร็จไดดวยกุญแจที่เหมาะสมเทานั้น
แผนผังการเขาและถอดรหัสลับแสดงไวในรูปที่ 1.5
4
EK(M) = C (1.1)
DK(C) = M (1.2)
1.3 พื้นฐานอัลกอริทึมทางดานวิทยาการรหัสลับ
โดยปกติเราเรียกอัลกอริทึม (Algorithm) ใดๆ ที่ออกแบบมาสําหรับการเขาและถอดรหัสลับวา ตัว
แปลงรหัส (Cipher) อัลกอริทึมในลักษณะนี้อาจอยูในรูปของฟงกชันทางคณิตศาสตร ซึ่งโดยทั่วๆ ไปจะ
ประกอบดวย ฟงกชันสองฟงกชันที่มีความสัมพันธเกี่ยวเนื่องกันคือ ฟงกชันที่ใชสําหรับการเขารหัสลับ และ
ฟงกชันที่ใชสําหรับการถอดรหัสลับ ในอดีตที่ผานมา มีหลายอัลกอริทึมที่ออกแบบโดยที่ความปลอดภัยของ
ตัวอัลกอริทึมจะขึ้นอยูกับการปกปดวิธีการที่ใชในกระบวนการเขาและถอดรหัสลับ อยางไรก็ตาม ไดมีการ
ยอมรับกันอยางกวางขวางวา อัลกอริทึมเหลานั้นไมมีความปลอดภัยอยางเพียงพอ และไมเหมาะสมที่จะ
นําไปใชงานในทางปฏิบัติ เหตุผลหลักสองขอที่สนับสนุนแนวความคิดนี้คือ
1. ผูใชงานจะไมมีทางรูเลยวา อัลกอริทึมที่พวกเขากําลังใชงานอยู จะมีความปลอดภัย และทนทาน
ตอการโจมตีในทุกๆ รูปแบบที่เปนไปได และที่มีอยูในปจจุบัน
2. ความปลอดภัยของระบบที่ประยุกตใชวิทยาการรหัสลับ ควรจะขึ้นอยูกับความลับของตัวกุญแจ
ไมใชวิธีการที่ใชในกระบวนการเขาและถอดรหัสลับ เพื่อที่วาเมื่อใดก็ตามที่ความปลอดภัยของ
ระบบเกิดการรั่วไหล หรือทําใหมีจุดออน (Compromise) เชน เมื่อกุญแจถูกขโมยไป ผูใชงาน
สามารถแกไขไดโดยเปลี่ยนแตเพียงตัวกุญแจที่ใชในการเขาและถอดรหัสลับเทานั้น ไม
จําเปนตองเปลี่ยนตัวอุปกรณที่ใชในระบบทั้งหมด
จากเหตุผลขางตน อัลกอริทึมทางดานวิทยาการรหัสลับสมัยใหมจะใชกุญแจเปนตัวควบคุม
กระบวนการเขาและถอดรหัสลับ กลาวคือ การถอดรหัสลับขอความรหัส จําเปนตองใชกุญแจที่ออกแบบมา
สําหรับการถอดรหัสลับนั้นๆ โดยเฉพาะ ซึ่งกุญแจที่ใชในการถอดรหัสลับอาจเปนตัวเดียวกันหรือคนละตัวกัน
กับกุญแจที่ใชในการเขารหัสลับก็ได เราจะเรียกอัลกอริทึมที่ใชในการเขาและถอดรหัสลับ รวมไปถึงรูปแบบ
(Pattern) ที่เปนไปไดทั้งหมดของขอความตนฉบับ ขอความรหัส และกุญแจ โดยรวมวา ระบบการเขารหัสลับ
(Cryptosystem)
5
อัลกอริทึมที่ใชในวิทยาการรหัสลับ สามารถแบงออกตามลักษณะของกุญแจที่ใชได 2 แบบคือ
อัลกอริทึมสมมาตร (Symmetric Algorithm) และอัลกอริทึมอสมมาตร (Asymmetric Algorithm) อัลกอริทึม
สมมาตรมักเปนที่รูจักกันโดยทั่วไปในชื่อ อัลกอริทึมสัญนิยม (Conventional Algorithm) ซึ่งมีลักษณะเฉพาะ
คือ กุญแจที่ใชในการเขารหัสลับสามารถนํามาใชในการคํานวณหากุญแจถอดรหัสลับได หรือในทํานองเดียว
แตกลับกัน ในอัลกอริทึมสมมาตรสวนใหญ กุญแจที่ใชในการเขาและถอดรหัสลับมักจะเปนตัวเดียวกัน
ฉะนั้นในทางปฏิบัติ ผูใชงานที่เลือกใชอัลกอริทึมชนิดนี้จําเปนจะตองเห็นชอบรวมกัน (Agree) และยอมรับที่
จะใชกุญแจตัวเดียวกันเสียกอนที่จะมีการติดตอสื่อสารระหวางกันโดยการเขารหัสลับ ถามีผูใชงานเปนกลุม
ทุกคนในกลุมจะตองเห็นชอบรวมกันและยอมรับที่จะใชกุญแจตัวเดียวกันดวย บางครั้งจึงมีคนเรียกอัลกอริทึม
ชนิดนี้วา อัลกอริทึมกุญแจลับ (Secret Key Algorithm) หรืออัลกอริทึมกุญแจเดียว (Single Key Algorithm)
ใหสังเกตวาความปลอดภัยของอัลกอริทึมสมมาตรนี้ จะขึ้นอยูกับตัวกุญแจลับเปนสําคัญ บุคคลใดที่ไดกุญแจ
ลับนี้มา ไมวาจะโดยวิธีการใด สามารถที่จะทําการเขารหัสลับขอความตนฉบับหรือทําการถอดรหัสลับ
ขอความรหัสใดๆ ก็ได ดังนั้นในการใชงานอัลกอริทึมชนิดนี้ ถาตองการใหการสื่อสารขอมูลหรือการจัดเก็บ
ขอมูลยังคงเปนความลับ กุญแจที่ใชจะตองเก็บรักษาเปนความลับเชนเดียวกัน
ตัวอัลกอริทึมสมมาตรยังสามารถแบงยอยออกเปน 2 ชนิดไดคือ อัลกอริทึมที่เขารหัสลับทีละหนึ่งบิต
(Bit) หรือหนึ่งไบต (Byte) เรียกวาอัลกอริทึมแบบกระแส (Stream Algorithm) หรือตัวแปลงรหัสแบบกระแส
(Stream Cipher) และอัลกอริทึมที่เขารหัสลับทีละกลุมบิต (Block) เรียกวาอัลกอริทึมแบบกลุม (Block
Algorithm) หรือตัวแปลงรหัสแบบกลุม (Block Cipher) ในยุคปจจุบันกลุมบิตที่ใชในการเขาและถอดรหัสลับ
มักจะมีขนาด 64 บิต หรือมากกวา ใหสังเกตวาถาขนาดของกลุมบิตที่ใชเทากับ 8 บิต อัลกอริทึมแบบกลุมจะมี
ลักษณะการทํางานเหมือนกับอัลกอริทึมแบบกระแส เชน ในกรณีของการเขารหัสลับทีละอักขระ (Character)
6
สําหรับอัลกอริทึมอสมมาตร มักเปนที่รูจักกันโดยทั่วไปในชื่อ อัลกอริทึมกุญแจสาธารณะ (Public
Key Algorithm) จะมีลักษณะเฉพาะคือ กุญแจที่ใชในการเขารหัสลับจะแตกตางจากกุญแจที่ใชในการ
ถอดรหัสลับ และไมสามารถนํามาใชในการคํานวณหากุญแจถอดรหัสลับได เราเรียกอัลกอริทึมลักษณะนี้วา
กุญแจสาธารณะ (Public Key) เพราะกุญแจที่ใชในการเขารหัสลับสามารถเปดเผยตอสาธารณชนได บุคคลใด
ก็ตามที่ตองการสงขอความรหัสใหเจาของกุญแจ สามารถเขาถึงตัวกุญแจที่ใชเขารหัสลับและใชมันในการ
เขารหัสลับขอความตนฉบับใดๆ ก็ได แตจะมีเพียงเจาของกุญแจที่มีกุญแจถอดรหัสลับที่สัมพันธกันเทานั้น ที่
จะสามารถถอดรหัสลับขอความรหัสที่ไดรับมา ในระบบการเขาและถอดรหัสลับลักษณะนี้ เราเรียกกุญแจ
เขารหัสลับวา กุญแจสาธารณะ และเรียกกุญแจถอดรหัสลับวา กุญแจสวนตัว (Private Key) ในบางครั้งเราอาจ
เขารหัสลับขอความตนฉบับโดยใชกุญแจสวนตัว และถอดรหัสลับขอความรหัสโดยใชกุญแจสาธารณะ ซึ่ง
วิธีการใชงานในลักษณะนี้จะเปนงานประยุกต (Application) ที่เรียกวา ลายมือชื่อดิจิทัล (Digital Signature)
ซึ่งจะกลาวถึงอยางละเอียดในหัวขอตอๆ ไป ใหสังเกตวา เหตุผลหนึ่งที่เราเรียกอัลกอริทึมชนิดนี้วา
อัลกอริทึมอสมมาตร เนื่องมาจากเวลาที่ใชในการเขาและถอดรหัสลับมีความแตกตางกันมาก
ในการออกแบบอัลกอริทึมทางดานวิทยาการรหัสลับสมัยใหม ผูออกแบบหรือนักสรางรหัสลับจะ
ออกแบบใหอัลกอริทึมมีการประมวลผลภายในเครื่องคอมพิวเตอร หรืออุปกรณประเภทฮารดแวรที่สรางขึ้น
เปนพิเศษ โดยปกติอัลกอริทึมสมมาตรจะมีความเร็วในการเขาและถอดรหัสลับสูงกวาอัลกอริทึมอสมมาตร
เนื่องจากขั้นตอนที่ใชในการเขาและถอดรหัสลับแบบสมมาตรมีความซับซอนนอยกวา นอกจากนี้ยังมีความ
เหมาะสมและเขากันได (Compatible) กับอุปกรณประเภทฮารดแวร อยางไรก็ตามในทางปฏิบัติ อัลกอริทึม
ทั้งสองแบบมักมีการนํามาใชรวมกัน โดยอัลกอริทึมอสมมาตรและกุญแจสาธารณะจะใชในการเขารหัสลับ
กุญแจอีกดอกหนึ่งที่สรางขึ้นมาแบบสุม (Randomly Generate) ขณะที่อัลกอริทึมสมมาตรและกุญแจดอก
ดังกลาวจะใชในการเขารหัสลับขอความตนฉบับแทน การนํามาใชงานรวมกันในลักษณะนี้จะเรียกวา ระบบ
การเขารหัสลับลูกผสม (Hybrid Cryptosystem) ตัวอยางของระบบที่มีการเขารหัสลับแบบลูกผสมที่ใชกัน
อยางแพรหลายในปจจุบันคือ โพรโทคอล PGP (Pretty Good Privacy, PGP Protocol)
7
1.4 ขอกําหนดทั่วไปของระบบการเขารหัสลับ
ระบบการเขารหัสลับใดๆ จะตองมีคุณสมบัติเปนไปตามขอกําหนดทั่วไปของระบบการเขารหัสลับ
3 ขอ เพื่อที่จะเปนที่ยอมรับในการนําไปใชงานในทางปฏิบัติ ขอกําหนดเหลานั้นคือ
1. อัลกอริทึมที่ใชในการเขาและถอดรหัสลับตองมีประสิทธิภาพในทุกๆ รูปแบบของกุญแจที่
เปนไปได เชน ถากุญแจที่ใชในการเขาและถอดรหัสลับมีขนาด 8 บิต จํานวนรูปแบบของกุญแจ
ที่เปนไปไดทั้งหมดจะเทากับ 28 หรือ 256 รูปแบบ ในการใชงานอัลกอริทึมในระบบการเขารหัส
ลับ ไมวาจะใชกุญแจรูปแบบใด ระดับความปลอดภัยของขอความรหัสที่ไดจากการใชกุญแจ
รูปแบบนั้นตองคงที่ ไมเปลี่ยนแปลง เมื่อเทียบกับระดับความปลอดภัยของขอความรหัสที่ได
จากการใชกุญแจรูปแบบอื่นๆ
2. ระบบตองมีความงายตอการนําไปใชงาน ขอกําหนดนี้บงชี้ถึงความสามัญ (Simple) ในการ
คํานวณหากุญแจโดยวิธีการแปลงแบบผกผันได (Invertible Transformation) ซึ่งจะมี
ประโยชนเมื่อนํามาใชในกระบวนการถอดรหัสลับ นอกจากนี้ความหมายของขอกําหนดนี้ยัง
ครอบคลุมไปถึงระยะเวลาที่ใชในการเขาและถอดรหัสลับ กลาวคือ อัลกอริทึมที่ใชในการเขา
และถอดรหัสลับ ไมควรมีความซับซอนและใชเวลาในการประมวลผลมากเกินไป เนื่องจาก
ในทางปฏิบัติ ผูใชงานมักทําการเขาและถอดรหัสลับขอมูลในเวลาที่ทําการสงหรือรับขอมูล
นั้นๆ สงผลใหระบบที่มีความซับซอนสูงจะทําใหมีการติดตอสื่อสารแบบเวลาจริง (Real-time
Communication) ไมได
3. ความปลอดภัยของระบบควรขึ้นอยูกับการเปนความลับของกุญแจเทานั้น ไมขึ้นกับการเปน
ความลับของอัลกอริทึมที่ใชในการเขาและถอดรหัสลับ ขอกําหนดนี้บงชี้วา ระบบการเขารหัส
ลับทีดี ไมควรเกิดจุดออน เพียงเพราะวาผูโจมตีรูและเขาใจถึงวิธีการหรืออัลกอริทึมที่ใชในการ
เขาและถอดรหัสลับ
นอกจากนี้ระบบการเขารหัสลับใดๆ จะตองประกอบไปดวยคุณสมบัติเฉพาะสําหรับการนํามา
ประยุกตใชงานในดานการรักษาความลับและการพิสูจนตัวจริง การรักษาความลับในการติดตอสื่อสาร
ระหวางบุคคลสองคนหรือมากกวานั้น หมายความวา นักวิเคราะหรหัสลับไมสามารถที่จะคนหาขอความ
ตนฉบับจากขอความรหัสที่ดักฟงมาได ขอกําหนดเฉพาะสําหรับการใชงานประเภทนี้คือ
1. มันควรเปนไปไมไดในทางคํานวณ ที่นักวิเคราะหรหัสลับจะสามารถคนหากุญแจที่ใชในการ
ถอดรหัสลับ (KD) อยางเปนระบบจากขอความรหัสที่ดักฟงมาได ถึงแมนักวิเคราะหรหัสลับจะรู
ขอความตนฉบับสมนัย (Corresponding) ของขอความรหัสนั้นๆ
8
2. มันควรเปนไปไมไดในทางคํานวณ ที่นักวิเคราะหรหัสลับจะสามารถคนหาขอความตนฉบับ
อยางเปนระบบจากขอความรหัสที่ดักฟงมาได
ขอกําหนดเฉพาะที่ 1 มีไวเพื่อใหแนใจวา นักวิเคราะหรหัสลับไมมีทางคนพบวิธีการที่เปนระบบเพื่อ
ใชคนหากุญแจสําหรับการถอดรหัสลับ นักวิเคราะหรหัสลับอาจใชการเดา (Guess) ในการคนหากุญแจ แต
จะไมถือวาเปนวิธีการคนหาอยางเปนระบบ จากขอกําหนดเฉพาะนี้ นักวิเคราะหรหัสลับจะไมสามารถ
ถอดรหัสลับขอความรหัสใดๆ ที่มีการเขารหัสลับโดยใชกุญแจตัวเดียวกันได ขอกําหนดเฉพาะที่ 2 มีไว
เพื่อใหแนใจวา นักวิเคราะหรหัสลับไมมีทางคนพบวิธีการที่เปนระบบเพื่อใชคนหาขอความตนฉบับโดยไม
ใชกุญแจ ขอกําหนดเฉพาะทั้ง 2 นี้ควรเปนจริงเสมอไมวานักวิเคราะหรหัสลับจะแอบดักฟงขอความรหัสไป
ยาวเทาใดหรือจํานวนมากแคไหนก็ตาม
การพิสูจนตัวจริงในการสื่อสารแลกเปลี่ยนขอมูลนั้น หมายความวา นักวิเคราะหรหัสลับไมสามารถ
ที่จะแทนที่ขอความรหัสที่แทจริง (Genuine) ดวยขอความรหัสที่สรางขึ้นเองโดยที่ไมถูกตรวจพบใน
ภายหลังได ขอกําหนดเฉพาะสําหรับการใชงานประเภทนี้คือ
1. มันควรเปนไปไมไดในทางคํานวณ ที่นักวิเคราะหรหัสลับจะสามารถคนหากุญแจที่ใชในการ
เขารหัสลับ (KE) อยางเปนระบบจากขอความรหัสที่กําหนดให (Given Ciphertext) ถึงแม
นักวิเคราะหรหัสลับจะรูขอความตนฉบับสมนัยของขอความรหัสนั้นๆ
2. มันควรเปนไปไมไดในทางคํานวณ ที่นักวิเคราะหรหัสลับจะสามารถสรางขอความรหัส ซึ่ง
ขอความตนฉบับของมันเปนขอความตนฉบับที่มีความสมเหตุสมผล (Valid Plaintext)
ขอกําหนดเฉพาะที่ 1 มีไวเพื่อใหแนใจวา นักวิเคราะหรหัสลับไมมีทางคนพบวิธีการที่เปนระบบ
เพื่อใชคนหากุญแจสําหรับการเขารหัสลับ ดังนั้นพวกเขาจะไมสามารถเขารหัสลับขอความตนฉบับที่มี
เนื้อหาแตกตางกัน และนําขอความรหัสที่สรางขึ้นใหมนี้ไปแทนที่ขอความรหัสเดิมโดยไมมีใครสามารถ
ตรวจพบได ขอกําหนดเฉพาะที่ 2 มีไวเพื่อใหแนใจวา นักวิเคราะหรหัสลับไมมีทางคนพบวิธีการสราง
ขอความรหัสใดๆ ที่ถอดรหัสลับออกมาแลว จะไดผลลัพธเปนขอความตนฉบับที่มีความหมาย
(Meaningful) ในกรณีนี้ ขอมูลที่มีลักษณะเปนตัวเลขจะไมทนทานตอการโจมตีประเภทการแทนที่ขอความ
รหัส ทั้งนี้เนื่องมาจากคาตัวเลขที่นําไปแทนที่อาจมีความหมายไดทั้งหมด เชน การแทนที่ 20 ดวย 21 หรือ
30 เปนตน ขอกําหนดเฉพาะทั้ง 2 นี้ควรเปนจริงเสมอไมวานักวิเคราะหรหัสลับจะแอบดักฟงขอความรหัส
ไปจํานวนมากแคไหนก็ตาม
9
รูปที่ 1.7 ขอกําหนดเฉพาะสําหรับการใชงานในดานการรักษาความลับและการพิสูจนตัวจริง
1.5 คําถามทายบท
1. จงใหคําจํากัดความของคําวา ขอมูลสื่อประสม การที่เราเขาไปชมภาพยนตรในโรงหนัง ภาพยนตรที่เรา
ชมถือเปนขอมูลสื่อประสมหรือไม ถาใชมีสื่อขอมูลชนิดใดบางที่ประกอบรวมกันอยู
2. จงอธิบายวา เหตุใดจึงตองใหความสําคัญตอการรักษาความปลอดภัยในการสื่อสารขอมูลสื่อประสม
3. มีการดําเนินการหลักใดๆ บางที่กระทําตอระบบขอมูล การดําเนินการหลักชนิดไหนที่มีความเสี่ยงตอการ
รักษาความปลอดภัยมากที่สุด เพราะเหตุใด ใหยกตัวอยางมาประกอบคําอธิบายดวย
4. จงอธิบายความแตกตางระหวางอัลกอริทึมสมมาตรและอัลกอริทึมอสมมาตร อัลกอริทึมทั้งสองมีผลกระทบ
ตอการนําไปใชงานกับขอมูลสื่อประสมอยางไร
5. จงอธิบายความแตกตางระหวาง ระบบการเขารหัสลับแบบสมมาตร แบบอสมมาตร และแบบลูกผสม
ระบบการเขารหัสลับลูกผสมมีจุดเดนเหนือกวาระบบการเขารหัสลับอีกสองระบบอยางไร
10
บทที่ 2
บทนําสูวิทยาการรหัสลับ ตอนสอง
2.1 ความแข็งแกรงของระบบและการวิเคราะหรหัสลับ
วัตถุประสงคหลักในการใชงานระบบการเขารหัสลับก็คือ เพื่อปกปดเนื้อหาที่เปนความลับของ
ขอความตนฉบับจากผูลอบฟง (Eavesdropper) หรืออาจเรียกในชื่ออื่นๆ วา ฝายปรปกษ (Adversary) ผูโจมตี
(Attacker) ผูดักจับ (Interceptor) ผูขัดขวาง (Interloper) ผูบุกรุก (Intruder) ฝายตรงขาม (Opponent) หรือศัตรู
(Enemy) โดยปกติเราจะสมมุติใหผูลอบฟงสามารถเขาถึงขอมูลที่สงถึงกันระหวางผูสงและผูรับไดอยาง
สมบูรณ ฉะนั้นผูลอบฟงสามารถนําการวิเคราะหรหัสลับมาใชเพื่อใหไดมาซึ่งความลับที่ซอนอยูในขอความ
รหัส หรือใหไดมาซึ่งกุญแจที่ใชในการถอดรหัสลับได ซึ่งความพยายามที่ใชในการวิเคราะหรหัสลับ หรือการ
ทําใหระบบการเขารหัสลับนั้นมีจุดออน จะเรียกวา การโจมตี (Attack) และผูที่ทําการวิเคราะหรหัสลับหรือ
โจมตีระบบการเขารหัสลับนั้นก็คือนักวิเคราะหรหัสลับนั่นเอง
เมื่อนักวิเคราะหรหัสลับทําการโจมตีระบบการเขารหัสลับระบบใดระบบหนึ่ง สิ่งแรกที่เขาตองทําก็
คือ จะตองพิจารณาถึงความแข็งแกรง (Strength) ของตัวแปลงรหัสที่ใชในระบบ เนื่องจากตัวแปลงรหัสที่
แตกตางกันจะมีระดับความปลอดภัยที่แตกตางกัน ความแข็งแกรงของตัวแปลงรหัสใดๆ จึงขึ้นอยูกับระดับ
ความยากในการทําใหตัวแปลงรหัสนั้นๆ เกิดจุดออน โดยทั่วไประดับความแข็งแกรงของตัวแปลงรหัสใดๆ
สามารถวัดหรือเปรียบเทียบไดงายๆ ในรูปของฟงกชันการทํางาน (Work Function) ซึ่งแปรผันโดยตรงกับ
จํานวนของการดําเนินการ (Operation) ที่จําเปนตองใชในการถอดรหัสลับขอความรหัส ยกตัวอยางเชน ใน
ตัวแปลงรหัสที่ใชกุญแจขนาด 64 บิต จะมีรูปแบบที่เปนไปไดทั้งหมดของกุญแจอยู 264 รูปแบบ ถาเราทํา
การโจมตีตัวแปลงรหัสนี้โดยการลองถอดรหัสลับขอความรหัสดวยกุญแจทุกๆ รูปแบบที่เปนไปไดทีละครั้ง
แลวตรวจสอบขอความตนฉบับผลลัพธที่ไดวามีความหมายหรือไม ฟงกชันการทํางานที่จะนํามาพิจารณาก็
คือ จํานวนของการดําเนินการที่จําเปนตองใชในขั้นตอนการสรางกุญแจ การถอดรหัสลับดวยกุญแจที่สราง
ขึ้น และการตรวจสอบวาขอความผลลัพธที่ไดมีความหมายหรือไม ตามทฤษฎี จํานวนครั้งในการลอง
ถอดรหัสลับจนประสบความสําเร็จโดยเฉลี่ยจะมีคาเปนครึ่งหนึ่งของจํานวนรูปแบบที่เปนไปไดทั้งหมดของ
กุญแจ กลาวคือ ถาใชกุญแจขนาด 64 บิต โดยเฉลี่ยจะตองทดลองการถอดรหัสลับดวยกุญแจในรูปแบบ
ตางๆ กันเปนจํานวน 263 ครั้ง จึงจะพบกุญแจที่ใชในการถอดรหัสลับไดอยางถูกตอง ใหสังเกตวาตัวเลข
จํานวนนี้ไดมาจากการวิเคราะหเชิงสถิติ (Statistical Analysis)
11
จากตัวอยางที่ยกมาขางตน เราอาจวัดหรือเปรียบเทียบความแข็งแกรงของตัวแปลงรหัสใดๆ โดยดูได
จากขนาดของกุญแจที่ใชและความซับซอนในกระบวนการถอดรหัสลับ โดยทั่วไป เราเรียกการโจมตี
ตัวแปลงรหัสโดยการลองถอดรหัสลับดวยกุญแจทุกๆ รูปแบบวา การคนหาอยางละเอียด (Exhaustive
Search) หรือการโจมตีแบบตะลุย (Brute-force Attack) ในทางปฏิบัติ ถาเลือกใชการโจมตีในลักษณะนี้
ฟงกชันการทํางานที่จําเปนตองใชในการถอดรหัสลับจะมีคาเพิ่มมากขึ้นเปนแบบเลขชี้กําลัง (Exponentially
Increase) เมื่อเทียบกับขนาดที่ใหญขึ้นของตัวกุญแจ ฟงกชันการทํางานที่แสดงในรูปของระยะเวลาเฉลี่ยที่
ตองใชในการโจมตีแบบตะลุยที่กุญแจขนาดตางๆ กันไดแสดงไวเปนตัวอยางในตารางที่ 2.1 โดยในการ
คํานวณ เราจะสมมุติวา อุปกรณที่ใชในการโจมตีแบบตะลุยมีความสามารถในการถอดรหัสลับขอความรหัส
ที่ความเร็ว 100 ลานครั้งตอวินาที (108 decryptions / sec.)
นอกจากการโจมตีแบบตะลุยแลว นักวิเคราะหรหัสลับอาจโจมตีระบบการเขารหัสลับดวยวิธีการ
วิเคราะหรหัสลับ ซึ่งในบางครั้งจะมีประสิทธิภาพสูงกวาการโจมตีแบบตะลุย โดยปกติการวิเคราะหรหัสลับ
สามารถแบงออกกวางๆ ได 4 รูปแบบ และทั้ง 4 รูปแบบนี้เราจะสมมุติใหนักวิเคราะหรหัสลับรูและเขาใจถึง
ขั้นตอนและวิธีการที่ใชในการเขาและถอดรหัสลับของตัวแปลงรหัส ฉะนั้นนักวิเคราะหรหัสลับจะสามารถ
โจมตีระบบโดยมุงเปาไปที่การวิเคราะหขอมูลที่ดักจับมาได ในระหวางที่ผูใชงานทั้งสองคน (หรือมากกวา)
กําลังติดตอสื่อสารเพื่อแลกเปลี่ยนขอมูลกันอยู รายละเอียดการโจมตีดวยการวิเคราะหรหัสลับทั้ง 4 มีดังนี้
1. การโจมตีขอความรหัสเทานั้น (Ciphertext-only Attack) ในการโจมตีประเภทนี้ ผูโจมตีสามารถ
เขาถึงขอความรหัสที่เกิดจากขอความตนฉบับหลายๆ ขอความได โดยทุกๆ ขอความตนฉบับจะมา
จากการเขารหัสลับโดยใชอัลกอริทึมตัวเดียวกัน สิ่งที่ผูโจมตีตองการจากการโจมตีประเภทนี้ก็คือ
ปริมาณการกูคืน (Recover) ขอความตนฉบับจากขอความรหัสที่มากที่สุด หรือการคนหาเพื่อให
ไดมาซึ่งกุญแจที่ใชในการถอดรหัสลับ
12
2. การโจมตีที่รูขอความตนฉบับ (Known Plaintext Attack) ในการโจมตีประเภทนี้ ผูโจมตีไมเพียงแต
สามารถเขาถึงขอความรหัสที่เกิดจากขอความตนฉบับหลายๆ ขอความได แตยังสามารถเขาถึง
ขอความตนฉบับเหลานั้นไดอีกดวย สิ่งที่ผูโจมตีตองการจากการโจมตีประเภทนี้ก็คือ การคนหา
เพื่อใหไดมาซึ่งกุญแจที่ใชในการถอดรหัสลับ หรืออัลกอริทึมตัวใหมที่ใชในการถอดรหัสลับจาก
ขอความรหัสที่ผานการเขารหัสลับดวยกุญแจตัวเดียวกัน
3. การโจมตีขอความตนฉบับแบบเลือกได (Chosen Plaintext Attack) ในการโจมตีประเภทนี้ ผูโจมตี
ไมเพียงแตสามารถเขาถึงขอความตนฉบับและขอความรหัสสมนัยหลายๆ ขอความได แตยังสามารถ
เลือกขอความตนฉบับในรูปแบบที่กําหนด เพื่อใชในการเขารหัสลับไดอีกดวย สิ่งที่ผูโจมตีตองการ
จากการโจมตีประเภทนี้ก็คือ การคนหาเพื่อใหไดมาซึ่งกุญแจที่ใชในการถอดรหัสลับ หรืออัลกอริทึม
ที่ใชในการถอดรหัสลับจากขอความรหัสที่ผานการเขารหัสลับดวยกุญแจตัวเดียวกัน
4. การโจมตีขอความรหัสแบบเลือกได (Chosen Ciphertext Attack) ในการโจมตีประเภทนี้ ผูโจมตี
สามารถเลือกขอความรหัสใดๆ เพื่อใชในการถอดรหัสลับ และยังสามารถเขาถึงขอความตนฉบับสม
นัยภายหลังการถอดรหัสลับนั้นๆ ได สิ่งที่ผูโจมตีตองการจากการโจมตีประเภทนี้ก็คือ การคนหา
เพื่อใหไดมาซึ่งกุญแจที่ใชในการถอดรหัสลับ การโจมตีประเภทนี้มีประสิทธิภาพสูง และมักนํามาใช
โจมตีอัลกอริทึมกุญแจสาธารณะเปนสวนใหญ
13
2.2 การประเมินระบบความปลอดภัย
ความปลอดภัย (Security) มีคุณลักษณะที่ซับซอนและมีความยากลําบากในการออกแบบใหมีความ
เหมาะสมกับการใชงานเฉพาะใดๆ การออกแบบระบบความปลอดภัยระบบใดระบบหนึ่งนั้น หมายถึง การ
วิเคราะหปญหาตางๆ ที่มาจากการโจมตี (Attack) ระบบทั้งหมดเทาที่เปนไปได โดยที่ผูออกแบบระบบและ
ฝายตรงขามตางก็คิดถึงกลยุทธ (Strategy) ที่ตนเองจะใชในการปองกันระบบและโจมตีระบบอยางเปน
อิสระตอกัน เนื่องจากวิธีการตางๆ ที่ใชในการโจมตีระบบทุกวันนี้มีมากมาย ทําใหการปองกันระบบเริ่มมี
ความยากลําบากมากขึ้นเรื่อยๆ ฉะนั้นในการออกแบบระบบความปลอดภัยในทางปฏิบัติ ผูออกแบบจะตอง
คํานึงถึงสิ่งคุกคาม (Threat) ทุกรูปแบบที่เปนไปไดที่อาจมีตอระบบ ถึงแมมันจะยากที่จะลวงรู หรือ
จินตนาการถึงสิ่งคุกคามทั้งหมดเทาที่มีในปจจุบัน แตผูออกแบบระบบก็สามารถคาดเดาถึงแรงกระตุนหรือ
ความตั้งใจที่จะนําไปสูการโจมตีระบบจากฝายตรงขามได ยกตัวอยางเชน ขอมูลขาวสารที่มีการลักลอบ
ขโมยออกไปจากระบบจัดเก็บขอมูลสามารถนําไปใชในการขมขู เรียกรองสิ่งใดสิ่งหนึ่งจากตัวเจาของขอมูล
หรือเพื่อใหเกิดขอไดเปรียบในเชิงธุรกิจ เปนตน
โดยทั่วๆ ไป ผูออกแบบระบบจะตัดสินวาระบบใดระบบหนึ่งมีความปลอดภัย ถาพวกเขาไม
สามารถคิดคนวิธีการใดๆ ที่จะใชโจมตีระบบนั้นๆ ใหประสบความสําเร็จได วิธีการคิดแบบนี้จะสงผลดีตอ
ผูโจมตี เนื่องจากผูออกแบบระบบอาจพลาดพลั้ง หรือลืมนึกถึงวิธีการโจมตีที่เปนไปไดแบบใดแบบหนึ่ง
ฉะนั้นความคิดที่ใชในการตรวจสอบหรือประเมินระบบความปลอดภัยที่ดี ไมควรวางอยูบนพื้นฐานที่เปน
แนวคิดของผูออกแบบระบบเพียงอยางเดียว ถึงแมผูออกแบบระบบเหลานั้นจะคิดและมั่นใจวา ไดมีการ
พิจารณาถึงสิ่งคุกคามที่มีตอระบบในทุกๆ รูปแบบอยางครอบคลุมแลวก็ตาม บางครั้งผูออกแบบระบบอาจมี
เหตุผลทางทฤษฎีที่ดี ที่จะเชื่อวาระบบที่พวกเขาออกแบบมีความปลอดภัย แตอยางไรก็ตาม สิ่งที่มีความ
จําเปนหลังจากนั้นก็คือ การคิดแบบกลับขาง (Lateral Thinking) ซึ่งจะทําใหผูออกแบบระบบเกิดคําถาม
หรือขอสงสัยจากขอสมมุติ (Assumption) ที่ตนเองไดตั้งเอาไวในตอนแรก และจะนําไปสูการเขาถึง
(Approach) ซึ่งคําตอบของคําถามหรือขอสงสัยที่แตกตางกันออกไป นอกจากนี้ในการออกแบบระบบ
ผูออกแบบอาจมุงความสนใจไปที่บางสวนของระบบ และลืมสวนอื่นๆ ที่เหลือไปกอน ทั้งนี้เพื่อทําใหการ
ออกแบบระบบเฉพาะสวนนั้นมีความซับซอนนอยลง ในทางปฏิบัติถือเปนเรื่องปกติที่ระบบรักษาความ
ปลอดภัยใดๆ จะมีความซับซอนมาก จนมีแตเพียงผูที่ใชงานระบบนั้นเทานั้นที่จะเขาใจถึงรายละเอียดตางๆ
ของระบบอยางแทจริง
ในสวนของการประยุกตใชงานอัลกอริทึมทางดานวิทยาการรหัสลับ (Cryptographic Algorithm)
แมวาในปจจุบันจะมีการเผยแผอัลกอริทึมตางๆ มากมายสูสาธารณะชน ซึ่งหลายๆ อัลกอริทึมก็ไดรับการ
ยอมรับอยางกวางขวางวามีความปลอดภัย เชน อัลกอริทึม RSA ที่ใชกุญแจเขารหัสลับขนาด 1024 บิต แต
ระดับความปลอดภัยของอัลกอริทึมนี้ก็ไมไดมีการรับประกันตลอดไป ทั้งนี้เนื่องมาจากการพัฒนาอยาง
รวดเร็วของเทคโนโลยีประมวลผลขอมูล ซึ่งนําไปสูสิ่งคุกคามใหมๆที่หลากหลายและมีประสิทธิภาพตอ
14
ระบบความปลอดภัย ยกตัวอยางเชน ความเร็วในการประมวลผลของหนวยประมวลผลกลางหรือซีพียู
(Central Processing Unit, CPU) ที่ใชงานกันอยูทุกวันนี้ สามารถทําใหอัลกอริทึม DES ที่ใชกุญแจ
เขารหัสลับขนาด 56 บิตไมมีความปลอดภัยจากการโจมตีแบบตะลุยได ฉะนั้นในการประยุกตใชงานตางๆ
ที่ยกมาเปนตัวอยางในหนังสือเลมนี้จะเลือกใชอัลกอริทึมที่มีลักษณะเฉพาะทาง และทําการสมมุติวา
อัลกอริทึมเหลานั้นมีระดับความปลอดภัยอยางเพียงพอตอการโจมตีที่เปนไปไดทั้งหมด อยางนอยก็ใน
ชวงเวลาที่เขียนหนังสือเลมนี้อยู อยางไรก็ตามในอนาคต ถาอัลกอริทึมที่เลือกใชเปนตัวอยางในหนังสือเลม
นี้เกิดมีจุดออนขึ้น อัลกอริทึมทางดานวิทยาการรหัสลับแบบอื่นๆ ในขอสมมุติฐานเดียวกันสามารถนํามาใช
งานแทนกันได
สิ่งสําคัญสิ่งหนึ่งที่ควรจดจําไวเมื่อทําการออกแบบระบบความปลอดภัยก็คือ ไมมีระบบจัดเก็บ
ขอมูลใดๆ ที่จะมีความปลอดภัยอยางแทจริง เวนแตจะทําการปองกันการเขาถึงทางดานกายภาพ (Physical
Protection) ในบางสวนของระบบจัดเก็บขอมูลนั้นๆ นอกจากนี้ ในการประมวลผลขอมูล ขอมูลที่กําลัง
ประมวลผลมักอยูในรูปของขอมูลที่ไมมีการเขารหัสลับ ฉะนั้นตัวประมวลผลขอมูลจึงควรมีการปองกันจาก
การเขาถึงโดยผูไมประสงคดีเชนเดียวกัน ในระบบจัดเก็บขอมูลหลายๆ ระบบที่มีการใชงานกันอยูใน
ปจจุบัน ความปลอดภัยของระบบมักจะขึ้นอยูกับวัสดุหอหุมที่มีความทนทานทางกายภาพ วัสดุหอหุมนี้จะ
ออกแบบมาในลักษณะที่วา ความลับที่เก็บซอนไวภายในจะถูกทําลายเมื่อมีความพยายามที่จะแกะวัสดุ
หอหุมนี้ออก วัสดุหอหุม หรือมอดูล (Module) ของระบบจัดเก็บขอมูลใดๆ ที่มีลักษณะการทํางานเชนนี้จะ
เรียกวา มอดูลที่ตานทานตอการทําลาย (Tamper-resistant Module) ใหสังเกตวา เพื่อใหการออกแบบ
ระบบจัดเก็บขอมูลมีความปลอดภัยอยางเพียงพอในทางปฏิบัติ บางครั้งเราไมสามารถหลีกเลี่ยงการ
ประยุกตใชงานมอดูลที่ตานทานตอการทําลายไดเลย
2.3 โพรโทคอลทางดานวิทยาการรหัสลับ
โพรโทคอล (Protocol) ก็คือ ขั้นตอนการทํางานที่เปนอนุกรม (Series) ระหวางอุปกรณสองตัวหรือ
บุคคลสองคนเปนอยางนอย ซึ่งออกแบบมาเพื่อทําภารกิจ (Task) ที่กําหนดไวใหสําเร็จ “ขั้นตอนที่เปนอนุกรม”
หมายถึง โพรโตคอลจะตองมีลําดับการทํางานอยางเปนขั้นตอนที่แนชัดตั้งแตเริ่มตนจนถึงสิ้นสุด ไมมีการ
ทํางานที่ขามขั้นตอนเกิดขึ้น “ระหวางอุปกรณสองตัวหรือบุคคลสองคนเปนอยางนอย” หมายถึง โพรโทคอล
จะตองประกอบดวยอุปกรณหรือบุคคลที่อยูแตละฝายอยางนอย 2 ฝาย อุปกรณใดอุปกรณหนึ่งหรือบุคคลใด
บุคคลหนึ่งที่ทํางานตามลําดับอยางเปนขั้นเปนตอน จนทําใหภารกิจใดๆ ประสบผลสําเร็จโดยลําพัง จะไมถือวา
เปนโพรโทคอล “ออกแบบมาเพื่อทําภารกิจที่กําหนดไวใหสําเร็จ” หมายถึง โพรโทคอลจะทําใหภารกิจใดภารกิจ
หนึ่งสําเร็จ ใหสังเกตวา ลําดับการทํางานที่เปนขั้นตอนเหมือนโพรโทคอล แตไมสามารถทําใหภารกิจใดๆ ที่
กําหนดสําเร็จ จะไมถือวาเปนโพรโทคอล
15
โดยปกติ กอนดําเนินการตามโพรโทคอลใดๆ ทุกๆ ฝายที่เกี่ยวของกับโพรโทคอลนั้นๆ ตองรับรูและ
ยอมรับที่จะใชโพรโทคอล รวมถึงการยอมรับที่จะดําเนินการตามลําดับขั้นตอนทั้งหมดที่เกิดขึ้นในโพรโทคอล
นั้นๆ เปนการลวงหนากอน นอกจากนี้ทุกๆ ฝายที่เกี่ยวของจะตองดําเนินการตามลําดับการทํางานของโพรโท
คอลอยางถูกตองดวย ซึ่งกระบวนการทํางานที่กําหนดขึ้นในโพรโทคอลตองไมมีความกํากวม (Unambiguous)
มีการนิยามไวอยางชัดเจน ไมทําใหฝายหนึ่งฝายใดเกิดการเขาใจผิด
โพรโทคอลทางดานวิทยาการรหัสลับ (Cryptographic Protocol) หมายถึง โพรโทคอลที่ใชวิทยาการ
รหัสลับนั่นเอง บุคคลที่เกี่ยวของกับโพรโทคอลประเภทนี้อาจเปนมิตรตอกัน มีความไววางใจซึ่งกันและกัน
หรืออาจเปนศัตรูที่ไมไวใจซึ่งกันและกันเลยก็ได ภารกิจของโพรโทคอลประเภทนี้มักจะเปนภารกิจเฉพาะที่
สําคัญนอกเหนือไปจากการรักษาความลับของขอความตนฉบับ บุคคลที่จําเปนตองใชโพรโทคอลประเภทนี้
อาจตองการใชความลับที่แตละฝายมีรวมกันนํามาคํานวณคาตัวเลขรวมใดๆ เพื่อทําการสรางลําดับสุมรวมใดๆ
หรืออาจตองการทําใหอีกฝายหนึ่งเชื่อวาบุคคลที่ตนเองกําลังติดตออยูเปนบุคคลที่ไดอางถึงจริงๆ อาจกลาว
โดยสรุปไดวา ประเด็นสําคัญที่มีการนําวิทยาการรหัสลับมาใชในโพรโทคอลก็คือ เพื่อปองกันหรือเพื่อ
ตรวจจับการลอบฟงและการฉอโกง (Cheating) ใดๆ ที่อาจเกิดขึ้นในระหวางที่อุปกรณหรือบุคคลแตละฝาย
ดําเนินการตามโพรโทคอล ในตัวอยางของการนําโพรโทคอลมาประยุกตใชงาน ในหนังสือเลมนี้จะสมมุติให
นายดํากับนายแดงคือ บุคคลทั้งสองฝายที่จะดําเนินการตามโพรโทคอล ในกรณีที่โพรโทคอลตองการบุคคล
ฝายที่สามและสี่ จะใชนายเขียวและนายเหลืองแทนตามลําดับ นายขาว คือบุคคลที่แอบลอบฟงการสื่อสาร
ระหวางนายดําและนายแดง และพยายามที่จะทําการฉอโกงฝายใดฝายหนึ่งหรือทั้งสองฝาย ผูตัดสิน
(Arbitrator) คือบุคคลที่ไมมีสวนไดสวนเสีย (Disinterested) และบุคคลทุกฝายที่เกี่ยวของกับโพรโทคอล
ไววางใจ คําวา “ไววางใจ” ในที่นี้ หมายถึง บุคคลที่เกี่ยวของกับโพรโทคอลทุกคนยอมรับวาสิ่งที่ผูตัดสินพูด
เปนความจริง สิ่งที่ผูตัดสินทําเปนสิ่งที่ถูกตอง และผูตัดสินจะดําเนินการตามหนาที่ที่กําหนดไวในโพรโทคอล
ใหสําเร็จ การนําผูตัดสินมาใชจะชวยใหการดําเนินการตามโพรโทคอลระหวางอุปกรณหรือบุคคล 2 ฝายที่ไม
ไวใจ (Distrustful) ซึ่งกันและกันประสบความสําเร็จไดโดยงาย ในทางปฏิบัติผูตัดสินดําเนินการธุรกรรมใดๆ
อาจจะเปนธนาคารก็ได ยกตัวอยางเชน เมื่อนายดําตองการซื้อสินคาชิ้นหนึ่งจากนายแดงผานทางเครือขาย
อินเทอรเน็ต นายดําอาจไมไวใจที่จะสงเงินใหนายแดงทางอินเทอรเน็ตกอน ในขณะที่นายแดงก็ไมไวใจที่จะ
สงสินคาใหกับนายดํากอนเชนกัน ทั้งนายดําและนายแดงตางไมไวใจซึ่งกันและกัน จึงใหธนาคารทําหนาที่
เปนผูตัดสิน ในกรณีนี้นายดํา นายแดงและธนาคาร อาจดําเนินการตามโพรโทคอลดังตอไปนี้ เพื่อทําการซื้อ
ขายสินคาผานทางเครือขายอินเทอรเน็ต
1. นายดํา (User A) สงเงินใหกับธนาคาร (Arbitrator) ในรูปของบัตรเครดิตหรือเช็ค
2. นายแดง (User B) สงสินคาใหกับธนาคาร
3. เมื่อธนาคารตรวจสอบแลววา เงินที่นายดําสงมาถูกตองและสินคาที่นายแดงสงมาอยูในสภาพดีใช
งานได ธนาคารจึงสงเงินใหนายแดง และสงสินคาใหกับนายดํา กรณีที่มีสิ่งใดสิ่งหนึ่งไมเรียบรอย
16
เชน เช็คที่สั่งจายไมผาน หรือสินคาที่สงมาจากนายแดงมีตําหนิ ธนาคารก็จะคืนเงินใหกับนายดํา
และคืนสินคาใหกับนายแดง
2.3.1 การโจมตีโพรโทคอล
การโจมตีทางดานวิทยาการรหัสลับใดๆ สามารถนํามาใชโจมตีอัลกอริทึมทางดานวิทยาการรหัสลับที่
ใชในโพรโทคอล นํามาใชโจมตีเทคนิคทางดานวิทยาการรหัสลับที่ใชงานรวมกันกับอัลกอริทึมและโพรโท
คอล หรือนํามาใชโจมตีตัวโพรโทคอลเองก็ได ในสวนนี้เราจะสมมุติให อัลกอริทึมและเทคนิคทางดาน
วิทยาการรหัสลับมีความปลอดภัยและทนทานตอการโจมตีทั้งหมดที่มีอยูในปจจุบัน เพื่อที่จะมุงโจมตีไปที่ตัว
โพรโทคอลเพียงอยางเดียว คนทั่วไปอาจทําการโจมตีโพรโทคอลไดหลายๆ วิธี บางคนอาจไมมีสวนรวมใน
การดําเนินการโพรโทคอล แตมีความสามารถในการลักลอบดักฟงการติดตอสื่อสารที่เกิดขึ้นภายในโดยไม
สงผลกระทบใดๆ ตอการทํางานของโพรโทคอล การโจมตีในลักษณะนี้เรียกวา การโจมตีแบบแพสซิฟ
(Passive Attack) ซึ่งมีจุดมุงหมายในการเรียนรูการทํางานของโพรโทคอล และการลักลอบขโมยขอมูล
ขาวสารที่มีการรับสงระหวางอุปกรณหรือบุคคลที่เกี่ยวของกับโพรโทคอล การโจมตีในลักษณะนี้จะมีรูปแบบ
17
เหมือนกับการโจมตีขอความรหัสเทานั้น ในทางปฏิบัติเปนการยากที่จะตรวจจับการโจมตีแบบแพสซิฟ โพร
โทคอลที่ออกแบบมาสวนใหญจึงพยายามปองกันการโจมตีในลักษณะนี้มากกวาที่จะตรวจจับการโจมตี
18
ตัวอยางโพรโทคอลสําหรับการสื่อสารในระบบการเขารหัสลับแบบสมมาตรมีดังนี้
1. นายดํากับนายแดงเห็นชอบรวมกันที่จะใชระบบการเขารหัสลับระบบใดระบบหนึ่ง
2. นายดํากับนายแดงเห็นชอบรวมกันที่จะใชกุญแจตัวใดตัวหนึ่งในการเขาและถอดรหัสลับ
3. นายดําทําการเขารหัสลับขอความตนฉบับ โดยใชอัลกอริทึมการเขารหัสลับและกุญแจที่กําหนด
4. นายดําสงขอความรหัสใหนายแดง
5. นายแดงทําการถอดรหัสลับขอความรหัส โดยใชอัลกอริทึมการถอดรหัสลับและกุญแจที่กําหนด
ถานายขาวยืนอยูตรงกลางระหวางนายดํากับนายแดง และลอบดักฟงขอมูลที่สงในขั้นตอน 4 นายขาว
จะเปรียบเสมือนผูโจมตีแบบแพสซิฟ และการโจมตีโพรโทคอลในลักษณะนี้จะมีรูปแบบเหมือนกับการโจมตี
ขอความรหัสเทานั้น อยางไรก็ตามในทางปฏิบัติ นายขาวจะพยายามทุกวิธีทางที่จะลอบฟงการสื่อสารที่เกิดขึ้น
ในขั้นตอนที่ 1 และ 2 เพื่อที่วานายขาวจะสามารถถอดรหัสลับขอความรหัสใดๆ ที่สงผานไปมาระหวางนายดํา
กับนายแดงได อยางไรก็ตาม เนื่องจากความปลอดภัยของระบบการเขารหัสลับที่ดีจะขึ้นอยูกับการเปนความลับ
ของตัวกุญแจเทานั้น ไมไดขึ้นกับการเปนความลับของตัวอัลกอริทึมที่ใชในการเขาและถอดรหัสลับ ฉะนั้นนาย
ดํากับนายแดงอาจดําเนินการขั้นตอนที่ 1 ในที่สาธารณะ หรือในชองทางสื่อสารที่ไมปลอดภัยก็ได แตทั้งคู
จะตองดําเนินการขั้นตอนที่ 2 อยางเปนความลับ กุญแจที่เกิดขึ้นในขั้นตอนนี้จะตองเก็บรักษาเปนความลับทั้ง
กอนและหลังการดําเนินการโพรโทคอล ตราบเทาที่ขอความตนฉบับยังคงเปนความลับอยู
จากที่กลาวมาขางตน พบวาระบบการเขารหัสลับแบบสมมาตรมีจุดดอย 3 จุดดังนี้
1. กุญแจที่ใชจําเปนตองมีการแลกเปลี่ยน (Exchange) หรือกระจาย (Distribute) อยางเปนความลับ
2. ถามีบุคคลอื่นทราบกุญแจที่ใชในการถอดรหัสลับ ไมวาจะไดกุญแจมาจากการขโมย การคาดเดา
การบังคับขมขู หรือจากการติดสินบน บุคคลนั้นจะสามารถทําการถอดรหัสลับขอความรหัส
ทั้งหมดที่เขารหัสลับดวยกุญแจนั้นๆ ได นอกจากนี้บุคคลดังกลาวยังสามารถปลอมแปลงตนเอง
เปนบุคคลในกลุมแลวทําการสรางขอความรหัส เพื่อสงไปหลอกบุคคลอื่นๆ ในกลุมโดยที่ไมมี
ใครสามารถตรวจจับไดเชนเดียวกัน
3. มีความซับซอนในระบบการจัดการกุญแจ (Key Management) สมมุติใหบุคคลที่ติดตอสื่อสาร
กัน 2 ฝายตองเก็บรักษากุญแจหนึ่งดอกเพื่อใชสําหรับการเขาและถอดรหัสลับ จํานวนของกุญแจ
ทั้งระบบจะเพิ่มขึ้นมาก ถาจํานวนผูใชงานในระบบเพิ่มขึ้น ในทางปฏิบัติเครือขายการสื่อสารที่มี
จํานวนผูใชงาน n คน จําเปนตองสรางและเก็บรักษากุญแจจํานวน n(n-1)/2 ดอก ยกตัวอยางเชน
ถามีผูใชงาน 4 คนในระบบ และผูใชงานแตละคนสามารถติดตอกับผูใชงานคนอื่นๆ ที่เหลือโดย
ใชกุญแจที่แตกตางกัน จํานวนกุญแจที่มีอยูในระบบจะเทากับ (4 × 3)/2 = 6 ดอก และถาระบบมี
ผูใชงาน 100 คน ภายใตเงื่อนไขเดียวกัน จํานวนกุญแจที่มีอยูในระบบจะเทากับ (100 × 99)/2 =
4,950 ดอก
19
เพื่อแกไขจุดดอยของระบบการเขารหัสลับแบบสมมาตร จึงไดมีการพัฒนาระบบการเขารหัสลับแบบ
อสมมาตรขึ้น โดยมีพื้นฐานอยูที่การประยุกตใชงานอัลกอริทึมอสมมาตรซึ่งประกอบไปดวยกุญแจสาธารณะ
และกุญแจสวนตัว อางถึงแนวความคิดของอัลกอริทึมอสมมาตรที่กลาวถึงในหัวขอที่ 1.3 คือ “จะเปนการยาก
มากที่จะคํานวณหากุญแจสวนตัวจากกุญแจสาธารณะที่กําหนด” ดังนั้นใครก็ตามที่มีกุญแจสาธารณะในมือ
สามารถทําการเขารหัสลับขอความตนฉบับใดๆ แลวสงขอความรหัสผลลัพธที่ไดใหกับเจาของกุญแจ แตจะไม
สามารถใชกุญแจดอกนั้นในการถอดรหัสลับขอความรหัสใดๆ ได มีแตเฉพาะบุคคลที่มีกุญแจสวนนั้นเทานั้น
ที่จะสามารถถอดรหัสลับขอความรหัสได
ตัวอยางโพรโทคอลสําหรับการสื่อสารในระบบการเขารหัสลับแบบอสมมาตรมีดังนี้
1. นายดํากับนายแดงเห็นชอบรวมกันที่จะใชระบบการเขารหัสลับแบบอสมมาตรระบบใดระบบหนึ่ง
2. นายดําสงกุญแจสาธารณะของตนใหนายแดง
3. นายแดงทําการเขารหัสลับขอความตนฉบับโดยใชกุญแจสาธารณะของนายดําและสงขอความรหัส
ผลลัพธที่ไดใหนายดํา
4. นายดําทําการถอดรหัสลับขอความรหัสที่ไดมาโดยใชกุญแจสวนตัวของตนเอง
จะเห็นไดวา ระบบการเขารหัสลับแบบอสมมาตร จะแกไขจุดดอยหลักที่มีอยูในระบบการเขารหัสลับ
แบบสมมาตร กลาวคือ แตเดิมนายดํากับนายแดงจะตองเห็นชอบรวมกันที่จะใชกุญแจตัวใดตัวหนึ่งในการเขา
และถอดรหัสลับ นายดําอาจเลือกกุญแจนี้ขึ้นมาโดยการสุม แตจะมีปญหาตอนที่สงผานใหนายแดง หรือตอน
แจงใหนายแดงทราบ ในทางปฏิบัตินายดําอาจสงกุญแจนี้ใหกับมือนายแดงโดยตรง แตทั้งคูจําเปนตองมีการ
พบกันกอนที่จะมีการสื่อสารโดยการเขารหัสลับเกิดขึ้น นายดําอาจสงกุญแจใหกับนายแดงโดยวิธีการที่
ปลอดภัย เชน ทางไปรษณียลงทะเบียน แตวิธีการนี้จําเปนตองอาศัยระยะเวลาชวงหนึ่ง แตเมื่อมีการนําระบบ
การเขารหัสลับแบบอสมมาตรมาใช ผูใชงานในระบบทุกคนจะสรางกุญแจสําหรับตนเองเพียง 2 ดอกเทานั้น
โดยกุญแจสวนตัวจะเก็บรักษาไวอยางเปนความลับ ขณะที่กุญแจสาธารณะอาจมีการเผยแพรอยางเปดเผยใน
ระบบฐานขอมูลใดๆ ในกรณีนี้นายแดงสามารถสงขอความรหัสใหนายดําไดโดยไมจําเปนตองมีการ
ติดตอสื่อสารกับนายดํามากอน อีกทั้งโพรโทคอลที่ใชในการสื่อสารยังมีความซับซอนนอยลงคือ
1. นายแดงรองขอกุญแจสาธารณะของนายดําจากระบบฐานขอมูลกุญแจสาธารณะที่เชื่อถือได
2. นายแดงทําการเขารหัสลับขอความตนฉบับโดยใชกุญแจสาธารณะของนายดําและสงขอความรหัส
ผลลัพธที่ไดใหนายดํา
3. นายดําทําการถอดรหัสลับขอความรหัสที่ไดมาโดยใชกุญแจสวนตัวของตนเอง
ใหสังเกตวาในโพรโทคอลนี้ นายดําไมจําเปนตองเกี่ยวของกับโพรโทคอลจนกวานายดําจะตองการ
อานขอความรหัสที่สงมาจากนายแดงเทานั้น
20
ถึงแมวาอัลกอริทึมอสมมาตรจะแกปญหาในเรื่องการกระจายกุญแจที่เกิดขึ้นในระบบการเขารหัสลับ
แบบสมมาตร แตในทางปฏิบัติเรายังคงไมนําอัลกอริทึมอสมมาตรมาใชในการเขารหัสลับขอความตนฉบับ
โดยตรง เนื่องมาจากจุดดอย 3 ประการคือ
1. อัลกอริทึมอสมมาตรมีความซับซอนสูงและใชเวลาประมวลผลนาน โดยปกติ อัลกอริทึมสมมาตร
จะใชความเร็วในการเขาและถอดรหัสลับสูงกวาอัลกอริทึมอสมมาตรประมาณ 1,000 เทา
2. ขอความรหัสที่ไดจากการเขารหัสลับโดยอัลกอริทึมอสมมาตรมักจะมีขนาดใหญกวาขอความ
ตนฉบับเสมอ
3. อัลกอริทึมอสมมาตรไมทนทานตอการโจมตีขอความตนฉบับแบบเลือกได ทั้งนี้เนื่องมาจาก C =
EK(M) เมื่อ M คือ ขอความตนฉบับขอความหนึ่งจากเซตขอความตนฉบับที่เปนไปไดทั้งหมด n
ขอความ กลาวคือ นักวิเคราะหรหัสลับเพียงแตทําการเขารหัสลับทุกๆ ขอความตนฉบับที่เปนไป
ไดโดยใชกุญแจสาธารณะ แลวทําการเปรียบเทียบขอความรหัสผลลัพธที่ไดแตละตัวกับขอความ
รหัส C ในกรณีนี้นักวิเคราะหรหัสลับจะยังคงไมรูกุญแจสวนตัว แตจะรูขอความตนฉบับที่ถูกตอง
ได การโจมตีนี้มีความเปนไปไดสูง เนื่องจากความเร็วที่ใชในการเขารหัสลับจะสูงกวาความเร็วที่
ใชในการถอดรหัสลับเปนอยางมาก
การโจมตีขอความตนฉบับแบบเลือกไดจะยิ่งมีประสิทธิภาพสูงขึ้น ถาเซตของขอความตนฉบับที่
เปนไปไดทั้งหมดมีจํานวนนอย ยกตัวอยางเชน ถาขอความตนฉบับคือ ตัวเลขที่มีขนาดไมเกิน 5 หลัก การ
โจมตีรูปแบบนี้จะสัมฤทธิผล เนื่องจากนักวิเคราะหรหัสลับเพียงแคลองเขารหัสลับตัวเลขทั้งหมดตั้งแต 0 ถึง
1,000,000 แลวเปรียบเทียบผลลัพธที่ไดกับขอความรหัสที่ลอบดักฟงมาได ใหสังเกตวานักวิเคราะหรหัสลับจะ
ใชการโจมตีในลักษณะนี้กับอัลกอริทึมสมมาตรไมได เนื่องจากนักวิเคราะหรหัสลับไมสามารถทําการทดลอง
เขารหัสลับไดโดยไมรูวากุญแจคืออะไร
เนื่องจากความซับซอนที่สูงของอัลกอริทึมอสมมาตร ในทางปฏิบัติจึงไดนําเอาอัลกอริทึมอสมมาตร
มาใชในการเขารหัสลับขอมูลที่มีขนาดเล็กๆ เชน กุญแจที่ใชในการเขาและถอดรหัสลับดวยอัลกอริทึม
สมมาตร ทั้งนี้อัลกอริทึมสมมาตรจะนํามาใชในการเขารหัสลับขอความตนฉบับโดยตรงนั่นเอง เพื่อใหระบบที่
กลาวมาขางตนมีความปลอดภัยสูงขึ้น กุญแจที่ใชเขารหัสลับไปแลวจะไมนํามาใชอีก และเมื่อมีการเขารหัส
ลับครั้งตอไป ระบบจะเลือกกุญแจสําหรับการเขารหัสลับแบบสมมาตรดอกใหมขึ้นมาโดยการสุม กุญแจที่
เลือกแบบสุมขึ้นมาจะใชเพียงครั้งเดียวแลวทิ้ง จะเรียกวา กุญแจชวงเวลา (Session Key) การนําอัลกอริทึม
อสมมาตรและอัลกอริทึมสมมาตรมาใชงานรวมกันในลักษณะนี้ จะเรียกวา ระบบการเขารหัสลับลูกผสม
21
ตัวอยางโพรโทคอลสําหรับการสื่อสารในระบบการเขารหัสลับลูกผสมมีดังนี้
1. นายดํา (User A) สงกุญแจสาธารณะของตนใหนายแดง (User B)
2. นายแดงสรางกุญแจชวงเวลาขึ้นมา 1 ดอก โดยการสุม แลวทําการเขารหัสลับกุญแจดอกนั้นดวย
กุญแจสาธารณะของนายดํา จากนั้นสงขอความรหัสผลลัพธที่ไดใหนายดํา
3. นายดําทําการถอดรหัสลับขอความรหัสที่ไดมาโดยใชกุญแจสวนตัวของตนเอง ผลลัพธที่ไดก็คือ
กุญแจชวงเวลา
4. นายดําและนายแดงใชกุญแจชวงเวลาที่มีอยูในการติดตอสื่อสารระหวางกันผานระบบการเขารหัส
ลับแบบสมมาตร
การนํากุญแจชวงเวลามาใชในระบบการเขารหัสลับจะชวยเพิ่มความปลอกภัยใหระบบสูงขึ้น
เนื่องจากกุญแจชวงเวลาจะใชเขารหัสลับขอความตนฉบับเพียงครั้งเดียวเทานั้น ตางกับกุญแจลับแบบดั้งเดิมที่
นํามาใชในการเขารหัสลับขอความตนฉบับขอความใหมทุกครั้ง ทั้งนี้เมื่อผูโจมตีทราบหรือรูคากุญแจชวงเวลา
ที่ใช ผูโจมตีจะสามารถถอดรหัสลับขอความรหัสที่ลอบดักฟงมาไดเพียงขอความเดียวเทานั้น
2.3.2 การโจมตีแบบคนที่อยูตรงกลาง
ถามีการโจมตีแบบแพสซิฟเกิดขึ้นกับโพรโทคอลที่ใชระบบการเขารหัสลับลูกผสม สิ่งที่ผูโจมตี
สามารถทําไดก็คือ การโจมตีอัลกอริทึมอสมมาตรโดยใชการโจมตีขอความตนฉบับแบบเลือกไดเทานั้น ใน
ทํานองกลับกัน การโจมตีแบบแอ็กทิฟที่กระทําตอโพรโทคอลขางตน จะมีประสิทธิภาพสูงกวามาก สมมุติวาผู
โจมตีแบบแอ็กทิฟนั่งอยูตรงกลางระหวางนายดํากับนายแดงคอยรับขอมูลที่สงมาจากนายดําแลวทําการสงตอ
ใหกับนายแดง ขณะเดียวกันก็คอยรับขอมูลจากนายแดงแลวสงตอใหกับนายดํา ดูรูปที่ 2.5 ประกอบ ในกรณีนี้
ผูโจมตีไมเพียงแตสามารถดักฟงและเก็บรวบรวมขอมูลที่สงถึงกันระหวางนายดํากับนายแดง ผูโจมตียัง
สามารถปรับเปลี่ยนขอมูล ลบขอมูล หรือสรางขอมูลตัวใหมขึ้นมาก็ได เนื่องจากผูโจมตีแบบแอ็กทิฟสามารถ
ปลอมเปนนายดําขณะที่ทําการติดตอกับนายแดง และสามารถปลอมเปนนายแดงขณะที่ทําการติดตอกับนายดํา
ทั้งนายดําและนายแดงจะไมรูเลยวาบุคคลที่ทั้งสองกําลังติดตออยูไมใชบุคคลที่ทั้งสองตั้งใจจะติดตอจริงๆ การ
โจมตีในลักษณะนี้เปนที่รูจักกันในชื่อ การโจมตีแบบคนที่อยูตรงกลาง (Man-in-the-middle Attack)
22
รูปที่ 2.5 การโจมตีแบบคนที่อยูตรงกลาง
ตัวอยางของขั้นตอนการโจมตีแบบคนที่อยูตรงกลางมีดังนี้
1. นายดํา (User A) สงกุญแจสาธารณะของตนใหนายแดง นายขาว (Cheater) ซึ่งอยูตรงกลางยึด
กุญแจสาธารณะนี้ขึ้นมาและสงกุญแจสาธารณะของตนเองใหนายแดง (User B) แทน
2. นายแดงสงกุญแจสาธารณะของตนใหนายดํา นายขาวซึ่งอยูตรงกลางยึดกุญแจสาธารณะนี้ขึ้นมา
และสงกุญแจสาธารณะของตนเองใหนายดําแทน
3. เมื่อนายดําสงขอความรหัสใหนายแดง นายขาวจะยึดขอความรหัสนี้ขึ้นมา ทําการถอดรหัสลับโดย
ใชกุญแจสวนตัวของตนเอง จากนั้นจึงทําการเขารหัสลับขอความตนฉบับใหม โดยใชกุญแจ
สาธารณะของนายแดงและสงขอความรหัสที่ไดตัวใหมใหกับนายแดงแทน
4. เมื่อนายแดงสงขอความรหัสใหนายดํา นายขาวจะยึดขอความรหัสนี้ขึ้นมา ทําการถอดรหัสลับโดย
ใชกุญแจสวนตัวของตนเอง จากนั้นจึงทําการเขารหัสลับขอความตนฉบับใหม โดยใชกุญแจ
สาธารณะของนายดําและสงขอความรหัสที่ไดตัวใหมใหกับนายดําแทน
ถึงแมกุญแจสาธารณะของนายดํากับนายแดงจะเก็บไวในระบบฐานขอมูล การโจมตีในลักษณะนี้ก็
ยังคงสัมฤทธิผล เนื่องจากตอนที่นายดํารองขอกุญแจสาธารณะของนายแดงจากระบบฐานขอมูล นายขาว
สามารถยึดคํารองขอของนายดําขึ้นมาและสงกุญแจสาธารณะของตนใหกับนายดําแทน นายขาวสามารถทํา
อยางเดียวกันกับนายแดงและสงกุญแจสาธารณะของตนใหกับนายแดงไดเชนเดียวกัน ยิ่งกวานั้นนายขาวอาจ
แทนที่กุญแจสาธารณะของนายดําและนายแดงที่อยูในระบบฐานขอมูลดวยกุญแจสาธารณะของตนเองก็ได
จากนั้นเขาแครอใหนายดํากับนายแดงเริ่มการติดตอสื่อสารระหวางกัน การโจมตีแบบคนที่อยูตรงกลางนี้มี
ประสิทธิภาพสูง เนื่องจากทั้งนายดําและนายแดงไมมีทางพิสูจนวาพวกเขากําลังสื่อสารถึงกันอยูจริงๆ สมมุติ
วานายขาวซึ่งนั่งอยูตรงกลางระหวางนายดํากับนายแดงไมกระทําสิ่งหนึ่งสิ่งใดใหเปนที่ผิดสังเกต เชน การ
หนวงเวลา (Delay) ขอความรหัสที่สงระหวางนายดําและนายแดง ทั้งนายดําและนายแดงจะไมรูเลยวามีใคร
บางคนนั่งอยูตรงกลางระหวางพวกเขาทั้งสอง คอยอานความลับตางๆ ที่พวกเขาทั้งสองสงถึงกันตลอดเวลา
23
ตัวอยางโพรโทคอลๆ หนึ่งที่ออกแบบมาเพื่อปองกันการโจมตีแบบคนที่อยูตรงกลางคือ โพรโท
คอลควบโยง (Interlock Protocol) [SCHN96] ซึ่งมีขั้นตอนการทํางานดังนี้ ดูรูปที่ 2.6 ประกอบ
1. นายดํา (User A) สงกุญแจสาธารณะของตนใหนายแดง (User B)
2. นายแดงสงกุญแจสาธารณะของตนใหนายดํา
3. นายดําเขารหัสลับขอความตนฉบับโดยใชกุญแจสาธารณะของนายแดง แลวสงขอความรหัสเพียง
ครึ่งหนึ่งใหกับนายแดง
4. นายแดงเขารหัสลับขอความตนฉบับโดยใชกุญแจสาธารณะของนายดํา แลวสงขอความรหัสเพียง
ครึ่งหนึ่งใหกับนายดํา
5. นายดําสงขอความรหัสที่เหลืออีกครึ่งใหกับนายแดง
6. นายแดงนําขอความรหัสทั้งสองมาตอกันแลวทําการถอดรหัสลับ โดยใชกุญแจสวนตัวของตนเอง
จากนั้นนายแดงสงขอความรหัสที่เหลืออีกครึ่งใหกับนายดํา
7. นายดํานําขอความรหัสทั้งสองมาตอกันแลวทําการถอดรหัสลับ โดยใชกุญแจสวนตัวของตนเอง
ใหสังเกตวาขอความรหัสเพียงครึ่งหนึ่งจะใชประโยชนอะไรไมไดเลย นายแดงจะไมสามารถถอดรหัส
ลับเพื่ออานขอความตนฉบับไดจนกวาจะดําเนินการตามโพรโทคอลมาถึงขั้นตอนที่ 6 ขณะที่นายดําตองรอถึง
ขั้นตอนที่ 7 ถานายขาวซึ่งนั่งอยูตรงกลางระหวางนายดํากับนายแดงตองการโจมตีโพรโทคอลนี้ เมื่อเขายึด
ขอความรหัสเพียงครึ่งหนึ่งจากนายดําในขั้นตอนที่ 3 แลวนายขาวจะไมสามารถถอดรหัสลับขอความรหัสนั้น
และเขารหัสลับใหมดวยกุญแจสาธารณะของนายแดงได สิ่งที่นายขาวทําไดคือการสรางขอความตนฉบับตัวใหม
ขึ้นมา ทําการเขารหัสลับดวยกุญแจสาธารณะของนายแดงแลวสงขอความรหัสที่ไดเพียงครึ่งหนึ่งใหกับนายแดง
และเมื่อนายขาวยึดขอความรหัสเพียงครึ่งหนึ่งจากนายแดงในขั้นตอนที่ 4 เขาก็จะตองทําแบบเดียวกันกับนายดํา
จนถึงขั้นตอนที่ 5 และ 6 เมื่อนายขาวไดรับขอความรหัสที่เหลืออีกครึ่งหนึ่งจากนายดําและนายแดงก็จะสาย
เกินไปแลวที่นายขาวจะเปลี่ยนขอความตนฉบับที่เขาสรางขึ้นเปนขอความตนฉบับตัวจริง ซึ่งเหตุการณนี้จะสงผล
ใหการสนทนาระหวางนายดําและนายแดงเปนการสนทนาคนละเรื่องกัน
24
2.4 คําถามทายบท
1. จงอธิบายถึงวิธีการทั่วๆ ไปที่ใชในการประเมินระบบรักษาความปลอดภัยหนึ่งๆ
2. ความแข็งแกรงของระบบการเขารหัสลับขึ้นอยูกับปจจัยใดบาง จงอธิบาย พรอมยกตัวอยางประกอบ
3. จงอธิบายหนาที่และความสําคัญของโพรโทคอลทางดานวิทยาการรหัสลับ
4. จงอธิบายความสัมพันธระหวางโพรโทคอลทางดานวิทยาการรหัสลับ และอัลกอริทึมการเขารหัสลับที่ใชใน
โพรโทคอล รวมทั้งผลกระทบของระบบจากการใชโพรโทคอล และ/หรือ อัลกอริทึมที่ไมเหมาะสม
5. การโจมตีโพรโทคอลตางกับการโจมตีอัลกอริทึมการเขารหัสลับอยางไร
6. จงยกตัวอยางการประยุกตใชงานโพรโทคอลทางดานวิทยาการรหัสลับสําหรับการสื่อสารสื่อประสมมา 3
ตัวอยาง พรอมทั้งอธิบายวัตถุประสงคและขั้นตอนการทํางานของโพรโทคอลมาอยางละเอียด
25
บทที่ 3
อัลกอริทึมสมมาตร ตอนหนึ่ง
3.1 บทนํา
ลักษณะเดนของอัลกอริทึมสมมาตร ก็คือ กุญแจที่ใชในการเขารหัสลับสามารถนํามาใชในการ
คํานวณหากุญแจถอดรหัสลับได ในหลายๆ กรณีกุญแจที่ใชในการเขาและถอดรหัสรหัสลับมักจะเปนตัว
เดียวกัน เนื้อหาในบทนี้จะครอบคลุมถึงแนวความคิด วิธีการที่ใชในการเขารหัสลับ พื้นฐานการทํางานของ
ตัวแปลงรหัสสมมาตรแบบตางๆ ซึ่งสามารถแบงยอยออกเปน 2 ชนิด คือตัวแปลงรหัสแบบกระแส และตัว
แปลงรหัสแบบกลุม ในสวนของตัวแปลงรหัสแบบกลุม ยังสามารถแบงออกเปนกลุมยอยได 2 กลุมคือ
อัลกอริทึมแบบดั้งเดิม และอัลกอริทึมแผนใหม ซึ่งจะเรียนในบทที่ 4 และ 5 ตอไป
3.2 ตัวแปลงรหัสแบบกระแส
ตัวแปลงรหัสแบบกระแสจะใชตัวสรางกระแสบิต (Bit-stream Generator) ในการสรางกระแสเลข
โดดฐานสอง (Binary Digits) ที่เรียกวา กระแสบิตทางดานวิทยาการรหัสลับ สําหรับนําไปใชรวมกับขอความ
ตนฉบับเพื่อสรางขอความรหัส หรือใชรวมกับขอความรหัสเพื่อกูคืนขอความตนฉบับ โดยผานตัวดําเนินการ
ออรเฉพาะ (Exclusive-OR, XOR) หรือการบวกแบบมอดุโล 2 (Addition Modulo 2) ซึ่งแสดงในรูปของ
สมการไดดังนี้
Pi ⊕ Ki = Ci (3.1)
Ci ⊕ Ki = Pi (3.2)
เมื่อ i คือตําแหนงของบิตที่เปนเลขจํานวนเต็มและ ⊕ คือตัวดําเนินการออรเฉพาะ ใหสังเกตวา
0 ⊕ 0 = 0, 0 ⊕ 1 = 1, 1 ⊕ 0 = 1, 1 ⊕ 1 = 0,
ตัวแปลงรหัสที่ใชวิธีการขางตนในการเขารหัสลับมักเปนที่รูจักโดยทั่วไปในชื่อ ตัวแปลงรหัส
Vernam (Vernam Cipher) ถาตัวสราง (Generator) สามารถสรางกระแสบิตแบบสุมจริง (True Random)
ได เราจะสามารถนําตัวสรางนั้นมาใชในการสรางตัวแปลงรหัสที่ไมมีจุดออน (Unbreakable Cipher) ได
เชนกัน กลาวคือ โดยการนําขอความตนฉบับมาออรเฉพาะโดยตรงกับกระแสบิตแบบสุมจริงที่สรางขึ้น ใน
กรณีนี้เราจะใชกระแสบิตเปนกุญแจ ซึ่งจะมีความยาวเทากับขอความที่ทําการเขารหัสลับ อยางไรก็ตาม
ผูใชงานจะไมไดรับความสะดวกเมื่อตองการเก็บ หรือสงกุญแจที่มีขนาดใหญเชนนั้นผานชองทางการ
26
สัญญาณที่เปนอิสระและปลอดภัย (Independent and Secure Channel) เพื่อใชในกระบวนการถอดรหัส
ลับ ดังนั้นในทางปฏิบัติ ตัวสรางกระแสบิตตองมีลักษณะการทํางานในรูปแบบของ กระบวนคําสั่งที่เปน
ขั้นตอนวิธี (Algorithmic Procedure) เพื่อที่วาผูใชงานทั้งทางดานผูสงและผูรับจะสามารถสรางกระแสบิต
ทางดานวิทยาการรหัสลับชุดเดียวกันขึ้นมาได โดยใชแนวคิดขางตน เราจะพิจารณาตัวสรางกระแสบิต
เสมือนกับอัลกอริทึมตัวหนึ่งที่ใชกุญแจในการควบคุม (Key-controlled Algorithm) รูปแบบของกระแสบิต
สงออกที่มีความปลอดภัยและสามารถนําไปใชในดานวิทยาการรหัสลับ
ในตัวแปลงรหัสแบบกระแส อัลกอริทึมที่ใชภายในอาจสรางกระแสบิตขึ้นมาทีละบิต (Bit-by-bit)
หรือทีละกลุมบิต (Block of Bits) ก็ได ฉะนั้นจึงมีความเปนไปไดที่จะนําตัวแปลงรหัสแบบกลุมมา
ประยุกตใชงานเปนตัวแปลงรหัสแบบกระแส อยางไรก็ตามในการใชงานจริงในระบบสื่อสารใดๆ ผูสงและ
ผูรับจําเปนตองสรางกระแสบิตที่มีความปลอดภัย มีขนาดและรูปแบบของกระแสบิตสงออกที่เหมือนกัน
ดังนั้นอัลกอริทึมอสมมาตรอาจนํามาใชเปนตัวแปลงรหัสแบบกระแสก็ได ถาอัลกอริทึมนั้นถูกใชงานใน
ลักษณะของอัลกอริทึมแบบดั้งเดิม กลาวคือ กุญแจเขารหัสลับจะใชในการสรางกระแสบิตทั้งในฝงผูสงและ
ผูรับ และจะตองเก็บรักษาเปนความลับดวยเชนกัน
เนื่องจากกุญแจที่ใชในการสรางกระแสบิต มีขนาดและรูปแบบของบิตที่คงที่ กระแสบิตที่สรางขึ้น
ทุกครั้งจะมีรูปแบบของบิตสงออก (Output Bit) ที่เหมือนเดิมไมเปลี่ยนแปลงเชนเดียวกัน (พิจารณาในกรณี
ที่การสรางกระแสบิตขึ้นอยูกับกุญแจที่ใชเทานั้น) ซึ่งในกรณีนี้ถานักวิเคราะหรหัสลับไดรับกระแสบิตที่
สรางขึ้น ไมวาจะมาจากที่ใด พวกเขาจะสามารถถอดรหัสลับขอความรหัสใดๆ ที่แอบดักฟงมาไดโดยไม
ตองใชกุญแจอีกเลย กลาวอีกนัยหนึ่งก็คือ ถาเราใชกุญแจตัวเดิมในการสรางกระแสบิตเพื่อใชเขารหัสลับ
ขอความตนฉบับใหมในแตละครั้ง หากนักวิเคราะหรหัสลับสามารถสรางกระแสบิตนั้นๆ ขึ้นมาได พวกเขา
ก็จะสามารถถอดรหัสลับทุกๆ ขอความรหัสไดเชนเดียวกัน เพื่อหลีกเลี่ยงปญหาที่กลาวมาขางตน ตัวแปลง
รหัสแบบกระแสจะตองไมเริ่มการทํางานดวยเงื่อนไขเริ่มตน (Initial Conditions) แบบเดียวกัน มิฉะนั้นจะ
เกิดการสรางกระแสบิตที่มีรูปแบบของบิตซ้ําๆ กันในแตละครั้งของการเขารหัสลับ ในทางปฏิบัติแมจะมี
การเก็บรักษากุญแจที่ใชในการสรางกระแสบิตใหเปนความลับ แตก็ไมไดหมายความวา กระแสบิตที่สราง
ขึ้นในแตละครั้งจะมีรูปแบบที่แตกตางกัน ดังนั้นจึงไดมีการนําเอาเวกเตอรเริ่มตน (Initialization Vector,
IV) มาใชรวมกันกับตัวกุญแจในกระบวนการสรางกระแสบิต ซึ่งคนทั่วไปมักรูจักเวกเตอรเริ่มตนนี้ในชื่อ
ตัวเริ่มตน (Seed) แผนผังการทํางานของตัวแปลงรหัสแบบกระแสที่นําเวกเตอรเริ่มตนมาประยุกตใชงานได
แสดงไวในรูปที่ 3.1
27
รูปที่ 3.1 แผนผังการทํางานของตัวแปลงรหัสแบบกระแสที่ใชเวกเตอรเริ่มตน
วัตถุประสงคของการใชเวกเตอรเริ่มตนก็คือ เพื่อทําใหกระแสบิตที่สรางขึ้นในแตละครั้งโดยใช
กุญแจตัวเดิมมีความแตกตางกัน โดยเวกเตอรเริ่มตนที่วานี้จะมีลักษณะพิเศษคือ เมื่อใชคาเวกเตอรเริ่มตนที่
แตกตางกันในตัวสรางกระแสบิต กระแสบิตที่สรางขึ้นจะมีรูปแบบที่แตกตางกันดวย นอกจากนี้กระแสบิต
ที่สรางขึ้นนี้จะมีรูปแบบของบิตที่ไมสามารถคาดเดาได ถาเวกเตอรเริ่มตนที่นํามาใชสอดคลองกับเงื่อนไข
ดังตอไปนี้
1. เวกเตอรเริ่มตนถูกสรางขึ้นแบบสุม - โดยอางอิงจากปรากฏการณที่เกิดขึ้นตามธรรมชาติ
(Natural Phenomenon) บางชนิด ซึ่งมีลักษณะของการเกิดเหตุการณเปนแบบสุมในเชิงสถิติ เชน อุณหภูมิ
ของหนวยประมวลผลกลางหรือซีพียู หรือความแรงลมของพัดลมระบายอากาศที่อยูในเครื่องคอมพิวเตอร
เปนตน นอกจากนี้เวกเตอรเริ่มตนที่ไดจากการอางอิงปรากฏการณธรรมชาติควรสรางขึ้นจากการรวม
เงื่อนไขที่แตกตางกันหลายๆ เงื่อนไข เพื่อที่วา ความนาจะเปนที่จะไดผลลัพธที่มีคาซ้ําๆ กัน จากการอางอิง
ปรากฏการณธรรมชาติขางตนมีคาต่ํามากๆ
2. เวกเตอรเริ่มตนถูกสรางขึ้นแบบสุมเทียม - โดยอางอิงจากกระบวนการเชิงกําหนด
(Deterministic Process) ที่คาบ (Period) หรือชวงระหวางรูปแบบของบิต 2 รูปแบบที่ซ้ํากัน มีขนาดใหญ
มากๆ เมื่อเทียบกับความยาวของเวกเตอรเริ่มตน นอกจากนี้รูปแบบของบิตที่สรางขึ้นจากกระบวนการเชิง
กําหนดควรมีลักษณะเปนแบบสุมในเชิงสถิติ
3. เวกเตอรเริ่มตนถูกสรางขึ้นแบบไมซ้ํากัน - ภายใตเงื่อนไขที่แนนอน เวกเตอรเริ่มตนสามารถ
สรางขึ้นจากกระบวนการใดกระบวนการหนึ่งซึ่งอาจคาดเดาผลลัพธที่เกิดขึ้นได แตคาบของกระบวนการ
นั้นๆ กอนที่จะเริ่มสรางรูปแบบของบิตที่ซ้ํากันออกมา มีขนาดใหญมากๆ จนทําใหการคาดเดาผลลัพธที่
เกิดขึ้นเพื่อหารูปแบบของบิตที่สรางซ้ํากันออกมาตองใชระยะเวลายาวนาน โดยสวนใหญคาเวกเตอรเริ่มตน
ที่มีขนาด 64 บิต จะสอดคลองกับเงื่อนไขนี้
28
จากทั้งสามเงื่อนไขขางตน แมวานักวิเคราะหรหัสลับจะไดรับกระแสบิตที่สรางขึ้นพรอมกับคา
เวกเตอรเริ่มตนที่ใชในการสรางกระแสบิตนั้นๆ มา พวกเขาก็ไมสามารถคนหาหรือคาดเดากระแสบิตที่
สรางขึ้นจากเวกเตอรเริ่มตนคาใหมได ในทางปฏิบัติกุญแจที่ใชจําเปนตองเก็บรักษาเปนความลับ แต
เวกเตอรเริ่มตนอาจไมจําเปนตองทําอยางนั้นก็ได ทั้งนี้เนื่องจากเวกเตอรเริ่มตนที่สรางขึ้นในแตละครั้งของ
การเขารหัสลับจะไมซ้ํากัน หรืออาจซ้ํากันไดดวยความนาจะเปนที่ต่ํามากๆ เทียบกับความยาวของตัว
เวกเตอรเริ่มตนเอง
3.3 เรจิสเตอรแบบเลื่อนปอนกลับเชิงเสน
ในอดีตที่ผานมา ไดมีการนําเรจิสเตอรแบบเลื่อนปอนกลับเชิงเสน (Linear Feedback Shift
Registers) หรือเรียกสั้นๆ วา LFSR มาประยุกตใชในวิทยาการรหัสลับและทฤษฎีรหัส (Coding Theory)
อยางกวางขวาง ตัวแปลงรหัสแบบกระแสที่ใช LFSR เปนหลักไดมีการนํามาใชในงานดานวิทยาการรหัสลับ
ตั้งแตยุคเริ่มตนของอุปกรณอิเลคทรอนิกส โดยพื้นฐาน เรจิสเตอรแบบเลื่อนปอนกลับ จะประกอบดวย 2
สวนหลักๆ คือ เรจิสเตอรแบบเลื่อนและฟงกชนั ปอนกลับ ดูรูปที่ 3.2 ประกอบ
29
ชนิดของเรจิสเตอรแบบเลื่อนที่มีความซับซอนนอยที่สุด ซึ่งเปนที่นิยมนํามาใชกับตัวแปลงรหัส
แบบกระแสก็คือ LFSR ดังแสดงในรูปที่ 3.3 โดยฟงกชันปอนกลับใน LFSR นี้สามารถสรางขึ้นแบบงายๆ
จากการนําบิตที่ตําแหนงตางๆ ตามที่กําหนดในตัวเรจิสเตอรมาออรเฉพาะกัน รูปที่ 3.4 แสดง LFSR ขนาด
4 บิต ที่มีการนําบิตในตําแหนงที่หนึ่งและสามมาออรเฉพาะกัน
30
ในกรณีของ LFSR ขนาด 4 บิต ที่มีการออรเฉพาะของบิตในตําแหนงที่หนึ่งและสี่ จะมีลําดับของ
สถานะภายใน กอนที่รูปแบบของบิตจะซ้ํากันดังตอไปนี้
1111
0111
1011
0101
1010
1101
0110
0011
1001
0100
0010
0001
1000
1100
1110
และจะมีลําดับสงออกของบิตที่สรางขึ้นดังตอไปนี้
1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 ...
ตัว LFSR ขนาด n บิตใดๆ สามารถมีสถานะภายในไดสูงสุด 2n - 1 สถานะ ซึ่งหมายความวา ตัว
LFSR เองในทางทฤษฎีสามารถสรางลําดับสงออกของบิตแบบสุมเทียมที่มีความยาวสูงสุดเทากับ 2n - 1 บิต
กอนที่จะเริ่มสรางรูปแบบของบิตที่ซ้ํากันออกมา ใหสังเกตวาความยาวสูงสุดของบิตที่สรางขึ้นไมเทากับ 2n
บิต เพราะเรจิสเตอรแบบเลื่อนที่เริ่มตนดวยคาศูนยทั้งหมดจะใหผลลัพธของบิตสงออกเปนคาศูนยตลอดไป
ซึ่งรูปแบบของบิตสงออกในลักษณะนี้นํามาใชประโยชนในดานวิทยาการรหัสลับไมได นอกจากนี้ การจะ
ทําให LFSR สรางลําดับสงออกของบิตที่มีความยาวสูงสุด เราจําเปนตองเลือกนําบิตที่ตําแหนงตางๆ ของ
หนวยความจําภายในตัว LFSR มาออรเฉพาะกันอยางเหมาะสมดวย คาบสูงสุด (Maximal Period) ของ
ลําดับสงออกของ LFSR ใดๆ เรียกวา ลําดับเอ็ม (m-sequence) เพื่อทําให LFSR สรางลําดับสงออกของ
บิตที่ยาวที่สุด บิตที่จะนํามาออรเฉพาะกันตองอยูในรูปของสมการพหุนาม (Polynomial) บวกคาคงที่ 1 ที่มี
ลักษณะเฉพาะที่เรียกวา พหุนามปฐมฐานมอดุโล 2 (Primitive Polynomial Modulo 2) ใหสังเกตวา ลําดับ
ขั้นพหุนาม (Degree of Polynomial) ก็คือ จํานวนหนวยความจําหรือสภาวะภายในของ LFSR นั่นเอง
31
ความรูเพิ่มเติมในเรื่องพหุนามปฐมฐานมอดุโล 2 สามารถคนควาไดจาก [GOLO67], [ZIER68] ตารางที่ 3.1
แสดงตัวอยางของพหุนามปฐมฐานมอดุโล 2 ที่มีลําดับขั้นพหุนามตางๆ กัน
32
ตัวอยางที่ 3.1 จงออกแบบ LFSR ขนาด 64 บิต ที่มีความยาวของลําดับสงออกสูงสุด โดยใช พหุนาม
ปฐมฐานมอดุโล 2 แบบ x64 + x4 + x3 + x + 1 หรือ (64, 4, 3, 1, 0)
33
วิธีทํา ลําดับของสถานะภายใน กอนที่รูปแบบของบิตจะซ้ํากันแสดงไดดังนี้
0110
0011
1001
0100
0010
0001
1000
1100
1110
1111
0111
1011
0101
1010
1101
ซึ่งคาบสูงสุดของ LFSR ที่ไดคือ 15 และมีลําดับสงออกของบิตที่สรางขึ้นดังนี้
0 1 1 0 0 1 0 0 0 1 1 1 1 0 1 ...
34
สงออกของ LFSR อีกตัวหนึ่งก็ได ลักษณะการนํา LFSR มากกวาหนึ่งตัวมาตอใชงานรวมกันเพื่อสรางตัว
สรางกระแสบิตเชิงผสมมีมากมายหลายรูปแบบ เชน ตัวสรางกระแสบิตแบบเจฟว [GEFF73] และตัวสราง
กระแสบิตแบบขั้นสลับ (Alternative Step) [MENE97]
3.4.1 ตัวสรางกระแสบิตแบบเจฟว
ตัวสรางกระแสบิตแบบเจฟว จะใช LFSR จํานวน 3 ตัว มาตอรวมกันในแบบไมเปนเชิงเสน (Non-
linear) ดูรูปที่ 3.7 ประกอบ
35
รูปที่ 3.8 วงจรภายในตัวสรางกระแสบิตแบบเจฟว
3.4.2 ตัวสรางกระแสบิตแบบขั้นสลับ
ตัวสรางกระแสบิตแบบขั้นสลับ จะใช LFSR จํานวน 3 ตัวมาตอรวมกันในแบบไมเปนเชิงเสน
เหมือนตัวสรางกระแสบิตแบบเจฟว แตการทํางานของ LFSR ภายในจะถูกควบคุมโดยสัญญาณนาฬิกา
(Clock) กลาวคือการเคลื่อนที่ของกระแสบิตทั้งหมดภายในตัวสรางกระแสบิตจะถูกควบคุมโดยสัญญาณ
นาฬิกาตัวเดียวกัน ตัวสรางกระแสบิตแบบขั้นสลับนี้จัดอยูในตัวสรางชนิดที่ควบคุมโดยสัญญาณนาฬิกา
(Clock-controlled Generators) ซึ่งมีแนวความคิดในการออกแบบที่วา คุณสมบัติของความไมเปนเชิงเสน
ภายในตัวสรางกระแสบิตสามารถสรางขึ้นได โดยใชบิตสงออกของ LFSR ตัวหนึ่งไปควบคุมการทํางานใน
การสรางกระบิตของ LFSR อีกตัวหนึ่ง ซึ่งถาการทํางานของ LFSR ตัวที่ถูกควบคุมอยูในลักษณะที่ไม
สม่ําเสมอ (Irregular Manner) แลว จะสามารถปองกันการโจมตีตัวสรางกระแสบิตโดยใชพื้นฐานของการ
เคลื่อนที่ของกระแสบิตแบบสม่ําเสมอได รูปที่ 3.9 แสดงวงจรภายในของตัวสรางกระแสบิตแบบขั้นสลับ
36
ที่ไมทํางานในสัญญาณนาฬิการอบนี้ จะใชคาบิตสงออกที่ไดจากการทํางานในสัญญาณนาฬิการอบที่แลวมา
ทําการออรเฉพาะกันแทน
ในทางปฏิบัติ การนํา LFSR มากกวาหนึ่งตัวมาตอใชงานรวมกันแบบตอเรียง (Cascade) ก็
สามารถทําได การตอเรียงของ LFSR หลายๆ ตัวจะใหคาคาบผลลัพธที่มีขนาดใหญ รูปแบบลําดับสงออก
ของบิตที่ไดมีความซับซอนเชิงเสนสูง และมีคุณสมบัติทางสถิติที่ดีขึ้น
37
ถาตัวอักษรที่สรางขึ้นแตละตัวในสมุดฉีกเปนแบบสุมที่แทจริง และผูที่แอบดักฟงขอความรหัส
ระหวางผูสงกับผูรับไมสามารถเขาถึงกลุมตัวอักษรจากสมุดฉีกที่ใชในการเขารหัสลับได วิธีการเขารหัสลับ
แบบนี้จะมีความปลอดภัยแบบสมบูรณ เนื่องจากผูที่แอบดักฟงจะไมมีขอมูลที่เปนประโยชนใดๆ เพื่อใชใน
การวิเคราะหรหัสลับจากขอความรหัสที่ไดมา ในการถอดรหัสลับจากตัวอยางที่ยกมาขางตน ตัวอักษรที่ใช
อาจเปน USRRXMBTJA ซึ่งสามารถถอดรหัสลับออกมาเปน MYSTUDENTS จะเห็นไดวาผลลัพธที่ได
เปนคําที่มีความหมาย แตไมใชขอความตนฉบับที่แทจริง เนื่องจากขอความที่ถอดรหัสลับออกมาแลวมี
ความหมาย ทําใหนักวิเคราะหรหัสลับไมสามารถบอกไดวา ผลลัพธที่ไดเปนขอความตนฉบับที่แทจริง
หรือไม ดังนั้นวิธีเดียวที่จะใชโจมตีอัลกอริทึม One-time Pad ไดก็คือ การคนหาวิธีการที่ใชในการสราง
กลุมตัวอักษรที่อยูในสมุดฉีกเหลานั้นขึ้นมาใหม ซึ่งถากลุมตัวอักษรที่สรางขึ้นในตอนแรกมาจากแหลง
สรางตัวอักษรแบบสุมจริงแลว การโจมตีอัลกอริทึม One-time Pad เพื่อทําใหเกิดจุดออนนั้น แทบจะ
เปนไปไมไดเลย
38
ขอมูลเลขฐานสองโดยตรงจะมีความสะดวกกวาก็คือ ในการถอดรหัสลับเราสามารถใชขอมูลเลขฐานสอง
ในสมุดฉีกมาออรเฉพาะกับขอความรหัสเพื่อหาขอความตนฉบับไดโดยตรง อยางไรก็ตาม One-time Pad
ก็มีจุดดอยในเรื่องการนําไปประยุกตใชงาน จะเห็นไดวาอัลกอริทึม One-time Pad จะเหมาะกับการ
เขารหัสลับขอความตนฉบับที่มีขนาดเล็กๆ เทานั้น ทั้งนี้เนื่องจากขอจํากัดในเรื่องปริมาณของตัวอักษรที่ใช
แทนกุญแจในการเขารหัสลับนั่นเอง ถาขอความตนฉบับมีขนาดใหญมาก ปริมาณของตัวอักษรที่ตองใชใน
การเขารหัสลับก็จะมีขนาดใหญมากตามไปดวย ซึ่งขนาดที่ใหญของตัวอักษรที่ตองใชนี้จะทําใหการเก็บ
รักษา ทําลาย หรือสงตออยางลับๆ ใหกับผูใชงานคนอื่นทําไดไมสะดวก นอกจากนี้กระบวนการที่ใชในการ
เขาและถอดรหัสลับจะตองมีการประสานเวลา (Synchronize) กันดวย มิฉะนั้นผูรับจะไมสามารถถอดรหัส
ลับไดอยางถูกตอง ยกตัวอยางเชน ถาฝงผูรับมีบิตขอมูลขาดไปหนึ่งบิตที่ตอนตนของขอความรหัส ซึ่งอาจ
เกิดจากความผิดพลาด (Error) ในกระบวนการสงขอมูล (Data Transmission) จะสงผลใหขอความ
ตนฉบับที่เปนผลลัพธจากการถอดรหัสลับนั้นๆ ไมมีความหมายใดๆ ก็ได แตถึงแมวา One-time Pad จะมี
จุดออนดังที่ยกตัวอยางมา นักสรางรหัสลับหลายๆ คนก็ยังนําอัลกอริทึม One-time Pad มาประยุกตใชงาน
รวมกับระบบรักษาความปลอดภัยที่พวกเขาสรางขึ้น ใหสังเกตวา ถาตัวสรางกระแสบิตในตัวแปลงรหัส
Vernam มีความเปนอิสระ (Independent) และเปนแบบสุมจริง (True Random) เราอาจพิจารณาผลลัพธ
ที่ไดจากตัวแปลงรหัส Vernam นั้นเสมือนกับวาเปนเขารหัสลับแบบ One-time Pad ก็ได
3.6 คําถามทายบท
1. จงอธิบายแนวคิดการทํางานของตัวแปลงรหัสแบบกระแส รวมทั้งงานประยุกตตางๆ ที่มีความเหมาะสม
กับตัวแปลงรหัสลักษณะนี้
2. เวกเตอรเริ่มตนถูกนํามาใชในตัวแปลงรหัสแบบกระแสเพื่อเพิ่มความปลอดภัยของระบบการเขารหัสลับ
โดยรวมไดอยางไร
3. จงอธิบายถึงความปลอดภัยของอัลกอริทึม One-time Pad ทําไมคนทั่วไปจึงพิจารณาวาอัลกอริทึมนี้เปน
อัลกอริทึมที่แข็งแกรงที่สุด
4. จงอภิปรายถึงขอดี ขอเสียของการใช One-time Pad ในการเขารหัสลับขอมูลสื่อประสม
5. จงอธิบายหลักการทํางานของเรจิสเตอรแบบเลื่อนปอนกลับ รวมทั้งขอดี ขอเสียของการนํามาใชงานเปน
ตัวแปลงรหัสแบบกระแส
39
บทที่ 4
อัลกอริทึมสมมาตร ตอนสอง
4.1 ตัวแปลงรหัสแบบกลุม
ตัวแปลงรหัสแบบกลุมจะแปลงกลุมบิตนําเขา (Input Bits) ที่มีความยาวคงที่คาหนึ่งไปสูกลุมบิต
สงออกที่มีความยาวคงที่คาเดียวกัน ตามอุดมคติฟงกชันที่ใชเขาและถอดรหัสลับในตัวแปลงรหัสแบบกลุม
ควรจะมีลักษณะที่วา ทุกๆ บิตที่อยูในกลุมสงออก (Output Block) จะแปรผันตามแบบรวมกัน (Depend
Jointly) กับทุกๆ บิตที่อยูในกลุมนําเขา (Input Block) และทุกๆ บิตของกุญแจที่ใช ขนาดของกลุมบิตที่ใชใน
ตัวแปลงรหัส หรือจํานวนบิตที่อยูในแตละกลุมบิต จําเปนตองมีขนาดที่ใหญมากพอที่จะปองกันการโจมตี
โดยการคนหาอยางละเอียด หรือการโจมตีแบบตะลุย ยกตัวอยางเชน นักวิเคราะหรหัสลับสามารถสราง
พจนานุกรม (Dictionary) ที่ประกอบไปดวยขอความรหัสพรอมกับขอความตนฉบับที่เปนไปไดทุกๆ
ขอความ โดยอางอิงจากกุญแจที่กําหนดให ฉะนั้นเมื่อมีการดักฟงขอความรหัสที่สงผานระหวางผูใชงานสอง
คน นักวิเคราะหรหัสลับจะสามารถกูคืนขอความตนฉบับไดงายๆ โดยการคนหาและเปรียบเทียบกลุมบิตจาก
พจนานุกรมที่สรางขึ้นทีละกลุมบิตๆ อยางไรก็ตามถากลุมบิตที่ใชในการเขารหัสลับมีขนาดใหญพอ
พจนานุกรมที่นักวิเคราะหรหัสลับใชจะมีขนาดที่ใหญเกินไปจนยากที่จะสรางและจัดเก็บ ยกตัวอยางเชน ถา
กลุมบิตนําเขามีขนาด 64 บิต พจนานุกรมที่สรางขึ้นจากกุญแจหนึ่งดอกจะมีจํานวนรูปแบบของกลุมบิตทั้งสิ้น
264 รูปแบบหรือประมาณ 1.85 ×1019 รูปแบบ โดยปกติตัวแปลงรหัสแบบกลุมสามารถแบงออกตามลักษณะ
ของอัลกอริทึมที่ใชในการเขาและถอดรหัสลับภายในตัวแปลงรหัสนั้นๆ ไดคือ ตัวแปลงรหัสแบบดั้งเดิมหรือ
แบบฉบับ (Traditional or Classical Cipher) และตัวแปลงรหัสแผนใหม (Modern Cipher)
4.2 ตัวแปลงรหัสแบบดั้งเดิม
ที่มาของคําวา ตัวแปลงรหัสแบบดั้งเดิมหรือแบบฉบับนั้น ก็เพื่อที่จะสื่อความหมายถึงวิธีการเขา
และถอดรหัสลับที่เปนที่รูจักกันดี (Well-known) มาเปนเวลานานแลว โดยทั่วไปมักจะหมายถึงวิธีการที่
คิดคนพัฒนาขึ้นในสมัยโบราณกอนปคริสตศักราช 1500 ตัวแปลงรหัสแบบดั้งเดิมจะใชอัลกอริทึมการเขา
และถอดรหัสลับที่อยูบนพื้นฐานของตัวอักขระ (Character) การเขารหัสลับจะดําเนินการโดยการแทนที่ตัว
อักขระหรือการสลับตําแหนงตัวอักขระเหลานั้น อัลกอริทมึ ที่มีการออกแบบมาอยางเหมาะสมจะมีการ
ดําเนินการทั้งสองอยาง แตละอยางอาจกระทําหลายๆ ครั้ง ซึ่งทําใหขั้นตอนการเขาและถอดรหัสลับมีความ
ซับซอนสูง ใชเวลานาน และจําเปนตองใชเครื่องคอมพิวเตอร หรืออุปกรณประเภทฮารดแวรที่สรางขึ้นเปน
40
พิเศษมาชวยดําเนินการ โดยทั่วไปตัวแปลงรหัสแบบดั้งเดิมสามารถแบงยอยออกเปน 2 ชนิดคือ ตัวแปลง
รหัสแบบแทนที่ (Substitution Cipher) และตัวแปลงรหัสแบบสลับตําแหนง (Transposition Cipher)
4.2.1 ตัวแปลงรหัสแบบแทนที่
ตัวแปลงรหัสแบบแทนที่จะใชวิธีการแทนที่ตัวอักขระที่เปนสัญลักษณ (Symbol) หรือชุดตัวอักษร
(Alphabet) ดวยสัญลักษณหรือชุดตัวอักษรอีกตัวหนึ่ง ยกตัวอยางเชน ในกระบวนการเขารหัสลับหนึ่งๆ
อาจทําการแทนที่ตัวอักษร A ดวยตัวอักษร E และแทนที่ตัวอักษร C ดวยตัวอักษร U หรืออาจทําการแทนที่
สัญลักษณที่เปนตัวเลข 3 ดวยตัวเลข 5 และแทนที่ตัวเลข 1 ดวยตัวเลข 7 เปนตน ในสวนนี้เราจะเนนไปที่
การแทนที่อักขระที่เปนตัวอักษร (Alphabetic Character) เปนหลัก ซึ่งสามารถแบงยอยออกเปนกลุม
ใหญๆ ได 2 กลุมคือ แบบแทนที่อักษรเดี่ยว (Mono-alphabetic Substitution) และแบบแทนที่หลายอักษร
(Poly-alphabetic Substitution) ในการแทนที่ตัวอักษรในกลุมแรกนี้ อาจใชพื้นฐานของการบวก การคูณ
หรือทั้งสองอยางก็ได ในที่นี้เราจะศึกษาวิธีการแทนที่โดยใชพื้นฐานทั้งการบวกและการคูณจากการทํางาน
ของตัวแปลงรหัสตัวหนึ่งซึ่งเปนที่รูจักกันทั่วไปในชื่อ ตัวแปลงรหัสสัมพรรค (Affine Cipher)
4.2.1.1 ตัวแปลงรหัสแบบแทนที่อักษรเดี่ยว
ในการแปลงรหัสแบบแทนที่อักษรเดี่ยว ตัวแปลงรหัสจะเปลี่ยนตัวอักษรใดๆ ในขอความตนฉบับ
ไปเปนตัวอักษรที่กําหนดไวในขอความรหัส โดยไมสนใจตําแหนงของตัวอักษรในขอความตนฉบับนั้นๆ
เชน ถากําหนดใหตัวอักษร B ในขอความตนฉบับเปลี่ยนเปนตัวอักษร R ในขอความรหัส ตัวอักษร B
ทั้งหมดในขอความตนฉบับจะถูกเปลี่ยนเปนตัวอักษร R ในขอความรหัสแทน ตัวแปลงรหัสแรกสุดที่มีการ
บันทึกไววาใชหลักการแทนที่อักษรเดี่ยวก็คือ ตัวแปลงรหัสซีซาร (Caesar Cipher) ซึ่งมีวิธีการเขารหัสลับ
โดยการเลื่อนตัวอักษรแตละตัวไปขางหนา 3 ตัวอักษร รูปที่ 4.1 แสดงผลลัพธที่ไดจากการเขารหัสลับ
ตัวอักษร A ถึง Z โดยใชตัวแปลงรหัสซีซาร
ขอความตนฉบับ A B C D E F G H I J K L M
ขอความรหัส D E F G H I J K L M N O P
ขอความตนฉบับ N O P Q R S T U V W X Y Z
ขอความรหัส Q R S T U V W X Y Z A B C
41
ใหสังเกตวาตัวอักษร X Y Z ในขอความตนฉบับจะเขารหัสลับเปนตัวอักษร A B C ในขอความ
รหัสตามลําดับ ถาเรากําหนดใหใชตัวเลขในการแสดง (Represent) ตัวอักษรที่จะทําการเขารหัสลับโดยใช
ลําดับของตัวอักษรนั้นเปนหลัก เชน A = 0, B = 1, C = 2,… วิธีการที่ใชในการเขารหัสลับแบบซีซารก็คือ
การบวกดวย 3 มอดุโล 26 ซึ่งแสดงในรูปของสมการไดดังนี้
42
ตัวอยางที่ 4.2 จงใชการโจมตีแบบตะลุย (Brute-force Attack) เพื่อหาขอความตนฉบับจากขอความรหัส
PMFM EQOGDUFK ที่ไดมาจากตัวแปลงรหัสแบบแทนที่อักษรเดี่ยว
ขอความรหัส P M F M E Q O G D U F K
1 Q N G N F R P H E V G L
2 R O H O G S Q I F W H M
3 S P I P H T R J G X I N
4 T Q J Q I U S K H Y J O
5 U R K R J V T L I Z K P
6 V S L S K W U M J A L Q
7 W T M T L X V N K B M R
8 X U N U M Y W O L C N S
9 Y V O V N Z X P M D O T
10 Z W P W O A Y Q N E P U
11 A X Q X P B Z R O F Q V
12 B Y R Y Q C A S P G R W
K 13 C Z S Z R D B T Q H S X
14 D A T A S E C U R I T Y
15 E B U B T F D V S J U Z
16 F C V C U G E W T K V A
17 G D W D V H F X U L W B
18 H E X E W I G Y V M X C
19 I F Y F X J H Z W N Y D
20 J G Z G Y K I A X O Z E
21 K H A H Z L J B Y P A F
22 L I B I A M K C Z Q B G
23 M J C J B N L D A R C H
24 N K D K C O M E B S D I
25 O L E L D P N F C T E J
43
4.2.1.2 ตัวแปลงรหัสสัมพรรค
วิธีการแปลงรหัสที่กลาวมาขางตนจะอยูบนพื้นฐานของการบวกดวย K มอดุโล 26 (Addition
Modulo 26) และมักเรียกกันอีกชื่อหนึ่งวา ตัวแปลงรหัสแบบบวก (Additive Cipher) ในทํานองเดียวกัน เรา
อาจทําการแปลงรหัสโดยใชพื้นฐานของการคูณดวย K มอดุโล 26 (Multiplication Modulo 26) ก็ได ซึ่งเปนที่
รูจักกันในชื่อ ตัวแปลงรหัสแบบคูณ (Multiplicative Cipher) ยกตัวอยางเชน ถาเรากําหนดใหคา K = 2
ผลลัพธที่ไดจากการเขารหัสลับตัวอักษร A ถึง Z โดยใชตัวแปลงรหัสแบบคูณแสดงไวในรูปที่ 4.4
ขอความตนฉบับ A B C D E F G H I J K L M
ขอความรหัส B D F H J L N P R T V X Z
ขอความตนฉบับ N O P Q R S T U V W X Y Z
ขอความรหัส B D F H J L N P R T V X Z
ขอความตนฉบับ A B C D E F G H I J K L M
ขอความรหัส C F I L O R U X A D G J M
ขอความตนฉบับ N O P Q R S T U V W X Y Z
ขอความรหัส P S V Y B E H K N Q T W Z
44
ครั้งนี้ขอความรหัสผลลัพธที่ไดจะมีคาไมซ้ํากัน ทําใหเราสามารถถอดรหัสลับอยางถูกตองได จะ
สังเกตไดวา วิธีการเขารหัสลับแบบนี้ถือเปนการแปลงรหัสแบบแทนที่อักษรเดี่ยว ซึ่งถาเราลองเปลี่ยนคา K
ไปเรื่อยๆ จะพบวาที่คา K = 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 จะใหขอความรหัสผลลัพธที่มีคาไมซ้ํา
กัน ฉะนั้นเมื่อมีการใชตัวแปลงรหัสแบบคูณ กุญแจที่สามารถใชในการเขารหัสลับไดจะมีเพียง 12 คาเทานั้น
ซึ่งถือวามีความปลอดภัยนอยมาก เมื่อเทียบกับกุญแจที่ใชในตัวแปลงรหัสแบบบวกซึ่งมีไดถึง 26 คา เพื่อ
สรางวิธีการเขารหัสลับแบบใหมที่มีความปลอดภัยสูงกวา โดยใชพื้นฐานการเขารหัสลับที่งายและไม
ซับซอนอยาง การบวกและการคูณดวย K มอดุโล 26 เราจะทําการเขารหัสลับขอความตนฉบับดวยตัวแปลง
รหัสแบบบวกและ K ตัวที่หนึ่งเรียกวา K1 จากนั้นนําผลลัพธที่ไดมาเขารหัสลับอีกครั้งดวยตัวแปลงรหัส
แบบคูณและ K อีกตัวหนึ่งเรียกวา K2 ซึ่งตัวแปลงรหัสแบบใหมที่ไดนี้จะเรียกวา ตัวแปลงรหัสสัมพรรค
[BEUT94] กุญแจที่ใชในการเขารหัสลับโดยตัวแปลงรหัสสัมพรรคคือ K1 และ K2 จํานวนกุญแจที่สามารถ
ใชในการเขารหัสลับที่เปนไปไดทั้งหมดคือ K1 x K2 ในที่นี้จะมีคาเทากับ 26 x 12 = 312 รูปแบบ
4.2.1.3 ตัวแปลงรหัสแบบแทนที่หลายตัวอักษร
ในการแปลงรหัสแบบแทนที่หลายตัวอักษร ตัวแปลงรหัสจะเปลี่ยนตัวอักษรแตละตัวในขอความ
ตนฉบับเปนตัวอักษรใดๆ ก็ไดในขอความรหัส ขึ้นอยูกับกุญแจที่ใชในการเขารหัสลับตัวอักษรนั้นๆ เชน
ตัวอักษร B ตัวแรกที่เจอในขอความตนฉบับอาจถูกเปลี่ยนเปนตัวอักษร R ในขอความรหัส ขณะที่ตัวอักษร
B ตัวตอไปที่เจอ อาจถูกเปลี่ยนเปนตัวอักษร G ในขอความรหัส เปนตน ซึ่งตําแหนงการแทนที่หรือการ
เปลี่ยนแปลงที่จะเกิดขึ้นกับขอความรหัสผลลัพธนี้ จะขึ้นอยูกับกุญแจที่ใชในการเขารหัสลับขอความ
ตนฉบับนั้นๆ ใหสังเกตวาความสัมพันธของการแทนที่แบบอักษรเดี่ยว จะเปนแบบฟงกชันหนึ่งตอหนึ่ง
(One-to-one Function) ขณะที่ความสัมพันธของการแทนที่แบบหลายตัวอักษร จะเปนแบบฟงกชันหนึ่ง
ตอหลาย (One-to-many Function) ตัวอยางของตัวแปลงรหัสแบบแทนที่หลายตัวอักษรที่เปนที่รูจักกัน
อยางกวางขวางก็คือ ตัวแปลงรหัสแบบ Vigenère (Vigenère Cipher) ซึ่งจะทําการเขารหัสลับตัวอักษรแต
ละตัวโดยใชตัวแปลงรหัสแบบแทนที่อักษรเดี่ยวอยางเปนอิสระตอกัน เนื่องจากจํานวนตัวอักษรใน
ภาษาอังกฤษมีทั้งหมด 26 ตัว การแปลงรหัสแบบ Vigenère จึงเปรียบเสมือนกับการนําตัวแปลงรหัสแบบ
แทนที่อักษรเดี่ยว 26 ตัวมาใชรวมกัน กลาวคือ ตัวแปลงรหัสแบบแทนที่อักษรเดี่ยวแตละตัวสามารถ
เขารหัสลับขอความตนฉบับโดยการเลื่อนตัวอักษรไปขางหนาได 1 ถึง 26 ตัวอักษร ขึ้นอยูกับกุญแจที่ใช
ยกตัวอยางเชน ถากุญแจที่ใชในการเขารหัสลับตัวอักษร B คือ A ตัวแปลงรหัสจะไมทําการเปลี่ยนแปลง
ใดๆ เนื่องจาก A = 1 แตถากุญแจที่ใชคือตัวอักษร C ตัวแปลงรหัสจะทําการเลื่อนตัวอักษร B ไปขางหนา 2
ตัวตําแหนง ซึ่งใหผลลัพธเปนตัวอักษร D เพื่อใหเขาใจถึงวิธีการเขารหัสลับแบบ Vigenère ไดดีขึ้น
ผลลัพธที่ไดจากการเขารหัสลับตัวอักษร A ถึง Z โดยใชตัวแปลงรหัสแบบแทนที่อักษรเดี่ยวทั้ง 26 ตัวได
แสดงไวในรูปที่ 4.6
45
M
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
K
N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
46
ตัวอยางที่ 4.3 จงใชตัวแปลงรหัสแบบ Vigenère ในการเขารหัสลับขอความตนฉบับ TODAY กําหนดให
กุญแจที่ใชคือ KEY
T H I R M A U O L P H L
T M A B K F T N H E I A E
O H V W F A O I C Z D V Z
N G U V E Z N H B Y C U Y
ใหสังเกตวา ขอความหลังการถอดรหัสลับที่มีความหมายจะแสดงดวยตัวอักษรที่เปนตัว
เขม ซึ่งขอความตนฉบับที่ไดคือ HAVEANICEDAY หรือ HAVE A NICE DAY และ
กุญแจที่ใชในการถอดรหัสลับคือ OTNNONOOTOTN
47
4.2.2 ตัวแปลงรหัสแบบสลับตําแหนง
ตัวแปลงรหัสแบบสลับตําแหนงจะไมทําการเปลี่ยนแปลงกลุมตัวอักษรใดๆ ที่อยูในขอความ
ตนฉบับ แตจะใชวิธีการเรียงสับเปลี่ยน (Permutation) ตําแหนงภายในกลุมตัวอักษรเหลานั้น เพื่อสราง
ขอความรหัสขึ้นมาใหม ยกตัวอยางเชน ในการเขารหัสลับหนึ่งๆ เรากําหนดใหกลุมตัวอักษรขนาด 8
ตัวอักษรมีการเรียงสับเปลี่ยนตําแหนงของตัวอักษรใหมดังรูปที่ 4.7
1 2 3 4 5 6 7 8 3 1 2 7 6 4 8 5
A M U L T I M Encryption M A I T U M L
E D I A C O M Æ I E D O C A M
M U N I C A T I Å N M U T A I I C
O N Decryption O N
48
A_MULTIMEDIA_COMMUNICATION โดยวิธีการยายคอลัมนดวยคา N = 8 และลําดับของคอลัมน
เทากับ 3,1,2,7,6,4,8,5 ขั้นตอนการเขารหัสลับแสดงไดดังรูปที่ 4.9
1 2 3 4 5 6 7 8 3 1 2 7 6 4 8 5
A M U L T I M Encryption A M U L T I M
E D I A C O M Æ E D I A C O M
M U N I C A T I Å M U N I C A T I
O N Decryption O N
4.3 คําถามทายบท
1. จงอธิบายแนวคิดการทํางานของตัวแปลงรหัสแบบกลุม รวมทั้งงานประยุกตตางๆ ที่มีความเหมาะสมกับ
ตัวแปลงรหัสลักษณะนี้
2. จงอธิบายความแตกตางระหวางตัวแปลงรหัสแบบกระแสกับตัวแปลงรหัสแบบกลุม
3. จงอภิปรายถึงขอดี ขอเสียของการใชกลุมบิตขนาดใหญเพื่อเขารหัสลับในตัวแปลงรหัสแบบกลุม
4. จงอธิบายความแตกตางระหวางการแทนที่และการสลับตําแหนงเมื่อนําฟงกชันทั้งสองมาประยุกตใชงาน
ในการเขารหัสลับ
5. จงอภิปรายถึงตัวแปรที่ใชในการออกแบบตัวแปลงรหัสแบบกระแสและตัวแปลงรหัสแบบกลุมที่สงผล
ใหตัวแปลงรหัสทั้งสองแบบมีความแข็งแกรง ทนทานตอการโจมตีประเภทตางๆ
49
บทที่ 5
อัลกอริทึมสมมาตร ตอนสาม
5.1 ตัวแปลงรหัสแผนใหม
ตัวแปลงรหัสแบบดั้งเดิมจะใชอัลกอริทึมที่อยูบนพื้นฐานการทํางานในระดับตัวอักขระหรือ
สัญลักษณ ขณะที่ตัวแปลงรหัสแผนใหมจะใชอัลกอริทึมที่อยูบนพื้นฐานการทํางานในระดับบิตเปนหลัก
ในการเขารหัสลับตัวแปลงรหัสแผนใหมจะใชวิธีการแทนที่บิตและการสลับตําแหนงบิตเชนเดียวกัน แตจะ
มีการดัดแปร (Modify) ใหมีความซับซอนหลากหลายมากยิ่งขึ้น โดยปกติตัวแปลงรหัสแบบใหมจําเปนตอง
อาศัยการประมวลผลภายในเครื่องคอมพิวเตอร หรือฮารดแวรที่สรางขึ้นเปนพิเศษเปนหลัก
ในอัลกอริทึมสมมาตรที่จัดอยูในกลุมตัวแปลงรหัสแบบกลุมแผนใหม อัลกอริทึม DES (Data
Encryptions Standard) ถือเปนมาตรฐานการเขารหัสลับที่คนทั่วโลกใชศึกษาและนํามาพิจารณาเปนกรณี
ตัวอยางเพื่อเรียนรูการทํางานของตัวแปลงรหัสแบบกลุม [FIPS99] ในอดีตที่ผานมา DES ถือเปนมาตรฐาน
ที่ใชในการเขาและถอดรหัสลับของประเทศตางๆ มากวา 20 ปแลว ถึงแมวาตัวอัลกอริทึมจะถูกพิจารณาวา
ไมมีความปลอดภัยอยางเพียงพอสําหรับการใชงานในยุคปจจุบัน โดยเฉพาะความทนทานตอการโจมตีแบบ
ตะลุยดวยคอมพิวเตอรรุนใหมที่หนวยประมวลผลกลางหรือซีพียูมีความเร็วสูงมากๆ อัลกอริทึม DES ก็
ยังคงแข็งแกรงและทนทานตอการโจมตีและวิเคราะหรหัสลับในรูปแบบอื่นๆ ที่มีอยู ฟงกชันการทํางานของ
DES ยังคงมีประโยชน คุมคากับผูเรียนที่จะใชเวลาศึกษา ทําความเขาใจ ซึ่งความรูที่ไดนี้จะชวยใหเขาใจการ
ทํางานของตัวแปลงรหัสแบบกลุมแบบอื่นๆ ไดดียิ่งขึ้น การออกแบบอัลกอริทึม DES จะอยูบนแนวคิด
พื้นฐานของตัวแปลงรหัสแผนใหม 2 ตัวคือ ตัวแปลงรหัสผลคูณ (Product Cipher) และตัวแปลงรหัส
Feistel (Feistel Cipher)
5.2 ตัวแปลงรหัสผลคูณ
แนวคิดพื้นฐานที่ใชในการออกแบบตัวแปลงรหัสผลคูณก็คือ การพยายามสรางฟงกชันการเขารหัส
ลับที่มีความซับซอนสูงขึ้น จากการนําเอาวิธีการเขารหัสลับแบบงายๆ ที่ไมทนทานตอการโจมตีหลายๆ วิธี
มาใชงานรวมกัน วิธีการเขารหัสลับที่กลาวถึงนี้อาจเปนการแทนที่ การสลับตําแหนง การออรเฉพาะ การ
แปลงเชิงเสน การดําเนินการเชิงเลขคณิต เปนตน แนวคิดของการสรางตัวแปลงรหัสผลคูณนี้จะแตกตางจาก
แนวคิดของการเขารหัสลับแบบหลายๆ ครั้ง (Multiple Encryptions) ซึ่งจะกลาวถึงในรายละเอียดตอไป
โดยปกติตัวแปลงรหัสผลคูณมักจะประกอบดวยขั้นตอนการดําเนินการอยางนอย 2 ขั้นตอนมาตอเรียงกัน
50
โดยมีวัตถุประสงคใหขอความรหัสผลลัพธที่ไดมีความแข็งแกรง ทนทานตอการโจมตีเพิ่มขึ้น เมื่อเทียบกับ
ผลลัพธที่ไดจากขั้นตอนการดําเนินการอยางอิสระแตละตัว เครือขายการแทนที่การเรียงสับเปลี่ยน
(Substitution-Permutation, SP) จัดเปนตัวแปลงรหัสผลคูณแบบหนึ่ง [MENE97] ที่ประกอบไปดวยชุด
ดําเนินการแทนที่และเรียงสับเปลี่ยนยอยๆ นํามาตอเรียงกันหลายๆ ชุด รูปที่ 5.1 แสดงตัวแปลงรหัสผลคูณ
ในรูปของเครือขายการแทนที่ (S) และการเรียงสับเปลี่ยน (P)
51
ตนฉบับ ขอความรหัส และกุญแจที่ใชในการเขารหัสลับมีความซับซอนมากขึ้น โดยทั่วไป โครงสรางทาง
สถิติของตัวอักษรแตละตัวที่มีอยูในขอความตนฉบับจะมีการกระจายแบบไมเรียบ (Non-flat distribution)
ซึ่งลักษณะของการกระจายแบบนี้จะชวยใหการวิเคราะหรหัสลับสามารถทําไดงายขึ้น ฉะนั้นการ
ประยุกตใชฟงกชันการทําใหสับสนและการแพรในกระบวนการเขารหัสลับ จะทําใหความซ้ําซอน
(Redundancy) ของคําหรือประโยคที่ประกอบอยูในบางสวนของขอความตนฉบับมีการกระจาย (Spread)
ออกไปทั่วทุกสวนอยางเทาเทียมกัน สงผลใหโครงสรางทางสถิติของตัวอักษรแตละตัวที่มีอยูในขอความ
รหัสมีการกระจายแบบเรียบ (Flat distribution) ซึ่งสงผลใหเกิดความยากตอการวิเคราะหรหัสลับ อยางไรก็
ตาม การนําฟงกชันทั้งสองมาประยุกตใชงานรวมกันใหมีประสิทธิภาพ จําเปนตองพิจารณาปจจัยตางๆ ดังนี้
1. ขนาดของกลุมบิตที่ใชในการเขาและถอดรหัสลับ ยิ่งมีขนาดใหญเทาใด ยิ่งทําใหขอความรหัส ที่ได
มีความทนทานตอการวิเคราะหรหัสลับมากขึ้นเทานั้น อยางไรก็ตาม ผลเสียที่ตามมาก็คือ ความเร็ว
ในการประมวลผลที่ชาลง ในชวงกอนปคริสตศักราช 2000 กลุมบิตขนาด 64 บิต ถือวาเปนกลุม
บิตที่มีขนาดสมเหตุสมผล และมีการนํามาใชในการออกแบบอัลกอริทึมแบบกลุมเปนจํานวนมาก
แตในปจจุบันนี้ ความเร็วในการคํานวณของหนวยประมวลผลกลางหรือซีพียูในเครื่องคอมพิวเตอร
ไดเพิ่มขึ้นอยางมาก จึงเริ่มมีการนํากลุมบิตขนาด 128 บิตมาใชในการออกแบบอัลกอริทึมแบบกลุม
รุนใหมอยางมากมาย
2. ขนาดของกุญแจที่ใชในการเขาและถอดรหัสลับ เชนเดียวกันกับขนาดของกลุมบิตที่ใช ถากุญแจที่
ใชมีขนาดใหญจะทําใหระบบการเขาและถอดรหัสลับมีความปลอดภัยมากขึ้น แตความเร็วในการ
ประมวลผลก็จะลดลงตามไปดวย ในปจจุบันกุญแจขนาด 64 บิตถือวามีความปลอดภัยไมเพียงพอ
อัลกอริทึมแบบกลุมรุนใหมๆ จะใชกุญแจขนาด 128 บิตเปนหลัก บางอัลกอริทึมออกแบบให
สามารถใชกุญแจที่มีขนาด 192 หรือ 256 บิตได
3. จํานวนรอบของการประมวลผล การนําฟงกชันการทําใหสับสนและการแพรมาใชรวมกัน (อาจมี
การดําเนินการอื่นๆ รวมดวย) เพื่อเขารหัสลับขอความตนฉบับจนเสร็จสิ้น ถือเปนการประมวลผล
1 รอบ (Round) เพื่อใหขอความรหัสที่เปนผลลัพธสุดทายมีความทนทานตอการวิเคราะหรหัสลับ
มากขึ้น จําเปนตองทําการประมวลผลแบบเดียวกันซ้ําหลายๆ รอบ โดยปกติการประมวลผลซ้ําๆ
กันโดยใชแนวคิดขางตนเปนจํานวน 16 รอบ ถือวามีความปลอดภัยเพียงพอตอการโจมตีและการ
วิเคราะหรหัสลับในปจจุบัน
4. อัลกอริทึมในการสรางกุญแจยอยและประมวลผล ยิ่งมีความซับซอนมากเทาใดก็จะสงผลใหการ
วิเคราะหรหัสลับทําไดยากขึ้นเทานั้น ระบบการเขาและถอดรหัสลับที่ไดก็จะมีความปลอดภัยมาก
ขึ้นเชนกัน
52
จากแนวคิดที่กลาวมาทั้งหมดขางตน นักวิเคราะหรหัสลับ Feistel จึงไดเสนอโครงสรางมาตรฐาน
(Standard Structure) เพื่อนํามาใชในการออกแบบตัวแปลงรหัสสมมาตรแบบกลุมแผนใหม และนี่ก็คือ
ที่มาของตัวแปลงรหัส Feiste [FEIS73] กลาวโดยละเอียด ตัวแปลงรหัส Feistel คือตัวแปลงรหัสแบบกลุม
ที่มีลักษณะการเขารหัสลับโดยการแบงกลุมบิตขอความตนฉบับขนาด 2t บิตออกเปนสองกลุมบิตยอยซาย
ขวา L0 และ R0 ขนาด t บิต แลวทําการประมวลผลกลุมบิตยอยทั้งสองดวยฟงกชัน f ตามที่กําหนดเปน
จํานวน r รอบ (Round) เพื่อใหกลุมบิตผลลัพธที่เปนขอความรหัสประกอบดวยกลุมบิตยอยขวาซาย Rr
และ Lr ขนาด t บิต โดยในแตละรอบ i ของการประมวลผลจะใชกุญแจยอย (Sub-keys, Ki) ที่คํานวณหามา
จากกุญแจที่ใชในการเขารหัสลับรวมดวย โดยปกติจํานวนรอบของการประมวลผลมักจะมีคามากกวา 3
และมีจํานวนเปนคู รูปที่ 5.2 แสดงขั้นตอนการทํางานของตัวแปลงรหัส Feistel ใหสังเกตวาฟงกชันการทํา
ใหสับสนที่ใชในตัวแปลงรหัส Feistel เกิดจากการประมวลผลกลุมบิตยอยทางขวา (t-bit Ri) ดวยฟงกชัน f
และกุญแจยอย Ki จากนั้นจึงนําผลลัพธที่ไดมาทําการออรเฉพาะกับกลุมบิตยอยทางซาย (t-bit Li) ขณะที่
ฟงกชันการแพรที่ใชในตัวแปลงรหัส Feistel เกิดจากการสลับกลุมบิตยอยทั้งสอง ใหสังเกตดวยวา ในรอบ
สุดทายของการประมวลผล กลุมบิตยอยสงออกซายขวาที่ไดจะมีการสลับตําแหนงกันอีกครั้งหนึ่งจาก (Lr,
Rr) เปน (Rr, Lr) กอนที่จะนํามารวมกันเปนขอความรหัส ซึ่งเปรียบเสมือนกับวา การประมวลผลรอบ
สุดทายจะมีเพียงฟงกชันการทําใหสับสนเทานั้น ทั้งนี้เปนเพราะการสลับกลุมบิตยอยสองครั้งติดกันจะให
ผลลัพธเทียบเทากับการไมไดสลับกลุมบิตยอยใดๆ
53
สําหรับการถอดรหัสลับนั้น จะดําเนินการเหมือนกับขั้นตอนที่ใชในการเขารหัสลับ เพียงแตวากุญแจ
ยอยที่ในการเขารหัสลับจะตองนํามาใชแบบอันดับผันกลับ (Reverse Order) ในขั้นตอนการถอดรหัสลับ
เทานั้น กลาวคือ เราจะใช Kr ในการประมวลผลรอบแรก Kr-1 ในการประมวลผลรอบที่สอง ตามลําดับ จนถึง
การประมวลผลรอบสุดทาย ซึ่งกุญแจยอยที่จะใชก็คือ K1 วิธีการถอดรหัสลับขางตนนี้ถือเปนจุดเดนของ
ตัวแปลงรหัส Feistel เนื่องจากเราไมจําเปนตองออกแบบอัลกอริทึมใหมเพื่อนํามาใชในการถอดรหัสลับอีก
เพื่อแสดงใหเห็นวาขั้นตอนการถอดรหัสลับของตัวแปลงรหัส Feistel มีการดําเนินการเหมือนกับขั้นตอนที่
ใชในการเขารหัสลับ ตางกันแตเพียงลําดับของกุญแจยอยที่ใชเทานั้น ตัวอยางที่จะแสดงตอไปนี้ จะใช
สัญลักษณ LrE, RrE แทนกลุมบิตยอยนําเขาซายขวาจากขอความตนฉบับ และใชสัญลักษณ LrD, RrD แทนกลุม
บิตยอยนําเขาซายขวาจากขอความรหัสตามลําดับ โดย r คือจํานวนรอบของการประมวลผล ซึ่งในตัวอยางที่
แสดงจะทําการประมวลผลเพียง 4 รอบเทานั้น
จากรูปดานซาย กลุมบิตยอยสงออกซายขวาที่เปนผลลัพธจากการประมวลผลรอบสุดทายสามารถ
แสดงในรูปของสมการไดดังนี้
L4E = R3E (5.1)
R4E = L3E ⊕ f (R3E, K4) (5.2)
54
ในสวนของการถอดรหัสลับ กลุมบิตยอยสงออกสามารถแสดงในรูปของสมการไดดังนี้
55
รูปที่ 5.4 ตัวอยางของการแทนที่และการเรียงสับเปลี่ยนตัวอักษร
56
การเรียงสับเปลี่ยนเริ่มตน ดูตารางที่ 5.2 ประกอบ กลุมบิตผลลัพธสุดทายที่ไดก็คือขอความรหัสขนาด 64 บิต
ที่ไดผานการเขารหัสลับโดย DES มาแลว
57
ตารางที่ 5.2 การเรียงสับเปลี่ยนสุดทาย
40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25
58
ตารางที่ 5.3 การตรวจสอบบิตภาวะคี่ของกุญแจเขารหัสลับ DES
E3 1 1 1 0 0 0 1 1
D0 1 1 0 1 0 0 0 0
57 0 1 0 1 0 1 1 1
A7 1 0 1 0 0 1 1 1
9B 1 0 0 1 1 0 1 1
7F 0 1 1 1 1 1 1 1
BC 1 0 1 1 1 1 0 0
9D 1 0 0 1 1 1 0 1
59
สงผานไปยัง S-box จํานวน 8 ตัวที่ตอขนานกันอยู ดูรูปที่ 5.7 และตารางที่ 5.8 ประกอบ ในกระบวนการ
แทนที่โดยใช S-box นั้น กลุมบิตนําเขาขนาด 6 บิต (b1b2b3b4b5b6) จะเปนตัวกําหนดคากลุมบิตสงออก
ขนาด 4 บิตที่เก็บบันทึกไวใน S-box แตละตัว โดยบิตที่ 1 และ 6 (b1b6) จะใชเปนตัวกําหนดตําแหนงเชิง
ตัวเลข 0-3 ในแตละแถวของ S-box ขณะที่บิต 2 ถึง 5 (b2b3b4b5) จะใชกําหนดตําแหนงเชิงตัวเลข 0-15 ใน
แตละคอลัมนของ S-box ยกตัวอยางเชน ถากลุมบิตนําเขาของ S-box 1 มีคา 1001012 ตําแหนงของกลุมบิต
สงออกที่ไดจะอยูแถวที่ 3 (112) คอลัมนที่ 2 (00102) ซึ่งก็คือ 8 ในเลขฐานสิบหรือ 10002 นั่นเอง
60
ตารางที่ 5.8 การแทนที่ S-box
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
S-box 1 12 0
4
15
1
7
14
4
8
14
13
2
6
13
2
1
11
10
15
6
12
12
9
11
7
9
3
5
10
3
5
8
0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
S-box 2 12 3
0
13
14
4
7
7
11
15
10
2
4
8
13
14
1
12
5
0
8
1
12
10
6
6
9
9
3
11
2
5
15
3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
S-box 3 12 13
13
7
6
0
4
9
9
3
8
4
15
6
3
10
0
2
11
8
1
5
2
14
12
12
5
11
10
15
14
1
7
3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
S-box 4 12 13
10
8
6
11
9
5
0
6
12
15
11
0
7
3
13
4
15
7
1
2
3
12
14
1
5
10
2
14
8
9
4
3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
S-box 5 12 14
4
11
2
2
1
12
11
4
10
7
13
13
7
1
8
5
15
0
9
15
12
10
5
3
6
9
3
8
0
6
14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
S-box 6 12 10
9
15
14
4
15
2
5
7
2
12
8
9
12
5
3
6
7
1
0
13
4
14
10
0
1
11
13
3
11
8
6
3 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
S-box 7 12 13
1
0
4
11
11
7
13
4
12
9
3
1
7
10
14
14
10
3
15
5
6
12
8
2
0
15
5
8
9
6
2
3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
S-box 8 12 1
7
15
11
13
4
8
1
10
9
3
12
7
14
4
2
12
0
5
6
6
10
11
13
0
15
1
3
9
5
2
8
3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
61
จากรูปที่ 5.6 ถา Li และ Ri คือกลุมบิตขอมูลครึ่งซายและขวาตามลําดับ Ki คือกลุมบิตยอยกุญแจ
ขนาด 48 บิต ในรอบการประมวลผลที่ i และ f คือฟงกชันที่ประกอบไปดวยการแทนที่ การเรียงสับเปลี่ยน
และการออรเฉพาะกับกลุมบิตของกุญแจ เราสามารถแสดงสมการของการประมวลผลในแตละรอบของ
DES ไดดังนี้
Li = Ri -1 (5.5)
Ri = Li-1 ⊕ f (Ri-1, Ki) (5.6)
62
5.5 การเขารหัสลับขอมูล DESX
จุดออนที่เห็นไดชัดในอัลกอริทึม DES ก็คือ ขนาดของกุญแจที่ใชในการเขาและถอดรหัสลับที่นอย
เกินไป ซึ่งในทางปฏิบัติแลว กุญแจที่นํามาใชงานจริงมีเพียง 56 บิตเทานั้น เพื่อให DES มีความทนทานตอ
การโจมตีแบบตะลุย นักสรางรหัสลับ Ron Rivest จึงไดเสนอแนวคิดในการดัดแปรอัลกอริทึม DES แบบ
งายๆ เพื่อเพิ่มขนาดของกุญแจที่ใชในการเขาและถอดรหัสลับ และเรียกชื่ออัลกอริทึมใหมนี้วา DESX
โครงสรางของ DESX ไดแสดงไวในรูปที่ 5.8
63
ซึ่งประกอบไปดวย ตัวดําเนินการออรเฉพาะ (Exclusive-OR, XOR) การบวกแบบมอดุโล 216 (Addition
Modulo 216) และการคูณแบบมอดุโล 216+1 (Multiplication Modulo 216+1) ขณะที่ฟงกชันการแพรเกิดจาก
การดําเนินการกลุมขอมูลในเชิงพีชคณิตดวยโครงสรางเฉพาะที่เรียกวา โครงสราง MA
(Multiplication/Addition Structure) ดังแสดงในรูปที่ 5.9
64
รูปที่ 5.10 กระบวนการที่เกิดขึ้นในแตละรอบของการประมวลผลโดยอัลกอริทึม IDEA
65
1. คูณ X1 กับ K1(1)
2. บวก X2 กับ K2(1)
3. บวก X3 กับ K3(1)
4. คูณ X4 กับ K4(1)
5. ออรเฉพาะผลลัพธที่ไดจากขั้นตอนที่ 1 และ 3
6. ออรเฉพาะผลลัพธที่ไดจากขั้นตอนที่ 2 และ 4
7. คูณผลลัพธที่ไดจากขั้นตอนที่ 5 กับ K5(1)
8. บวกผลลัพธที่ไดจากขั้นตอนที่ 6 กับขั้นตอนที่ 7
9. คูณผลลัพธที่ไดที่ไดจากขั้นตอนที่ 8 กับ K6(1)
10. บวกผลลัพธที่ไดจากขั้นตอนที่ 7 กับขั้นตอนที่ 9
11. ออรเฉพาะผลลัพธที่ไดจากขั้นตอนที่ 1 และ 9
12. ออรเฉพาะผลลัพธที่ไดจากขั้นตอนที่ 3 และ 9
13. ออรเฉพาะผลลัพธที่ไดจากขั้นตอนที่ 2 และ 10
14. ออรเฉพาะผลลัพธที่ไดจากขั้นตอนที่ 4 และ 10
66
เปนกลุมบิตยอยกุญแจ 2 กลุมแรก ในการประมวลผลรอบที่ 2 (K1(2) – K2(2)) จากนั้นจะทําการเลื่อนกุญแจที่
ใชในการเขารหัสลับขนาด 128 บิตเปนวงไปทางซาย 25 บิต แลวแบงผลลัพธที่ไดออกเปนกลุมบิตยอย
ขนาด 16 บิต ตามลําดับเปนจํานวน 8 กลุมอีกครั้ง โดยกลุมบิตยอยกุญแจ 4 กลุมแรกนี้จะใชเปนกลุมบิตยอย
กุญแจอีก 4 กลุมที่เหลือในการประมวลผลรอบที่ 2 (K3(2) – K6(2)) สวนกลุมบิตยอยกุญแจที่เหลืออีก 4 กลุม
จะนําไปใชเปนกลุมบิตยอยกุญแจ 4 กลุมแรกในการประมวลผลรอบที่ 3 (K1(3) – K4(3)) จากนั้นจะทําการ
เลื่อนกุญแจที่ใชในการเขารหัสลับเปนวงไปทางซายอีก 25 บิตแลวแบงผลลัพธที่ไดออกเปนกลุมบิตยอย
จํานวน 8 กลุมอีกครั้ง ขั้นตอนการสรางกลุมบิตยอยกุญแจจะดําเนินการไปในลักษณะนี้จนจบการทํางาน
ของการเขารหัสลับ
สําหรับขั้นตอนในการถอดรหัสลับของอัลกอริทึม IDEA นั้น จะดําเนินการเหมือนกับการเขารหัส
ลับทุกประการ ยกเวนแตเพียง กลุมบิตยอยกุญแจที่ใชในการถอดรหัสลับนั้น จะตองเปนตัวผกผันการบวก
หรือตัวผกผันการคูณของกลุมบิตยอยกุญแจที่ใชในการเขารหัสลับ ใหสังเกตวาตัวผกผันการบวกของ
จํานวนใดๆ เมื่อบวกกับจํานวนนั้นแลวจะใหผลลัพธเปน 0 ขณะที่ตัวผกผันการคูณของจํานวนใดๆ เมื่อคูณ
กับจํานวนนั้นแลวจะใหผลลัพธเปน 1 สําหรับตัวผกผันการบวกนั้นเราสามารถคํานวณหาไดงายๆ ในขณะที่
การคํานวณหาตัวผกผันการคูณ เราจําเปนตองใชอัลกอริทึมยุคลิคแบบขยาย (Extended Euclid’s
Algorithm) เปนเครื่องมือในการคํานวณ รายละเอียดในการคํานวณหาตัวผกผันการคูณจะกลาวถึงในหัวขอ
ตอไป ตารางที่ 5.10 แสดงลําดับของกลุมบิตยอยกุญแจที่ใชในการเขาและถอดรหัสลับโดยอัลกอริทึม IDEA
67
ตารางที่ 5.11 และ 5.12 แสดงตัวอยางการเขาและถอดรหัสลับดวยอัลกอริทึม IDEA โดยใชขอความ
ตนฉบับที่เปนตัวเลขขนาด 16 บิต M = 0,1,2,3 (16x4 = 64 บิต) และกุญแจเขารหัสลับที่เปนตัวเลขขนาด
16 บิต K = 1, 2, 3, 4, 5, 6, 7, 8 (16x8 = 128 บิต) ใหสังเกตวาคาสถานภาพ (Status) ตางๆ ในตารางทั้ง
สองแสดงอยูในรูปของเลขฐาน 16
68
5.7 มาตรฐานการเขารหัสลับขั้นสูง AES
อัลกอริทึม AES (Advanced Encryption Standard) มีการคิดคนพัฒนาขึ้นโดยนักสรางรหัสลับ
ชาวเบลเยี่ยม 2 คน จากอัลกอริทึมที่ใชชื่อเดิมวา Rijndael ซึ่งในภายหลังไดรับการยอมรับจากรัฐบาล
ประเทศสหรัฐอเมริกาใหใชเปน มาตรฐานในการเขารหัสลับขอมูลตัวใหมแทนมาตรฐานเดิม คือDES ตั้งแต
ปคริสตศักราช 2002 ทุกวันนี้ AES ไดรับการยอมรับจากองคกรตางๆ ทั่วโลก และไดมีการนํามาประยุกตใช
งานกันอยางกวางขวาง ไดมีความพยายามจากนักวิเคราะหรหัสลับทั่วโลกที่จะคนหาจุดออนของ AES แต
จนถึงปจจุบันยังไมมีใครสามารถทําให AES เกิดจุดออนในทางปฏิบัติได ในขณะที่เขียนบทความนี้ AES
ถือเปนอัลกอริทึมสมมาตรที่ไดรับความนิยมจากคนทั่วไปมากที่สุด ทั้งนี้เนื่องมาจากความรวดเร็วของการ
ประมวลผลในกระบวนการเขาและถอดรหัสลับ ความตองการหนวยความจําเพื่อใชในการเขาและถอดรหัส
ลับที่ต่ํา รวมทั้งความงายในการนําไปประยุกตใชงานทั้งในรูปของซอฟทแวรและฮารดแวร
ตามมาตรฐานที่กําหนดโดย [FIPS01] อัลกอริทึม AES จะเขารหัสลับขอมูลเปนกลุมๆ ละ 128 บิต
กุญแจที่ใชในการเขาและถอดรหัสมีขนาด 128, 192 หรือ 256 บิต ขึ้นอยูกับผูใชงาน เทคนิคพื้นฐานที่ AES
ใชในการเขาและถอดรหัสลับคือ การดําเนินการผสม (Mixing Operations) ระหวางกลุมขอมูลในเชิง
พีชคณิตเชนเดียวกันกับอัลกอริทึม IDEA อยางไรก็ตาม กลุมบิตยอยที่ใชในการประมวลผลของ AES จะถูก
จัดใหอยูในรูปของแถวลําดับ (Array) 2 มิติขนาด 4×4 ไบต (Bytes) เรียกทับศัพทวา สเตท (State) โดยแต
ละแถวของสเตทจะประกอบดวยกลุมบิตขอมูลในรูปของคํา (Word, w) ขนาด 32 บิตจํานวน Nb คํา (Nb
คํานวณจากความยาวของกลุมบิตนําเขาหารดวย 32 ในที่นี้ Nb จะมีคาเทากับ 4 เนื่องจาก 128 บิต/32 บิต =
4) ดังนั้นเมื่อกลุมบิตนําเขาขนาด 128 บิตเขามา AES จะแบงกลุมบิตนําเขาเหลานั้นออกเปนกลุมไบต (Bn)
จํานวน 16 กลุม โดยจัดใหอยูในรูปของแถวลําดับ 2 มิติเรียงจากบนลงลาง ซายไปขวาตามลําดับ กลุมบิต
นําเขาที่จัดเรียงใหอยูในรูปของสเตทแสดงไวดังรูปที่ 5.11 ใหสังเกตวา กลุมไบตในหนึ่งคอลัมนก็คือ กลุม
บิตขอมูลขนาดหนึ่งคํานั่นเอง
69
ขนาดของกลุมบิตกุญแจที่ใชในการประมวลผลอาจแสดงในรูปของบิตหรือคําก็ได โดยกุญแจ
ขนาด n บิต จะมีขนาด Nk = n/32 คํา ขนาดของกุญแจจะเปนตัวกําหนดจํานวนรอบของการประมวลผล Nr
ในการเขารหัสลับ AES โดยใชกุญแจขนาด128 บิต เราสามารถเขียนใหอยูในรูปยอที่แสดงถึงโหมดการ
ทํางานไดคือ AES-128 สําหรับโหมดอื่นๆ ที่เหลือไดแสดงไวในตารางที่ 5.13
70
Y
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 63 7C 77 7B F2 6B 6F C5 30 01 67 2B FE D7 AB 76
1 CA 82 C9 7D FA 59 47 F0 AD D4 A2 AF 9C A4 72 C0
2 B7 FD 93 26 36 3F F7 CC 34 A5 E5 F1 71 D8 31 15
3 04 C7 23 C3 18 96 05 9A 07 12 80 E2 EB 27 B2 75
4 09 83 2C 1A 1B 6E 5A A0 52 3B D6 B3 29 E3 2F 84
5 53 D1 00 ED 20 FC B1 5B 6A CB BE 39 4A 4C 58 CF
6 D0 EF AA FB 43 4D 33 85 45 F9 02 7F 50 3C 9F A8
X 78 51
CD
A3
0C
40
13
8F
EC
92
5F
9D
97
38
44
F5
17
BC
C4
B6
A7
DA
7E
21
3D
10
64
FF
5D
F3
19
D2
73
9 60 81 4F DC 22 2A 90 88 46 EE B8 14 DE 5E 0B DB
A E0 32 3A 0A 49 06 24 5C C2 D3 AC 62 91 95 E4 79
B E7 C8 37 6D 8D D5 4E A9 6C 56 F4 EA 65 7A AE 08
C BA 78 25 2E 1C A6 B4 C6 E8 DD 74 1F 4B BD 8B 8A
D 70 3E B5 66 48 03 F6 0E 61 35 57 B9 86 C1 1D 9E
E E1 F8 98 11 69 D9 8E 94 9B 1E 87 E9 CE 55 28 DF
F 8C A1 89 0D BF E6 42 68 41 99 2D 0F B0 54 BB 16
รูปที่ 5.13 การแทนที่ S-box ในอัลกอริทึม AES
71
และผลลัพธที่ไดจากการคูณกันในมอดุโล X4+1 สามารถเขียนในรูปของสมการไดดังนี้
[S' 0,C , S' 1,C , S' 2,C , S' 3,C ] = [S 0,C , S 1,C , S 2,C , S 3,C ] [
⊕ w rNb + c ]
(5.10)
for 0 ≤ c ≤ Nb and 0 ≤ r ≤ Nr
72
state <-- in
state <-- AddRoundKey(state, w[0, Nb-1])
for round = 1 to (Nr–1) do
state <-- SubBytes(state)
state <-- ShiftRows(state)
state <-- MixColumns(state)
state <-- AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
state <-- SubBytes(state)
state <-- ShiftRows(state)
state <-- AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
out <-- state
รูปที่ 5.16 ขั้นตอนการเขารหัสลับ AES แสดงโดยรหัสเทียม
73
RCon[1] <-- 0x01000000
RCon[2] <-- 0x02000000
RCon[3] <-- 0x04000000
RCon[4] <-- 0x08000000
RCon[5] <-- 0x10000000
RCon[6] <-- 0x20000000
RCon[7] <-- 0x40000000
RCon[8] <-- 0x80000000
RCon[9] <-- 0x1B000000
RCon[10] <-- 0x36000000
for i = 0 to (Nk -1) do
w[i] <-- (k[4*i], k[4*i+1], k[4*i+2], k[4*i+3])
for i = Nk to (Nb * (Nr+1) -1) do
temp <-- w[i-1]
if (i mod Nk = 0)
then temp <-- SubWord(RotWord(temp)) xor Rcon[i/Nk]
else if (Nk > 6 and i mod Nk = 4)
then temp <-- SubWord(temp)
w[i] <-- w[i-Nk] xor temp
รูปที่ 5.17 กระบวนการขยายกุญแจของ AES แสดงโดยรหัสเทียม
วิธีทํา จากตารางที่ 5.13 กุญแจที่ใชมีขนาด 128 บิต ฉะนั้น AES จะทํางานในโหมด AES-128
ซึ่งมีคา Nk = 4, Nr = 10, Nb = 4 กุญแจยอยเริ่มตนขนาด 32 บิตจํานวน 4 คํา (Wi, i = 0-
3) คือ
W0 = 2B7E151616 W1 = 28AED2A616
W2 = ABF7158816 W3 = 09CF4F3C16
74
ตารางที่ 5.14 คาสถานะของกลุมกุญแจยอยในขั้นตอนขยายกุญแจ
75
ตัวอยางที่ 5.2 จงทําการเขารหัสลับโดยใชอัลกอริทึม AES กําหนดใหกลุมขอความตนฉบับขนาด 128
บิต มีคาเทากับ M = 32 43 F6 A8 88 5A 30 8D 31 31 98 A2 E0 37 07 34
กุญแจที่ใชในการเขารหัสลับขนาด 128 บิต มีคาเทากับ
K = 2B 7E 15 16 28 AE D2 A6 AB F7 15 88 09 CF 4F 3C
32 88 31 E0 2B 28 AB 09
input 43 5A 31 37 ⊕ 7E AE F7 CF
F6 30 98 07 15 D2 15 4F
A8 8D A2 34 16 A6 88 3C
19 A0 9A E9 D4 E0 B8 1E D4 E0 B8 1E 04 E0 48 28 A0 88 23 2A
1 3D F4 C6 F8 27 BF B4 41 BF B4 41 27 66 CB F8 06 ⊕ FA 54 A3 6C
E3 E2 8D 48 11 98 5D 52 5D 52 11 98 81 19 D3 26 FE 2C 39 76
BE 2B 2A 08 AE F1 E5 30 30 AE F1 E5 E5 9A 7A 4C 17 B1 39 05
A4 68 6B 02 49 45 7F 77 49 45 7F 77 58 1B DB 1B F2 7A 59 73
2 9C 9F 5B 6A DE DB 39 02 DB 39 02 DE 4D 4B E7 6B ⊕ C2 96 35 59
7F 35 EA 50 D2 96 87 53 87 53 D2 96 CA 5A CA B0 95 B9 80 F6
F2 2B 43 49 89 F1 1A 3B 3B 89 F1 1A F1 AC A8 E5 F2 43 7A 7F
AA 61 82 68 AC EF 13 45 AC EF 13 45 75 20 53 BB 3D 47 1E 6D
3 8F DD D2 32 73 C1 B5 23 C1 B5 23 73 EC 0B C0 25 ⊕ 80 16 23 7A
5F E3 4A 46 CF 11 D6 5A D6 5A CF 11 09 63 CF D0 47 FE 7E 88
03 EF D2 9A 7B DF B5 B8 B8 7B DF B5 93 33 7C DC 7D 3E 44 3B
48 67 4D D6 52 85 E3 F6 52 85 E3 F6 0F 60 6F 5E EF A8 B6 DB
4 6C 1D 3E 5F 50 A4 11 CF A4 11 CF 50 D6 31 C0 B3 ⊕ 44 52 71 0B
4E 9D B1 58 2F 5E C8 6A C8 6A 2F 5E DA 38 10 13 A5 5B 25 AD
EE 0D 38 E7 28 D7 07 94 94 28 D7 07 A9 BF 6B 01 41 4F 3B 00
E0 C8 D9 85 E1 E8 35 97 E1 E8 35 97 25 BD B6 4C D4 7C CA 11
5 92 63 B1 B8 4F FB C8 6c FB C8 6C 4F D1 11 3A 4C ⊕ D1 83 F2 F9
7F 63 35 BE D2 FB 96 AE 96 AE D2 FB A9 D1 33 C0 C6 9D B8 15
E8 C0 50 01 9B BA 53 7C 7C 9B BA 53 AD 68 8E B0 F8 87 BC BC
F1 C1 7C 5D A1 78 10 4C A1 78 10 4C 4B 2C 33 37 6D 11 DB CA
6 00 92 C8 B5 63 4F E8 D5 4F E8 D5 63 86 4A 9D D2 ⊕ 88 0B F9 00
6F 4C 8B D5 A8 29 3D 03 3D 03 A8 29 8D 89 F4 18 A3 3E 86 93
55 EF 32 0C FC DF 23 FE FE FC DF 23 6D 80 E8 D8 7A FD 41 FD
76
26 3D E8 FD F7 27 9B 54 F7 27 9B 54 14 46 27 34 4E 5F 84 4E
7 0E 41 64 D2 AB 83 43 B5 83 43 B5 AB 15 16 46 2A ⊕ 54 5F A6 A6
2E B7 72 8B 31 A9 40 3D 40 3D 31 A9 B5 15 56 D8 F7 C9 4F DC
17 7D A9 25 F0 FF D3 3F 3F F0 FF D3 BF EC D7 43 0E F3 B2 4F
5A 19 A3 7A BE D4 0A DA BE D4 0A DA 00 B1 54 FA EA B5 31 7F
8 41 49 E0 8C 83 3B E1 64 3B E1 64 83 51 C8 76 1B ⊕ D2 8D 2B 8D
42 DC 19 04 2C 86 D4 F2 D4 F2 2C 86 2F 89 6D 99 73 BA F5 29
B1 1F 65 0C C8 C0 4D FE FE C8 C0 4D D1 FF CD EA 21 D2 60 2F
EA 04 65 85 87 F2 4D 97 87 F2 4D 97 47 40 A3 4C AC 19 28 57
9 83 45 5D 96 EC 6E 4C 90 6E 4C 90 EC 37 D4 70 9F ⊕ 77 FA D1 5C
5C 33 98 B0 4A C3 46 E7 46 E7 4A C3 94 E4 3A 42 66 DC 29 00
F0 2D AD C5 8C D8 95 A6 A6 8C D8 95 ED A5 A6 BC F3 21 41 6E
EB 59 8B 1B E9 CB 3D AF E9 CB 3D AF D0 C9 E1 B6
10 40 2E A1 C3 09 31 32 2E 31 32 2E 09 ⊕ 14 EE 3F 63
F2 38 13 42 89 07 7D 2C 7D 2C 89 07 F9 25 0C 0C
1E 84 E7 D2 72 5F 94 B5 B5 72 5F 94 A8 89 C8 A6
39 02 DC 19
output 25 DC 11 6A
84 09 85 0B
1D FB 97 32
77
2. กระบวนการยอย InvSubBytes จะทําการแทนที่ไบตขอมูลที่อยูในสเตทโดยอางอิงจาก S-box
ผกผัน (Inverse S-box) ที่กําหนด ดังแสดงในรูปที่ 5.19
Y
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 52 09 6A D5 30 36 A5 38 BF 40 A3 9E 81 F3 D7 FB
1 7C E3 39 82 9B 2F FF 87 34 8E 43 44 C4 DE E9 CB
2 54 7B 94 32 A6 C2 23 3D EE 4C 95 0B 42 FA C3 4E
3 08 2E A1 66 28 D9 24 B2 76 5B A2 49 6D 8B D1 25
4 72 F8 F6 64 86 68 98 16 D4 A4 5C CC 5D 65 B6 92
5 6C 70 48 50 FD ED B9 DA 5E 15 46 57 A7 8D 9D 84
6 90 D8 AB 00 8C BC D3 0A F7 E4 58 05 B8 B3 45 06
7 D0 2C 1E 8F CA 3F 0F 02 C1 AF BD 03 01 13 8A 6B
X
8 3A 91 11 41 4F 67 DC EA 97 F2 CF CE F0 B4 E6 73
9 96 AC 74 22 E7 AD 35 85 E2 F9 37 E8 1C 75 DF 6E
A 47 F1 1A 71 1D 29 C5 89 6F B7 62 0E AA 18 BE 1B
B FC 56 3E 4B C6 D2 79 20 9A DB C0 FE 78 CD 5A F4
C 1F DD A8 33 88 07 C7 31 B1 12 10 59 27 80 EC 5F
D 60 51 7F A9 19 B5 4A 0D 2D E5 7A 9F 93 C9 9C EF
E A0 E0 3B 4D AE 2A F5 B0 C8 EB BB 3C 83 53 99 61
F 17 2B 04 7E BA 77 D6 26 E1 69 14 63 55 21 0C 7D
รูปที่ 5.19 การแทนที่ S-box ผกผัน
78
และผลลัพธที่ไดจากการคูณกันในมอดุโล X4+1 สามารถเขียนในรูปของสมการไดดังนี้
state <-- in
state <-- AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
for round = Nr-1 downto 1 do
state <-- InvShiftRows(state)
state <-- InvSubBytes(state)
state <-- AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
state <-- InvMixColumns(state)
state <-- InvShiftRows(state)
state <-- InvSubBytes(state)
state <-- AddRoundKey(state, w[0, Nb-1])
out <-- state
รูปที่ 5.20 ขั้นตอนการถอดรหัสลับของ AES แสดงโดยรหัสเทียม
79
5.8 คําถามทายบท
1. จงอธิบายความแตกตางระหวางตัวแปลงรหัสแบบดั้งเดิมกับตัวแปลงรหัสแผนใหม นักศึกษาคิดวาแบบ
ใดดีกวากัน เพราะเหตุใด ใหยกเหตุผลประกอบคําอธิบาย
2. จงอภิปรายถึงความแข็งแกรงของตัวแปลงรหัสแบบแทนที่ และตัวแปลงรหัสแบบสลับตําแหนง
นักศึกษาคิดวาแบบใดแข็งแกรงกวากัน เพราะเหตุใด ใหยกเหตุผลประกอบคําอธิบาย
3. ตัวแปลงรหัสสัมพรรค (Affine Cipher) จัดเปนตัวแปลงรหัสผลคูณ (Product Cipher) หรือไม เพราะ
เหตุใด ใหยกเหตุผลประกอบคําอธิบาย
4. จงอธิบายความแตกตางระหวาง ก) การทําใหสับสนและการแทนที่ ข) การแพรและการสลับตําแหนง
เมื่อนําฟงกชันทั้งสี่มาประยุกตใชงานในการเขารหัสลับ
5. อัลกอริทึม DES ใชกุญแจขนาด 56 บิต นักศึกษาคิดวามีความปลอดภัยเพียงพอตอการใชงานในปจจุบัน
หรือไม โดยเฉพาะความทนทานตอการโจมตีแบบตะลุย ถาไม กุญแจขนาดเทาใดจึงถือวามีความ
ปลอดภัยอยางพอเพียง ใหยกเหตุผลมาประกอบคําอธิบาย
80
บทที่ 6
อัลกอริทึมอสมมาตร ตอนหนึ่ง
6.1 บทนํา
ในการนําอัลกอริทึมสมมาตรไปประยุกตใชในระบบสื่อสารขอมูล ผูใชงานทั้งทางฝงผูรับและผูสง
จําเปนตองมีการแลกเปลี่ยนและเห็นชอบรวมกันถึงกุญแจที่จะใชในการเขาและถอดรหัสลับ กอนที่จะมีการ
แลกเปลี่ยนขอมูลที่เปนความลับระหวางกัน นอกจากนี้กุญแจที่ใช จําเปนตองเก็บรักษาเปนความลับระหวาง
ผูใชงานภายในกลุมเทานั้น ซึ่งอาจมีสองคนหรือมากกวาสองคนขึ้นไป ในกรณีที่ผูใชงานคนหนึ่งตองการ
ติดตอสื่อสารอยางเปนความลับกับผูใชงานคนอื่นๆ อีก 10 คน ผูใชงานคนนั้นจําเปนตองแลกเปลี่ยนและ
เห็นชอบที่จะใชกุญแจที่แตกตางกันกับผูใชงานทุกๆ คนถึง 10 ครั้ง และยังตองเก็บรักษากุญแจทั้ง 10 ดอก
เหลานั้นไวเปนความลับอยูตลอดเวลา มากกวานั้นเวลาที่จะติดตอสื่อสารกับใคร ผูใชงานคนนี้จําเปนตอง
คนหาหรือจําใหไดวาคนที่เขากําลังจะติดตอตองใชกุญแจดอกไหน ปญหาในลักษณะนี้เปนเรื่องของ การ
จัดการกุญแจ (Key Management) ในเครือขายระบบสื่อสาร ในทางปฏิบัติปญหาการจัดการกุญแจที่เกิดขึ้นจะ
มีความซับซอนมากกวานี้ โดยเฉพาะในกรณีที่ผูใชงานจําเปนตองติดตอกับบุคคลอื่นๆ เปนจํานวนมาก
แนวทางหนึ่งที่นํามาใชเพื่อหลีกเลี่ยงปญหาดังกลาวคือ การใชเทคนิคการเขารหัสลับที่ไมเปนความลับ (Non-
secret Encryption) ซึ่งไดมีการนําเสนอครั้งแรกในปคริสตศักราช 1970 โดยในระบบที่นําเสนอ ผูรับขอความ
รหัสที่เหมาะสมเทานั้นที่จะสามารถถอดรหัสลับ ขอความรหัสนั้นๆ ไดโดยไมจําเปนตองมีการแลกเปลี่ยน
กุญแจมากอน [ELLI70] เทคนิคนี้เปนที่รูจักกันในภายหลังในชื่อของ อัลกอริทึมอสมมาตร หรืออัลกอริทึม
กุญแจสาธารณะ หลังจากนั้นก็เริ่มมีการนําเสนออัลกอริทึมกุญแจสาธารณะแบบตางๆ โดยนักสรางรหัสลับทั่ว
โลก ความปลอดภัยของอัลกอริทึมเหลานั้นทั้งหมดจะขึ้นอยูกับความยากในการแกปญหาเชิงคณิตศาสตรที่
เปนสวนหนึ่งของทฤษฎีจํานวน (Number Theory)
6.2 ทฤษฎีคํานวณ
เนื่องจากการทํางานของอัลกอริทึมกุญแจสาธารณะอยูบนพื้นฐานการคํานวณทางคณิตศาสตร ในสวน
ของทฤษฎีจํานวน เราจําเปนตองศึกษาและทําความเขาใจเนื้อหาในบางสวนของทฤษฎีเหลานั้น เพื่อนําไปสู
ความเขาใจที่ดีขึ้นในกระบวนการทํางานของอัลกอริทึมกุญแจสาธารณะแบบตางๆ
81
6.2.1 เลขคณิตมอดุลาร
เลขคณิตมอดุลาร (Modular Arithmetic) หรือเลขคณิตสวนจําเพาะ จะมีรูปแบบดังนี้
a = b mod n (6.1)
หรือ a ≡ b (mod n) ถา a = b + kn
82
+ 0 b
1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 0
2 2 3 4 5 6 7 0 1
a 34 34 4
5
5
6
6
7
7
0
0
1
1
2
2
3
5 5 6 7 0 1 2 3 4
6 6 7 0 1 2 3 4 5
7 7 0 1 2 3 4 5 6
รูปที่ 6.1 ตัวอยางการบวกเลขในมอดุโล 8
x 0 b
1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7
2 0 2 4 6 0 2 4 6
a 34 00 3
4
6
0
1
4
4
0
7
4
2
0
5
4
5 0 5 2 7 4 1 6 3
6 0 6 4 2 0 6 4 2
7 0 7 6 5 4 3 2 1
รูปที่ 6.2 ตัวอยางการคูณเลขในมอดุโล 8
83
จากคุณสมบัติของ GF(P) ที่กลาวมาขางตน เราจึงสามารถคํานวณหาผลลัพธของเลขยกกําลังใน
GF(P) โดยมีคาหรือขนาดของผลลัพธที่จํากัดได เชน การคํานวณหาผลลัพธที่เปนเลขยกกําลังของ b มอดุโล n
ซึ่งเขียนในรูปสมการไดดังนี้
a = bx mod n (6.2)
วิธีทํา x = 89 mod 55
= ((82 mod 55)2 mod 55 . (82 mod 55)2 mod 55) . 8 mod 55
= ((9 mod 55) 2 . (9 mod 55) 2 mod 55) . 8 mod 55
= ((92 mod 55) . (92 mod 55) mod 55) . 8 mod 55
= ((26 mod 55) . (26 mod 55) mod 55) . 8 mod 55
= ((26 . 26) mod 55) . 8 mod 55
= (16 mod 55) . 8 mod 55
= (16 . 8) mod 55
= 18
84
6.2.2 ตัวหารรวมมาก
ตัวเลขจํานวนเต็ม 2 จํานวนจะเปนจํานวนเฉพาะสัมพันธ (Relatively Prime) ของกันและกัน ถา
ตัวเลขทั้งสองจํานวนนี้ไมมีตัวประกอบรวมกันนอกจาก 1 หรือตัวหารรวมมาก (Greatest Common Divisor,
gcd) ของจํานวนทั้งสองเทากับ 1 ฉะนั้นถากําหนดใหจํานวนทั้งสองคือ b และ n จะไดวา
วิธีทํา g0 = 91, g1 = 52
g2 = 91 mod 52 = 39
g3 = 52 mad 39 = 13
g4 = 39 mad 13 = 0
ดังนั้น gcd (52,91) = 13
85
6.2.3 ตัวผกผันการคูณในมอดุโล n
ในเลขคณิตสวนจําเพาะ การหาตัวผกผันการคูณ (Multiplicative Inverse) จะมีความซับซอนกวาเลข
คณิตทั่วๆ ไป ทั้งนี้เนื่องมาจากการคํานวณใน GF(n) ทุกๆ คาที่ไมเปนศูนยจะมีตัวผกผันเพียงคาเดียว (Unique
Inverse) ใหสังเกตวาถา n ไมเปนจํานวนเฉพาะ ทุกๆ คาที่ไมเปนศูนยในฟลดจํากัดอาจจะมีตัวผกผันหรือไมมี
ตัวผกผันก็ได ยกตัวอยางเชน ตัวผกผันของ 5 มอดุโล 14 คือ 3 เพราะ 5×3 mod 14 = 1 ดังนั้น 3 จึงมีคาเทากับ
5-1 mod 14 ในขณะที่ 2 จะไมมีตัวผกผันในมอดุโล 14 สามารถเขียนสมการที่ใชแสดงการหาตัวผกผันการคูณ
ในมอดุโล n ในรูปของ
ax ≡ 1 (mod n) (6.4)
โดยที่ x คือตัวผกผันการคูณของ a mod n
ax = nk + 1 (6.5)
อัลกอริทึมยุคลิคแบบขยายสามารถแสดงโดยใชรหัสเทียมไดดังนี้
86
ตัวอยางที่ 6.3 จงคํานวณหาตัวผกผันการคูณของ 3 mod 460
วิธีทํา g0 = 460 u0 = 1 v0 = 0
g1 = 3 u1 = 0 v1 = 1
i y g u v
0 - 460 1 0
1 - 3 0 1
2 460/3 =153 460 mod 3 = 1 1 -153
3 3/1 = 3 3 mod 1 = 0 -3 460
วิธีทํา g0 = 7 u0 = 1 v0 = 0
g1 = 3 u1 = 0 v1 = 1
i y g u v
0 - 7 1 0
1 - 3 0 1
2 7/3 = 2 7 mod 3 = 1 1 -2
3 3/1 = 3 3 mod 1 = 0 -3 7
87
ใหสังเกตวา ในกรณีที่ตองการหาตัวผกผันการคูณที่มีคานอยๆ เราอาจทําการคํานวณโดยใช
อัลกอริทึมยุคลิคแบบขยายในรูปแบบที่งายกวารูปแบบที่แสดงไวขางตนก็ได เชน การคํานวณหาตัวผกผันการ
คูณของ 3 mod 7 เราสามารถจัดใหอยูในรูปสมการ
ax = nk + 1 (6.6)
หรือ 3x = 7k + 1
88
ถา gcd (a,n) = 1, a∅(n) mod n = 1 (6.8)
89
6.2.4 ทฤษฎีบทเศษเหลือของชาวจีน
ในกรณีที่ n = p1 × p2 × …. pt เราสามารถใชทฤษฎีบทเศษเหลือของชาวจีน (Chinese Remainder
Theorem) ในการคํานวณหาคําตอบของระบบสมการ
x mod pi = ai (6.10)
โดยที่ i = 1, 2, … t และ x < n
14 mod 3 = 2
และ 14 mod 5 = 4
x ≡ a (mod p) (6.11)
x ≡ b (mod q) (6.12)
uq ≡ 1 mod p (6.13)
จากนั้นจึงทําการคํานวณหาคา x จากสมการ
90
ตัวอยางที่ 6.7 กําหนดให p = 7, q = 13, a = 3 และ b = 5 จงคํานวณหาคา x โดยที่ x ≡ a (mod p) และ x
≡ b (mod q) โดยใชทฤษฎีบทเศษเหลือของชาวจีน
91
6.3 ความซับซอนในการแกปญหาเชิงคณิตศาสตร
กอนที่จะศึกษาขั้นตอนการเขาและถอดรหัสลับรวมทั้งความปลอดภัยของอัลกอริทึมกุญแจสาธารณะ
แบบตางๆ เราจําเปนตองมีการนิยาม (Define) ความยากในการแกปญหาเชิงคณิตศาสตร หรือความซับซอนใน
เชิงคํานวณ (Computational Complexity) เสียกอน ซึ่งเนื้อหาที่จะกลาวถึงดังตอไปนี้ จัดเปนสวนหนึ่งของ
ทฤษฎีความซับซอน (Complexity Theory) เบื้องตน
โดยปกติ ปญหาในเชิงคณิตศาสตรใดๆ จะพิจารณาวามีความยาก ถาอัลกอริทึมที่เร็วที่สุดที่ใชในการ
แกปญหานั้นๆ ใชเวลานานมาก เมื่อเทียบกับขนาดของขอมูลนําเขา (Size of Input) เพื่อที่จะวิเคราะหวา
อัลกอริทึมหนึ่งๆ จะใชเวลาแกปญหานานแคไหน นักคณิตศาสตรจึงกําหนดแนวคิดของการคํานวณแบบเวลา
พหุนาม (Polynomial Time) และการคํานวณแบบเวลาชี้กําลัง (Exponential Time) ขึ้นมา ซึ่งโดยพื้นฐาน
อัลกอริทึมหนึ่งๆ จะมีการทํางานที่เร็วมากเมื่อเทียบกับขนาดของขอมูลนําเขา ถาอัลกอริทึมนั้นมีการคํานวณ
แบบเวลาพหุนาม และจะมีการทํางานที่ชามาก ถาอัลกอริทึมนั้นมีการคํานวณเวลาแบบชี้กําลัง จากที่นิยามไว
ขางตน เราอาจสรุปไดวา ปญหาเชิงคณิตศาสตรที่งาย จะตองการการคํานวณแบบเวลาพหุนาม ขณะที่ปญหา
เชิงคณิตศาสตรที่ยากจะตองการการคํานวณแบบเวลาชี้กําลัง
ใหสังเกตการใชประโยคที่วา “เมื่อเทียบกับขนาดของขอมูลนําเขา” ขางตน เนื่องจากทุกๆ ปญหา
สามารถคํานวณหาคําตอบไดแบบไมซับซอน ถาขนาดของขอมูลนําเขามีขนาดเล็ก เชน การบวกตัวเลข 4 กับ
14 จะไดผลลัพธเทากับ 18 ถือวาเปนการคํานวณที่ไมซับซอน เชนเดียวกันกับการแยกตัวประกอบตัวเลข 21
จะไดผลลัพธเทากับ 3×7 อยางไรก็ตาม การบวกถือเปนตัวอยางปญหาที่งาย เพราะอัลกอริทึมที่ใชในการบวก
จะมีการคํานวณแบบเวลาพหุนาม ซึ่งก็หมายความวา การบวกเลขสองจํานวนที่มีขนาดใหญมากๆ จะใชเวลาใน
การคํานวณไมนาน ในทางตรงขามกัน การแยกตัวประกอบถือเปนตัวอยางของปญหาที่ยาก เนื่องจากโดยปกติ
การแยกตัวประกอบตัวเลขที่มีขนาดใหญมากๆ จะใชเวลาในการคํานวณนานมาก ดังนั้นเมื่อมีการคนหาปญหา
ในเชิงคณิตศาสตรที่มีความยากมากๆ เพื่อนํามาสรางตัวแปลงรหัส นักสรางรหัสลับสวนใหญจึงมองไปที่
ปญหาในเชิงคณิตศาสตรที่อัลกอริทึมที่เร็วที่สุดที่มีอยูในปจจุบันยังตองใชเวลาในการคํานวณหาคําตอบเปน
แบบเวลาชี้กําลัง กลาวในเทอมกวางๆ ก็คือเวลาที่ใชในการคํานวณหาคําตอบ ยิ่งนานเทาไร ตัวแปลงรหัสที่อยู
บนพื้นฐานของปญหาในเชิงคณิตศาสตรนั้นๆ ก็จะมีความปลอดภัยมากยิ่งขึ้นเทานั้น
ในชวงหลายปที่ผานมา มีการคนพบจุดออนของอัลกอริทึมกุญแจสาธารณะหลายๆ แบบที่ไดนําเสนอ
ไวในอดีต และยังไดมีการพิสูจนอีกวา อัลกอริทึมกุญแจสาธารณะหลายๆ แบบไมเหมาะสมที่จะนํามาใชงาน
ในทางปฏิบัติ ทุกวันนี้ปญหาในเชิงคณิตศาสตรที่นํามาใชในอัลกอริทึมกุญแจสาธารณะที่คนทั่วไปพิจารณาวา
มีประสิทธิภาพ มีความปลอดภัยสูง และสามารถนํามาใชงานไดจริงในทางปฏิบัติมีอยู 2 รูปแบบ ระบบการ
เขารหัสลับที่อยูบนพื้นฐานของปญหาทั้ง 2 รูปแบบนั้นคือ ระบบลอการิทึมแบบไมตอเนื่อง (Discrete
Logarithm System) และระบบการแยกตัวประกอบจํานวนเต็ม (Integer Factorization System) ตัวอยางของ
92
อัลกอริทึมที่อยูบนพื้นฐานของปญหาในรูปแบบแรกคือ อัลกอริทึมขอตกลงกุญแจของ Diffie-Hellman
(Diffie-Hellman Key Agreement) และอัลกอริทึม El Gamal ตัวอยางของอัลกอริทึมที่อยูบนพื้นฐานของ
ปญหาในรูปแบบที่สองคือ อัลกอริทึม RSA (Ron Rivest, Adi Shamir and Leonard Adleman)
6.4 คําถามทายบท
1. จงบอกขอจํากัดพรอมคําอธิบายสั้นๆ ในการนําอัลกอริทึมกุญแจสาธารณะไปประยุกตใชงานจริงในทาง
ปฏิบัติ
2. จงคํานวณหาคา x โดยที่ x = 1215 mod 67
3. จงคํานวณหาตัวผกผันการคูณของ 5 mod 270
4. กําหนดให p = 7 และ q = 13 จงคํานวณหาตัวผกผันการคูณของ 11 mod pq โดยใชฟงกชันฟายออยเลอร
93
บทที่ 7
อัลกอริทึมอสมมาตร ตอนสอง
B = gy mod p (7.2)
นายแดงสงผลลัพธการคํานวณที่ไดใหกับนายดํา
94
4. นายดําคํานวณหาคาตัวเลขที่จะใชเปนกุญแจจากผลลัพธที่นายแดงมา
Sk = Bx mod p (7.3)
ซึ่งมีคาเทากับ gxy mod p
5. นายแดงคํานวณหาคาตัวเลขที่จะใชเปนกุญแจจากผลลัพธที่นายดําสงมา
Sk = Ay mod p (7.4)
ซึ่งมีคาเทากับ gxy mod p
95
ตัวอยางที่ 7.1 กําหนดให ตัวเลขจํานวนเฉพาะ p มีคาเทากับ 31 ตัวเลข g ซึ่งเปนคาปฐมฐานมอดุโล p มีคา
เทากับ 5 จงแสดงขั้นตอนการสรางกุญแจที่ใชรวมกันระหวางนายดํากับนายแดงโดยใช
อัลกอริทึมขอตกลงกุญแจของ Diffie-Hellman สมมติใหนายดําและนายแดงเลือกตัวเลขที่
เปนความลับ x = 5 และ y = 4 ตามลําดับ
วิธีทํา 1. เริ่มตนนายดําทําการคํานวณหาคา
A = gx mod p
= 55 mod 31
= (53 mod 31) . (52 mod 31) mod 31
= (1 . 25) mod 31
= 25
จากนั้นนายดําสงตัวเลขทั้งสาม p =31, g =5 และ A = 25 ใหกับนายแดง
2. นายแดงทําการคํานวณหาคา
B = gy mod p
= 54 mod 31
= (53 mod 31) . (51 mod 31) mod 31
= (1 . 5) mod 31
= 5
จากนั้นนายแดงสงตัวเลข B = 5 ใหกับนายดํา
3. นายดําคํานวณหาคากุญแจ
Sk = Bx mod p
= 55 mod 31
= (53 mod 31) . (52 mod 31) mod 31
= (1 . 25) mod 31
= 25
4. นายแดงคํานวณหาคากุญแจ
Sk = Ay mod p
= 254 mod 31
= (252 mod 31) . (252 mod 31) mod 31
96
= (625 mod 31) . (625 mod 31) mod 31
= (5 . 5) mod 31
= 25
เพื่อหาคา x หรือแกสมการ
97
รูปที่ 7.2 ขั้นตอนการสรางกุญแจรวมกันระหวางคนสามคน
โดยใชหลักการเดียวกัน อัลกอริทึมขางตนสามารถนําไปใชสรางกุญแจรวมกันระหวางกลุมคนที่มี
มากกวา 3 คนก็ได เพียงแตเพิ่มรอบและการคํานวณในขั้นตอนการแลกเปลี่ยนขอมูลเทานั้นเอง
y = gx mod p (7.7)
a = gk mod p (7.8)
b = yk m mod p (7.9)
98
3. เมื่อนายดําไดรับขอความรหัส a และ b ที่สงมาจากนายแดงแลว จะทําการถอดรหัสลับโดยการ
คํานวณหาคา m ดังนี้
99
a = gk (mod p)
= 57 mod 31
= 5
b = ykm (mod p)
= (57 . 19) mod 31
= (5 . 19) mod 31
= 2
ดังนั้นขอความรหัสของ m คือ {a = 5, b = 2} ในการถอดรหัสลับ เราจะคํานวณหาคา m
ดังตอไปนี้
m = b/ax mod p
= 2/57 mod 31
ซึ่งมีคาเทากับ 2 × ตัวผกผันของการคูณ 57 มอดุโล 31 หรือ
m = 2 . (57)-1 mod 31
x = a∅(n)-1 mod n
= (57)30-1 mod 31
= (57 mod 31)29 mod 31
= 529 mod 31
= ((57 mod 31) .(57 mod 31) . (57 mod 31) .
(57 mod 31) . 5) mod 31
= (5 . 5 . 5 . 5 . 5) mod 31
= 3125 mod 31
= 25
100
7.3 คําถามทายบท
1. จงแสดงขั้นตอนการสรางกุญแจที่จะใชรวมกันระหวางคนสี่คน โดยใชอัลกอริทึมขอตกลงกุญแจของ
Diffie-Hellman
2. จงยกตัวอยางการประยุกตใชงานอัลกอริทึมขอตกลงกุญแจของ Diffie-Hellman และอัลกอริทึม El
Gamal ในการเขาและถอดรหัสลับสําหรับขอความตนฉบับใดๆ ใหนักศึกษาเลือกคาตัวเลขที่เหมาะสม
ในการคํานวณ
3. จงอธิบายความแตกตางระหวางการคํานวณแบบเวลาพหุนามและการคํานวณแบบเวลาชี้กําลัง
101
บทที่ 8
อัลกอริทึมอสมมาตร ตอนสาม
102
อัลกอริทึมที่ใชในการถอดรหัสลับแสดงในรูปของสมการไดคือ
(p-1)(q-1) = 6 . 16
= 96 (2 . 2 . 2 . 2 . 2 . 3)
103
ed = 1 mod (p-1)(q-1)
5d = 1 mod 96
104
8.2 ระบบการเขารหัสลับเสนโคงเชิงวงรี
ในอดีตที่ผานมา ไดมีการศึกษาถึงความเปนไปไดในการนําเสนโคงเชิงวงรี (Elliptic Curve) แบบ
ตางๆ มาประยุกตใชในวิทยาการรหัสลับอยางมากมาย จนในปคริสตศักราช 1985 และ 1996 นักสรางรหัสลับ
Knblitz [KNBL85] และ Miller [MILL96] ไดนําเสนอถึงความเปนไปไดในการสรางระบบการเขารหัสลับเสน
โคงเชิงวงรี (Elliptic Curve Cryptosystem, ECC) ที่เปนรูปธรรม ถึงแมวานักวิจัยทั้งสองไมไดคิดคนพัฒนา
อัลกอริทึมใหมที่ใชเสนโคงเชิงวงรีเปนสวนประกอบ แตพวกเขาไดนําอัลกอริทึมกุญแจสาธารณะที่มีใชอยูใน
ปจจุบัน เชน อัลกอริทึมขอตกลงกุญแจของ Diffie-Hellman มาประยุกตใชรวมกับเสนโคงเชิงวงรี แนวคิดหรือ
วิธีการที่ไดนําเสนอไวก็คือ ใหทําการแทนที่จํานวนเต็มที่ใชในการคํานวณภายในมอดุโลจํานวนเฉพาะ ดวย
พิกัดจุดตางๆ ที่อยูบนเสนโคงเชิงวงรีแทน มากกวานั้น เราอาจเพิ่มความแข็งแกรงหรือความทนทานตอการ
โจมตีของระบบการเขารหัสลับเสนโคงเชิงวงรีได โดยทําการคํานวณตางๆ ภายในฟลดจํากัด หรือ GF(P)
เสนโคงเชิงวงรีสามารถแสดงในรูปของสมการ y2 + axy + by = x3 + cx2 + dx + e โดยที่ a, b, c, d
และ e เปนเลขจํานวนจริงที่ทําใหสมการเปนไปตามเงื่อนไข (Condition) ที่กําหนด เชน y2 = x3 - x หรือ y2 =
x3 + x + 1 [STAL98] ซึ่งเงื่อนไขที่กําหนดไวสําหรับการนําเสนโคงเชิงวงรีมาใชในวิทยาการรหัสลับก็คือ ถา
เราลากเสนตรงระหวางจุดพิกัด 2 จุดที่อยูบนเสนโคงเชิงวงรี เสนตรงนี้จะลากไปตัดกับเสนโคงเชิงวงรีอีกจุด
หนึ่ง ซึ่งเปนจุดพิกัดที่สามบนเสนโคงเชิงวงรีเสนเดียวกัน ทั้งนี้ในการคํานวณหาจุดพิกัดทั้ง 2 จุดแรกนั้น
จะตองทําภายในฟลดจํากัดที่เปนจํานวนเฉพาะ โดยปกติสมการเสนโคงเชิงวงรีที่มีคุณสมบัติขางตนสามารถ
แสดงในรูปของสมการไดคือ
y2 = x3 + ax + b (mop p) (8.4)
โดยที่ 4a3 + 27b2 (mod p) ≠ 0
105
1. นายดําเลือกตัวเลขสุม nA ซึ่งมีคานอยกวา n มาหนึ่งคา ตัวเลขนี้คือกุญแจสวนตัวของนายดําและตอง
เก็บเปนความลับ จากนั้นนายดําทําการคํานวณหาคากุญแจสาธารณะ PA = nA . G แลวสงผลลัพธที่
ไดใหกับนายแดง
2. นายแดงทําเหมือนนายดํา โดยเลือกตัวเลขสุม nB เพื่อใชเปนกุญแจสวนตัว ทําการคํานวณหาคากุญแจ
สาธารณะ PB = nB . G แลวสงผลลัพธที่ไดใหกับนายดํา
3. นายดําคํานวณหาคากุญแจที่ใชรวมกัน Sk = nA . PB ขณะที่นายแดงก็คํานวณหา Sk = nB . PA
nA . PB = nA . ( nB . G) = nB . ( nA . G) = nB . PA (8.5)
จุดเดนของการนําเสนโคงเชิงวงรีมาประยุกตใชงานก็คือ การแกปญหาลอการิทึมแบบไมตอเนื่องบน
เสนโคงเชิงวงรีในปจจุบันนั้น ถึงจะใชวิธีการที่ดีที่สุดที่มีอยู ก็ยังคงตองใชเวลาในการแกปญหานานกวาเวลาที่
ใชในการแกปญหาแบบเดียวกันภายในมอดุโลจํานวนเฉพาะเปนอันมาก หรือพูดอีกนัยหนึ่งก็คือ ระบบการ
เขารหัสลับที่ใชการคํานวณดวยพิกัดจุดตางๆ ที่อยูบนเสนโคงเชิงวงรีภายในฟลดจํากัด จะใหคาความ
แข็งแกรงตอจํานวนบิตที่ใช สูงกวาการคํานวณดวยเลขจํานวนเต็ม มอดุโลจํานวนเฉพาะภายในฟลดเดียวกัน
ยกตัวอยางเชน ระดับความแข็งแกรงของระบบการเขารหัสลับเสนโคงเชิงวงรีที่มีกุญแจขนาด 163 บิตจะมีคา
เทียบเทากับอัลกอริทึม RSA ที่ใชกุญแจขนาด 1024 บิต [ELLI70] นอกจากความปลอดภัยที่เพิ่มขึ้นจากการ
ใชระบบการเขารหัสลับเสนโคงเชิงวงรีแลว ความซับซอนเชิงคํานวณของระบบยังมีคาต่ํามากๆ เมื่อเทียบกับ
อัลกอริทึมกุญแจสาธารณะแบบอื่นๆ ตารางที่ 8.1 แสดงขนาดของกุญแจที่ใหความทนทานตอการโจมตี
เทียบเทากันระหวางระบบการเขารหัสลับเสนโคงเชิงวงรี (ECC) และอัลกอริทึม RSA
106
8.3 คําถามทายบท
1. จงยกตัวอยางการประยุกตใชงานอัลกอริทึม RSA ในการเขาและถอดรหัสลับสําหรับขอความตนฉบับ
ใดๆ ใหนักศึกษาเลือกคาตัวเลขที่เหมาะสมในการคํานวณ
2. จงอธิบายถึงแนวคิดในการนําปญหาเชิงคณิตศาสตรมาประยุกตใชเพื่อสรางอัลกอริทึมกุญแจสาธารณะ
แบบตางๆ นักศึกษาคิดวาแนวคิดดังกลาวสามารถนํามาประยุกตใชเพื่อสรางอัลกอริทึมสมมาตรได
หรือไม อยางไร ใหยกตัวอยางประกอบ
3. จงอภิปรายถึงจุดเดน และจุดดอยในการนําปญหาเชิงคณิตศาสตรที่มีความยากมากๆ มาประยุกตใชเพื่อ
สรางอัลกอริทึมกุญแจสาธารณะ นักศึกษาคิดวาจะแกไขจุดดอยเหลานั้นไดอยางไร
107
บทที่ 9
ฟงกชันแฮชและลายมือชื่อดิจิทัล ตอนหนึ่ง
9.1 ฟงกชันแฮชทางเดียว
ฟงกชันทางเดียว (One-way Function) คือฟงกชันพื้นฐานที่สําคัญที่สุดที่นํามาใชในการออกแบบ
ระบบการเขารหัสลับกุญแจสาธารณะ ฟงกชันทางเดียวก็คือ ฟงกชันใดๆ ที่มีความงายในการคํานวณหา
คําตอบไปในทิศทางเดียว และมีความยากมากๆ ในการคํานวณหาคําตอบในทิศทางกลับกัน ยกตัวอยางเชน ถา
กําหนดคา x มา เราจะคํานวณหาคา f(x) ไดอยางงายดาย แตถากําหนด f(x) มาแทน จะเปนการยากมากๆ ที่จะ
คํานวณหาคา x คําวา “ยาก” ในที่นี้หมายถึง เราตองใชเวลานานและทรัพยากรจํานวนมากในการคํานวณหา
คําตอบ การทําแกวน้ําใหแตกก็เปรียบเสมือนกับฟงกชันทางเดียว เพราะการทําแกวน้ําใหแตกนั้นงายมาก เพียง
แคขวางไปที่พื้นก็ไดผลลัพธคือแกวที่แตกแลว แตจากเศษแกวที่แตก ถาจะนํามาประกอบกันใหมใหกลับมา
เปนแกวน้ําเหมือนเดิมนั้นยากมากๆ จากคุณลักษณะของฟงกชันทางเดียวที่กลาวมาขางตน จึงไดมีการนําเอา
แนวคิดของฟงกชันทางเดียวมาประยุกตใชในระบบการเขารหัสลับกุญแจสาธารณะ กลาวคือ ถากําหนดกุญแจ
สาธารณะมาให เราสามารถทําการเขารหัสลับขอความตนฉบับใดๆ ไดอยางงายดาย แตถากําหนดขอความ
รหัสมาให จะเปนการยากมากๆ ที่จะคํานวณหาขอความตนฉบับหรือกุญแจสวนตัวเพื่อใชในการถอดรหัสลับ
ในดานวิทยาการคอมพิวเตอร ไดมีการนําเอาฟงกชันแฮช (Hash Function) มาประยุกตใช อยาง
กวางขวางตั้งแตยุคแรกๆ ฟงกชันแฮช คือฟงกชันใดๆ ที่จะแปลงผัน (Convert) กลุมบิตนําเขาที่มีขนาดความ
ยาวแปรเปลี่ยนได (Variable Length) ไปเปนกลุมบิตสงออกที่มีขนาดความยาวคงที่ (Fixed-length) เรียกวา
คาแฮช (Hash Value) ตัวอยางของฟงกชันแฮชแบบงายๆ ก็คือ ฟงกชนั ที่รับกลุมบิตนําเขาขนาดใดๆ เขาไป
และใหผลลัพธขนาด 1 ไบตที่เกิดจากการออรเฉพาะของทุกๆ ไบตในกลุมบิตนําเขานั้นๆ จุดประสงคในการ
คํานวณหาคาแฮชในที่นี้ก็เพื่อเปนตัวบงชี้วา กลุมบิตนําเขาที่กําลังพิจารณาอยู มีโอกาสที่จะเปนกลุมบิตนําเขา
ตัวเดียวกันกับที่ใหผลลัพธเปนคาแฮชที่กําหนดไวหรือไม เนื่องจากฟงกชันแฮชเปนฟงกชันหลายตอหนึ่ง
(Many-to-one) เราจึงไมสามารถบอกไดวากลุมบิตนําเขาทั้งสองเปนกลุมบิตกลุมเดียวกัน แมวากลุมบิตนําเขา
ที่กําลังพิจารณาอยูจะใหผลลัพธเปนคาแฮชที่เหมือนกัน แตอยางนอยเราก็สามารถเชื่อมั่นไดในระดับหนึ่งวา
กลุมบิตนําเขาทั้งสองนาจะเปนตัวเดียวกัน
ฟงกชันแฮชทางเดียว (One-way Hash Function) ก็คือฟงกชันแฮชใดๆ ที่มีความงายในการ
คํานวณหาคาแฮชจากกลุมบิตนําเขาใดๆ แตมีความยากในการคํานวณหากลุมบิตนําเขาใดๆ ที่จะใหผลลัพธ
เปนคาแฮชตามที่กําหนดไว ฟงกชันแฮชทีย่ กตัวอยางไวขางตนไมถือเปนฟงกชันแฮชทางเดียว เนือ่ งจากการ
หากลุมบิตนําเขาใดๆ ที่ใหผลลัพธเปนคาแฮชที่กําหนดไว สามารถทําไดอยางงายดาย ฟงกชันแฮชทางเดียว
108
ที่ดีจะมีคณ
ุ สมบัติที่เรียกวา ปลอดการชน (Collision-free) กลาวคือ จะเปนการยากมากๆ ที่จะหากลุม บิต
นําเขา 2 กลุมบิตที่จะใหผลลัพธเปนคาแฮชตัวเดียวกันได
โดยปกติกลไกการทํางานภายในฟงกชันแฮชทางเดียวจะมีการเปดเผยตอคนทั่วๆ ไป ความปลอดภัย
ของตัวฟงกชนั แฮชทางเดียวจึงขึ้นอยูกับความเปนทางเดียว (One-wayness) ของตัวฟงกชนั เอง ฟงกชัน
แฮชทางเดียวที่ดีควรมีลักษณะที่วา กลุมบิตสงออกจะไมขนึ้ อยูกับกลุมบิตนําเขาในลักษณะที่สามารถ
สังเกตเห็นได นอกจากนี้การเปลี่ยนแปลงบิตใดๆ ในกลุมบิตนําเขาเพียง 1 บิต จะสงผลตอการเปลี่ยนแปลง
จํานวนบิตในคาแฮชโดยเฉลี่ยครึ่งหนึ่ง ฉะนั้นในทางอุดมคติ ถากําหนดคาแฮชมาให จึงแทบเปนไปไมได
ในทางคํานวณเลยที่จะคนหากลุมบิตนําเขาใดๆ ที่ใหผลลัพธเปนคาแฮชนั้นๆ ฟงกชันแฮชทางเดียวสามารถ
เขียนแสดงใหอยูในรูปของสมการไดดังนี้
h = H(M) (9.1)
โดยที่ H(.) คือฟงกชันแฮชทางเดียว
M คือขอความตนฉบับที่มีขนาดความยาวแปรเปลี่ยนได
h คือคาแฮชที่มีขนาดความยาวคงที่
ลักษณะของฟงกชันแฮชทางเดียวที่แตกตางจากฟงกชันแบบอื่นๆ สามารถสรุปไดดังนี้
1. ถากําหนดคา M มา จะมีความงายในการคํานวณหาคา h
2. ถากําหนดคา h มา จะมีความยากมากๆ ในการคํานวณหาคา M ที่ทําให H(M) = h
3. ถากําหนดคา M มา จะมีความยากมากๆ ในการคํานวณหาคา M’ ที่ทําให H(M) = H(M’)
จากคุณลักษณะของฟงกชันแฮชทางเดียวที่กลาวมาขางตน เราสามารถนําฟงกชันแฮชทางเดียวไป
ประยุกตใชในการสื่อสารขอมูล โดยเฉพาะการนําไปใชในการตรวจสอบความเปนบูรณภาพของขอมูล
(Data Integrity) ยกตัวอยางเชน ในกรณีที่เราตองการจะพิสูจนวาใครคนหนึ่งมีไฟลขอมูลเหมือนกับที่เรามี
หรือไม โดยไมตองการใหคนๆ นั้นสงไฟลดังกลาวมาใหเราผานทางชองทางสื่อสารที่ไมปลอดภัย เราอาจ
ทําไดโดยใหคนๆ นั้นสงคาแฮชของไฟลขอมูลมาให จากนั้นจึงทําการเปรียบเทียบคาแฮชของไฟลขอมูล
นั้นๆ กับคาแฮชของไฟลขอมูลที่เรามี ถาคาทั้งสองตรงกัน เราอาจสรุปในเบื้องตนไดวา คนๆ นั้นจะมี
ไฟลขอมูลตัวเดียวกับที่เรามีอยูจริง
109
ในการนําฟงกชันแฮชทางเดียวไปประยุกตใชกับขอความตนฉบับที่มีความยาวมากกวาคาแฮช เรา
จําเปนตองแบงขอความตนฉบับนั้นๆ (M) ออกเปนกลุมบิต (Block of Bits) ขนาดคงที่หลายๆ กลุมบิต (Mi, i
= 1, 2, …) แลวทําการคํานวณหาคาแฮชผลลัพธ โดยใชแนวคิดที่วา ผลลัพธของคาแฮช (hi) ที่ไดจะคํานวณ
มาจากกลุมบิตนําเขา (Mi) และผลลัพธของคาแฮชกอนหนานั้น (hi-1) ดูรูปที่ 9.2 ประกอบซึ่งเขียนในรูปของ
สมการไดดังนี้
hi = f(Mi,hi-1) (9.2)
โดยที่ i คือ เลขจํานวนเต็มใดๆ มีคา เทากับ 1, 2, 3, .....
ในปจจุบนั ไดมีผูคิดคนอัลกอริทึมที่มีคุณลักษณะเหมือนกับฟงกชันแฮชทางเดียวขึ้นอยางมากมาย
ตัวอยางของอัลกอริทึมที่คนทั่วโลกยอมรับ และไดมีการนําไปประยุกตใชงานกันอยางแพรหลายก็คือ MD5
และ SHA-1 อัลกอริทึม MD5 ไดรับการปรับปรุงและพัฒนามาจากอัลกอริทึม MD4 ในปคริสตศักราช 1991
โดย Ron Rivest [RIVE98] ซึ่งจะใหผลลัพธเปนคาแฮชขนาด 128 บิตจากกลุมบิตนําเขาขนาดใดๆ คําวา
MD ยอมาจาก Message Digest ซึ่งหมายถึง “ขอความยอย” ขณะที่อัลกอริทึม SHA-1 ไดรับการคิดคน
พัฒนาขึ้นในปคริสตศักราช 1993 โดย NIST (National Institute of Standards and Technology) และ
NSA (National Security Agency) ซึ่งจะใหผลลัพธเปนคาแฮชขนาด 160 บิตจากกลุมบิตนําเขาขนาดใดๆ
ใหสังเกตวา SHA-1 เปนเพียงอัลกอริทึมหนึ่งในชุดอัลกอรึทึมแฮชที่ประกอบไปดวย 4 อัลกอริทึม SHA
(Secure Hash Algorithms) คือ SHA-1, SHA-256, SHA-384 และ SHA-512 ลักษณะเฉพาะ
(Characteristics) ของอัลกอริทึมทั้ง 4 ไดสรุปไวในตารางที่ 9.1
ที่มา Secure Hash Signature Standard (SHS), FIPS PUB 180-2, 2002 [FIPS02]
110
9.2 อัลกอริทึม MD5
ในการทํางานของอัลกอริทึม MD5 จะมีการแบงขอความตนฉบับขนาดใดๆ ออกเปนกลุมบิต
หลายๆ กลุมบิตที่มีขนาด 512 บิตตามลําดับ แตละกลุมบิตนี้จะถูกแบงยอยออกเปน 16 กลุมยอย (Sub-
block) กลุมบิตยอยละ 32 บิต และเมื่อผานการดําเนินการตามที่กําหนดไวในอัลกอริทึม MD5 จนครบแลว
จะใหผลลัพธเปนเซตของกลุมบิตยอยขนาด 32 บิต จํานวน 4 กลุม เพือ่ นํามารวมกันเปนคาแฮชผลลัพธ
ขนาด 128 บิต รูปที่ 9.3 แสดงขั้นตอนการจัดเตรียมกลุมบิตนําเขาสําหรับอัลกอริทึม MD5
จากรูป ขอความตนฉบับที่จะนํามาคํานวณหาคาแฮชจะถูกเสริมเต็ม (Padding) ใหมจี ํานวนบิต
เทากับ 448 mod 512 บิต การเสริมเต็มนี้จะกระทํากับกลุม บิตนําเขากลุม สุดทายเสมอ โดยการเติมบิต 1 ตอ
เขาไปที่ตอนทายจํานวน 1 บิต จากนัน้ ก็เติมบิต 0 ตอเขาไปเรื่อยๆ จนทําใหกลุมบิตนําเขากลุมสุดทายมี
ขนาด 448 บิต ทั้งนี้เพื่อทําใหกลุมบิตนําเขากลุมสุดทายนี้มีขนาด 512 บิต เราจะเติมขอมูลที่เปนตัวเลขขนาด
64 บิตที่แสดงถึงความยาว (Length) ของขอความตนฉบับในหนวยของบิตลงไป การเสริมเต็มทั้งสอง
ขั้นตอนนี้จะทําใหขอความตนฉบับมีจํานวนบิตโดยรวมเปนจํานวนเทาของ 512 ในกรณีที่ขอความตนฉบับ
เดิมมีจํานวนบิตเปนจํานวนเทาของ 512 อยูแลว กลุมบิตนําเขากลุมสุดทายจะประกอบไปดวย 10, 01, 02, 03,
..... 0448 ตามดวยตัวเลขขนาด 64 บิต ที่แสดงคาของจํานวนบิตที่มีอยูในขอความตนฉบับ เมื่อมีการแบง
ขอความตนฉบับออกเปนกลุมๆ ละ 512 บิตแลว อัลกอริทึม MD5 จะเริ่มคํานวณหาคาแฮช ตามขั้นตอนที่
แสดงในรูปที่ 9.4
111
รูปที่ 9.4 ขั้นตอนการคํานวณหาคาแฮชของอัลกอริทึม MD5
A = 01 23 45 6716
B = 89 AB CD EF16
C = FE DC BA 9816
D = 76 54 32 1016
คาที่เก็บอยูในตัวแปรทั้งสี่นจี้ ะถูกคัดลอกลงในตัวแปรใหมอีก 4 ตัวคือ a, b, c และ d เพื่อใชในการ
คํานวณ โดยที่ a = A, b = B, c = C และ d = D จากรูป ขั้นตอนการคํานวณหาคาแฮชสําหรับกลุมบิต
นําเขาขนาด 512 บิตจะประกอบไปดวย รอบการทํางาน (Round) ที่เหมือนกัน 4 รอบ โดยแตละรอบจะมี
การดําเนินการที่แตกตางกัน 16 ครั้ง การดําเนินการแตละครั้งจะกระทําในรูปของฟงกชันที่ไมเปนเชิงเสน
ของตัวแปร 3 ตัวที่เลือกมาจากตัวแปรที่มีอยู 4 ตัว คือ a, b, c และ d ผลลัพธที่ไดจะนําไปบวกกับ
(1) ตัวแปรอีกตัวที่ไมถูกเลือก
(2) กลุมบิตยอยของขอความตนฉบับ Mj และ
(3) คาคงที่ ti
112
ฟงกชันที่ไมเปนเชิงเสนของตัวแปร 3 ตัวที่ใชในการคํานวณหาคาแฮชจะมีอยู 4 รูปแบบคือ
113
จากที่กลาวมาขางตน อัลกอริทึม MD5 จะมีรอบการทํางาน 4 รอบ แตละรอบจะมีการดําเนินการที่
แตกตางกัน 16 ครั้ง ซึ่งการดําเนินการทั้ง 16×4 ครั้งนั้น สามารถแสดงในรูปของความสัมพันธไดดังนี้
รอบที่ 1 รอบที่ 2
FF (a, b, c, d, M0, 7, D76AA47816) GG (a, b, c, d, M1, 5, F61E256216)
FF (d, a, b, c, M1,12, E8C7B75616) GG (d, a, b, c, M6, 9, C040B34016)
FF (c, d, a, b, M2,17, 242070DB16) GG (c, d, a, b, M11, 14, 265E5A5116)
FF (b, c, d, a, M3,22, C1BDCEEE16) GG (b, c, d, a, M0, 20, E9B6C7AA16)
FF (a, b, c, d, M4, 7, F57C0FAF16) GG (a, b, c, d, M5, 5, D62F105D16)
FF (d, a, b, c, M5, 12, 4787C62A16) GG (d, a, b, c, M10, 9, 0244145316)
FF (c, d, a, b,M6, 17, A830461316) GG (c, d, a, b, M15, 14,D8A1E68116)
FF (b, c, d, a, M7, 22, FD46950116) GG (b, c, d, a, M4, 20, E7D3FBC816)
FF (a, b, c, d, M8, 7, 698098D816) GG (a, b, c, d, M9, 5, 21E1CDE616)
FF (d, a, b, c, M9,12, 8B44F7AF16) GG (d, a, b, c, M14, 9, C33707D616)
FF (c, d, a, b, M10,17, FFFF5BB116) GG (c, d, a, b, M3, 14, F4D50D8716)
FF (b, c, d, a, M11,22, 895CD7BE16) GG (b, c, d, a, M8, 20, 455A14ED16)
FF (a, b, c, d, M12, 7, 6B90112216) GG (a, b, c, d, M13, 5, A9E3E90516)
FF (d, a, b, c, M13,12, FD98719316) GG (d, a, b, c, M2, 9, FCEFA3F816)
FF (c, d, a, b, M14,17, A679438E16) GG (c, d, a, b, M7, 14, 676F02D916)
FF (b, c, d, a, M15,22, 49B4082116) GG (b, c, d, a, M12, 20, 8D2A4C8A16)
รอบที่ 3 รอบที่ 4
HH (a, b, c, d, M5, 4, FFFA394216) II (a, b, c, d, M0, 6, F429224416)
HH (d, a, b, c, M8, 11, 8771F68116) II (d, a, b, c, M7, 10, 423AFF9716)
HH (c, d, a, b, M11, 16, 6D9D612216) II (c, d, a, b, M14, 15, AB9423A716)
HH (b, c, d, a, M14, 23, FDE5380C16) II (b, c, d, a, M5, 21, FC93A03916)
HH (a, b, c, d, M1, 4, A4BEEA4416) II (a, b, c, d, M12, 6, 655B59C316)
HH (d, a, b, c, M4, 11, 4BDECFA916) II (d, a, b, c, M3, 10, 8F0CCC9216)
HH (c, d, a, b, M7, 16, F6BB4B6016) II (c, d, a, b, M10,15, FFEFF47D16)
HH (b, c, d, a, M10, 23, BEBFBC7016) II (b, c, d, a, M1, 21, 85845DD116)
HH (a, b, c, d, M13, 4, 289B7EC616) II (a, b, c, d, M8, 6, 6FA87E4F16)
HH (d, a, b, c, M0, 11, EAA127FA16) II (d, a, b, c, M15, 10, FE2CE6E016)
HH (c, d, a, b, M3, 16, D4EF308516) II (c, d, a, b, M6, 15, A301431416)
HH (b, c, d, a, M6, 23, 04881D0516) II (b, c, d, a, M13, 21, 4E0811A116)
HH (a, b, c, d, M9, 4, D9D4D03916) II (a, b, c, d, M4, 6, F7537E8216)
HH (d, a, b, c, M12, 11, E6DB99E516) II (d, a, b, c, M11,10, BD3AF23516)
HH (c, d, a, b, M15, 16, 1FA27CF816) II (c, d, a, b, M2, 15, 2AD7D2BB16)
HH (b, c, d, a, M2, 23, C4AC566516) II (b, c, d, a, M9, 21, EB86D39116)
114
เมื่อดําเนินการครบ 16 ครั้งแลว คาที่อยูในตัวแปร a, b, c และ d จะนํามาบวกรวมกับคาที่เก็บไวใน
ตัวแปร A, B, C และ D ตามลําดับ ดูรูปที่ 9.4 ประกอบ จากนั้นอัลกอริทึม MD5 จะเริ่มการคํานวณหาคา
แฮชสําหรับกลุมบิตนําเขาขนาด 512 บิตกลุมที่สองตอไป ขั้นตอนการทํางานจะดําเนินไปในลักษณะนี้จน
กระทั้งครบทุกกลุมบิตนําเขา คาที่เก็บไวในตัวแปร A, B, C และ D ที่ไดเปนครั้งสุดทาย จะนํามาตอรวมกัน
(Concatenation) เพื่อสรางคาแฮชผลลัพธขนาด 128 บิต
ตัวอยางการคํานวณหาคาแฮชโดยใชอัลกอริทึม MD5 และขอความตนฉบับแบบตางๆ สามารถ
แสดงไดดังนี้ [RIVE98]
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
A = 67 45 23 0116
B = EF CD AB 8916
C = 98 BA DC FE16
D = 10 32 54 7616
E = C3 D2 E1 F016
115
ft (X ,Y, Z) = (X AND Y) OR ((NOT X) AND Z), สําหรับ t = 0 ถึง 19
ft (X ,Y, Z) = X XOR Y XOR Z , สําหรับ t = 20 ถึง 39
ft (X ,Y, Z) = (X AND Y) OR (X AND Z) OR (Y AND Z), สําหรับ t = 40 ถึง 59
ft (X ,Y, Z) = X XOR Y XOR Z , สําหรับ t = 60 ถึง 79
Wt = Mt , สําหรับ t = 0 ถึง 15
Wt = (Wt-3 XOR Wt-8 XOR Wt-14 XOR Wt-16) <<< 1, สําหรับ t =16 ถึง 79
For t = 0 to 79
TEMP = (a <<< 5) + ft (b, c, d) + e + Wt + Kt
e=d
d=c
c = b <<< 30
b=a
a = TEMP
116
รูปที่ 9.6 แผนผังการดําเนินการ 1 รอบการทํางานของอัลกอริทึม SHA-1
9.4 การโจมตีแบบวันเกิด
การโจมตีเพื่อทําใหฟงกชันแฮชมีจุดออน อาจทําไดโดยใชการคนหาอยางละเอียด หรือการโจมตี
แบบตะลุย ซึ่งสามารถแบงออกเปนสองลักษณะ ในลักษณะแรก จะเปนการกําหนดคาแฮชของขอความ
ตนฉบับ H(M) มา ผูโจมตีจะตองหาหรือสรางขอความตนฉบับใหม M’ ที่ใหผลลัพธเปนคาแฮชที่เหมือนกับ
คาแฮชของขอความตนฉบับเดิม, H(M) = H(M’), สําหรับการโจมตีในลักษณะที่สอง ผูโจมตีจะตองคนหา
ขอความตนฉบับแบบสุมขึ้นมา 2 ขอความ, M และ M’, ซึ่งใหผลลัพธเปนคาแฮชที่เหมือนกัน เนื่องจากคา
แฮชมีขนาดความยาวที่จํากัด เชน 128 บิตหรือ 160 บิต ขณะที่ขอความตนฉบับสวนใหญมักจะมีขนาดความ
ยาวมากกวาคาแฮช จึงมีความเปนไปไดทขี่ อความตนฉบับ 2 ขอความที่เลือกขึ้นมาแบบสุมจะใหคาแฮช
ผลลัพธที่ตรงกัน ซึ่งเปรียบเสมือนกับการหาบุคคล 2 คนที่เกิดวันเดียวกันจากกลุมคนจํานวนมาก
ปริทัศนวันเกิด (Birthday Paradox) จัดเปนปญหามาตรฐานทางดานสถิติศาสตร (Statistics)
ปญหาหนึ่ง ยกตัวอยางเชน จะตองมีคนอยูภ ายในหองๆ หนึ่งเปนจํานวนเทาใดทีจ่ ะทําใหการเลือกคนแบบ
สุมคนหนึ่งออกมาแลวมีวันเกิดตามที่กําหนดไว มีความนาจะเปนมากกวาครึ่งหนึ่งหรือมากกวา 0.5 หรืออีก
หนึ่งตัวอยางเชน จะตองมีคนอยูภายในหองๆ หนึ่งเปนจํานวนเทาใดที่ทําใหการเลือกคนแบบสุมสองคน
117
ออกมาแลวสองคนนั้นมีวันเกิดตรงกัน มีความนาจะเปนมากกวาครึ่งหนึ่งหรือมากกวา 0.5 ตัวอยางแรกจะ
เปรียบเสมือนกับการโจมตีฟงกชันแฮชทางเดียวในลักษณะที่หนึ่ง ขณะที่ตวั อยางหลังจะเปรียบเสมือนการ
โจมตีฟงกชันแฮชทางเดียวในลักษณะที่สอง ซึ่งการโจมตีในลักษณะทีส่ องนี้จะเปนที่รูจักกันในชือ่ การ
โจมตีแบบวันเกิด (Birthday Attack)
ในการหาคําตอบของตัวอยางแรก เราจะสมมติใหคาแฮชที่เกิดจากขอความตนฉบับใดๆ มีรปู แบบ
ของบิตที่เปนไปไดทั้งสิ้น n รูปแบบ เราตองการหาจํานวนขอความตนฉบับในฐานขอมูลที่นอยที่สุดที่ทําให
การเลือกขอความตนฉบับแบบสุมขึ้นมาหนึ่งขอความจากฐานขอมูล เพื่อคํานวณหาคาแฮช แลวใหผลลัพธ
เปนคาแฮชตามที่กําหนด มีคาความนาจะเปนมากกวา 0.5
โดยการกําหนดใหคาแฮชทีต่ องการหาคือ H(x) คาแฮชที่ไดจากขอความตนฉบับที่เลือกมาแบบสุม
จากฐานขอมูลคือ H(y) ถาภายในฐานขอมูลประกอบไปดวยขอความเพียง 1 ขอความเทานั้น ความนาจะเปน
ที่ H(x) = H(y) จะมีคาเทากับ 1/n ในทางกลับกันความนาจะเปนที่ H(x) ≠ H(y) จะเทากับ 1-1/n ในทํานอง
เดียวกัน ถาฐานขอมูลประกอบไปดวยขอความตนฉบับจํานวน k ขอความ ความนาจะเปนที่คาแฮชของ
ขอความตนฉบับทั้งหมดไมตรงกับ H(x) ก็คือ ผลคูณของความนาจะเปนที่คาแฮชของขอความตนฉบับแต
ละขอความไมตรงกับ H(x) นั่นเอง ซึ่งจะมีคาเทากับ (1-1/n)k ดังนั้นความนาจะเปนที่คาแฮชของขอความ
ตนฉบับใดขอความหนึ่งจะตรงกับ H(x) จึงมีคาเทากับ 1 - (1-1/n)k
จากทฤษฎีบททวินาม (Binomial Theorem) ที่กลาวไววา
k (k - 1 ) 2 k (k - 1 )( k - 2 ) 3
(1 − a ) k = 1 - ka +
2!
a −
3!
a ...... (9.3)
k = 2m/2 (9.4)
= 2m-1
= 2128-1
= 2127
ซึ่งหมายความวา ภายในฐานขอมูลจะตองประกอบไปดวยขอความตนฉบับเปนจํานวนอยางนอย
2127 ขอความนั่นเอง การคํานวณหาคําตอบในลักษณะนี้ จะนําไปใชในการหาจํานวนครั้งโดยเฉลี่ยของการ
โจมตีแบบตะลุยที่จะทําใหการโจมตีประสบความสําเร็จ ยกตัวอยางเชน ในการคนหากุญแจถอดรหัสลับซึ่ง
118
มีขนาด 64 บิตโดยใชวิธีคนหาอยางละเอียด หรือการโจมตีแบบตะลุย โอกาสที่จะพบกุญแจถอดรหัสลับ
ดอกที่ถูกตองโดยเฉลี่ย หรือมีความนาจะเปนเกินครึ่งหนึ่ง จะเกิดขึ้นเมื่อมีการทดลองถอดรหัสลับดวยกุญแจ
คาตางๆ ที่เปนไปไดทั้งสิ้นจํานวน 263 กุญแจ
ในการหาคําตอบของตัวอยางที่สองหรือการโจมตีแบบวันเกิด เราตองการที่จะหาจํานวนขอความ
ตนฉบับที่มีอยูภ ายในฐานขอมูลที่นอยที่สุด ที่ทําใหการเลือกขอความตนฉบับใดๆ แบบสุมขึ้นมาสอง
ขอความจากฐานขอมูล เพื่อคํานวณหาคาแฮชแลวใหผลลัพธเปนคาแฮชที่ตรงกัน มีคา ความนาจะเปน
มากกวา 0.5 สามารถทําไดดงั นี้
โดยการกําหนดให P(n, k) คือ ความนาจะเปนที่คาแฮชของขอความตนฉบับใดๆ สองขอความที่
เลือกมาจาก k ขอความในฐานขอมูลมีคาตรงกัน โดยที่ขอ ความตนฉบับแตละขอความมีรูปแบบที่เปนไปได
ทั้งหมด n รูปแบบ ฉะนัน้ สิ่งที่เราตองการหาคือคา k ที่ทําให P(n, k) ≥ 0.5 โดยการคํานวณทางสถิติ เราจะ
หาคาความเปนไปไดที่คาแฮชของขอความตนฉบับตัวทีส่ องที่เลือกขึ้นมาแบบสุมจากจํานวน k ขอความใน
ฐานขอมูลจะไมตรงกับคาแฮชของขอความแรกที่เลือกขึ้นมากอน ซึ่งจํานวนเหตุการณ (N) ในกรณีนี้
สามารถคํานวณไดจาก
n!
N = n × (n - 1) × (n - 2) .... (n - k + 1) =
(n - k )!
(9.5)
ความนาจะเปน = (n - k )!
=
n!
(9.6)
nk ( n - k )! n k
ในทางกลับกัน ความนาจะเปนที่คาแฮชผลลัพธของขอความตนฉบับทั้งสองจะตรงกันคือ
n!
P ( n, k ) = 1 - (9.7)
(n - k )! n k
119
n!
P ( n, k ) = 1 - (9.8)
(n - k )! n k
n × (n - 1) × ... × (n - k + 1)
= 1-
nk
⎡n - 1 n - 2 n - k +1⎤
= 1- ⎢ × × ... × ⎥
⎣ n n n ⎦
⎡⎛ 1⎞ ⎛ 2⎞ ⎛ k − 1 ⎞⎤
= 1 - ⎢⎜1 − ⎟ × ⎜1 − ⎟ × ... × ⎜1 − ⎟⎥
⎣⎝ n⎠ ⎝ n⎠ ⎝ n ⎠⎦
> 1 - e -k (k - 1 ) / 2 n
0.5 = 1 - e -k (k - 1 ) / 2 n (9.10)
2 = e k (k - 1 ) / 2 n
k (k - 1)
ln 2 =
2n
k = 2n (ln 2 ) (9.11)
= 1.18 n ≈ n
เพราะฉะนั้น จํานวนขอความตนฉบับที่มีอยูในฐานขอมูลที่จะทําใหการโจมตีแบบวันเกิดประสบ
ความสําเร็จคือ 1.18 n หรือประมาณ n ขอความ โดยที่ n คือรูปแบบที่เปนไปไดทั้งหมดของขอความ
ตนฉบับ ในทํานองเดียวกัน ถาเราตองการโจมตีฟงกชันแฮชทางเดียวที่ใหคาแฮชผลลัพธขนาด 128 บิตโดย
ใชการโจมตีแบบวันเกิด โอกาสที่จะประสบความสําเร็จหรือโอกาสที่จะเจอขอความตนฉบับใดๆ 2 ขอความ
ที่ใหคาแฮชเหมือนกัน ที่มีความนาจะเปนมากกวาครึ่งหนึ่งหรือมากกวา 0.5 คือ k ≈ 2128 = 2128/2 = 264
120
นั่นเอง ใหสังเกตวา การโจมตีแบบวันเกิดจะแตกตางกับการโจมตีแบบตะลุย เนื่องจากในการโจมตีแบบ
ตะลุยนัน้ ตัวแปรที่เราตองการหา เชน กุญแจถอดรหัสลับ จะมีเพียงตัวเดียวจากรูปแบบที่เปนไปไดทั้งหมด
ของกุญแจเทานั้น ในขณะทีก่ ารโจมตีแบบวันเกิด เราสามารถดัดแปลงแกไขขอความตนฉบับไปเรือ่ ยๆ
จนกวาจะไดคา แฮชผลลัพธที่ตรงกันกับขอความตนฉบับเดิม ซึ่งในทางปฏิบัติสามารถทําไดงายๆ โดยที่ไม
ทําใหความหมายของขอความตนฉบับเปลี่ยนแปลงไปจากเดิม ยกตัวอยางเชน โดยการเติมชองวาง (Space)
ระหวางคํากอนเริ่มตนประโยคหรือยอหนา เติมชองวางในตอนทายประโยคหรือยอหนา หรือเติมชองวาง
บริเวณทีว่ างใดๆ ในขอความตนฉบับ เปนตน
9.5 คําถามทายบท
1. จงอธิบายการทํางานพรอมทั้งคุณสมบัติของฟงกชันแฮชทางเดียว เมือ่ นํามาประยุกตใชในวิทยาการรหัสลับ
2. นักศึกษาคิดวาขนาดของคาแฮชซึ่งบอกเปนจํานวนบิตมีผลตอความแข็งแกรงของฟงกชันแฮชทางเดียว
หรือไม เพราะเหตุใด ในกรณีของอัลกอริทึม MD5 และ SHA-1 ซึ่งใหคาแฮชผลลัพธที่มี ขนาดตางกัน
นักศึกษาคิดวาอัลกอริทึมใดมีความแข็งแกรงมากกวากัน เพราะเหตุใด
3. จงอธิบายหลักการโจมตีแบบวันเกิด พรอมทั้งยกตัวอยางวิธีการโจมตีแบบวันเกิดตอฟงกชันแฮชทาง
เดียวแบบงายๆ มา 2 ตัวอยาง
4. จงอธิบายความแตกตางระหวางการโจมตีแบบวันเกิดและการโจมตีแบบตะลุย
121
บทที่ 10
ฟงกชันแฮชและลายมือชื่อดิจิทัล ตอนสอง
10.1 รหัสพิสูจนตัวจริงของขอความ
รหัสพิสูจนตัวจริงของขอความ (Message Authentication Codes) หรือเรียกสั้นๆ วา MAC ก็คือ
ฟงกชันแฮชทางเดียวที่ใชกญ ุ แจลับในการคํานวณหาคาแฮชผลลัพธ อัลกอริทึม MAC จะมีคณ ุ สมบัติ
เหมือนกับฟงกชันแฮชทางเดียวดังที่กลาวไปขางตน ตางกันเพียงแค MAC จะใชกุญแจลับเปนสวนประกอบ
ในการทํางาน ในการนําไปใชงาน จะมีเพียงคนที่รูกุญแจลับนี้เทานั้นทีจ่ ะสามารถคํานวณหาคาแฮชได
อัลกอริทึม MAC จะมีประโยชนมากในการพิสูจนตัวจริงของเอกสารหรือไฟลขอมูลใดๆ ยกตัวอยางเชน
ผูใชงานอาจใช MAC ในการพิสูจนวาไฟลที่เก็บไวในเครื่องคอมพิวเตอรไมไดถูกแกไขเปลี่ยนแปลงไป ซึ่ง
ในการใชฟงกชันแฮชทางเดียวนัน้ จะมีจุดออนคือ ผูโจมตีอาจเขามาเปลี่ยนแปลงไฟลขอมูลตนฉบับ แลวทํา
การคํานวณหาคาแฮชคาใหม นําคาแฮชใหมที่ไดไปแทนที่คาแฮชเดิมทีเ่ ก็บไวในฐานขอมูล เมื่อผูใชงาน
กลับมาตรวจสอบไฟลขอมูลนั้นๆ โดยการเปรียบเทียบกับคาแฮชตัวใหมที่อยูในฐานขอมูลเดิม ก็จะไมพบ
ความแตกตางใดๆ แตในกรณีของ MAC นั้น ผูโจมตีจะไมสามารถเปลี่ยนแปลงแกไขใดๆ กับตัวไฟลขอมูล
ได เนื่องจากผูโ จมตีไมทราบกุญแจลับที่ใชในการคํานวณหาคาแฮชผลลัพธ ตัวอยางของการนําฟงกชันแฮช
ทางเดียวมาประยุกตใชเปน MAC แบบงายๆ ก็คือ โดยการเขารหัสลับคาแฮชผลลัพธที่ไดดว ยอัลกอริทึม
สมมาตร ดูรูปที่ 10.1 ประกอบ ในทํานองเดียวกัน เราสามารถนําอัลกอริทึม MAC ใดๆ มาประยุกตใชเปน
ฟงกชันแฮชทางเดียวไดงายๆ โดยการเปดเผยกุญแจที่ใชในการเขารหัสลับ
122
10.1.1 อัลกอริทึม HMAC
ชื่อ HMAC ยอมาจาก รหัสพิสูจนตัวจริงของขอความโดยใชคาแฮชเปนหลัก (Hash-based
Message Authentication Code) อัลกอริทึม HMAC ไดรับการพัฒนาขึ้นในปคริสตศักราช 1996
[BELL96a,b] โดยมีแนวคิดในการนําฟงกชนั แฮชทางเดียวที่มีอยูใ นปจจุบันเชน MD5 หรือ SHA-1 มาใช
ประโยชนใหมากที่สุด ในปจจุบันไดมีการนําเอาอัลกอริทึม HMAC มาใชเปนมาตรฐานในการรักษาความ
ปลอดภัยของขอมูลที่สงผานเครือขายอินเทอรเน็ต โดยจะอยูในสวนของโพรโทคอลอินเทอรเน็ต (Internet
Protocol, IP) และโพรโทคอล SSL (Secure Socket Layer) เปนตน แผนผังการทํางานของอัลกอริทึม
HMAC ไดแสดงไวในรูปที่ 10.2
จากรูป ถาฟงกชันแฮชทางเดียวที่ใช แบงขอความตนฉบับออกเปนกลุมบิตขนาด n บิต กุญแจที่ใช
จะตองมีขนาด n บิตดวย กรณีที่กุญแจมีขนาดเล็กกวา n บิต เราจะเติมบิต 0 ลงไปทางซายของตัวกุญแจ
เรื่อยๆ จนมีจํานวนบิตเทากับ n ในกรณีทกี่ ุญแจมีขนาดใหญกวา n บิต กุญแจจะถูกสงผานฟงกชันแฮชทาง
เดียว เพื่อใหผลลัพธมีขนาด n บิต สําหรับคา ipad ที่แสดงในรูปก็คือ กลุมบิตเลขฐานสอง 001101102 ซึ่ง
เปนคาคงที่ที่นาํ มาใชวนไปเรือ่ ยๆ เปนจํานวน n/8 ครั้ง ขณะที่คา opad ก็คือกลุมบิตเลขฐานสอง 010110102
ที่นํามาใชวนไปเรื่อยๆ เปนจํานวน n/8 ครั้งเชนเดียวกัน คา si คือผลลัพธที่เกิดจากการออรเฉพาะกัน
ระหวางกุญแจและ ipad ขณะที่ s0 คือผลลัพธที่เกิดจากการออรเฉพาะกันระหวางกุญแจและ opad ผลลัพธ
ของคา HMAC สามารถแสดงในรูปของสมการไดดังนี้
123
10.1.2 อัลกอริทึม MAC โดยใชตัวแปลงรหัสแบบกระแส
เราอาจคํานวณหาคา MAC โดยนําตัวแปลงรหัสแบบกระแสมาประยุกตใชก็ได อัลกอริทึมสําหรับ
คํานวณหาคา MAC ที่ใชแนวคิดขางตนนี้ไดมีการนําเสนอในการประชุมวิชาการระดับนานาชาติ
AUSCRYPT’92 [LAI93] โดยแผนผังการทํางานของอัลกอริทึมดังกลาวไดแสดงไวดงั ในรูปที่ 10.3
124
10.2 ลายมือชื่อดิจิทัล
โดยปกติลายมือชื่อ (Signature) ของบุคคลใดบุคคลหนึ่ง สามารถนํามาใชเปนหลักฐานเพื่ออางอิง
ถึงบุคคลนั้นๆ ในการเห็นชอบตอการทําธุรกรรมใดๆ ที่เกิดขึ้น สาเหตุที่คนทั่วไปเชือ่ ถือลายมือชื่อ และ
ยอมรับใหใชเปนหลักฐานในการทําธุรกรรมใดๆ นั้น เนือ่ งมาจากความเชื่อที่วา
1. ลายมือชื่อสามารถใชในการพิสูจนตัวจริง เนื่องจากลายมือชื่อที่ปรากฏอยูบนเอกสารใดๆ จะทํา
ใหผูที่มีเอกสารนั้นมั่นใจไดวา ผูที่เปนเจาของลายมือชื่อดังกลาวไดเซ็นชื่อ (Sign) ตนเองลงใน
เอกสารโดยเจตนา ซึ่งลักษณะของลายมือชือ่ ที่ปรากฏอยูนั้นจะมีความเปนเอกลักษณที่สามารถ
ใชในการพิสูจนตัวจริงของเจาของลายมือชื่อได
2. ลายมือชื่อไมสามารถปลอมแปลงได ทําใหลายมือชื่อสามารถนํามาใชเปนหลักฐานทีแ่ สดงวา ผู
ที่เซ็นชื่อลงในเอกสารนั้นเปนเจาของลายมือชื่อจริงๆ ไมใชคนอื่น
3. ลายมือชื่อที่เซ็นไปแลวไมสามารถนํามาใชไดอีก เนื่องจากลายมือชื่อทีไ่ ดเซ็นลงไปในเอกสาร
หนึ่งๆ แลว ถือเปนสวนหนึง่ ของเอกสารนั้น ซึ่งคนทั่วไปจะไมสามารถเคลื่อนยายลายมือชื่อ
ดังกลาวไปไวในเอกสารอื่นได
4. ลายมือชื่อที่มีการเซ็นชื่อกํากับไปแลวไมสามารถเปลี่ยนแปลงได
5. ลายมือชื่อที่เซ็นไปแลวจะไมสามารถปฏิเสธความรับผิดชอบได เนื่องจากเอกสารและลายมือ
ชื่อประกอบกันถือเปนหลักฐานที่พิสูจนทราบได ทําใหเจาของลายมือชื่อที่ปรากฏอยูบน
เอกสาร ไมสามารถปฏิเสธในภายหลังได วาตนเองไมไดเปนคนเซ็น
อยางไรก็ตามในความเปนจริง ความเชื่อที่กลาวถึงขางตนไมมีขอใดเปนจริง เนื่องจากลายมือชื่อ
สามารถทําปลอมแปลงขึ้นมาได สามารถเคลื่อนยายจากที่หนึ่งไปยังอีกที่หนึ่งก็ได นอกจากนี้ เอกสารที่มี
การเซ็นชื่อกํากับไปแลวก็ยังสามารถทําการเปลี่ยนแปลงแกไขไดอีก แตถึงกระนั้น ลายมือชื่อที่เซ็นโดย
บุคคลจริงๆ ก็ยังไดรับความนิยม เชื่อถือ และเปนที่ยอมรับกันอยางกวางขวาง ซึ่งสาเหตุที่เปนเชนนั้นอาจ
เปนเพราะ คนทั่วไปยังคงเชือ่ วาการปลอมแปลงลายมือชื่อทําไดอยางยากลําบาก
ในโลกของการสื่อสารขอมูลในปจจุบนั ไดมีความพยายามที่จะนําเอาลายมือชื่อมาใชในการทําธุรก
รรมใดๆ ในรูปแบบของขอมูลดิจิทัล ซึ่งถานําลายมือชื่อมาประยุกตใชตรงๆ จะเกิดปญหาตามมาอยาง
มากมาย ยกตัวอยางเชน ขอมูลในรูปของเลขฐานสองที่ใชในระบบคอมพิวเตอร สามารถทําซ้ําขึ้นใหมได
อยางงายดาย คนบางคนอาจใชวิธีตัดปะ (Cut & Paste) ลายมือชื่อที่เก็บอยูในรูปแบบของภาพกราฟกจาก
เอกสารหนึ่งไปยังอีกเอกสารหนึ่ง โดยไมมีความผิดเพีย้ นใดๆ เลย นอกจากนี้ขอมูลในรูปแบบดิจิทลั ยัง
สามารถทําการเปลี่ยนแปลงแกไขได หลังจากที่มีการเซ็นชื่อไปแลวโดยไมทิ้งรองรอยจากการเปลี่ยนแปลง
แกไขใดๆ ไวเลย ดวยเหตุนี้ จึงมีการคิดคนพัฒนาวิธีการสรางลายมือชื่อที่เปนระบบและมีความเชือ่ ถือได
เพื่อใชในการเซ็นเอกสารที่อยูในรูปของขอมูลดิจิทัลขึ้น ซึ่งเรียกในชื่อทั่วๆ ไปวา ลายมือชื่อดิจิทัล (Digital
125
Signatures) โดยปกติหนาที่ของลายมือชื่อดิจิทัลจะครอบคลุมหนาที่การทํางานของลายมือชื่อแบบปกติที่
ใชงานกันอยูทวั่ ไป ซึ่งสามารถสรุปไดดังนี้
1. พิสูจนตัวจริง (Authentication) ผูที่ทําการสงขอมูล - ผูที่รับขอมูลจะตองมั่นใจไดวา ผูที่สง
ขอมูลใหนั้น คือคนที่ตนตองการติดตอดวยอยางแทจริง ไมใชคนหนึ่งคนใดทีแ่ กลงปลอม
แปลงตนเองเพื่อจะสงขอมูลมาให
2. รักษาบูรณภาพ (Integrity) หรือความถูกตองของขอมูล - ขอมูลที่สงมายังผูรับจะตองไมมีการ
เปลี่ยนแปลงแกไขใดๆ ไมวาจะเกิดขึ้นโดยตั้งใจหรือไม กลาวอีกนัยหนึ่งก็คือ ขอมูลที่ผูรับ
ไดรับมาจะตองเหมือนกันกับขอมูลที่ผูสงไดสงมาทุกประการ
3. ปองกันการบอกปดหรือบอกปฏิเสธ (Non-repudiation) - ผูรับขอมูลจะตองสามารถพิสูจนได
วา ขอมูลที่ไดรับมานั้นไดสง มาจากผูสงที่อางไวจริงๆ โดยที่ผูสงขอมูลจะไมสามารถบอกปด
หรือบอกปฏิเสธขอมูลที่ตนเองเคยสงออกไปได
ใหสังเกตวา หนาที่ทั้งสามของลายมือชื่อดิจิทัลจะครอบคลุมไปถึงความเชื่อขางตนทัง้ 5 ซึ่งเปน
สาเหตุที่ทําใหการใชลายมือชื่อเปนที่เชื่อถือและยอมรับจากคนทั่วไป ขั้นตอนการใชงานลายมือชื่อดิจิทัลจะ
แบงเปน 2 สวนคือ
1. ขั้นตอนการเซ็น (Signing) เอกสาร หรือการสรางลายมือชื่อดิจิทัล และ
2. ขั้นตอนการพิสูจนยืนยัน (Verifying) เอกสารที่เซ็น หรือการพิสูจนยนื ยันลายมือชือ่ ดิจิทัล
126
จากนั้น จะสงขอความตนฉบับ M และลายมือชื่อดิจิทัล (Md mod n) ไปยังผูรับ ทางฝงผูรับก็จะทํา
การพิสูจนยนื ยันขอความตนฉบับที่เซ็นมา โดยการพิสูจนวาสมการตอไปนี้เปนจริงหรือไม
เนื่องจากกระบวนการเขาและถอดรหัสลับของอัลกอริทึมกุญแจสาธารณะมีความซับซอนสูงและใช
เวลาประมวลผลชามาก ถาขอความตนฉบับที่ตองการเซ็นมีขนาดใหญ จะทําใหขั้นตอนในการเซ็นเอกสาร
หรือขั้นตอนการสรางลายมือชื่อดิจิทัลใชเวลานาน ซึ่งทําใหเกิดความไมสะดวกในการนําไปใชงานจริง
ในทางปฏิบัติ แนวทางแกปญ หาหนึ่งที่นยิ มนํามาใชกนั โดยทัว่ ไปคือ แทนที่จะสรางลายมือชื่อดิจทิ ัลจากตัว
ขอความตนฉบับโดยตรง ก็เปลี่ยนมาสรางลายมือชื่อดิจทิ ัลจากขอความยอยหรือคาแฮชของขอความ
ตนฉบับแทน ดูรูปที่ 10.5 ประกอบ ซึ่งเขียนในรูปของสมการไดดังนี้
127
ใหสังเกตวา ถาคาแฮชที่ใชสรางลายมือชื่อดิจิทัลไดมาจากฟงกชันแฮชทางเดียว วิธีการแกปญหา
แบบนี้จะไมสง ผลกระทบใดๆ กับคุณสมบัติของลายมือชื่อดิจิทัลดังที่กลาวไวขางตน ในสวนของการพิสูจน
ยืนยันลายมือชื่อดิจิทัล ทางฝงผูรับเมื่อไดรับขอความตนฉบับ M และ E K (H (M ) ) แลว จะทําการพิสูจน
private
y = gx mod p (10.6)
a = gk mod p (10.7)
128
และใชอัลกอริทึมยุคลิคแบบขยายทําการคํานวณหาคา b ในสมการตอไปนี้
129
เพราะฉะนั้นกุญแจสาธารณะคือ {p = 11, g = 2, y = 3} และกุญแจสวนตัวก็คือ {x = 8}
ในการเซ็นขอความตนฉบับ M = 5 เราจะเลือกตัวเลขสุม k ที่เปนจํานวนเฉพาะสัมพันธกับ
p-1 ในที่นี้เราเลือกคา k = 9 (พิจารณาจาก 10 = 2 × 5) แลวทําการคํานวณหาลายมือชื่อดิ
จิทัล a และ b ดังตอไปนี้
a = gk mod p
= 29 mod 11
= ((24 mod 11) . (24 mod 11)) . 2 mod 11
= (5 . 5 . 2) mod 11
= 6
จากนั้นใชอัลกอริทึมยุคลิคแบบขยายเพื่อคํานวณหาคา b ดังนี้
130
10.2.3 การเซ็นเอกสารพรอมตราเวลา
ในบางสถานการณ เอกสารที่ถูกเซ็นไปแลวพรอมลายมือชื่อดิจิทัล อาจถูกนํามาใชในการฉอโกงได
ดังเชนตัวอยางของการเซ็นเช็คดิจิทัล กลาวคือ ในกรณีทนี่ ายดําใหนายแดงนําเช็คดิจทิ ัลที่ตนเองไดเซ็นไว
แลวไปเบิกเงินที่ธนาคาร เมื่อธนาคารทําการพิสูจนยืนยันลายมือชื่อดิจิทัลแลวพบวาเช็คดิจิทัลเปนของจริง
ธนาคารก็จะเบิกเงินใหกับนายแดงไป นายขาวผูเปนเจาหนาที่คนหนึง่ ของธนาคารไดแอบบันทึกหรือ
คัดลอกเช็คดิจทิ ัลพรอมลายมือชื่อดิจิทัลฉบับนั้นเอาไว ในอีก 2 วันตอมา นายขาวนําเช็คดิจิทัลฉบับดังกลาว
มาขึ้นเงินใหม ธนาคารก็ทําการพิสูจนยนื ยันลายมือชื่อดิจิทัลเทียบกับเช็คดิจิทัลนัน้ อีกครั้ง ซึ่งผลปรากฏ
ออกมาวาเช็คดิจิทัลเปนของจริง ธนาคารก็จะเบิกเงินใหกับนายขาวไป นายขาวสามารถทําเชนนี้ไปเรื่อยๆ
โดยที่นายดําไมสงสัยใดๆ จนกวานายดําจะทําการตรวจสอบบัญชีธนาคารของตนเอง
เพื่อปองกันปญหาขางตน การเซ็นเอกสารโดยวิธีการสรางลายมือชื่อดิจิทัลจะรวมขัน้ ตอนการ
ประทับตราเวลา (Time Stamping) ลงไปดวย ตราเวลาที่ประทับจะประกอบดวย วัน เดือน ป และเวลา ณ
ขณะที่ทําการเซ็นเอกสาร ซึ่งจะถูกแนบติดไปกับตัวเอกสาร กอนที่จะทําการเซ็นเอกสารและตราเวลาไป
พรอมๆ กันทั้งหมด ดูรูปที่ 10.7 ประกอบ ในกรณีนี้ธนาคารจะทําการเก็บตราเวลาของเอกสารนั้นๆ ลงใน
ฐานขอมูล ถานายขาวนําเช็คดิจิทัลที่เคยขึน้ เงินไปแลวมาขึ้นเงินอีก ธนาคารจะทําการตรวจสอบตราเวลาที่
อยูในเช็คดิจิทลั ฉบับนั้นเทียบกับตราเวลาที่เก็บอยูใ นฐานขอมูล เนื่องจากธนาคารเคยจายเงินสําหรับเช็คดิ
จิทัลฉบับนั้นไปแลว ธนาคารสามารถตรวจสอบไดอยางงายดายวานายขาวกําลังทําการฉอโกงอยู
131
10.3 คําถามทายบท
1. จงอธิบายความแตกตางระหวางรหัสพิสูจนตัวจริงของขอความและฟงกชันแฮชทางเดียว นักศึกษาคิดวา
อัลกอริทึมใดมีประโยชนมากกวากัน เพราะเหตุใด
2. จงใหคําจํากัดความพรอมหนาที่การทํางานของลายมือชื่อดิจิทัล
3. นักศึกษาคิดวาอัลกอริทึมสมมาตรสามารถนํามาใชสรางลายมือชื่อดิจทิ ัลไดหรือไม เพราะเหตุใด จง
อธิบายถึงเหตุผลที่ตอบมาพอสังเขป
4. จงบรรยายถึงประโยชนของการนําตราเวลามาประยุกตใชรวมกับลายมือชื่อดิจิทัล พรอมยกตัวอยาง
ประกอบคําบรรยาย
132
บทที่ 11
เทคนิคทางวิทยาการรหัสลับ
11.1 การเลือกใชงานตัวแปลงรหัส
เปนที่รูกันดีแลววา ตัวแปลงรหัสที่นํามาใชงานทางดานวิทยาการรหัสลับสามารถแบงยอยออกเปน
2 ชนิด คือ ตัวแปลงรหัสแบบกระแส และตัวแปลงรหัสแบบกลุม ในการเขารหัสลับแตละครั้ง ตัวแปลงรหัส
แบบกระแสจะมีการดําเนินการแบบบิตตอบิต (Bit-by-bit) หรือแบบไบตตอไบต (Byte-by-byte) ระหวาง
กระแสบิตที่มาจากตัวสรางกระแสบิต (Bit-stream Generator) และกระแสบิตที่มาจากขอความตนฉบับ
เพื่อที่จะสรางกระแสบิตขอความรหัสขึ้นมา ขณะที่ตวั แปลงรหัสแบบกลุมจะมีการดําเนินการแบบกลุมบิต
(Block of Bits) กับขอความตนฉบับ เพื่อสรางกลุมบิตขอความรหัสขึ้นมา ซึ่งโดยทั่วไปกลุมบิตที่ใชจะมี
ขนาด 64 หรือ 128 บิต จากลักษณะการเขาและถอดรหัสลับขอมูลที่แตกตางกันของตัวแปลงรหัสทัง้ 2 ชนิด
ทําใหตวั แปลงรหัสทั้งสองมีความเหมาะสมตอการนําไปใชงานที่แตกตางกัน กลาวคือ ตัวแปลงรหัสแบบ
กระแสจะมีความเหมาะสมกับการใชงานทีม่ ีการแปลงขอมูลเปนแบบแปรผันกับเวลา (Time-varying
Transformation) โดยขอมูลที่จะทําการแปลงนั้นควรมีลักษณะที่เปนเลขโดด (Digits) ที่เปนอิสระตอกัน
ยกตัวอยางเชน ในการสื่อสารเชิงปฏิสัมพันธ (Interactive) แบบเวลาจริงระหวางคนสองคนหนาเครื่อง
คอมพิวเตอรทอี่ ยูตางสถานที่กัน แตละครั้งที่มีการพิมพตวั อักษรหนาเครื่องคอมพิวเตอรจากสถานที่หนึ่ง
ขอมูลดิจิทัลของตัวอักษรนัน้ ๆ จะสงผานเครือขายสื่อสารไปแสดงยังหนาจอแสดงผลของเครื่อง
คอมพิวเตอรทตี่ ั้งอยูอีกสถานที่หนึ่งในเวลาที่ใกลเคียงกัน ขอมูลในลักษณะนี้จะเหมาะกับการเขารหัสลับ
แบบกระแส ในขณะทีต่ ัวแปลงรหัสแบบกลุมจะมีความเหมาะสมกับการใชงานที่มีการแปลงขอมูลเปนกลุม
ใหญๆ โดยแตละกลุมขอมูลที่จะทําการแปลงมักจะมีขนาดคงที่ ยกตัวอยางเชน การเขารหัสลับไฟลขอมูลดิ
จิทัลที่เก็บอยูใ นเครื่องคอมพิวเตอร เปนตน
จากที่กลาวมาขางตน จะเห็นไดวาตัวแปลงรหัสแบบกระแสเหมาะทีจ่ ะนําไปประยุกตใชงานในรูป
ของฮารดแวร เนื่องจากการประมวลผลแบบบิตตอบิตที่ดําเนินการอยูในรูปของชิฟ (Chip) จะมี
ประสิทธิภาพสูงมากๆ นอกจากนี้อุปกรณเขาและถอดรหัสลับในระบบสื่อสารมักจะอยูในรูปฮารดแวรเปน
หลัก สงผลใหการเขารหัสลับแบบกระแสมีความเหมาะสมกับการใชงานในลักษณะที่วา เราสามารถเขารหัส
ลับบิตขอมูลไดทันที แลวสงออกไปยังผูรับโดยไมตองรอใหบิตขอมูลมารวมกันเปนกลุมขนาด 64 บิตกอน
ใหสังเกตวาถึงแมเราจะใชวธิ ีการเสริมเต็ม (Padding) มาชวยทําใหกลุม บิตที่จะทําการเขารหัสลับมีขนาด
ครบ 64 บิต แตการทําเชนนัน้ ก็จะเปนการลดประสิทธิภาพของการเขารหัสลับทั้งระบบ ยกตัวอยางเชน ถา
เราตองการเขารหัสลับตัวอักษรขนาด 8 บิต 1 ตัวอักษรโดยใชกลุมบิตขนาด 64 บิต เราจําเปนตองเพิม่ บิต
133
เสริมเต็มเขาไปอีก 56 บิต ทําใหประสิทธิภาพในการเขารหัสลับกลุมบิตนั้นๆ มีเพียง (8/56) × 100 =
14.29% เทานัน้
ในทางกลับกัน ตัวแปลงรหัสแบบกลุมจะมีความเหมาะสมกวาตัวแปลงรหัสแบบกระแส ในดาน
การประยุกตใชงานในรูปของซอฟตแวร ทัง้ นี้ก็เพื่อทีจ่ ะหลีกเลี่ยงการดําเนินการทีก่ ระทําตอบิตขอมูลทีละ
บิต ซึ่งคอนขางจะเสียเวลา นอกจากนีก้ ารนําอุปกรณเขารหัสลับในรูปของซอฟตแวรมาใชเขารหัสสลับ
ขอมูลทีละบิต ยังถือเปนการทํางานที่ไมมปี ระสิทธิภาพอีกดวย ดังตัวอยางที่แสดงไปขางตน จะเห็นไดวา
อุปกรณเขารหัสลับในรูปของฮารดแวรจะไมมีปญหาใดๆ เมื่อนํามาใชเขารหัสลับขอมูลที่มีลักษณะเปนกลุม
บิต ฉะนั้นเราอาจสรุปไดวา ในกรณีของการนําตัวแปลงรหัสไปใชกับอุปกรณเขารหัสลับที่อยูในรูปของ
ฮารดแวร ตัวแปลงรหัสแบบกระแสจะมีความเหมาะสมมากกวา แตถาจะนําตัวแปลงรหัสไปใชกับอุปกรณ
เขารหัสลับที่อยูในรูปของซอฟตแวร การเลือกใชตัวแปลงรหัสที่เหมาะสมจะขึ้นอยูก ับลักษณะของการ
นําไปใชงานเปนหลัก อยางไรก็ตาม ในการนําไปใชงานจริงในทางปฏิบัติ เราสามารถดัดแปร (Modify) ตัว
แปลงรหัสแบบกระแส เพื่อนํามาใชงานแทนตัวแปลงรหัสแบบกลุมได ในทํานองเดียวกัน เราก็สามารถดัด
แปรตัวแปลงรหัสแบบกลุม เพื่อนํามาใชงานแทนตัวแปลงรหัสแบบกระแสไดเชนกัน ในโลกของความเปน
จริง ตัวแปลงรหัสแบบกลุมดูเหมือนจะไดรับความนิยมในการนําไปประยุกตใชงานจากคนทั่วไปมากกวา
สาเหตุที่เปนเชนนั้นอาจเปนเพราะ การสรางอุปกรณการเขารหัสลับที่อยูในรูปแบบของซอฟทแวร มีความ
สะดวกกวา มีราคาถูกกวา และมีความซับซอนนอยกวาการสรางอุปกรณเขารหัสลับที่อยูในรูปของฮารดแวร
นอกจากนี้การนําตัวแปลงรหัสไปใชงานมักจะอยูในรูปของการเขารหัสลับไฟลขอมูลเปนสวนใหญ
11.2 โหมดการทํางานทางวิทยาการรหัสลับ
ในการทํางานของตัวแปลงรหัสแบบกลุม ขนาดของขอความตนฉบับโดยปกติจะมีขนาดใหญกวา
ขนาดของกลุม บิตที่จะใชในการเขารหัสลับ ดังนั้นเราจําเปนตองแบงขอความตนฉบับออกเปนกลุมบิต
หลายๆ กลุมบิตที่มีขนาดเทากันตามลําดับ โดยกลุมบิตกลุมสุดทายที่มักจะมีขนาดเล็กกวาขนาดที่กาํ หนด จะ
ถูกเพิ่มบิตเสริมเต็มเขาไป เพื่อทําใหกลุมบิตนั้นๆ มีขนาดเทากับกลุมบิตอื่นๆ จากนัน้ จึงทําการเขารหัสลับ
กลุมบิตแตละกลุมตามลําดับโดยใชกุญแจตัวเดียวกัน ในขั้นตอนนีจ้ ะมีการประยุกตใช โหมดการทํางานทาง
วิทยาการรหัสลับ (Cryptographic Modes) ซึ่งโดยทั่วไปโหมดการทํางานทางดานวิทยาการรหัสลับจะ
ประกอบไปดวย ตัวแปลงรหัส กลไกการปอนกลับ (Feedback) และตัวดําเนินการแบบงายๆ บางชนิด การ
ที่เราสามารถเลือกใชตัวดําเนินการแบบงายๆ ได เนื่องมาจากเหตุผลที่วา ความปลอดภัยของระบบจะขึ้นอยู
กับความแข็งแกรงหรือความทนทานตอการโจมตีของตัวแปลงรหัสเปนหลัก ไมใชโหมดการทํางานที่ใช
นอกจากนี้ โหมดการทํางานทางดานวิทยาการรหัสลับที่นํามาใช ตองไมทําใหความปลอดภัยของตัวแปลง
รหัสที่ใชในระบบ หรือความปลอดภัยของทั้งระบบเกิดจุดออน
134
ในปจจุบนั โหมดการทํางานทางดานวิทยาการรหัสลับสามารถแบงออกเปน 4 โหมดหลักๆ ซึ่งจะ
ครอบคลุมการนําไปประยุกตใชงานทางปฏิบัติแทบทั้งหมด โหมดการทํางานในแบบอืน่ ๆ ที่เหลือนัน้ สวน
ใหญมักจะมีการปรับปรุงหรือดัดแปรมาจากโหมดการทํางานหลักทั้ง 4 ขางตน เพื่อใหมีความเหมาะสมตอ
การนําไปใชงานที่เฉพาะเจาะจง โดยทั่วไปเราจะเรียกชือ่ โหมดการทํางานทางดานวิทยาการรหัสลับโดยใช
ชื่อยอ ที่มาจากตัวอักษรแรกของคําแตละคํา ซึ่งโหมดการทํางานทั้ง 4 ที่กลาวถึงขางตนคือ
• โหมด ECB (Electronic Code Book)
• โหมด CBC (Cipher Block Chaining)
• โหมด CFB (Cipher FeedBack)
• โหมด OFB (Output FeedBack)
ซึ่งแตละโหมดการทํางานจะมีจุดเดนจุดดอยที่แตกตางกันออกไป การเลือกใชโหมดการทํางานให
เหมาะสมนัน้ จึงขึ้นอยูกับลักษณะของการนําไปใชงานเปนหลัก ยกตัวอยางเชน เพื่อใชในการสงขอความ
ตนฉบับผานชองทางสื่อสารที่มีสัญญาณรบกวนสูง หรือ เพื่อใชในการถอดรหัสลับไฟลขอมูลเพียงบางสวน
เปนตน รายละเอียดของโหมดการทํางานทัง้ 4 สามารถสรุปไดโดยยอดังนี้
135
ถาฐานขอมูลใดๆ มีการเขารหัสลับโดยใชโหมดการทํางานแบบ ECB เราจะสามารถเพิ่ม ลบ
เปลี่ยนแปลงแกไข ระเบียบ (Record) ใดๆ ที่อยูในรูปของขอมูลที่ถูกเขารหัสลับในฐานขอมูลนั้นไดโดย
อิสระ ไมจําเปนตองเกีย่ วของกับระเบียบอื่นๆ อยางไรก็ตาม จุดออนของโหมดการทํางานในลักษณะนี้ก็คือ
เราจะไมสามารถบอกไดวา สวนใดของขอความตนฉบับหรือขอความรหัสมีการสอดแทรก ลบออก หรือมี
การเปลี่ยนแปลงแกไข นอกจากนี้ ถากลุมบิตใดกลุมบิตหนึ่งของขอความรหัสมีความผิดพลาดเกิดขึ้นแม
เพียง 1 บิต (One Bit Error) จะสงผลใหผลลัพธจากการถอดรหัสลับกลุมบิตนั้นๆ ผิดพลาดไปทั้งกลุมบิต
ซึ่งความผิดพลาดที่เกิดขึ้นในลักษณะนีจ้ ะเรียกวา การขยายความผิดพลาด (Error Extension) ยกตัวอยาง
เชน ถากลุมบิตที่ใชในการเขาและถอดรหัสลับมีขนาด 64 บิต ความผิดพลาดเพียง 1 บิตที่เกิดขึ้นในกลุมบิต
ใดๆ ของขอความรหัส จะทําใหขอความตนฉบับทั้ง 64 บิตที่เปนผลลัพธจากการถอดรหัสลับกลุมบิตนั้นๆ
เกิดความผิดพลาดทั้งหมด ใหสังเกตวาการขยายความผิดพลาดจะจํากัดอยูเพียงภายในกลุมบิต 1 กลุมบิต
เทานั้น แตถาขอความรหัสเกิดมีบิตใดๆ สอดแทรกเขามา หรือถูกตัดออกไปแมเพียง 1 บิต กลุมบิตของ
ขอความตนฉบับผลลัพธที่มีบิตแทรกอยูห รือมีบิตถูกตัดออกไป รวมทัง้ กลุมบิตที่เหลือทั้งหมดที่อยูถัดจาก
กลุมบิตขอมูลนั้นๆ จะเกิดความผิดพลาดขึน้ ภายหลังจากการถอดรหัสลับ โดยทั่วไปเราเรียกการเกิดความ
ผิดพลาดในลักษณะนีว้ า การประสานเวลาผิดพลาด (Synchronization Error) โหมดการทํางานแบบ ECB
สามารถแสดงในรูปของสมการไดดังนี้
136
รูปที่ 11.2 การทํางานในโหมด CBC
137
บิตที่เหลือทั้งหมดที่อยูถัดจากกลุมบิตขอมูลนั้นๆ จะเกิดความผิดพลาดขึ้นภายหลังจากการถอดรหัสลับ
โหมดการทํางานแบบ CBC สามารถแสดงในรูปของสมการไดดังนี้
138
เมื่อพิจารณาลักษณะของการทํางานในโหมด CFB จากตัวอยางขางตนอยางละเอียด ในเบื้องตนจะ
พบวา ความผิดพลาดของขอมูลขนาด 1 บิตที่เกิดขึ้นในขอความรหัส จะสงผลใหเกิดบิตผิดพลาดขนาด 1
บิตในขอความตนฉบับผลลัพธที่ไดจากการถอดรหัสลับในครั้งนั้น โดยตําแหนงของบิตผิดพลาดที่เกิดขึ้น
ในขอความตนฉบับผลลัพธจะตรงกับตําแหนงของบิตผิดพลาดที่เกิดขึน้ ในขอความรหัส หลังจากนัน้ บิตที่
ผิดพลาดนี้จะถูกปอนลงในเรจิสเตอรแบบเลื่อน A ซึ่งจะสงผลใหการถอดรหัสลับกลุมบิตขอความรหัสกลุม
ตอไปเกิดความผิดพลาดขึ้นทั้งหมด และความผิดพลาดที่เกิดขึ้นนี้ก็จะวนกลับไปยังเรจิสเตอรแบบเลื่อน A
อีก สงผลใหเกิดความผิดพลาดในกลุมบิตขอความตนฉบับผลลัพธตอเนื่องไปเรื่อยๆ ซึ่งความผิดพลาดที่
เกิดขึ้นทั้งหมดนี้ จะมีการกูค ืนตัวเองโดยอัตโนมัติ เมื่อบิตผิดพลาดที่เก็บอยูในตัวเรจิสเตอรแบบเลื่อน A ถูก
เลื่อนไปทางซายทีละ 8 บิตเรื่อยๆ จนหลุดออกไปจากตัวเรจิสเตอร หลังจากนั้นผลกระทบจากบิตทีผ่ ิดพลาด
จะหมดไป ใหสังเกตวา บิตผิดพลาดที่เกิดขึน้ ในขอความรหัสเพียง 1 บิตจะสงผลใหเกิดความผิดพลาดขึ้นที่
ขอความตนฉบับผลลัพธภายหลังการถอดรหัสลับเปนจํานวน 9 กลุมบิต โดยในกลุมบิตแรกจะเกิดบิต
ผิดพลาดเพียง 1 บิตในตําแหนงเดียวกันกับบิตผิดพลาดที่เกิดขึ้นในขอความรหัส ขณะที่อีก 8 กลุมบิตที่เหลือ
ตอมา จะเกิดความผิดพลาดทั้งหมด จากตัวอยางทีย่ กมา เมื่อใชตัวแปลงรหัสแบบกลุม ขนาด 64 บิตทํางานใน
โหมด CFB ขนาด 8 บิต บิตผิดพลาดขนาด 1 บิตที่เกิดขึน้ ในขอความรหัส จะสงผลใหเกิดบิตผิดพลาด
จํานวน 65 บิตภายในขอความตนฉบับผลลัพธ
สําหรับกรณีของการประสานเวลาผิดพลาด การทํางานในโหมด CFB จะทําการกูคืนตัวเองโดย
อัตโนมัติเชนเดียวกัน กลาวคือ เมื่อความผิดพลาดที่เกิดขึน้ ถูกปอนลงในเรจิสเตอรแบบเลื่อน A แลว จะทํา
ใหเกิดการขยายความผิดพลาดขึ้น จนกวาความผิดพลาดดังกลาวจะถูกเลือ่ นหลุดออกไปจากตัวเรจิสเตอรอีก
ดานหนึ่ง ยกตัวอยางเชน เมือ่ เกิดการประสานเวลาผิดพลาดขึ้นที่ขอความรหัส สมมุติใหขอความรหัสที่ฝง
ผูรับมีบิตสอดแทรกมา 1 บิตหรือมีบิตถูกตัดออกไป 1 บิต กลุมบิตของขอความตนฉบับผลลัพธภายหลังการ
ถอดรหัสลับจะเกิดความผิดพลาดขึ้นเปนจํานวน n/m กลุมบิต โดย m คือจํานวนบิตในเรจิสเตอรแบบเลื่อน
ที่นํามาออรเฉพาะกับขอความตนฉบับ โหมดการทํางานแบบ CFB สามารถแสดงในรูปของสมการไดดังนี้
139
11.2.4 การทํางานในโหมด OFB (Output FeedBack)
การนําตัวแปลงรหัสแบบกลุม มาทํางานในโหมด OFB ก็เปรียบเสมือนกับการเขารหัสลับโดยใชตัว
แปลงรหัสแบบกระแสที่มีการประสานเวลา (Synchronous Stream Cipher) กลาวคือ การทํางานของ
ตัวแปลงรหัสแบบกลุมในโหมดนี้ จะเปนการสรางกระแสบิต (Bit-stream) ทางวิทยาการรหัสลับขึ้นมาโดย
ไมมีความเกีย่ วของใดๆ กับขอความตนฉบับเลย ขั้นตอนการทํางานในโหมด OFB จะเหมือนกับโหมด
CFB ยกเวนเพียงแต m บิตแรกขวาสุดที่อยูในเรจิสเตอรแบบเลื่อน B จะถูกปอนกลับมาแทนที่ 8 บิตแรก
ขวาสุดของเรจิสเตอรแบบเลื่อน A โดยตรง กอนที่จะนําไปออรเฉพาะกับ 8 บิตแรกของขอความตนฉบับ
เพื่อสรางขอความรหัสขนาด 8 บิตขึ้นมา ขั้นตอนการทํางานในลักษณะนี้จะดําเนินวนไปเรื่อยๆ จนถึงกลุม
บิตสุดทายของขอความตนฉบับ ดูรูปที่ 11.4 ประกอบ ใหสังเกตวา ขัน้ ตอนการถอดรหัสลับจะดําเนินการ
เชนเดียวกันกับขั้นตอนการเขารหัสลับ เนื่องจากกลไกในการปอนกลับที่เกิดขึ้นนี้เปนอิสระจากขอความ
ตนฉบับและขอความรหัสที่สรางขึ้น บางครั้งจึงเรียกกลไกการปอนกลับแบบนี้วา การปอนกลับภายใน
(Internal Feedback)
140
ตนฉบับผลลัพธที่ไดจากการถอดรหัสลับในครั้งนั้น จะเกิดความผิดพลาดขึ้นทั้งหมดเชนเดียวกัน โหมดการ
ทํางานแบบ OFB สามารถแสดงในรูปของสมการไดดังนี้
11.2.5 จุดออนในการใชงานตัวแปลงรหัสแบบกลุม
จากลักษณะการทํางานของตัวแปลงรหัสแบบกลุมพบวา ถากลุมบิตที่ประกอบอยูใ นขอความ
ตนฉบับหลายๆ กลุมบิตมีรูปแบบที่เหมือนกัน เมื่อทําการเขารหัสลับกลุมบิตเหลานัน้ ดวยตัวแปลงรหัสแบบ
กลุมในโหมด ECB จะสงผลใหกลุมบิตขอความรหัสผลลัพธที่ไดมีรูปแบบที่เหมือนกันดวย ขอสังเกตนี้ไดมี
การนําเสนออยางเปนรูปธรรมโดย [SAMA97] ซึ่งไดพิสูจนใหเห็นวา การนําตัวแปลงรหัสแบบกลุมไป
ประยุกตใชงานอยางไมเหมาะสม โดยเฉพาะกับขอมูลสื่อผสมบางประเภท เชน ภาพกราฟก อาจสงผลให
ขอมูลขาวสารที่ซอนอยูภายในขอความรหัสนั้นๆ เกิดการรั่วไหลโดยไมไดตั้งใจก็ได เพื่อแสดงใหเห็น
จุดออนในการใชงานตัวแปลงรหัสแบบกลุม ที่ไมเหมาะสมดังที่กลาวมาขางตน เราไดสรางภาพกราฟก
“Test” ชนิด 2 โทนสี (Bi-tonal) หรือภาพขาวดําที่ไมซับซอนขึ้น จากนัน้ จึงทําการเขารหัสลับภาพกราฟก
ดังกลาวโดยใชอักอริทึม DES ในโหมด ECB ผลลัพธจากการเขารหัสลับไดแสดงไวดังรูปที่ 11.5
141
(ก) (ข)
รูปที่ 11.5 การเขารหัสลับภาพกราฟก “Test” โดยใชอัลกอริทึม DES ในโหมด ECB
(ก) ภาพตนฉบับ (ข) ภาพทีผ่ านการเขารหัสลับมาแลว
(ก) (ข)
รูปที่ 11.6 การเขารหัสลับรูปภาพ “Lena” โดยใชอัลกอริทมึ DES ในโหมด ECB
(ก) รูปภาพตนฉบับ (ข) รูปภาพที่ผานการเขารหัสลับมาแลว
142
จากรูปเราสามารถสรุปไดวา ขอมูลขาวสารที่อยูภายในรูปภาพ “Lena” ไดถูกปกปดซอนเรนอยาง
สมบูรณ เพราะฉะนัน้ เมื่อตองการประยุกตใชงานตัวแปลงรหัสแบบกลุม เราจึงควรเพิ่มความระมัดระวังให
มากขึ้น ยกตัวอยางเชน เราควรจะพิจารณาอยารอบคอบถึงลักษณะของขอมูลที่จะทําการเขารหัสลับ โหมด
การทํางานที่ใช หรือลักษณะของการนําไปใชงาน เปนตน ในกรณีทมี่ ีความจําเปนตองเขารหัสลับ
ภาพกราฟก “Test” หรือขอมูลที่มีลักษณะเดียวกันโดยใชตัวแปลงรหัสแบบกลุม เราอาจใชวิธีการดังตอไปนี้
เพื่อแกไขหรือหลีกเลี่ยงรูปแบบของกลุมบิตที่เกิดขึ้นซ้ําๆ ภายในตัวขอมูลได
1. โดยการบีบอัดขอมูล (Data Compression) กอนทําการเขารหัสลับ เพื่อลดความซ้ําซอน
(Redundancy) ของรูปแบบของกลุมบิตที่มีอยูภายในตัวขอมูลใหนอยที่สุด ขอดีในการนํา
วิธีการบีบอัดขอมูลมาใชอีกอยางหนึ่งก็คือ จะชวยลดปริมาณของขอมูลที่จะทําการเขารหัสลับ
ซึ่งถือเปนการลดความซับซอนในแงของเวลาที่ใชในการเขารหัสลับ นอกจากนี้ ขนาดของ
ขอมูลที่เล็กลงยังชวยใหประหยัดแบนดวดิ ทที่ใชในการสื่อสาร และประหยัดพื้นที่ทใี่ ชในการ
จัดเก็บขอมูลไดอีกดวย
2. โดยการเปลี่ยนไปใชโหมดการทํางานแบบอื่นๆ เชน โหมด CBC เพือ่ ที่จะทําใหรปู แบบของ
กลุมบิตที่เกิดขึ้นซ้ําๆ กันภายในตัวขอมูลเกิดการเปลี่ยนแปลง โดยกลไกการปอนกลับที่เกิดขึ้น
ในโหมดการทํางานนั้นๆ กลาวคือ รูปแบบของกลุมบิตในขอความรหัส ณ เวลาปจจุบันจะ
เปลี่ยนแปลงไปตามรูปแบบของกลุมบิตผลลัพธที่ไดจากการเขารหัสลับขอความตนฉบับกอน
หนานัน้ รูปที่ 11.7 แสดงผลลัพธที่ไดจากการเขารหัสลับภาพกราฟก “Test” โดยใชอัลกอริทึม
DES ในโหมดการทํางานตางๆ
(ก) (ข)
(ค) (ง)
รูปที่ 11.7 (ก) ภาพตนฉบับ “Test” (ข) ภาพผลลัพธที่ไดจากการเขารหัสลับดวย DES ในโหมด CBC
(ค) โหมด CFB ขนาด 64 บิต (ง) โหมด OFB ขนาด 64 บิต
143
11.3 การเขารหัสลับในระบบสื่อสารขอมูล
โดยปกติเราจะใชวิธีการเขารหัสลับเพื่อปกปองขอมูลที่สงไปมาในระบบสื่อสารระหวางคนสองคน
หรือระหวางกลุมคน ในทางทฤษฎีการเขารหัสลับอาจกระทําไดในทุกๆ ระดับชั้น (Layer) ของแบบจําลอง
ระบบสื่อสารที่มีโครงสรางเปนแบบ การเชื่อมตอระหวางระบบเปด (Open Systems Interface, OSI)
หรือเรียกสั้นๆ วา แบบจําลองโอเอสไอ (OSI Model) ซึ่งในทางปฏิบัติ เรามักจะประยุกตใชเทคนิคการ
เขารหัสลับใน 2 ระดับชั้น คือ ระดับชั้นที่อยูลางสุด (ระดับ 1 หรือ 2) เรียกวา การเขารหัสลับแบบจุด
เชื่อมโยงถึงจุดเชื่อมโยง (Link-by-link) และระดับชั้นทีอ่ ยูสูงกวาระดับ 3 ขึ้นไป เรียกวา การเขารหัสลับ
แบบขั้นปลายถึงขั้นปลาย (End-to-end) ความรูพื้นฐานในเรื่องระบบชั้นของการสื่อสารขอมูลใน
แบบจําลองโอเอสไอ สามารถหาอานเพิ่มเติมไดจากหนังสือทางดานการสื่อสารขอมูลและเครือขาย
คอมพิวเตอรทวั่ ๆ ไปซึ่งจะไมนํามากลาวถึงในที่นี้
11.3.1 การเขารหัสลับแบบจุดเชื่อมโยงถึงจุดเชื่อมโยง
ตําแหนงทีจ่ ะทําการเขารหัสลับขอมูลที่งายที่สุดกอนทีส่ งเขาไปในระบบสื่อสารใดๆ ก็คือ ที่จุดตอ
หรือสถานีเชื่อมโยง (Node) ที่อยูในระดับชั้นที่ 1 หรือชัน้ กายภาพ (Physical Layer) ดูรูปที่ 11.8 ประกอบ
เนื่องจากการเชื่อมตอระหวางชั้นกายภาพเปนการเชื่อมตอระบบสื่อสารที่เปนมาตรฐาน จึงเปนการ
สะดวกที่จะเชือ่ มตออุปกรณเขารหัสลับในรูปของฮารดแวร ณ ระดับชัน้ นี้ ในการทํางาน อุปกรณเขารหัสลับ
ที่ติดตั้งอยูในแตละสถานีเชือ่ มโยง จะทําการเขารหัสลับขอมูลทั้งหมด รวมถึงขอมูลการจัดเสนทาง
(Routing Information) และขอมูลโพรโทคอลที่ใช กอนที่จะสงขอมูลเหลานั้นไปยังจุดหมายปลายทาง การ
เขารหัสลับในลักษณะนี้จะมีประสิทธิภาพดีมาก เนื่องจากขอมูลทุกๆ สวนจะถูกเขารหัสลับทั้งหมด
นักวิเคราะหรหัสลับจะไมพบขอมูลใดๆ ที่สามารถนํามาใชเปนประโยชนไดเลย ไมวา จะเปนรูปแบบ
โครงสรางขอมูล บุคคลที่กําลังติดตอสื่อสารกันอยู ความยาวของขอความตนฉบับ วันเวลาที่ทําการสื่อสาร
เปนตน ความปลอดภัยของการเขารหัสลับที่สถานีเชื่อมโยงนี้ จะไมขึ้นอยูกบั เทคนิคการจัดการการใชวงจร
สื่อสาร (Traffic Management Techniques) นอกจากนี้ ขั้นตอนการจัดการกุญแจ (Key Management) ก็
144
มีความสะดวก เนื่องจากที่ตอนปลายของสถานีเชื่อมโยงสองสถานี จําเปนตองใชกุญแจรวม (Common
Key) เพียงดอกเดียวเทานั้น และกุญแจรวมที่ใชนั้นก็เปนอิสระ (Independent) จากกุญแจรวมดอกอื่นๆ ที่
เหลือระบบเครือขายสื่อสาร อยางไรก็ตาม จุดออนของการเขารหัสลับแบบจุดเชื่อมโยงถึงจุดเชื่อมโยง ก็คือ
ขอมูลใดๆ ที่สงมาถึงสถานีเชื่อมโยง จําเปนตองมีการถอดรหัสลับ และทําการเขารหัสลับใหมอีกครั้งดวย
กุญแจรวมดอกใหม ซึ่งขอมูลที่อยูในรูปของขอความตนฉบับที่ถูกเปดเผยในแตละสถานีเชื่อมโยงนั้น จะมี
ความเสี่ยงตอการถูกโจมตีจากผูไมประสงคดีที่อยู ในเครือขาย ยิ่งเครือขายมีขนาดใหญเทาใด การปองกัน
จุดออนดังกลาวที่แตละสถานีเชื่อมโยงจะมีตนทุนที่สูงขึ้นเทานั้น มากกวานัน้ ในแตละสถานีเชื่อมโยงที่อยู
ตางสถานที่กัน หรือดูแลควบคุมโดยองคกรตางกัน จําเปนตองมีความไววางใจซึ่งกันและกัน ซึ่งเปนไปได
ยากในทางปฏิบัติ
145
โดยไมจําเปนตองรูเนื้อหาภายในขอความรหัสนั้นๆ เลย นอกจากนี้ระบบการจัดการกุญแจของการเขารหัส
ลับแบบขั้นปลายถึงขั้นปลายจะมีความซับซอนมากกวา เนื่องจากผูใชงานแตละคนจําเปนตองตกลง (Agree)
และเห็นชอบที่จะใชกุญแจดอกเดียวกันกับบุคคลที่ตนตองการจะติดตอสื่อสาร มากกวานัน้ การสรางอุปกรณ
เขารหัสลับแบบขั้นปลายถึงขั้นปลายจะมีความซับซอนมากกวาอุปกรณเขารหัสลับแบบจุดเชื่อมโยงถึงจุด
เชื่อมโยง เนื่องจากระบบเครือขายสื่อสารแตละเครือขายที่เชื่อมตอถึงกัน อาจใชโพรโทคอลในการสื่อสาร
ขอมูลที่แตกตางกัน ทําใหอปุ กรณการเขารหัสลับที่ใชในระบบที่ตางกันใชรว มกันไมได แตถาการเขารหัส
ลับในระบบสือ่ สารเกิดขึ้นในระดับชั้นสูงๆ เชน ชั้นการประยุกต (Application Layer) หรือชั้นนําเสนอ
(Presentation Layer) ปญหาในเรื่องของระบบเครือขายที่ตางชนิดกันอาจหมดไป ซึ่งโดยปกติอปุ กรณการ
เขารหัสลับที่ใชในระดับชั้นเหลานี้จะอยูในรูปของซอฟตแวรเปนสวนใหญ
11.3.3 การประยุกตใชงานสองระบบรวมกัน
เมื่อมีการนําเอาวิธีการเขารหัสลับมาใชในระบบสื่อสารขอมูล การรวม (Combine) วิธีการเขารหัส
ลับทั้งแบบจุดเชื่อมโยงถึงจุดเชื่อมโยงและแบบขั้นปลายถึงขั้นปลายมาประยุกตใชงานรวมกัน ถือเปนวิธีการ
เขารหัสลับที่มีประสิทธิภาพมากที่สุด ถึงแมวิธีการนี้จะมีตนทุนในการดําเนินการสูงสุดก็ตาม ทั้งนีก้ าร
เขารหัสลับแบบจุดเชื่อมโยงถึงจุดเชื่อมโยงจะชวยแกปญ หาจากการโจมตีโดยการวิเคราะหขอมูลการจัด
เสนทาง ขณะที่การเขารหัสลับแบบขั้นปลายถึงขั้นปลายจะชวยแกปญหาจากการที่ตอ งเปดเผยขอมูลที่สถานี
เชื่อมโยงแตละสถานีในระบบเครือขาย ในสวนของการจัดการกุญแจและหนาที่ความรับผิดชอบ อาจแยกกัน
ระหวางผูด ูแลระบบและผูใชงานโดยไมนํามาเกี่ยวของกัน กลาวคือ ผูดแู ลระบบเครือขายจะรับผิดชอบใน
สวนของการเขารหัสลับแบบจุดเชื่อมโยงถึงจุดเชื่อมโยง ขณะที่ผูใชงานจะรับผิดชอบในสวนของการเขารหัส
ลับแบบขั้นปลายถึงขั้นปลาย
11.4 การเขารหัสลับในหนวยเก็บขอมูล
การเขารหัสลับในหนวยเก็บขอมูล (Data Storage) และการคนคืน (Retrieval) ขอมูลเหลานั้นใน
ภายหลัง ก็เปรียบเสมือนแบบจําลองการสงขอความรหัสระหวางนายดํากับนายแดง กลาวคือ นายดําก็ยังคง
สงขอความรหัสใหกับนายแดงเหมือนเดิม เพียงแตนายแดงในตอนนี้ จริงๆ แลวก็คือตัวนายดําในอนาคต
นั่นเอง อยางไรก็ตาม ปญหาที่เกิดขึ้นในการเขารหัสลับในหนวยเก็บขอมูลจะแตกตางไปจากการเขารหัสลับ
ในระบบสื่อสารขอมูลคอนขางมาก ในชองทาง (Channel) ที่ใชสื่อสารขอมูล ตัวขอความรหัสที่มกี าร
สงผานไปมาจะถือวาไมมีมูลคาในตัว (Intrinsic Value) เนื่องจากวา ถานายแดงไมไดรับขอความรหัสจาก
นายดํา นายดําสามารถสงขอความรหัสนั้นไปใหนายแดงใหมได ซึ่งกรณีนี้จะไมเกิดขึน้ กับการเขารหัสลับ
ในหนวยเก็บขอมูล เนื่องจากถานายดําไมสามารถถอดรหัสลับขอความรหัสที่เก็บอยูในหนวยเก็บขอมูลได
146
นายดําจะสูญเสียขอมูลนั้นๆ ตลอดไป ดังนั้นในการใชงานการเขารหัสลับในหนวยเก็บขอมูล เราควรจะมี
กลไก (Mechanisms) บางชนิดที่ใชปองกันไมใหขอความรหัสเกิดความผิดพลาดจนไมสามารถกู
คืนกลับมาได
โดยทั่วไป ปญหาที่มักจะพบในการเขารหัสลับหนวยเก็บขอมูลก็คือ ผูใชงานมักจะลืมกุญแจทีใ่ ช
สําหรับการถอดรหัสลับ หรือกุญแจที่ใชเกิดสูญหายไป ซึ่งในความเปนจริงกุญแจทีใ่ ชถอดรหัสลับจะมี
คุณคา (Value) เทียบเทากับตัวขอความตนฉบับ เพียงแตมีขนาดเล็กกวาเทานัน้ หรือมองในอีกมุมหนึ่ง
วิทยาการรหัสลับจะแปลงความลับที่มีขนาดใหญใหเปนความลับที่มีขนาดเล็ก และการที่ความลับนั้นมี
ขนาดเล็ก ก็จะทําใหมีโอกาสสูญหายไดงาย ในกระบวนการจัดการกุญแจของระบบการเขารหัสลับในหนวย
เก็บขอมูล จะสมมุติใหกุญแจตัวเดิมที่ใชในการเขารหัสลับถูกนํามาใชในการถอดรหัสลับขอความรหัสที่
เก็บรักษาไวในหนวยเก็บขอมูล โดยที่ขอความรหัสนั้นอาจเก็บอยูใ นหนวยเก็บขอมูลเปนระยะเวลาหลายๆ
ปกอนจะนํามาถอดรหัสลับ ซึ่งกุญแจที่ใชนั้นจะตองทําการเก็บรักษาไวเปนอยางดีและเปนความลับควบคู
ไปกับขอความรหัสนั้นๆ ดวย สภาพแวดลอม (Environment) แบบนีจ้ ะไมเกิดขึ้นกับการเขารหัสลับใน
ระบบสื่อสารขอมูล เนื่องจากกุญแจทีใ่ ชในการเขารหัสลับจะมีประโยชนในชวงเวลาที่มีการสื่อสารขอมูล
เทานั้น เมื่อการสื่อสารเสร็จสิ้นลง เราก็ไมจําเปนตองเก็บรักษากุญแจนั้นตอไปอีก ใหสังเกตวา การที่เราไม
เก็บรักษากุญแจนั้นเอาไว ไมไดหมายความวา เราจะเปดเผยกุญแจนั้นใหกับบุคคลอื่น นอกจากปญหาใน
เรื่องของการจัดการกุญแจแลว ปญหาอื่นๆ ที่มักจะพบในการเขารหัสลับในหนวยเก็บขอมูลมีดังนี้
[CHRI98]
- ขอมูลที่อยูในรูปของขอความรหัสที่เก็บในหนวยเก็บขอมูลหนึ่ง อาจเก็บรักษาในรูปของขอความ
ตนฉบับในหนวยเก็บขอมูลอื่นๆ ก็ได เชน ในหนวยเก็บขอมูลที่อยูในจานบันทึกแบบแข็ง (Hard
Disk) ของเครื่องคอมพิวเตอรสวนบุคคล ซึ่งกรณีนี้จะเปนการเพิ่มโอกาสใหกับนักวิเคราะหรหัสลับ
ที่จะโจมตีระบบโดยใชวิธีการโจมตีที่รูขอความตนฉบับ (Known Plaintext Attack)
- ในการใชงานระบบฐานขอมูล บอยครั้งที่ขอ มูลที่จะทําการเขารหัสลับมีขนาดเล็กกวาขนาดกลุมบิต
ที่ใชในอัลกอริทึมการเขารหัสลับ เชน เมือ่ มีการใชอัลกอริทึม DES เขารหัสลับขอมูลที่มีขนาดเล็ก
กวา 64 บิตกอนที่จะเก็บลงในระบบฐานขอมูล ซึ่งกรณีนี้จะทําใหขอความรหัสมีขนาดใหญกวา
ขอความตนฉบับ ปญหานี้จะมีผลกระทบอยางมีนัยสําคัญ ถาระบบฐานขอมูลที่ใชมีขนาดใหญ
มากๆ เนื่องจากความตองการในการเก็บขอมูลในรูปของขอความรหัสจะเพิ่มสูงขึ้นมากเชนเดียวกัน
- ความตองการในดานความเร็วของการเขาและถอดรหัสลับ ในทางปฏิบัติอาจมีความจําเปนตองใช
อุปกรณประเภทฮารดแวรในการเขารหัสลับ เพื่อใหไดความเร็วในการทํางานที่สูงขึ้น นอกจากนี้
ในการใชงานบางประเภทอาจมีความจําเปนตองใชอัลกอริทึมการเขารหัสลับความเร็วสูงที่
ออกแบบมาอยางเฉพาะเจาะจงประกอบการเขารหัสลับดวย
147
- ความตองการทางดานระบบการเก็บรักษากุญแจที่ปลอดภัยในระยะเวลานาน
- ระบบการจัดการกุญแจมีความซับซอนสูง เนื่องจากผูใชงานแตละคนอาจตองการเขาถึงไฟลขอมูลที่
แตกตางกันจากหนวยเก็บขอมูลตัวเดียวกัน หรืออาจตองการเขาถึงสวนที่ตางกันของไฟลขอมูลตัว
เดียวกันก็ได เปนตน
การเขารหัสลับขอมูลที่เก็บอยูในหนวยเก็บขอมูล โดยปกติสามารถทําไดสองแนวทาง กลาวคือ
แนวทางที่หนึง่ เราอาจทําการเขารหัสลับขอมูลทั้งหมดดวยกุญแจเพียงตัวเดียว ซึ่งถือเปนการสรางขอความ
รหัสจํานวนมากใหกับนักวิเคราะหลับเพื่อใชในการโจมตีระบบ นอกจากนี้ ผูใชงานคนอื่นจะไมสามารถ
เขาถึงขอมูลเพียงบางสวนจากหนวยเก็บขอมูลนั้นได เนื่องจากถาเราใหกุญแจถอดรหัสลับกับผูใชงานคน
นั้นไป เขาก็จะสามารถถอดรหัสลับขอมูลสวนอื่นๆ ที่เหลือได แนวทางที่สอง เราอาจทําการเขารหัสลับ
ไฟลขอมูลแตละไฟลโดยใชกุญแจทีแ่ ตกตางกัน ซึ่งจะมีขอเสียคือ จะเปนการบังคับใหผูใชงานตองจดจํา
กุญแจทีแ่ ตกตางกันเหลานั้นสําหรับใชในการถอดรหัสลับไฟลขอมูลแตละไฟลดว ย
ในทางปฏิบัติ การนําแนวทางทั้งสองขางตนมาประยุกตใชงานรวมกัน จะเปนแนวทางที่ดีที่สุด
สําหรับการเขารหัสในหนวยเก็บขอมูล กลาวคือ โดยการเขารหัสลับไฟลขอมูลแตละไฟลของผูใชงานแตละ
คนดวยกุญแจที่แตกตางกัน และทําการเขารหัสลับกุญแจที่แตกตางกันเหลานั้นดวยกุญแจอีกดอกหนึ่งที่
ผูใชงานเลือกขึ้นมา ซึ่งผูใชงานแตละคนจําเปนตองจดจํากุญแจที่ตนเลือกไวเพียงดอกเดียวเทานั้น ในกรณีนี้
ผูใชงานแตละคนสามารถเขาถึงสวนใดสวนหนึ่งของขอมูลทั้งหมดที่เก็บอยูในหนวยเก็บขอมูลที่ตนเอง
รับผิดชอบหรือตนเองเปนเจาของไดโดยใชกุญแจของตนเอง กุญแจทีใ่ ชในการเขารหัสลับกุญแจอืน่ ๆ ที่
แตกตางกันของผูใชงานแตละคนจะเปนที่รจู ักกันในชื่อ กุญแจอางอิง (Dereferencing Key) มากกวานั้นเรา
อาจทําการเขารหัสลับกุญแจทุกๆ ดอกที่ใชเขารหัสลับไฟลขอมูลทุกๆ ไฟลดวยกุญแจหลัก (Master Key)
แลวเก็บรักษากุญแจนัน้ ไวเพื่อเปนกุญแจสํารองสําหรับการถอดรหัสลับไฟลขอมูลใดๆ ในหนวยเก็บขอมูล
ทั้งนี้การนํากุญแจหลักมาใชก็มีขอเสียเชนเดียวกัน ยกตัวอยางเชน ถากุญแจหลักเกิดสูญหายหรือถูกขโมยไป
เราจะไมสามารถทําการคนคืนไฟลขอมูลทั้งหมดที่เก็บอยูใ นหนวยเก็บขอมูลนั้นๆ ได และบุคคลที่ไดกุญแจ
หลักนั้นไปก็สามารถเขาถึงไฟลขอมูลตางๆ ที่เก็บอยูในหนวยเก็บขอมูลนั้นไดทั้งหมดดวย
148
11.5 การเลือกใชอุปกรณเขารหัสลับ
ในอดีตที่ผานมา ผลิตภัณฑ (Product) หรืออุปกรณที่ใชในการเขาและถอดรหัสลับมักจะอยูในรูป
ของฮารดแวรที่ออกแบบมาเปนพิเศษเปนหลัก อุปกรณเหลานั้นสวนใหญจะมีลักษณะเปนกลอง (Box) ที่ใช
เสียบ (Plug) ตรงเขากับสายสัญญาณสื่อสาร (Communication Line) และจะทําหนาที่เขารหัสลับขอมูล
ทั้งหมดที่เชื่อมตอผานสายสัญญาณเหลานั้น ซึ่งขอดีของการใชอุปกรณเขารหัสลับที่เปนฮารดแวรมีอยู 3
ประการหลักๆ คือ
1. ความเร็ว โดยทั่วไป อัลกอริทึมการเขารหัสลับที่มีประสิทธิภาพจะประกอบดวยขัน้ ตอนการ
ดําเนินการที่กระทํากับขอมูลที่ซับซอนเปนจํานวนมาก ไมวาจะอยูใ นรูปบิตหรือตัวเลข ซึ่งการ
ดําเนินการเหลานั้นไมเหมาะสมที่จะนํามาประยุกตใชกบั เครื่องคอมพิวเตอรที่ออกแบบมา
สําหรับการใชงานทั่วๆ ไป ยกตัวอยางเชน อัลกอริทึม DES และ RSA จะมีการทํางานที่ชามาก
เมื่อนํามาใชกบั หนวยประมวลผลที่ใชสําหรับงานทั่วๆ ไป (General-purpose Processors)
ถึงแมนักสรางรหัสลับหลายๆ คนพยายามที่จะออกแบบใหอัลกอริทึมการเขารหัสลับของตนมี
ความเหมาะสมตอการใชงานกับอุปกรณเขารหัสลับที่เปนซอฟทแวรก็ตาม แตเมื่อนํามา
เปรียบเทียบกับความเร็วในการเขารหัสลับของอุปกรณฮารดแวรที่ออกแบบมาเปนพิเศษแลว
มักจะชากวาเสมอ
2. ความปลอดภัย อัลกอริทึมการเขารหัสลับที่ทํางานกับเครื่องคอมพิวเตอรทั่วๆ ไปในรูปของ
ซอฟทแวรจะไมมีการปองกันทางกายภาพ (Physical Protection) ซึ่งทําใหผูโจมตีสามารถ
แอบใชโปรแกรมตรวจแกจดุ บกพรอง (Debugger) ชนิดตางๆ เพื่อแกไขเปลี่ยนแปลงตัว
อัลกอริทึมที่ใชงานอยูเปนประจําอยางลับๆ โดยที่ผูใชงานไมตระหนัก (Realize) ถึงเลยก็
เปนได เพื่อปองกันปญหาทีก่ ลาวมาขางตน เราอาจเปลี่ยนมาใชอุปกรณเขารหัสลับที่อยูในรูป
ของฮารดแวรที่ไดรับการหอหุม (Encapsulate) มาอยางปลอดภัย เชน การใชกลองที่ทนตอ
การปรับปรุงแกไข (Tamper-proof Box) สามารถปองกันผูที่ไมประสงคดีแอบทําการ
ปรับเปลี่ยนอุปกรณเขารหัสลับในรูปของฮารดแวรที่เก็บรักษาอยูภ ายในกลองนั้นได หรือตัว
ชิป VLSI ที่ออกแบบมาสําหรับงานเฉพาะทาง อาจมีการเคลือบดวยวัสดุทางเคมี เชน เรซิน
(Resin) หรืออีพ็อกซี (Epoxy) กอนนําไปใชงานจริง เพื่อที่วาถามีใครพยายามแกะหรือแงะดู
สวนประกอบ (Component) หรือลายวงจร (Circuit) ที่อยูภายใน จะสงผลใหชิปตัวนัน้
เสียหายจนไมสามารถนํามาใชงานไดอกี
149
3. ความสะดวกในการติดตั้งใชงาน การใชงานอุปกรณเขารหัสลับสวนใหญมักจะไมมีความ
เกี่ยวของกับเครื่องคอมพิวเตอรที่ออกแบบมาสําหรับการใชงานทั่วๆ ไป เชน ในการเขารหัส
ลับสัญญาณเสียงจากการสนทนาผานสายโทรศัพท หรือการเขารหัสลับขอมูลที่สงผาน
เครื่องโทรสาร (Facsimile, FAX) หรืออุปกรณสื่อสารเฉพาะทาง คนสวนใหญมักตองการนํา
อุปกรณเขารหัสลับในรูปที่เปนฮารดแวรมาเชื่อมตอกับตัวโทรศัพทหรือโทรสารโดยตรง เพื่อ
ทําการเขารหัสลับสัญญาณเสียงหรือขอมูลใดๆ กอนที่จะสงผานออกไปยังเครือขายภายนอก
ซึ่งวิธีการเชนนี้จะมีความสะดวกสบายตอผูใชงานมากกวาการนําซอฟทแวรสําหรับการ
เขารหัสลับมาติดตั้งลงในเครื่องคอมพิวเตอร และถึงแมวาขอความรหัสจะถูกสรางมาจากเครื่อง
คอมพิวเตอร การนําอุปกรณเขารหัสลับในรูปของฮารดแวรมาใชจะมีความสะดวกมากกวาการ
ที่ตองเขาไปเปลี่ยนแปลงระบบภายในของเครื่องคอมพิวเตอรนั้นๆ ทุกวันนีแ้ มแตเครื่อง
คอมพิวเตอรสวนบุคคลก็ยังมีอุปกรณเสริมที่ออกแบบมาสําหรับใชในการเขารหัสลับขอมูล ซึ่ง
สามารถซื้อและนํามาใชงานไดทันทีโดยการเชื่อมตอโดยตรงระหวางเครื่องคอมพิวเตอรและ
โมเด็มภายนอกหรือตัวกล้ําและแยกสัญญาณภายนอก (External Modem)
ในทํานองเดียวกัน อุปกรณเขารหัสลับในรูปของซอฟทแวรจะมีจดุ ออนในเรื่อง ความเร็วของการ
ประมวลผล ตนทุนในการนํามาใชงาน และความงายในการปรับเปลี่ยนแกไข แตจะมีจุดแข็งในเรือ่ ง ความ
ยืดหยุนในการนําไปใช (Flexibility) ความสะดวกในการพกพา (Portability) ความงายในการใชงาน (Ease
of Use) และความสะดวกในการปรับใหเปนปจจุบัน (Update) ซึ่งทุกๆ อัลกอริทึมที่ออกแบบมาสําหรับใช
ในการเขาและถอดรหัสลับ สามารถนํามาประยุกตใชงานในรูปของซอฟทแวรได นอกจากนี้ เราสามารถ
คัดลอกตัวซอฟทแวรเพื่อนําไปใชกับเครื่องคอมพิวเตอรอื่นๆ ไดโดยไมตองเสียคาใชจายเพิ่มเติม และอาจ
ทําการปรับปรุงแกไขตัวซอฟทแวรเพื่อใหทํางานรวมกับโปรแกรมอื่นๆ ได เชน โปรแกรมสําหรับสื่อสาร
ขอมูล โปรแกรมประมวลคํา (Word Processor) เปนตน
ในปจจุบนั อุปกรณเขารหัสลับในรูปซอฟทแวรเปนทีน่ ิยมใชกันอยางกวางขวาง เนื่องมาจากการ
เพิ่มขึ้นของการใชงานเครื่องคอมพิวเตอรสวนบุคคลเปนหลัก ซึ่งสวนใหญผูใชงานมักจะเขารหัสลับ
ไฟลขอมูลตางๆ ที่เก็บไวในจานบันทึกแบบแข็งดวยตนเอง ในทางปฏิบัติ ผูใชงานอาจไมรูเลยวา ใครคน
หนึ่งไดแอบเปลี่ยนแปลงแกไขตัวอัลกอริทึมการเขารหัสลับที่ติดตั้งอยูในเครื่องคอมพิวเตอรใหเปนไป
ในทางที่เอื้อประโยชนตอคนๆ นั้น เชน การแทนที่ไฟลโปรแกรมที่ใชในการเขารหัสลับตัวเดิมใหเปนตัว
ใหมที่มีความปลอดภัยนอยลง เปนตน
150
11.6 การประยุกตใชงานตัวแปลงรหัสแบบกลุม
โดยปกติ เราสามารถนําตัวแปลงรหัสแบบกลุม (Block Cipher) หลายๆ ชนิดมาใชรวมกันเพื่อสราง
ตัวแปลงรหัสแบบกลุมชนิดใหมขึ้นมาได ถาตัวแปลงรหัสแบบกลุมที่นาํ มาใชรวมกันเปนตัวแปลงรหัสชนิด
เดียวกันจะเรียกวา การเขารหัสลับแบบหลายครั้ง (Multiple Encryption) แตถาตัวแปลงรหัสแบบกลุมที่
นํามาใชรวมกันเปนคนละชนิดจะเรียกวา การเขารหัสลับแบบตอเรียง (Cascading Encryption)
จุดประสงคหลักที่นําตัวแปลงรหัสแบบกลุมมาประยุกตใชงานในรูปแบบขางตนนั้น ก็เพื่อที่เพิ่มระดับความ
ปลอดภัยของระบบการเขารหัสลับที่ใช โดยไมจําเปนตองไปเกี่ยวของกับขั้นตอนการออกแบบตัวแปลง
รหัสแบบกลุมชนิดใหมอีก ยกตัวอยางเชน อัลกอริทึม DES ที่เปนทีย่ อมรับจากนักสรางรหัสลับทั่วโลกวา มี
ความปลอดภัยตอการวิเคราะหรหัสลับแบบตางๆ ในปจจุบัน วิธีการโจมตีที่มีประสิทธิผลในทางปฏิบัติตอ
อัลกอริทึม DES ก็มีเพียงการโจมตีแบบตะลุยเทานัน้ อยางไรก็ตาม กุญแจที่ใชเขาและถอดรหัสลับใน
อัลกอริทึม DES มีขนาดแค 56 บิต ซึ่งถือวานอยเกินไปสําหรับการนําไปใชงานในดานความปลอดภัยของ
ขอมูลในยุคปจจุบัน ดังนั้นเราอาจนําอัลกอริทึม DES มาประยุกตใชงานโดยการเขารหัสลับแบบหลายครั้ง
เพื่อสรางอัลกอริทึมการเขารหัสลับชนิดใหมที่มีขนาดกุญแจที่ใหญขึ้นก็ได และสิ่งที่เราไดรับจากการทํา
เชนนั้นก็คือ อัลกอริทึมชนิดใหมที่มีการยอมรับวายังมีความปลอดภัยและมีขนาดกุญแจที่ใหญขึ้นมาใชงาน
151
ใหสังเกตวา มีความเปนไปไดที่จะพบกุญแจ K3 ที่ใหผลลัพธเหมือนกับการเขารหัสลับสองครั้ง ดัง
สมการตอไปนี้
152
นักวิเคราะหรหัสลับสามารถคํานวณหา EK1(M1) โดยใชกุญแจที่เปนไปไดทั้งหมดของ K1 แลวเก็บ
ผลลัพธที่ไดไวในหนวยความจํา (Memory) ซึ่งตองการพื้นที่หนวยความจําขนาด 2n กลุมบิต จากนัน้ ทําการ
คํานวณหา DK2(C1) โดยใชกญ ุ แจที่เปนไปไดทั้งหมดของ K2 ทีละดอก ผลลัพธที่ไดจะนําไปเปรียบเทียบกับ
ผลลัพธที่เก็บไวในหนวยความจํา ถาตรงกัน แสดงวามีความเปนไปไดที่กุญแจดอกทีเ่ ขาใชถอดรหัสลับอยู
คือ K2 และกุญแจที่ใชเขารหัสลับดอกที่ใหผลลัพธในหนวยความจําตรงกับผลลัพธที่นํามาเปรียบเทียบคือ K1
กลาวคือ EK1(M1) = DK2(C1) ถานักวิเคราะหรหัสลับไมแนใจ เขาอาจทําการคํานวณ EK1(M2) และนําผลลัพธ
ที่ไดมาเปรียบเทียบกับ DK2(C2) ถาตรงกัน ยิ่งมีความเปนไปไดสูงมากที่กุญแจที่เขาทดลองใชในรอบที่สองนี้
คือ K1 และ K2 นักวิเคราะหรหัสลับอาจทดลองอีกครั้งกับ M3 และ C3 จนกวาจะมัน่ ใจวา เขาไดคน พบ
กุญแจ K1 และ K2 จริงๆ
ใหสังเกตวา ขัน้ ตอนที่นักวิเคราะหรหัสลับคํานวณหา EK1(M1) แลวเก็บผลลัพธที่ไดไวใน
หนวยความจําจะมีจํานวน 2n ครั้ง ขณะที่ขั้นตอนการเปรียบเทียบผลลัพธที่ไดจากการคํานวณ DK2(C1) กับ
ผลลัพธที่เก็บไวในหนวยความจําจะมีจํานวน 2n ครั้งเชนกัน ดังนัน้ ความพยายามทีน่ กั วิเคราะหรหัสลับตอง
ใชในการหากุญแจทั้งสองดอกจึงไมใช 22n แตเปน 2x2n = 2n+1 เทานั้น การโจมตีในลักษณะนี้เปนที่รูจักกัน
ในชื่อ การโจมตีแบบพบกันตรงกลาง ทั้งนี้เนื่องมาจากวิธีการที่ใชในการวิเคราะหรหัสลับมีการทํางานใน
ลักษณะที่วา ผูโ จมตีสามารถทําการเขารหัสลับดานหนึ่ง และทําการถอดรหัสลับอีกดานหนึ่ง ผลลัพธที่ไดทั้ง
สองจะนํามาจับคูกันตรงกลาง อยางไรก็ตาม ในทางปฏิบตั ิการโจมตีแบบพบกันตรงกลางตองการพื้นที่
หนวยความจําเปนจํานวนมาก นักวิเคราะหรหัสลับจําเปนตองใชหนวยความจําขนาด 2n กลุมบิตในการเก็บ
ผลลัพธที่ไดจากการโจมตีแบบตะลุย ยกตัวอยางในกรณีของอัลกอริทึม DES ที่ใชกญ ุ แจขนาด 56 บิต
56
นักวิเคราะหรหัสลับจําเปนตองใชหนวยความจําขนาด 64 บิตจํานวน 2 หนวยเปนเครื่องมือในการโจมตี
แบบพบกันตรงกลาง หรือเทียบเทากับหนวยความจําทีใ่ ชเก็บขอมูลขนาด 1017 ไบต ซึ่งความตองการ
หนวยความจําที่สูงมากนี่เองที่ทําใหการโจมตีแบบพบกันตรงกลาง ณ เวลาปจจุบนั เกิดขึ้นไดยากในทาง
ปฏิบัติ
153
11.6.3.1 การเขารหัสลับสามครั้งดวยกุญแจสองดอก
การเขารหัสลับสามครั้งดวยกุญแจสองดอก ทําไดโดยการเขารหัสลับกลุมบิตนําเขาจากขอความ
ตนฉบับสามครั้งติดตอกันดวยกุญแจสองดอกที่ตางกัน ครั้งแรกดวยกุญแจดอกทีห่ นึง่ ครั้งที่สองดวยกุญแจ
ดอกที่สอง และครั้งที่สามดวยกุญแจดอกทีห่ นึ่งตัวเดิม [TUCH79] ในการนําไปใชในทางปฏิบัติ ผูใชงาน
ควรเขารหัสลับครั้งแรกดวยกุญแจดอกที่หนึ่ง จากนัน้ ทําการถอดรหัสลับผลลัพธที่ไดดวยกุญแจดอกที่ 2
แลวจึงทําการเขารหัสลับผลลัพธที่ไดอีกครั้งดวยกุญแจดอกที่หนึ่ง ขั้นตอนการถอดรหัสลับสามารถทําได
โดยการดําเนินการแบบผันกลับ ฟงกชันในการเขาและถอดรหัสลับของวิธีการขางตนสามารถแสดงใหอยู
ในรูปของสมการไดดังนี้ ดูรูปที่ 11.11 ประกอบ
154
ถึงแมวาการเขารหัสลับสามครั้งจะทนตอการโจมตีแบบพบกันตรงกลางได ซึ่งสงผลใหความ
ปลอดภัยของระบบโดยรวมเพิ่มสูงขึ้น แตวิธีการเขารหัสลับในลักษณะนี้จะมีจดุ ออนตอการโจมตีขอความ
ตนฉบับแบบเลือกได ซึ่งในกรณีนี้ ผูโจมตีหรือนักวิเคราะหรหัสลับไมเพียงแตจะสามารถเขาถึงขอความ
ตนฉบับและขอความรหัสผลลัพธหลายๆ ขอความได แตเขายังสามารถเลือกขอความตนฉบับในรูปแบบที่
ตองการเพื่อใชในการเขารหัสลับไดอีกดวย ยกตัวอยางเชน นักวิเคราะหรหัสลับสามารถคํานวณหา DK2(0)
โดยใชกุญแจที่เปนไปไดทั้งหมดของ K2 แลวเก็บผลลัพธที่ไดไวในหนวยความจํา จากนั้นทําการคํานวณหา
DK1(0) โดยใชกุญแจที่เปนไปไดทั้งหมดของ K1 ผลลัพธที่ไดจะพิจารณาเปนขอความตนฉบับ M ตอมาให
เขารหัสลับสามครั้งขอความตนฉบับ M แลวทําการถอดรหัสลับขอความรหัสที่ไดดว ย K1 ทันที ผลลัพธที่ได
ในขั้นตอนนี้จะนําไปเปรียบเทียบกับผลลัพธที่เก็บไวในหนวยความจํา คําอธิบายขางตนสามารถเขียนใหอยู
ในของสมการไดดังนี้
155
11.6.3.2 การเขารหัสลับสามครั้งดวยกุญแจสามดอก
เพื่อใหการเขารหัสลับสามครั้งมีความปลอดภัยเพิ่มมากขึน้ เราอาจเขารหัสลับกลุมบิตของขอความ
ตนฉบับทั้งสามครั้งดวยกุญแจสามดอกทีแ่ ตกตางกันทั้งหมด ฟงกชันการเขาและถอดรหัสลับดวยกุญแจสาม
ดอกที่แตกตางกันสามารถเขียนในรูปของสมการไดดังนี้ ดูรูปที่ 11.12 ประกอบ
156
ตารางที่ 11.1 การเปรียบเทียบการเขารหัสลับแบบหลายครั้งของ DES ในรูปแบบตางๆ
No. of
No. of Keys Computation Storage Type of Attack
Encryptions
Single 1 256 - Known plaintext
Single 1 238 238 Chosen plaintext
Single 1 - 256 Chosen plaintext
112
Double 2 2 - Known plaintext
Double 2 256 256 Known plaintext
Double 2 - 2112 Chosen plaintext
112
Triple 2 2 - Known plaintext
Triple 2 256 256 56
2 Chosen plaintext
Triple 2 2120-t 2t 2t Known plaintext
Triple 2 - 256 Chosen plaintext
112
Triple 3 2 256 Known plaintext
Triple 3 256 2112 Chosen plaintext
ที่มา FAQ about today’s cryptography, version 3.0, RSA Data Security, Inc., 1996 [FAQ96]
11.6.4 การเขารหัสลับแบบตอเรียง
สําหรับการเขารหัสลับแบบตอเรียงนั้น ในการเขารหัสลับครั้งที่สองขึ้นไป นอกจากจะใชกุญแจที่
แตกตางกันแลว ตัวแปลงรหัสที่ใชยังแตกตางกันดวย ยกตัวอยางเชน โดยการเขารหัสลับกลุมบิตนําเขาของ
ขอความตนฉบับดวยตัวแปลงรหัส A และกุญแจ KA กอน จากนัน้ จึงทําการเขารหัสลับขอความรหัสที่ไดอีก
ครั้งดวยตัวแปลงรหัส B และกุญแจ KB ผูใชงานอาจทําการเขารหัสลับอีกโดยใชตัวแปลงรหัส C และกุญแจ
KC ตอไปเรื่อยๆ ก็ได การถอดรหัสลับทําไดโดยการดําเนินการแบบผันกลับเชนเดียวกัน ในเรื่องความ
ปลอดภัยของการเขารหัสลับแบบตอเรียงนั้น ถากุญแจที่ใชทั้งหมดมีความเปนอิสระตอกัน ไมมีความ
เกี่ยวของใดๆ ตอกัน ความทนทานตอการโจมตีของระบบการเขารหัสลับแบบตอเรียง จะเทียบเทากับความ
ทนทานตอการโจมตีของตัวแปลงรหัสตัวแรกสุดที่นํามาตอเรียงกัน [MAUR93] นอกจากนี้ ถาตัวแปลงรหัส
ตัวที่สองที่นํามาตอเรียงไมทนทานตอการโจมตีขอความตนฉบับแบบเลือกได ตัวแปลงรหัสตัวแรกสุดที่
นํามาตอเรียงจะชวยอํานวยความสะดวกตอการโจมตีนั้นๆ และยังทําใหตัวแปลงรหัสตัวที่สองมีจุดออน
เพิ่มขึ้น กลาวคือ ทําใหตัวแปลงรหัสตัวที่สองไมทนทานตอการโจมตีที่รูขอความตนฉบับ ซึ่งจุดออนที่กลาว
มานี้จะเกิดขึน้ กับการเขารหัสลับแบบตอเรียงเสมอ ไมวา จะนําตัวแปลงรหัสชนิดใดมาใชในการตอเรียง
กลาวอีกนัยหนึ่งก็คือ โดยการใชการโจมตีขอความตนฉบับแบบเลือกได ความแข็งแกรงของการเขารหัสลับ
แบบตอเรียง จะเทียบเทากับความแข็งแกรงของตัวแปลงรหัสใดๆ ที่นํามาใชในการตอเรียงนั้น [KNUD94]
ซึ่งก็หมายความวา ความปลอดภัยของระบบการเขารหัสลับแบบตอเรียงทั้งระบบ จะขึ้นอยูกับความ
157
ปลอดภัยของตัวแปลงรหัสตัวที่แข็งแกรงมากที่สุดในระบบนั่นเอง รูปที่ 11.13 แสดงการเขารหัสลับแบบตอ
เรียงโดยใชอัลกอริทึม A และ B
ในกรณีที่นายดํากับนายแดงตองการแลกเปลี่ยนความลับระหวางกัน แตไมเชื่อใจในตัวแปลงรหัสที่
ตางฝายตางเลือกใช พวกเขาทั้งสองสามารถนําวิธีการเขารหัสลับแบบตอเรียงมาประยุกตใชได โดยนายดํา
จะเขารหัสลับขอความตนฉบับของตนโดยใชตวั แปลงรหัส A กอน แลวตามดวยตัวแปลงรหัส B ขณะที่นาย
แดงซึ่งไวใจตัวแปลงรหัส B มากกวา ก็สามารถเขารหัสลับขอความตนฉบับของตนโดยใชตวั แปลงรหัส B
กอนแลวตามดวยตัวแปลงรหัส A ก็ได ใหสังเกตวา กุญแจที่ใชในแตละตัวแปลงรหัสจะตองเปนอิสระตอ
กัน ถาตัวแปลงรหัส A ใชกุญแจขนาด 64 บิต และตัวแปลงรหัส B ใชกญ ุ แจขนาด 128 บิต ระบบการ
เขารหัสลับแบบตอเรียงที่ไดจะมีความทนทานตอการโจมตีเทียบเทากับการใชกุญแจขนาด 192 บิต
วิธีการหนึ่งทีน่ ํามาใชเพื่อเพิม่ ความแข็งแกรงของระบบการเขารหัสลับแบบตอเรียง ใหเทียบเทากับ
ความแข็งแกรงของตัวแปลงรหัสทั้งหมดทีน่ ํามาตอเรียงกัน มีดังนี้ [SCHN96]
1. กรณีที่ใชตวั แปลงรหัสสองตัวและกุญแจที่เปนอิสระตอกัน ใหสรางกระแสบิตแบบสุม R ซึ่งมี
ขนาดหรือความยาวเทากับขอความตนฉบับ M
2. ทําการเขารหัสลับ R ดวยตัวแปลงรหัสตัวแรก
3. ทําการเขารหัสลับ M ⊕ R ดวยตัวแปลงรหัสตัวที่สอง
4. ขอความรหัสคือผลลัพธที่ไดจากขั้นตอนที่ 2 และ 3
สมมุติวากระแสบิตแบบสุมที่สรางขึ้นเปนแบบสุมจริง วิธีการเขารหัสลับในลักษณะนี้จะเปนการ
เขารหัสลับขอความตนฉบับ M ดวยอัลกอริทึม One-time Pad กอนที่จะมีการเขารหัสลับผลลัพธของ M ⊕
R และ R ดวยตัวแปลงรหัสแตละตัวที่แตกตางกัน เนื่องจากในการกูคนื ขอความตนฉบับ M จําเปนตองมีทั้ง
M ⊕ R และ R นักวิเคราะหรหัสลับจึงถูกบังคับใหตองโจมตีตัวแปลงรหัสทั้งสองตัว ดังนัน้ ความปลอดภัย
ของระบบทั้งระบบ จึงเทียบเทากับความแข็งแกรงของตัวแปลงรหัสแตละตัวนํามารวมกัน อยางไรก็ตาม
ขอดอยของวิธกี ารเขารหัสลับในลักษณะนีก้ ็คือ ขอความรหัสที่ไดจะมีขนาดเปน 2 เทาของขอความตนฉบับ
วิธีการนี้สามารถนําไปใชกับระบบที่มีตัวแปลงรหัสมากกวา 2 ตัวก็ได แตขนาดของขอความรหัสที่ได ก็จะ
เพิ่มขึ้นเปนจํานวนเทาตามจํานวนของตัวแปลงรหัสที่ใช
158
11.7 คําถามทายบท
1. จงอภิปรายถึงขอดี ขอเสียของการใชงานตัวแปลงรหัสแบบกระแสและตัวแปลงรหัสแบบกลุม
2. จงบรรยายโหมดการทํางานหลักๆ ของตัวแปลงรหัสแบบกลุม พรอมอธิบายขั้นตอนการทํางานในแตละ
โหมดมาพอสังเขป
3. นักศึกษาคิดวาโหมดการทํางานของตัวแปลงรหัสแบบกลุม โหมดใดมีประสิทธิภาพมากที่สุด เพราะเหตุ
ใด จงบรรยายพรอมยกตัวอยางประกอบ
4. จงอภิปรายจุดออนในการใชงานตัวแปลงรหัสแบบกลุม พรอมทั้งบรรยายถึงสาเหตุและแนวทางแกไขที่
เปนไปได
5. จงเปรียบเทียบความแตกตางระหวางการเขารหัสลับในระบบสื่อสารขอมูลและในหนวยเก็บขอมูล
6. จงอภิปรายถึงขอดี ขอเสียของการเขารหัสลับแบบจุดเชือ่ มโยงถึงจุดเชื่อมโยงและแบบขั้นปลายถึงขั้นปลาย
7. จงอภิปรายถึงแนวทางการเขารหัสลับ 2 แนวทางที่นํามาใชในหนวยเก็บขอมูล นักศึกษาคิดวาแนวทาง
ใดมีประสิทธิภาพมากกวากัน เพราะเหตุใด
8. จงเปรียบเทียบความแตกตางระหวางกุญแจอางอิงและกุญแจหลัก
9. จงอภิปรายถึงขอดี ขอเสียของการใชอุปกรณการเขารหัสลับฮารดแวรและซอฟทแวร นักศึกษาคิดวาการ
เขารหัสลับแบบหลายครั้งเปนจํานวน n ครั้งจะทําใหระบบมีความแข็งแกรงเพิ่มขึ้น n เทาหรือไม เพราะ
เหตุใด จงอธิบายถึงเหตุผลที่ตอบมาพอสังเขป
10. จงอธิบายความแตกตางระหวางการเขารหัสลับแบบหลายครั้งและการเขารหัสลับแบบตอเรียง นักศึกษา
คิดวาการเขารหัสลับแบบใดมีความแข็งแกรงทนทานตอการโจมตีมากกวากัน เพราะเหตุใด จงอธิบาย
ถึงเหตุผลที่ตอบมาพอสังเขป
11. จงบรรยายลักษณะการโจมตีแบบพบกันครึ่งทาง พรอมทั้งอภิปรายถึงแนวทางปองกันที่เปนไปได
159
บทที่ 12
วิทยาการรหัสลับประยุกต ตอนหนึ่ง
12.1 การกระจายกุญแจ
ปญหาหนึ่งที่มผี ลกระทบตอการนําวิทยาการรหัสลับไปใชงานในทางปฏิบัติ ไมวาจะใชอัลกอริทึม
สมมาตรหรืออสมมาตรก็คือ ปญหาการกระจายกุญแจ ซึ่งโดยปกติ ระบบการเขารหัสลับที่ใชอัลกอริทึม
สมมาตรเปนหลัก มักจะเกิดปญหาในดานการจัดเตรียม (Set Up) กุญแจที่ใชระหวางผูใชงานในระบบ
ยกตัวอยางเชน ในกรณีที่นายดําตองการติดตอสื่อสารกับนายแดงอยางเปนความลับโดยใชการเขารหัสลับ
แบบสมมาตร แตนายดําอยูคนละประเทศกับนายแดง พวกเขาทั้งสองจะจัดเตรียมกุญแจที่ใชในการเขาและ
ถอดรหัสลับ ในตอนแรกสุดกอนที่จะมีการสื่อสารที่เปนความลับไดอยางไร เนื่องจากชองทางการสื่อสารที่
มีอยูในปจจุบนั ไมวาจะเปนทางอินเทอรเน็ต หรือทางโทรศัพท ถือวาเปนชองทางสาธารณะและไมมีความ
ปลอดภัยใดๆ เลย สําหรับระบบการเขารหัสลับที่ใชอัลกอริทึมอสมมาตรเปนหลัก หรือระบบการเขารหัส
ลับลูกผสม ก็มีปญหาในดานการกระจายกุญแจเชนเดียวกัน ยกตัวอยางเชน การที่นายดําไดรับกุญแจ
สาธารณะของนายแดงมาโดยที่ไมไดรับมากับมือจากนายแดง นายดําจะรูไดอยางไรวากุญแจสาธารณะที่
ไดมานี้เปนของนายแดงจริงๆ ไมใชของคนอื่นที่แอบอางมา การแกปญ หาการกระจายกุญแจในระบบแรก
นั้น จะอยูบนแนวคิดของการนําศูนยกลางกระจายกุญแจ (Key Distribution Center, KDC) มาประยุกตใช
งานเปนหลัก ขณะที่การแกปญหาในระบบหลังนั้น จะอยูบนแนวคิดของการนําใบรับรอง (Certificate) และ
โครงสรางพื้นฐานกุญแจสาธารณะ (Public Key Infrastructure, PKI) มาประยุกตใชงานเปนหลัก
12.2 ระบบการกระจายกุญแจสมมาตร
ในระบบการกระจายกุญแจสมมาตร จําเปนตองมีกลุมผูใชงานที่ไวใจได (Trusted Party) ทําหนาที่
เปนศูนยกลางกระจายกุญแจ หรือ KDC การใช KDC นอกจากจะชวยในเรื่องของการกระจายกุญแจแลว ยัง
ชวยลดจํานวนกุญแจที่มหี รือใชงานอยูใ นระบบได ซึ่งโดยปกติ ถามีผูใชงานในระบบ n คน จะมีจํานวน
กุญแจในระบบทั้งสิ้น n(n-1)/2 ดอก แตเมือ่ นํา KDC มาใชแลว จํานวนกุญแจในระบบจะลดลงเหลือ n ดอก
เทานั้น กลาวคือ ผูใชงานแตละคนจะเก็บรักษาแตกุญแจที่ใชในการติดตอกับ KDC เพียง 1 ดอกเทานั้น เวลา
ที่ตองการติดตอกับผูใชงานคนอื่นๆ ก็จะติดตอกับ KDC เพื่อให KDC สรางกุญแจชวงเวลา (Session Key)
สําหรับการติดตอกับผูใชงานคนนั้นขึ้นมาใหม ขั้นตอนการทํางานของ KDC สามารถสรุปไดดังนี้ ดูรูปที่
12.1 ประกอบ
160
1. นายดํา (User A) สงขอความไปให KDC ในขอความประกอบดวย เอกลักษณ (Identity) ของ
นายดํา (A) และชื่อของบุคคลที่นายดําตองการจะติดตอดวย ในที่นี้คือนายแดง (User B’s
Identity) ขอความนี้ไมจําเปนตองเขารหัสลับใดๆ ทั้งสิ้น
2. เมื่อ KDC ไดรบั ขอความจากนายดําแลว จะสรางสิ่งที่เรียกวาตั๋ว (Ticket) ขึ้นมา ซึ่งตั๋วในที่นี้
ประกอบดวย เอกลักษณของนายดํา เอกลักษณของนายแดง (B) และกุญแจชวงเวลาสําหรับการ
ติดตอระหวางนายดํากับนายแดง (KA_B) ในรูปของขอความรหัสที่ผานการเขารหัสลับดวย
กุญแจของนายแดง (KB) ตั๋วที่ออกใหนี้จะนํามารวมกับ KA_B แลวเขารหัสลับดวยกุญแจของ
นายดํา (KA) ผลลัพธที่ไดจะสงใหนายดํา เมื่อนายดําไดรบั ขอความรหัสจาก KDC แลวจะทําการ
ถอดรหัสลับเพื่อใหได KA_B และตั๋วสําหรับติดตอกับนายแดง
3. นายดําสงตัว๋ ทีม่ ีอยูใหนายแดง เมื่อนายแดงถอดรหัสลับตั๋วที่สงมาแลวก็จะทราบวา นายดํา
ตองการติดตอกับตนเองโดยใช KA_B เปนกุญแจชวงเวลา
161
นอนซในที่นี้ หมายถึงตัวเลขสุมที่มีคามากๆ ที่นํามาใชงานเพียงครั้งเดียวเทานั้น ขัน้ ตอนการทํางานของโพร
โทคอล Needham-Schroeder สามารถสรุปไดดังนี้ ดูรูปที่ 12.2 ประกอบ
1. นายดําสงขอความที่แสดงเอกลักษณของตนใหนายแดง เพื่อแจงใหนายแดงทราบวาตนเอง
ตองการติดตอดวย
2. เมื่อนายแดงไดรับขอความแลวจะสรางนอนซ RB ขึ้นมา ทําการเขารหัสลับ RB ดวยกุญแจของ
ตน (KB) แลวสงขอความรหัสผลลัพธที่ไดใหนายดํา นายดําจะใชขอความรหัสนี้เพื่อพิสูจนกับ
KDC วา ตนเองไดติดตอกับนายแดงมาแลว
3. นายดําสงขอความให KDC ในขอความประกอบดวย คานอนซของตนเอง (RA) เอกลักษณของ
นายดํา (A) เอกลักษณของนายแดง (B) และขอความรหัสที่ไดรับมาจากนายแดง
4. KDC สงขอความที่เขารหัสลับดวยกุญแจของนายดํา (KA) ใหกับนายดํา ในขอความ
ประกอบดวย คานอนซของนายดํา (RA) เอกลักษณของนายแดง (B) กุญแจชวงเวลาสําหรับนาย
ดํากับนายแดง (KA_B) และตัว๋ สําหรับติดตอกับนายแดง ซึ่งตั๋วในทีน่ ี้ประกอบดวย กุญแจ
ชวงเวลา (KA_B) เอกลักษณของนายดํา (A) และคานอนซของนายแดง (RB) ในรูปของขอความ
รหัสที่ผานการเขารหัสลับดวยกุญแจของนายแดง (KB)
5. เมื่อนายดําทําการถอดรหัสลับขอความรหัสที่สงมาจาก KDC แลว จะสงตั๋วที่ไดรับมาใหนาย
แดงพรอมกับคานอนซตัวใหม (R1) ที่เขารหัสลับดวย KA_B ในฐานะคําทาทาย (Challenge)
ใหกับนายแดง
6. นายแดงตอบสนอง (Response) คําทาทายของนายดําโดยการลบหนึ่งออกจาก R1 และสง
ผลลัพธที่ได (R1-1) พรอมกับคานอนซตัวใหม (R2) ในฐานะคําทาทายใหกับนายดํา โดยขอมูล
ทั้งสองที่สงไปจะถูกเขารหัสลับดวย KA_B กอน
7. นายดําตอบสนองคําทาทายของนายแดง โดยการลบหนึง่ ออกจาก R2 และสงผลลัพธที่ไดให
นายแดง โดยขอมูลที่สงไปนี้จะถูกเขารหัสลับดวย KA_B กอน
162
รูปที่ 12.2 การทํางานของโพรโทคอล Needham-Schroeder
163
ในสวนของการทํางาน จะมีเครื่องแมขายที่เกี่ยวของกับโพรโทคอล Kerberos อยู 3 ตัว คือ เครื่องแม
ขายพิสูจนตัวจริง (Authentication Server, AS) เครื่องแมขายออกตั๋ว (Ticket Granting Server, TGS) และ
เครื่องแมขายจริง (Real Server, RS) ดูรูปที่ 12.3 ประกอบ
1. เครื่องแมขายพิสูจนตัวจริง (AS) ทําหนาที่เปนศูนยกระจายกุญแจ (Key Distribution Center,
KDC) ในขั้นตอนการดําเนินงาน จะสมมติใหผูใชงานแตละคนไดทําการลงทะเบียน
(Register) กับ AS และไดรับชื่อผูใชและรหัสผานของตนเองไปเก็บไวแลว ซึ่ง AS ในตอนนี้
จะเปนเสมือนฐานขอมูลที่เก็บชื่อผูใชและรหัสผานของผูใชงานทุกๆ คนในระบบไว
2. เครื่องแมขายออกตั๋ว (TGS) ทําหนาที่ออกตั๋วสําหรับการนําไปใชงานกับเครื่องแมขายจริง โพร
โทคอล Kerberos จะแยกระบบการพิสูจนยืนยันบุคคล (User Verification) จากระบบการ
ออกตั๋ว ทําใหผูใชงานจําเปนตองพิสูจนยนื ยันตนเองกับ AS เพียงครัง้ เดียว หลังจากนั้นก็
สามารถติดตั้งกับ TGS มากกวา 1 ครั้งเพื่อขอออกตั๋วสําหรับนําไปใชงานกับเครื่องแมขายจริง
เครื่องอื่นๆ ไดโดยไมตองทําการพิสูจนยนื ยันบุคคลอีก
3. เครื่องแมขายจริง (RS) จะทําหนาที่ใหบริการผูใชงานในเครือขายที่ถือตั๋วอยู โพรโทคอล
Kerberos ไดรับการออกแบบมาสําหรับโปรแกรมใชงานประเภทเครื่องลูกขาย-แมขาย
(Client-server) เชน โปรแกรม FTP (File Transfer Protocol) เปนตน เพื่อใหผูใชงานได
เขาถึงและใชงานทรัพยากรของระบบเครือขายไดสะดวกและปลอดภัย
164
2. AS จะสงขอความรหัสที่เขารหัสลับดวยกุญแจของนายดํา (KA) ซึ่งจัดเตรียมไวตอนที่นายดํา
ลงทะเบียนครัง้ แรกกับ AS ขอความรหัสที่สงมานี้ภายในจะประกอบดวย กุญแจชวงเวลา
สําหรับการติดตอระหวางนายดํากับ TGS (KA_TGS) และตัว๋ ใบหนึ่งสําหรับใชติดตอกับ TGS
ตั๋วใบหนึ่งในที่นี้ก็คือ เอกลักษณของนายดํา (A) กับกุญแจชวงเวลา(KS) ที่ผานการเขารหัสลับ
ดวยกุญแจสมมาตรของ TGS (KTGS) เมื่อนายดําไดรับขอความรหัสแลวจะทําการถอดรหัสลับ
เพื่อใหได KA_TGS และตัว๋ ที่ใชติดตอกับ TGS
3. นายดําสงขอความให TGS ในขอความประกอบดวยขอมูล 3 สวนคือ ตั๋วที่ใชตดิ ตอกับ TGS
เครื่องแมขายจริง (RS) ที่นายดําตองการใชบริการ และตราเวลา (Time Stamp, T) เขารหัสลับ
ดวยกุญแจชวงเวลา KA_TGS
4. TGS สงตั๋วใหนายดํา 2 ใบ แตละใบจะประกอบดวยกุญแจชวงเวลาสําหรับการติดตอกับ RS
(KA_RS) ตั๋วสําหรับนายดําจะถูกเขารหัสลับดวย KA_TGS ตัว๋ สําหรับ RS จะถูกเขารหัสลับดวย
กุญแจสมมาตรของ RS (KRS) ใหสังเกตวาคนที่แอบดักฟงการสื่อสารอยูจะไมสามารถหาคา
KA_RS ได เนื่องจากไมรูคา KA_TGS และ KRS
5. นายดําสงตัว๋ ทีใ่ ชติดตอกับ RS พรอมกับตราเวลา (T) ที่เขารหัสลับดวยกุญแจชวงเวลา KA_RS
ให RS
6. RS ทําการตอบรับโดยการบวกหนึ่งที่ตราเวลา (T+1) จากนั้นทําการเขารหัสลับผลลัพธที่ได
ดวย KA_RS แลวสงใหนายดํา
165
12.3.1 ความแตกตางระหวาง Kerberos รุนที่ 4 และ 5
โพรโทคอล Kerberos รุนที่ 5 ไดรับการปรับปรุงมาจากรุนที่ 4 โดยที่ความแตกตางระหวางโพรโท
คอลทั้ง 2 รุนสามารถสรุปอยางยอๆ ไดดังนี้
1. รุนที่ 5 มีอายุใชงาน (Lifetime) ของตั๋วที่ยาวนานกวา
2. รุนที่ 5 อนุญาตใหทําการตออายุ (Renewed) ตั๋วที่ออกมาแลวได
3. รุนที่ 5 รองรับอัลกอริทึมสมมาตรไดทุกอัลกอริทึม ขณะที่รุนที่ 4 รองรับเพียง DES
4. รุนที่ 5 สามารถใชงานกับโพรโทคอลในเครือขายไดหลากหลายกวา ขณะที่รุนที่ 4 จะรองรับ
การใชงานเฉพาะโพรโทคอล IP เทานั้น
5. รุนที่ 5 ลดความซับซอนในขั้นตอนการพิสจู นตัวจริงระหวาง AS และ TGS ที่อยูตางพื้นที่กัน
12.4 คําถามทายบท
1. จงอภิปรายถึงขอดี ขอเสียของศูนยกลางกระจายกุญแจ หรือ KDC ที่ใชในระบบการกระจายกุญแจ
สมมาตร
2. จงใหคําจํากัดความของโพรโทคอล Kerberos และวัตถุประสงคในการนํามาใชงาน
3. จงอธิบายหลักการทํางานของโพรโทคอล Kerberos อยางยอๆ มีอุปกรณใดบางที่เกี่ยวของกับการทํางาน
ของโพรโทคอล Kerberos และมีความเกี่ยวของในสวนใด
166
บทที่ 13
วิทยาการรหัสลับประยุกต ตอนสอง
13.1 การกระจายกุญแจอสมมาตรและโครงสรางพื้นฐานกุญแจสาธารณะ
ในระบบการกระจายกุญแจอสมมาตรหรือกุญแจสาธารณะ จําเปนตองมีผูมีอํานาจออกใบรับรอง
(Certification Authority, CA) ซึ่งเปนกลุมคนที่ผูใชงานทุกคนในระบบไววางใจ เชน เมื่อมีการรองขอ
กุญแจสาธารณะของบุคคลใดบุคคลหนึ่งจากผูใชงานในระบบ ตัว CA ซึ่งมีกุญแจสาธารณะของผูใชงาน
ทุกๆ คนในระบบเก็บอยู อาจทําการเซ็นชื่อ (Sign) กุญแจสาธารณะของบุคคลคนนั้นพรอมกับตราเวลาดวย
กุญแจสวนตัวของตนเอง แลวสงผลลัพธที่ไดใหผูใชงานคนนั้น ดูรูปที่ 13.1 ประกอบ ซึ่งแนวคิดในการ
แกปญหาแบบนี้จะตั้งอยูบนสมมุติฐานที่วา ผูใชงานในระบบทุกคนรูคากุญแจสาธารณะของ CA อยางไรก็
ตาม จุดออนของระบบการกระจายกุญแจสาธารณะขางตนก็คือ เมื่อมีผูใชงานในระบบมากขึ้นปริมาณงาน
ของ CA ก็จะเพิ่มมากขึ้นดวยเชนกัน เพื่อแกปญหานี้ CA อาจทําการออกใบรับรองกุญแจสาธารณะ (Public
Key Certificate) ใหกับผูใชงานในระบบ เพื่อที่วาเมื่อผูใชงานมีการติดตอสื่อสารระหวางกัน ผูใชงานทั้ง
สองสามารถใชใบรับรองกุญแจสาธารณะที่ไดรับมาจาก CA เพื่อยืนยันกับอีกฝายหนึ่งไดโดยไมตองติดตอ
กับ CA ยกตัวอยางเชน เมื่อนายดําตองการขอให CA ออกใบรับรองกุญแจสาธารณะให CA ก็จะทําการ
ตรวจสอบเอกลักษณของนายดํากอน ซึ่งในที่นี้ อาจเปนรูปถายพรอมกับบัญชีธนาคารของนายดําก็ได เปน
ตน เมื่อนายดําผานการตรวจสอบ CA ก็จะใสกุญแจสาธารณะของนายดําลงไปในใบรับรอง (ซึ่งอาจเปน
ไฟลขอมูลขนาดเล็กๆ) พรอมกับขอมูลตางๆ ที่เกี่ยวของ เชน ตราเวลา หรือ สถานที่ที่ออกใบรับรอง เปนตน
CA สามารถปองกันการเปลี่ยนแปลงแกไขใบรับรองที่ออกใหกับนายดําได โดยทําการคํานวณหาคาแฮช
จากใบรับรองพรอมทั้งเซ็นชื่อคาแฮชผลลัพธดวยกุญแจสวนตัวของตนเอง ขั้นตอนนี้ก็คือขั้นตอนการสราง
ลายมือชื่อดิจิทัลนั่นเอง ดูรูปที่ 13.2 ประกอบ เมื่อนายดําไดรับใบรับรองกุญแจสาธารณะจาก CA มาแลว
นายดําอาจเก็บใบรับรองพรอมลายมือชื่อดิจิทัลไวที่ฐานขอมูลกุญแจสาธารณะ เพื่อที่วาเมื่อนายแดงหรือ
ผูใชงานคนอื่นๆ ตองการติดตอกับนายดํา นายแดงจะสามารถหยิบเอาใบรับรองกุญแจสาธารณะของนายดํา
พรอมลายมือชื่อดิจิทัลที่อยูในฐานขอมูลนั้นไปใชไดทันที ทั้งนี้นายแดงสามารถพิสูจนยืนยันความถูกตอง
ขอมูลไดจากลายมือชื่อดิจิทัลที่มาพรอมกับใบรับรอง
167
รูปที่ 13.1 การรองขอกุญแจสาธารณะจาก CA
168
CA ในลักษณะนี้ก็คือ ผูใชงานในระบบสามารถเลือกที่จะไววางใจ CA ที่อยูในลําดับชั้นตางๆ อยางไมเทา
เทียมกันได
13.2 การประยุกตใชงานในระบบเครือขายคอมพิวเตอร
ในระบบเครือขายคอมพิวเตอร เชน อินเทอรเน็ต ขอมูลที่มีการสงผานเครือขายมักจะอยูในรูปของ
ขอความตนฉบับ ไมมีการปองกันทางดานวิทยาการรหัสลับใดๆ ทั้งสิ้น สงผลใหผูที่มีความรูทางดานการ
สื่อสารผานเครือขายอินเทอรเน็ตเพียงเล็กนอย ก็สามารถโจมตีระบบโดยการลักลอบดักฟง เปลี่ยนแปลง
แกไขขอมูลตางๆ ที่สงผานไปมาภายในเครือขายอินเทอรเน็ตได จึงไดมีการนําวิทยาการรหัสลับมา
ประยุกตใชในระบบสื่อสารคอมพิวเตอร
ปจจุบันการสื่อสารในเครือขายคอมพิวเตอรจะมีโครงสรางเปนแบบระดับชั้น (Layer) และมีการ
เชื่อมตอระหวางอุปกรณที่ใชสื่อสารถึงกันเปนแบบ การเชื่อมตอระหวางระบบเปด (Open Systems
Interface, OSI) หรือเรียกสั้นๆ วาแบบจําลองโอเอสไอ (OSI Model) ซึ่งแบบจําลองโอเอสไอนี้จะ
169
ประกอบไปดวยระดับชั้นการสงขอมูล 7 ระดับชั้น ดูรูปที่ 13.4 ประกอบ แตละระดับชั้นจะมีหนาที่ดูแล
รับผิดชอบการสื่อสารขอมูลภายในเครือขายคอมพิวเตอรที่แตกตางและเปนอิสระตอกัน การทํางานในแตละ
ระดับชั้นจะควบคุมโดยโพรโทคอลที่ออกแบบมาเฉพาะทางเพื่อทําภารกิจที่กําหนดไวสําหรับระดับชั้นนั้นๆ
ใหสําเร็จ โพรโทคอลที่นํามาใชในเครือขายคอมพิวเตอรอยางแพรหลายในปจจุบัน โดยเฉพาะเครือขาย
อินเทอรเน็ต ก็คือ กลุมโพรโทคอล TCP/IP เนื่องจากกลุมโพรโทคอล TCP/IP (TCP/IP Suite) ไดรับการ
พัฒนามากอนแบบจําลองโอเอสไอจึงทําใหจํานวนระดับชั้นการทํางานที่กลุมโพรโทคอล TCP/IP ควบคุม
ซึ่งมีอยู 4 ระดับชั้นไมตรงกับจํานวนระดับชั้นการทํางานที่มีอยูในแบบจําลองโอเอสไอ [FORO07] อยางไร
ก็ตามการทํางานในกลุมโพรโทคอล TCP/IP ไดครอบคลุมถึงการสื่อสารขอมูลภายในเครือขายคอมพิวเตอร
ทั้งหมด ดังนั้นเราสามารถนําระดับชั้นการทํางานที่กลุมโพรโทคอล TCP/IP รับผิดชอบมาเทียบกับ
ระดับชั้นการทํางานที่มีอยูในแบบจําลองโอเอสไอได ดังแสดงในรูปที่ 13.4 ใหสังเกตวา ที่อยู (Address) ที่
ใชในการสื่อสารขอมูลในแตละระดับชั้นจะมีชื่อเรียกแตกตางกันไป รายละเอียดของโพรโทคอลยอยตางๆ
เชน SMTP, FTP, SCTP, TCP, UTP, IP และอื่นๆ ที่ประกอบอยูในกลุมโพรโทคอล TCP/IP สามารถหา
อานเพิ่มเติมไดจากหนังสือทางดานการสื่อสารขอมูลผานเครือขายคอมพิวเตอรหรือเครือขายอินเทอรเน็ต
ทั่วๆ ไป
เนื้อหาที่เหลือในบทนี้รวมทั้งในบทถัดไปจะครอบคลุมในสวนของการนําวิทยาการรหัสลับมา
ประยุกตใชในระบบสื่อสารคอมพิวเตอรที่ระดับชั้นการทํางานตางๆ ในครึ่งแรกของบท เราจะศึกษาการ
ทํางานของ 3 โพรโทคอลหลักประกอบดวย PGP, IPSec และ SSL ที่ออกแบบมาเพื่อสนับสนุนฟงกชัน
การทํางานที่เกี่ยวของกับระบบความปลอดภัยของขอมูลที่สงผานระบบเครือขายคอมพิวเตอร ซึ่งจะเนนไป
ที่เครือขายอินเทอรเน็ตเปนหลัก
170
13.3 โพรโทคอล PGP
PGP หรือ Pretty Good Privacy คือ โพรโทคอลหนึ่งที่ใชสําหรับเพิ่มความปลอดภัยใหกับการ
สื่อสารขอมูลที่สงผานเครือขายอินเทอรเน็ตในระดับชั้นการประยุกต ซึ่งเปนการสื่อสารขอมูลระหวาง
กระบวนการถึงกระบวนการ (Process-to-process) โพรโทคอล PGP ไดมีการคิดคนและพัฒนาขึ้นโดย
นักสรางรหัสลับ Phil Zimmerman [ZIMM95] เพื่อใชในการรักษาความลับ การพิสูจนตัวจริง และบูรณ
ภาพของไปรษณียอิเล็กทรอนิกสหรืออีเมล (Electronic mail, E-mail) ที่สงถึงกันระหวางผูใชงานภายใน
เครือขายอินเทอรเน็ต รูปที่ 13.5 แสดงตําแหนงการประยุกตใชโพรโทคอล PGP ในระดับชั้นการประยุกต
ใหสังเกตวาชุดโพรโทคอล PGP จะทํางานรวมกันกลุมโพรโทคอล TCP/IP ในระดับชั้นที่ 5
171
Identification, HA) ที่ใชในการสรางลายมือชื่อดิจิทัล ผลลัพธที่ไดจากขั้นตอนที่ 2 เขียนแสดง
ในรูปของสมการไดดังนี้
Output 2 = HA // PA2 // EA’s private key (H (M))
3. รวมผลลัพธที่ไดจากขั้นตอนที่ 2 เขากับอีเมลตนฉบับแลวทําการเขารหัสลับขอมูลทั้งหมดโดย
ใชอัลกอริทึมสมมาตรและกุญแจชวงเวลาที่สรางขึ้นในขั้นตอนที่ 1
Output 3 = Esession key (M // Output2)
172
แผนผังการทํางานของ PGP ทั้งทางฝงผูสงและผูรับ แสดงไวในรูปที่ 13.7 และ 13.8 ตามลําดับ
13.4 คําถามทายบท
1. จงใหคําจํากัดความของโพรโทคอล PGP และวัตถุประสงคในการนํามาใชงาน
2. จงอธิบายหลักการทํางานของโพรโทคอล PGP มีอัลกอริทึมชนิดใดบางที่นํามาใชใน PGP
3. จงอธิบายขั้นตอนการเขาและถอดรหัสลับขอมูลในโพรโทคอล PGP
4. จงอธิบายขั้นตอนการพิสูจนตัวจริงและการตรวจสอบบูรณภาพของขอมูลในโพรโทคอล PGP
173
บทที่ 14
วิทยาการรหัสลับประยุกต ตอนสาม
174
รูปที่ 14.2 รายละเอียดของ IPSec ในโหมดขนสง
175
ในโหมดอุโมงค IPSec จะทําหนาที่ปดบังกลุมขอมูล IP ทั้งหมด ซึ่งรวมไปถึงสวนหัวของกลุมขอมูล
IP ดวย จากนั้นจึงทําการเพิ่มสวนหัวของ IP ตัวใหมเขาไปยังตอนตนของกลุมขอมูลผลลัพธ ดูรูปที่ 14.4
ประกอบ
176
14.1.2 โพรโทคอลยอยใน IPSec
ชุดโพรโทคอล IPSec จะประกอบดวยโพรโทคอลยอย 2 โพรโทคอลคือ โพรโทคอลการพิสูจนตัว
จริงสวนหัว (Authentication Header, AH) และโพรโทคอลความปลอดภัยของสวนบรรจุขอมูลที่ถูก
หอหุม (Encapsulating Security Payload, ESP) โพรโทคอลยอยทั้งสองนี้จะใชสําหรับการพิสูจนตัวจริง
กลุมขอมูล IP ที่ไดรับมา และ/หรือการเขาและถอดรหัสลับกลุมขอมูล
14.1.2.1 โพรโทคอลยอย AH
โพรโทคอลยอย AH ไดรับการออกแบบมาสําหรับการพิสูจนตัวจริงเครื่องแมงานตนทาง (Source
Host) และบูรณภาพของสวนที่ใชบรรจุขอมูลในกลุมขอมูล IP ในสวนของขั้นตอนการทํางาน โพรโทคอ
ลยอย AH จะใชฟงกชันแฮชและอัลกอริทึมสมมาตร เพื่อสรางขอมูลยอย (Massage Digest) โดยขอมูล
ยอยนี้จะนํามาบรรจุไวในสวนหัวของกลุมขอมูล AH ซึ่งจะเพิ่มเขาไปในตอนตนของสวนที่ใชบรรจุขอมูล
ดูรูปที่ 14.6 ประกอบ
ขั้นตอนการทํางานของโพรโทคอลยอย AH สามารถสรุปไดดังนี้
1. เมื่อไดรับขอมูลมาจากระดับชั้นขนสง จะทําการเสริมเต็ม (Padding) ขอมูลเหลานั้นใหมี
จํานวนบิตที่เหมาะสมกับอัลกอริทึมแฮชที่ใช
2. ทําการสรางกลุมขอมูล AH ขึ้นมาแลวเติมคาลักษณะเฉพาะ (Characteristic) ของขอมูลที่
รับมาจากระดับชั้นขนสง พารามิเตอรที่ใชในการพิสจู นตัวจริงของขอมูลนั้นๆ และอื่นๆ ซึ่ง
คาที่เติมลงไปกลุมขอมูล AH นี้จะไมมีการเปลี่ยนแปลงใดๆ ในระหวางการสงขอมูล
177
3. ทําการคํานวณหาคาแฮชจากกลุมขอมูลทั้งหมด ซึ่งประกอบไปดวยสวนหัวของกลุมขอมูล IP
สวนที่ใชบรรจุขอมูลจากระดับชั้นขนสง สวนเสริมเต็ม และกลุมขอมูล AH ในขั้นตอนที่ 3
ผลลัพธของคาแฮชที่ไดหรือขอมูลยอยจะถูกใสไวในกลุมขอมูล AH ในสวนของขอมูลการ
พิสูจนตัวจริง (Authentication Data)
4. ทําการเติมสวนหัวของ IP ที่ตอนตนของกลุมขอมูลผลลัพธ
178
รูปที่ 14.7 โพรโทคอลยอย ESP ในโหมดขนสงของ IPSec
179
รูปที่ 14.8 โพรโทคอลยอย AH และ ESP ในโหมดอุโมงคเทียบกับในโหมดขนสง
180
ขนสง ใหสังเกตวาชุดโพรโทคอล SSL จะแทรกอยูระหวางการทํางานของกลุมโพรโทคอล TCP/IP ใน
ระดับชั้นที่ 4 และ 5
181
รูปที่ 14.11 แสดงขั้นตอนการจัดเตรียมขอมูลในโพรโทคอลยอย Record ซึ่งสามารถสรุปไดดังนี้
1. Fragmentation - ทําการแบงขอมูลที่รับมาจากระดับชั้นกอนหนานี้ ซึ่งประกอบดวยกลุมบิต
สงออกจากโพรโทคอล Handshake, Change Cipher Spec, Alert และจากระดับชั้นการ
ประยุกต ออกเปนสวนๆ แตละสวนมีขนาด 214 ไบต หรือนอยกวา
2. Compression – ทําการบีบอัดขอมูลที่ถูกแบงออกเปนสวนๆ จากขั้นตอนที่ 1 โดยใชวิธีการ
บีบอัดคงรายละเอียด (Lossless Compression) ที่ตกลงรวมกันระหวางผูสงและผูรับ
3. MAC Addition - ทําการคํานวณหาคารหัสพิสูจนตัวจริงของขอความ (Message
Authentication Codes, MAC) จากขอมูลที่ไดรับการบีบอัดมาจากขั้นตอนที่ 2 โดยใช
อัลกอริทึม MAC ที่ตกลงรวมกันระหวางผูสงและผูรับ จากนั้นจะเติมคา MAC ผลลัพธที่ไดที่
ตอนปลายของขอมูลที่ผานการบีบอัดมาแลว
4. Encryption – ทําการเขารหัสลับขอมูลที่ผานการบีบอัดมาแลวและคา MAC ที่ตอทายโดย
อัลกอริทึมสมมาตรที่ตกลงรวมกันระหวางผูสงและผูรับ
5. Framing - ทําการเติมสวนหัวของ SSL (SSL Header) ที่ตอนตนของขอความรหัส จากนั้น
สงตอไปยังโพรโทคอลในระดับชั้นขนสง
182
ขอมูลที่บรรจุอยูในสวนหัวของ SSL ประกอบดวย
1. Content Type - ขอมูลขนาด 8 บิต ใชบอกชนิดของขอมูลที่ถูกแบงออกเปนสวนๆ สําหรับ
การประมวลผลของโพรโทคอลในระดับชั้นที่สูงกวา
2. Major Version - ขอมูลขนาด 8 บิต ใชบอกรุนหลัก (Major Version) ของชุดโพรโทคอล
SSL ที่ใช โดยปกติจะตั้งคาไวที่ 3
3. Minor Version - ขอมูลขนาด 8 บิต ใชบอกรุนรอง (Minor Version) ของชุดโพรโทคอล SSL
ที่ใช โดยปกติจะตั้งคาไวที่ 0
4. Compressed Length - ขอมูลขนาด 16 บิต ใชบอกความยาวในหนวยไบตของขอมูลที่ถูก
แบงออกเปนสวนๆ กอนการบีบอัด หรือหลังการบีบอัดถามีการใชการบีบอัดขอมูล
สําหรับอัลกอริทึมอสมมาตรที่ใชสําหรับการจัดเตรียมกุญแจในชุดโพรโทคอล SSL จะ
ประกอบดวยอัลกอริทึม RSA, Diffie-Hellman Key Agreement, Fortezza เปนหลัก สวนอัลกอริทึม
สมมาตรที่ใชจะประกอบไปดวย RC4, RC2, DES, Triple DES, IDEA และ Fortezza ขณะที่อัลกอริทึม
แฮชจะใช MD5 และ SHA-1 เปนหลัก
183
14.3 คําถามทายบท
1. จงใหคําจํากัดความของชุดโพรโทคอล IPSec และวัตถุประสงคในการนํามาใชงาน
2. จงอธิบายความแตกตางระหวางการทํางานในโหมดขนสงและโหมดอุโมงคของชุดโพรโทคอล IPSec
โหมดการทํางานใดมีความปลอดภัยมากกวา เพราะเหตุใด
3. จงอธิบายความแตกตางระหวางโพรโทคอลยอยทั้ง 2 ที่อยูในชุดโพรโทคอล IPSec โพรโทคอล ยอยใด
มีความซับซอนในการทํางานสูงกวา เพราะเหตุใด
4. จงอธิบายขั้นตอนการทํางานของโพรโทคอลยอย AH และ ESP ในโหมดขนสง
5. จงอธิบายขั้นตอนการทํางานของโพรโทคอลยอย AH และ ESP ในโหมดอุโมงค
6. จงใหคําจํากัดความของชุดโพรโทคอล SSL และวัตถุประสงคในการนํามาใชงาน
7. จงอธิบายความแตกตางระหวางและชุดโพรโทคอล SSL และชุดโพรโทคอล TLS
184
บรรณานุกรม
[AMOR01] Amornraksa, T., Data Security for Multimedia Communications, King Mongkut's Institute of
Technology Thonburi, 2001.
[AMOR99] Amornraksa, T., Burgess, D.R.B. and Sweeney, P., “Watermarking and secure distribution for
encrypted video”, Communications and Multimedia Security CMS’99, Belgium, Vol. 152,
September 1999.
[AMORN97] Amornraksa, T., Sweeney, P. and Honary, B., “Protecting the Integrity of a Sequence of
Images”, Electronics Letters, Vol. 33, No. 19, September 1997, pp. 1617-1618.
[AMORN98] Amornraksa, T. and Sweeney, P., “Key Distribution Scheme for One Way Broadcasting”, Proc. of
1st IMA Int. Con. on Mathematics in Communications, Loughborough, UK, December 1998.
[AMORN99] Amornraksa, T., Burgess, D. R. B. and Sweeney, P., “A Method for Hiding Ciphertext by
Cascading Algorithms’” Proc. of ISCTA’99, Ambleside, UK, July 1999, pp. 236-238.
[BELL96a] Bellare, M, Canetti, R. and krawczyk, H., “Keying hash functions for message authentication”,
Advances in Cryptology-CRYPTO’ 96 Proceedings, Springer-Verlag, 1996, pp. 417-426.
[BELL96b] Bellare, M, Canetti, R. and krawczyk, H., “The HMAC constraction”, CrytoBytes, Spring 1996.
[BEUT94] Beutelspacher, A., “Cryptology”, The Mathematical Association of America (MMA), Inc., 1994.
[CANE97] Canetti, R., Dwork, C., Naor, M. and Ostrovsky, R., “Deniable Encryption”, Proceedings of
Crypto’97, August 18-21, 1997.
[CASC93] Maurer, U. M. and Massey, J. L., “Cascade Ciphers: The Importance of Being First”, Journal of
Cryptology, Vol. 6, No. 1, 1993, pp. 55-61.
[CHAP00] Chapman, N. and Chapman, J., “Digital Multimedia”, John Wiley & Sons, 2000.
[CHIO89] Chiou, G. H. and Chen, W. T., “Secure Broadcasting Using the Secure Lock”, IEEE Transactions
on Software Engineering, Vol. 15, No. 8, August 1989, pp. 929-934.
[CHRI98] Christoffersson, P., Ekahll, S.A. Herda, V.F.S., Mattila, P., Price, W. and Widman, H.O., Crypto
Users’ Handbook: A Guide for Implementers of cryptographic Protection in Computer Systems,
North Holland: Elsevier Science Publishers, 1998.
[COX97] Cox, I.J., Killian, J., Leighton, F.T. and Shamoon, T., “Secure spread spectrum watermarking for
multimedia”, IEEE Transactions on Image Processing, Vol. 6, No. 12, Dec. 1997.
[DIFF76] Diffie, W. and Hellman, M., “New directions in cryptography”, IEEE Transactions on Information
Theory, Vol. IT-22, No. 6, November, 1976, pp. 644−654.
[ELGA85a] ElGamal, T.,”A public-key cryptosystem and a signature scheme based on discrete logarithms”,
Advances in Cryptology Proceedings, Springer-Verlag, 1985, pp. 10-18.
[ELGA85b] ElGamal, T.,”A public-key cryptosystem and a signature scheme based on discrete logarithms”,
IEEE Trans. on Information Theory, Vol. IT-31, No. 4, 1985, pp. 469-472.
185
[ELLI70] Ellis, J.H., “The possibility of secure non-secret digital encryption’”, CESG Report, January, 1970.
[FAQ96] FAQ about today’s cryptography, version 3.0, RSA Data Security, Inc., 1996.
[FEIS73] Feistel, H., “Cryptography and Computer Privacy”, Scientific American, May 1973.
[FIAT87] Fiat, A. and Shamir, A., “How to Prove Yourself: Practical Solutions to Identification and
Signature Problems”, Advances in Cryptology-CRYPTO’86 Proceedings, Springer-Verlag, 1987,
pp. 186-194.
[FIAT94] Fiat, A. and Naor, M., ”Broadcast Encryption”, Advances in Cryptology-CRYPTO93, Lecture
Notes in Computer Science 773, Springer-Verlag, 1994, pp. 480-491.
[FIPS01] U.S. Department of Commerce, National Institute of Standards and Technology, Specification for
the Advanced Encryption Standard (AED), FIPS PUB 197, November 2001.
[FIPS02] U.S. Department of Commerce, National Institute of Standards and Technology, Secure Hash
Signature Standard (SHS), FIPS PUB 180-2, August 2002.
[FIPS99] U.S. Department of Commerce, National Institute of Standards and Technology, Data Encryption
Standard (DES), FIPS PUB 46-3, October 1999.
[FLUC95] Fluckiger, F., Understanding Networked Multimedia: Applications and Technology, Prentice Hall
Inc., 1995.
[FORO07] Forouzan, B.A., “Data Communications and Networking”, 4th edition, McGraw-Hill, 2007.
[GEFF73] Geffe, P.R., “How to protect data with ciphers that are really hard to break”, Electronics, Vol. 46,
No. 1, Jan. 1973, pp. 99-101.
[GOLO67] Golomb, S.W., Shift Register Sequences, San Francisco: Holden-Day, 1967.
[GUIL92] Guillou, L. C., Ugon, M. and Quisquater, J-J., “The Smart Card, a Standardised Security Device
Dedicated to Public Cryptology”, Contemporary Cryptology. The Science of Information Integrity,
G. J. Simmons, Ed. New York: IEEE Press, 1992, pp. 561-613.
[HART96] Hartung, F. and Girod, B., “Digital watermarking for raw and compressed video”, Proc. of SPIE
2952: Digital Compression Technologies and Systems for Video Communication, October 1996,
pp. 205-213.
[HART99] Hartung, F., Su, J.K. and Girod, B., "Spread spectrum watermarking: malicious attacks and
counterattacks", Proc. of SPIE vol. 3657: Security and Watermarking of Multimedia Contents,
January 1999.
[HATU97] Hatung, F. and Girod, B., “Digital watermarking of MPEG-2 coded video in the bitstream domain”,
Proc. of Int. Con. on Acoustics, Speech and Signal Processing (ICASSP 97), vol. 4, pp. 2621-
2624, Munich, July 1997.
[KAHN67] Kahn, D., The codebreakers: the story of secret writing, New York: Macmillan publishing Co.,
1967.
[KNBL87] Knblitz, N., “Elliptic curve cryptosystems”, mathematics of computation, Vol. 48, n. 177, 1987, pp.
203-209.
186
[KNUD94] Knudsen, L.R., “Block ciphers-analysis, design, applications”, Ph.D. Dessertation, Aarhus
University, Nov. 1994.
[KUTT99] Kutter, M. and Peticolas, F.A.P., "A fair benchmark for image watermarking systems", Electronic
Imaging '99, Security and Watermark of Multimedia Contents, Vol. 3657, San Jose, CA, USA,
January 1999.
[LAI91] Lai, X. and Massey, J., “A Proposal for A New Block Encryption Standard”, Advances in
Cryptology- EUROCRYPT’90 Proceedings, Springer-Verlag, pp. 389-404, 1991.
[LAI92] Lai, X., “On the Design and Security of Block Ciphers”, ETH Series in Information Processing,
Vol. 1, Konstanz: Hartung-Gorre verlag, 1992.
[LAI93] Lai, X., Rueppel, R.A. and Woollven, J., “A Fast Cryptographic Checksum Algorithm Based on
Stream Ciphers”, Advances in Cryptology- AUSCRYPT’92 Proceedings, Springer-Verlag, pp.
339-348, 1993.
[LAMB96] Lambrecht, C.J.B. and Farrell, J.E., “Perceptual quality metric for digitally coded colour images”,
Proc. of EUSIPCO, Trieste, Italy; September 1996, pp. 1175-1178.
[MAUR93] Maurer, U.M. and Massey, J.L., “Cascade ciphers: the importance of being first”, Journal of
Cryptology, Vol. 6, No. 1, 1993, pp. 55-61.
[MENE97] Menezes, A.J., Oorschot, P.C.V. and Vanstone, S.A., “Handbook of Applied Cryptography”, CRC
Press LLC, New York, 1997, pp. 209-211.
[MERK81] Merkle, R.C. and Hellman, M., “On the security of multiple encryption”, Communications of the
ACM, Vol. 24, No. 7, 1981, pp. 465-467.
[MILL96] Miller, V. S., “Use of elliptic curves in cryptography”, Advances in Cryptology-CRYPTO’ 85
Proceedings, Springer-Verlag, 1996, pp. 417-426.
[MITC96] Mitchell, J., Pennebaker, W., Fogg, C. and LeGall, D., MPEG Video Compression Standard, ITP,
New York, 1996.
[NIU00] Niu, X., Lu, Z. and Sun, S., “Digital watermarking based on zerotrees of DCT coefficients”, Proc.
of the IASTED Int. Con. on Signal Processing and Communications, Marbella, Spain, Sept. 2000.
[OPPL05] Oppliger, R. "Contemporary cryptography", Artech House, Inc., 2005.
[PENN92] Pennebaker, W.B. and Mitchell, J.L., JPEG: Still Image Data Compression Standard, Kluwer
Academic Publishers, 1992.
[PERI99] Peticolas, F.A.P., Anderson, R.J. and Kuhn, M.G., “Information hiding - a survey”, Proc of the
IEEE, Special issue on protection of multimedia contents, Vol. 89, No. 7, pp. 1062-1078, July
1999.
[PETI98] Peticolas, F.A.P., Anderson, R.J. and Khun, M.G., "Attacks on copyright marking systems",
Second Workshop on Information Hiding, Portland, Oregon, USA, April 1998.
[PUER01] Puertpan, R. and Amornraksa, T., “Gaussian pixel weighting marks in amplitude modulation of
colour image watermarking”, Proc. of the IEEE ISSPA 2001, Kuala-Lampur, Malaysia, August 13-
16, 2001.
187
[RIVE78] Rivest, R. L., Shamir, A. and Adleman, L., “A method for obtaining digital signatures and public
key cryptosystems”, Communications of the ACM, Vol. 21, n. 2, February, 1978, pp. 120−126.
[RIVE98] Rivest, R. L., ‘The MD5 Message Digest Algorithm’, RFC 1321, April 1992.
[SAMA97] Samarakoon, M. I., Honary, B and Sweeney, P., “Secure File Transmission Over Multi-user
Networking Environments”, Proc. 4th Int. Sym. on Communications Theory and Applications,
Ambleside, July 1997, pp. 121-127.
[SARY90] Saryazdi, S., “An extension to ElGamal public key cryptosystem with a new signature scheme”,
Proc. of the 1990 Bilkent Int. Conf. on New Treads in Comm. Control and Signal processing,
North Holland: Elsevier Science publishers, 1990, pp. 195-198.
[SAYO00] Sayood, K., Introduction to Data Compression 2nd edition, Morgan Kaufmann Publishers, 2000.
[SCHN96] Schneier, B., Applied Cryptography: Protocol, Algorithms and Source Code in C 2nd edition, John
Wiley & Sons, Inc., 1996.
[SEBE88] Seberry, J. and Pieprzyk, J., “Cryptography: An Introduction to Computer Security” Prentice Hell,
1988.
[SHAN 49] Shannon, C., “Communication Theory of Secrecy Systems”, Bell Systems Technical Journal, No.
4, 1949.
[SIMM94] Simmons, G. J., “Subliminal Channels: Past and Present”, European Transactions on
Telecommunications, Vol. 4, No. 4, Jul/Aug, 1994, pp. 459-473.
[STAL00] Stallings, W., “Data and Computer Communications 6th edition”, Prentice Hall Inc., 2000.
[STAL98] Stallings, W., Cryptography and network Security: principles and practice 2nd edition, Prentice-Hall,
Inc., 1998.
[TUCH79] Tuchman, W., “Hellman presents no shortcut solutions to DES”, IEEE Spectrum, Vol. 16, No. 7,
July 1979, pp. 40-41.
[ZIER68] Zierler, N. and Brillhart, J. “On primitive trinomials (mod 2)”, Information and Control, Vol. 13, No.
6, Dec. 1968, pp.541-544.
[ZIMM95] Zimmermann, P.R., “The Official PGP User’s Guide”, Boston, MIT Press, 1995.
188
ดรรชนีทายเลม
กระบวนการขยายกุญแจ (Key Expansion) 73
กระบวนการเชิงกําหนด (Deterministic Process) 28
กระบวนคําสั่งที่เปนขั้นตอนวิธี (Algorithmic Procedure) 27
กระแสบิต (Bit-stream Generator) 26
กระแสบิตแบบขั้นสลับ (Alternative Step) 35
กระแสบิตแบบสุมจริง (True Random) 26
กลุมขอมูลในเชิงพีชคณิต (Algebraic Groups) 63
การกระจายแบบไมเรียบ (Non-flat Distribution) 52
การกระจายแบบเรียบ (Flat Distribution) 52
การกูคืนตัวเอง (Self-recovering) 137
การเขารหัสลับ (Encryption) 4
การเขารหัสลับกุญแจแบบสุม (Randomly Generate) 7
IDEA (International Data Encryption Algorithm) 63
การเขารหัสลับที่ไมเปนความลับ (Non-secret Encryption) 81
การเขารหัสลับในหนวยเก็บขอมูล (Data Storage) 146
EDE (Encrypt-Decrypt-Encrypt) 154
EEE (Encrypt-Encrypt-Encrypt) 156
การเขารหัสลับแบบตอเรียง (Cascading Encryption) 150
การเขารหัสลับแบบหลายครั้ง (Multiple Encryption) 150
การเขารหัสลับแบบหลายๆ ครั้ง (Multiple Encryptions) 50
การเขารหัสลับสองครั้ง (Double Encryption) 151
การเขารหัสลับสามครั้ง (Triple Encryption) 153
การเขารหัสลับสามครั้งดวยกุญแจสองดอก (Triple Encryption with Two Keys) 154
การเขารหัสลับสามครั้งดวยกุญแจสามดอก (Triple Encryption with Three Keys) 156
การคนหาอยางละเอียด (Exhaustive Search) 12
ฟลดจํากัด (Finite Field) 83
การคิดแบบกลับขาง (Lateral Thinking) 15
การจัดการกุญแจ (Key Management) 20
การโจมตีขอความตนฉบับแบบเลือกได (Chosen Plaintext Attack) 14
การโจมตีขอความรหัสเทานั้น (Ciphertext-only Attack) 12
การโจมตีขอความรหัสแบบเลือกได (Chosen Ciphertext Attack) 14
การโจมตีที่เลือกขอความตนฉบับแบบปรับตัวได (Adaptive Chosen Plaintext Attack) 14
การโจมตีแบบคนที่อยูตรงกลาง (Man-in-the-middle Attack) 23
การโจมตีแบบตะลุย (Brute-force Attack) 12
189
การโจมตีแบบพบกันตรงกลาง (Meet-in-the-middle Attack) 152
การโจมตีแบบแพสซิฟ (Passive Attack) 18
การโจมตีแบบเลนซ้ํา (Replay Attack) 161
การโจมตีแบบวันเกิด (Birthday Attack) 118
การโจมตีแบบแอ็กทิฟ (Active Attack) 19
OSI (Open Systems Interface) 144
การดําเนินการผสม (Mixing Operations) 69
การสื่อสารแบบเวลาจริง (Real-time Communication) 8
การถอดรหัสลับ (Decryption) 4
CBC (Cipher Block Chaining) 136
CFB (Cipher FeedBack) 138
ECB (Electronic Code Book) 135
OFB (Output FeedBack) 140
ศูนยกลางกระจายกุญแจ (Key Distribution Center, KDC) 160
การบีบอัดขอมูล (Data Compression) 143
การปฏิสัมพันธแบบทาทาย-ตอบสนอง (Challenge-response Interaction) 161
การปอนกลับภายใน (Internal Feedback) 140
การพิสูจนตัวจริง (Authentication) 2
การพิสจู นตัวตน (Identity Verification) 2
การยายคอลัมน (Columnar Transposition) 48
การเรียงสับเปลี่ยน (Substitution-Permutation) 51
การเรียงสับเปลี่ยนกุญแจ (Key Permutation) 58
การเรียงสับเปลี่ยนแบบขยาย (Expansion Permutation) 56
การเรียงสับเปลี่ยนแบบตรง (Straight Permutation) 56
การเรียงสับเปลี่ยนแบบบีบอัด (Compression Permutation) 56
การเรียงสับเปลี่ยนเริ่มตน (Initial Permutation) 56
การเรียงสับเปลี่ยนสุดทาย (Final Permutation) 56
การลดทอนสวนจําเพาะ (Modular Reduction) 82
การวิเคราะหรหัสลับ (Cryptanalysis) 4
การสรางกระแสเลขโดดฐานสอง (Binary Digits) 26
P-box (Permutation-box) 56
การหาตัวผกผันการคูณ (Multiplicative Inverse) 86
การออกใบรับรองกุญแจสาธารณะ (Public Key Certificate) 167
กุญแจชวงเวลา (Session Key) 22
กุญแจยอย (Sub-keys, Ki) 53
กุญแจสวนตัว (Private Key) 7
กุญแจอางอิง (Dereferencing Key) 148
190
การโจมตีขอความตนฉบับ (Known Plaintext Attack) 14
ขอความตนฉบับ (Plaintext) 4
ขอความรหัส (Ciphertext) 4
ความยาวแปรเปลี่ยนได (Variable Length) 108
คารหัสพิสูจนตัวจริงของขอความ (Message Authentication Codes, MAC) 182
คาแฮช (Hash Value) 108
เครื่องแมขายจริง (Real Server, RS) 164
เครื่องแมขายพิสูจนตัวจริง (Authentication Server, AS) 164
เครื่องแมขายออกตั๋ว (Ticket Granting Server, TGS) 164
MA (Multiplication/Addition Structure) 64
โครงสรางพื้นฐานกุญแจสาธารณะ (Public Key Infrastructure, PKI) 160
จํานวนเฉพาะสัมพันธ (Relatively Prime) 84
IPSec (IP Security) 174
เซตลดรูปของสวนตกคาง (Reduced Set of Residues) 88
ตัวแปลงรหัส (Cipher) 5
ตัวแปลงรหัส Feistel (Feistel Cipher) 50
ตัวแปลงรหัส Vernam (Vernam Cipher) 26
ตัวแปลงรหัสซีซาร (Caesar Cipher) 41
ตัวแปลงรหัสที่ไมมีจุดออน (Unbreakable Cipher) 26
ตัวแปลงรหัสแบบ Vigenère (Vigenère Cipher) 45
ตัวแปลงรหัสแบบกระแส (Stream Cipher) 6
ตัวแปลงรหัสแบบกลุม (Block Cipher) 6
ตัวแปลงรหัสแบบคูณ (Multiplicative Cipher) 44
ตัวแปลงรหัสแบบดั้งเดิมหรือแบบฉบับ (Traditional or Classical Cipher) 40
ตัวแปลงรหัสแบบแทนที่ (Substitution Cipher) 41
ตัวแปลงรหัสแบบบวก (Additive Cipher) 44
ตัวแปลงรหัสแบบสลับตําแหนง (Transposition Cipher) 41
ตัวแปลงรหัสผลคูณ (Product Cipher) 50
ตัวแปลงรหัสแผนใหม (Modern Cipher) 40
ตัวแปลงรหัสสัมพรรค (Affine Cipher) 41
ตัวเริ่มตน (Seed) 27
ตัวสราง (Generator) 26
ทฤษฎีความซับซอน (Complexity Theory) 92
ทฤษฎีจํานวน (Number Theory) 81
ทฤษฎีบทของแฟรมา (Fermat’s Theorem) 88
ทฤษฎีบทของออยเลอร (Euler’s Generalization Theorem) 88
191
ทฤษฎีบทเศษเหลือของชาวจีน (Chinese Remainder Theorem) 90
ทฤษฎีรหัส (Coding Theory) 29
ทฤษฎีอสมการ (Inequality) 120
เครือขายสวนตัวเสมือน (Virtual Private Network, VPN) 180
นักวิเคราะหรหัสลับ (Cryptanalyst) 4
นักสรางรหัสลับ (Cryptographer) 4
เรจิสเตอรแบบเลื่อนปอนกลับเชิงเสน (Linear Feedback Shift Registers) 29
แนวคิดของการนําใบรับรอง (Certificate) 160
บันทึกแบบแข็ง (Hard disk) 1
บิตนัยสําคัญนอยสุด (Least Significant Bit) 29
บูรณภาพ (Integrity) 2
บูรณภาพของขอมูล (Data Integrity) 109
แบบจําลองโอเอสไอ (OSI Model) 144
การแทนที่หลายอักษร (Poly-alphabetic Substitution) 41
การแทนที่อักษรเดี่ยว (Mono-alphabetic Substitution) 41
ปริทัศนวันเกิด (Birthday Paradox) 117
ผกผันเพียงคาเดียว (Unique Inverse) 86
ผกผันรวม (Mutual Inverse) 103
ผูขัดขวาง (Interloper) 11
ผูโจมตี (Attacker) 11
ผูฉอโกง (Cheater) 19
ผูดักจับ (Interceptor) 11
ผูดูแลระบบ (System Administrator) 19
ผูตัดสิน (Arbitrator) 17
ผูบุกรุก (Intruder) 11
ผูลอบฟง (Eavesdropper) 11
ฝายตรงขาม (Opponent) 11
ฝายปรปกษ (Adversary) 11
โพรโทคอล (Protocol) 16
โพรโทคอล Kerberos 163
โพรโทคอล PGP (Pretty Good Privacy) 171
โพรโทคอล SSL (Secure Socket Layer) 123
โพรโทคอลการพิสูจนตัวจริงสวนหัว (Authentication Header, AH) 177
โพรโทคอลควบโยง (Interlock Protocol) 26
โพรโทคอลทางดานวิทยาการรหัสลับ (Cryptographic Protocol) 17
โพรโทคอลที่มีการบังคับใชดวยตัวเอง (Self-enforcing Protocol) 18
192
โพรโทคอลอินเทอรเน็ต (Internet Protocol, IP) 123
โพรโทคอลเอชทีทีพี (Hyper Text Transport Protocol, HTTP) 180
ฟงกชันเชิงผสม (Combining Function) 34
ฟงกชันทอเทียนตออยเลอร (Euler Totient Function) 88
ฟงกชันทางเดียว (One-way Function) 108
ฟงกชันฟายออยเลอร (Euler Phi Function) 88
ฟงกชันสุมเทียม (Pseudo-random Function, PRF) 183
ฟงกชันหนึ่งตอหนึ่ง (One-to-one Function) 45
ฟงกชันหนึ่งตอหลาย (One-to-many Function) 45
ฟงกชันหลายตอหนึ่ง (Many-to-one) 108
ฟงกชันแฮช (Hash Function) 108
ฟงกชันแฮชทางเดียว (One-way Hash Function) 108
ฟลด Galois (Galois Field, GF) 83
ภาวะความเปนสวนตัว (Privacy) 1
มอดูลที่ตานทานตอการทําลาย (Tamper-resistant Module) 16
รหัสเทียม (Pseudo Code) 72
รหัสพิสูจนตัวจริงของขอความ (Message Authentication Codes) 122
รหัสลับเสนโคงเชิงวงรี (Elliptic Curve Cryptosystem, ECC) 105
ระบบการเขารหัสลับ (Cryptosystem) 5
ระบบการเขารหัสลับลูกผสม (Hybrid Cryptosystem) 7
ระบบการแยกตัวประกอบจํานวนเต็ม (Integer Factorization System) 92
ระบบเปด (Open Systems Interface, OSI) 169
ระบบลอการิทึมแบบไมตอเนื่อง (Discrete Logarithm System) 92
เรจิสเตอรแบบเลื่อนปอนกลับเชิงเสน (Linear Feedback Shift Register, LFSR) 124
ลายมือชื่อดิจิทัล (Digital Signature) 7
ลําดับเอ็ม (m-sequence) 31
เลขคณิตมอดุลาร (Modular Arithmetic) 82
วิทยาการรหัสลับ (Cryptography) 3
การเขารหัส (Coding) 4
การบีบอัดคงรายละเอียด (Lossless Compression) 182
การแปลงแบบผกผัน (Invertible Transformation) 8
เวกเตอรเริ่มตน (Initialization Vector) 27
เศษตกคาง (Residue) 82
สถานะภายใน (Internal State) 30
สมภาค (Congruence) 82
สหสัญญาณ (Multipiexer) 35
193
สิ่งคุกคาม (Threat) 15
หนวยเก็บ (Storage) 1
โหมดขนสง (Transport Mode) 174
โหมดอุโมงค (Tunnel Mode) 174
อนุกรม (Series) 16
อันดับผันกลับ (Reverse Order) 53
AES (Advanced Encryption Standard) 69
DES (Data Encryptions Standard) 50
PES (Proposed Encryption Standard) 63
RSA (Ron Rivest, Adi Shamir and Leonard Adleman) 102
SHA (Secure Hash Algorithms) 110
อัลกอริทึมกุญแจเดียว (Single Key Algorithm) 6
อัลกอริทึมกุญแจลับ (Secret Key Algorithm) 6
อัลกอริทึมกุญแจสาธารณะ (Public Key Algorithm) 7
อัลกอริทึมขอตกลงกุญแจของ Diffie-Hellman (Diffie-Hellman Key Agreement) 93
อัลกอริทึมทางดานวิทยาการรหัสลับ (Cryptographic Algorithm) 15
อัลกอริทึมแบบกลุม (Block Algorithm) 6
อัลกอริทึมยุคลิค (Euclid’ s Algorithm) 84
อัลกอริทึมยุคลิคแบบขยาย (Extended Euclid’s Algorithm) 67
อัลกอริทึมสมมาตร (Symmetric Algorithm) 6
อัลกอริทึมสัญนิยม (Conventional Algorithm) 6
อัลกอริทึมอสมมาตร (Asymmetric Algorithm) 6
194