Sponsor

แสดงบทความที่มีป้ายกำกับ password แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ password แสดงบทความทั้งหมด

25 เมษายน 2569

The Unbreakable Code - เทคนิคการสร้างรหัสลับที่ไม่มีถูกวันแกะได้

ตัวอย่างหนังสือกุญแจรหัสที่เคยใช้โดยจารชนฝ่ายเยอรมันตะวันออก

故明君賢將,能以上智為間者,必成大功,
 孫子兵法
用間

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

สมัยเด็กๆเราชอบเล่นเป็นสายลับนักสืบกับเพื่อนๆด้วยการส่งรหัสลับถึงกันตอนพักเที่ยง ไม่ว่าจะเป็นรหัสมอร์ส, อักษรภาพอินเดียนแดงROT13, ฯลฯ มันเป็นความสนุกที่ได้มีช่องทางสื่อสารส่วนตัวกับเพื่อนฝูงและสนุกที่ได้ขบคิดถอดรหัส แต่รหัสพื้นฐานเหล่านั้น หากใครแค่รู้จักก็อาจจะแกะรหัสได้ไม่ยาก ขอแค่มีความขวนขวายสักหน่อยเท่านั้น หรือสมัยนี้ AI ก็ถอดรหัสพื้นฐานเหล่านี้ได้สบายๆ

แต่มีรหัสลับประเภทหนึ่ง ที่แม้แต่ซูเปอร์คอมพิวเตอร์หรือ AI ก็ไม่สามารถแกะรหัสได้หากไม่มีกุญแจถอดรหัส ซึ่งรหัสลับนี้ใช้กันตั้งแต่สมัยสงครามเย็นและยังคงใช้อยู่จนถึงปัจจุบัน โดยส่งรหัสออกอากาศผ่านวิทยุคลื่นสั้น (Short Wave - SW เป็นคลื่นวิทยุทางไกลข้ามประเทศ) ซึ่งจะเรียกกันว่า Number Station หรือสถานีตัวเลข เสียงออกอากาศอาจเป็นเสียงผู้หญิง ผู้ชาย หรือแม้แต่เด็ก พูดแค่ตัวเลข เป็นชุดๆ ซ้ำๆ รายการวิทยุนี้ยังคงเป็นปริศนา แต่ผู้เชี่ยวชาญเชื่อว่าเป็นการส่งรหัสลับเพื่อแจ้งคำสั่งหรือข่าวสารแก่จารชนหรือสายลับเพื่อปฎิบัติภารกิจ ทุกคนในโลกที่มีวิทยุคลื่นสั้นก็สามารถรับฟังรายการนี้ได้ แต่ไม่มีใครเข้าใจ และไม่มีใครรู้ว่าสถานีกำลังสื่อสารกับใคร

ลองฟังสถานีตัวเลขที่มีคนบันทึกเสียงเอาไว้กันดูครับ


ระบบการเข้ารหัสลับที่ไม่มีวันแกะได้นี้ ได้รับการอธิบายอย่างเป็นทางการครั้งแรกในปี 1882 โดยนายธนาคาร Frank Miller และได้รับการคิดค้นใหม่ในปี 1917 โดย Gilbert Vernam และ Joseph Mauborgne ระบบนี้เรียกว่า One-Time Pad (OTP) บทความนี้เราจะมาศึกษากันว่าเทคนิคการเข้ารหัสที่ไม่มีวันถูกแกะได้นั้น เขาทำกันอย่างไร

อุปกรณ์ในการเข้ารหัสระบบนี้มีอยู่ 2 อย่าง
เป็นสิ่งที่ผู้รับและผู้ส่งต้องมีเหมือนกัน
  1. ตารางแปลงอักษร เพื่อแปลงตัวอักษรให้เป็นตัวเลข ตัวอย่างง่ายๆเช่น A=1, B=2, C=3, ...เรื่อยไปจนถึง Z=26 เป็นต้น (ระบบนี้เรียกว่า A1Z26) แต่การใช้งานจริงมักจะใช้ Straddling checkerboard เพราะใช้หลักน้อยกว่า เวลาออกอากาศก็จะสั้นกว่า แต่ในที่นี้ขอใช้แบบ A1Z26 เพื่อความสะดวกในการแสดงตัวอย่างการใช้งานครับ แต่ไม่ว่าจะใช้แบบไหนเมื่อเข้ารหัสแล้วก็ปลอดภัยเท่ากันครับ เพราะจะเป็นการสุ่มโดยสมบูรณ์
  2. หนังสือกุญแจรหัส (One-Time Pad - OTP) ซึ่งจะเป็นหนังสือเล่มเล็กๆที่มีตัวเลขสุ่มเต็มไปหมด ชุดละ 5 ตัวเลข (ห้ามซ้ำ และห้ามมีรูปแบบที่คาดเดาได้) โดยต้องมีเพียง 2 เล่มที่เหมือนกันเป๊ะ เล่มหนึ่งอยู่ที่ผู้ส่ง อีกเล่มอยู่ที่ผู้รับ เท่านั้น ห้ามมีสำเนามากกว่า 2 เด็ดขาด และต้องเก็บเป็นความลับโดยสมบูรณ์ระหว่างทั้งสองคน

ซึ่งหนังสือกุญแจต้องทำเองครับ และการสร้างรหัสสุ่มจำเป็นต้องเป็นแบบสุ่มแท้ (true random) เท่านั้น จะให้คนนั่งนึกขึ้นเองมั่วๆหรือใช้โปรแกรมสุ่มจะยังสุ่มไม่แท้พอครับ (เพราะถ้ารู้ node ก็สามารถคาดเดาและคำนวณย้อนกลับได้) หากจะสุ่มแท้เองแบบดั้งเดิมก็อาจใช้ลูกเต๋า หรือสมัยนี้อาจทุ่นแรงด้วยเว็บ https://www.random.org/integer-sets/ ซึ่งสุ่มโดยใช้ปัจจัยจากสภาพอากาศ เป็นเว็บที่เชื่อถือได้ว่าสุ่มแท้ (ตั้งค่าชุดตัวเลขจำนวนตามต้องการ และให้เป็นชุดละ 5 ตัวเลข โดยจัดเรียงแบบ Random)
ทีนี้เมื่อทำชุดตัวเลขได้มากพอ ก็ให้พิมพ์ออกมาเป็นเล่ม ห้ามเก็บหนังสือกุญแจแบบไฟล์ดิจิตอล เพราะหากรั่วไหล AI อาจเอาไปถอดรหัสได้ และเมื่อใช้หน้าไหนเป็น OTP ไปแล้วให้เผาทำลายหน้านั้นทิ้ง ห้ามใช้ OTP ซ้ำเด็ดขาด เพราะข้อความที่ใช้ OTP ซ้ำสามารถนำมาเทียบความสัมพันธ์ของข้อความสำหรับเดาเพื่อแกะได้ง่ายโดยใช้ตรรกะ XOR (Exclusive OR) ในการแกะ เช่น ข้อความ A XOR ข้อความ B ซึ่งประเด็นนี้จะขอละไว้ เนื่องจากผู้ที่ใช้ระบบ OTP ไม่ใช้ซ้ำอยู่แล้ว
การใช้กุญแจถอดรหัสแบบครั้งเดียว (OTP) แล้วเผาทิ้ง จะทำให้ไม่มีซูเปอร์คอมพิวเตอร์หรือ AI หน้าไหนแกะรหัสได้อย่างแน่นอน เพราะแม้จะเดาสุ่ม OTP ไปเรื่อยๆก็อาจได้คำที่อาจจะอ่านรู้เรื่องหลายวลี แต่ไม่อาจรู้ได้เลยว่าอันไหนคือสารจริงครับ การทำลายทิ้งจึงไม่ใช่แค่คำแนะนำ แต่คือกฎของระบบนี้ที่ทำให้มันไม่มีวันแกะได้

เมื่อเข้าใจหลักการของอุปกรณ์พื้นฐานแล้วก็มาเรียนรู้วิธีใช้กันครับ

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

7 5 6 9 0
3 1 9 7 6
4 2 7 9 0
4 9 8 7 6
2 6 7 9 9


สมมุติผมต้องการส่งคำว่า

I LOVE YOU

ขั้นตอนการเตรียมการ แปลงสารระบบ A1Z26
I = 09
L = 12, O = 15, V = 22, E = 05
Y = 25, O = 15, U = 21

เมื่อเอาตัวเลขมาเรียงกันก็จะได้ชุดตัวเลข

09 12 15 22 05 25 15 21

ทีนี้แบ่งกลุ่มละ 5 หลัก

0 9 1 2 1
5 2 2 0 5
2 5 1 5 2
1 0 0 0 0
(เติม 0 เพื่อให้เต็มกลุ่ม)

สำหรับกุญแจกลุ่มแรก 7 5 6 9 0 เราจะไม่ใช้เข้ารหัส แต่จะใช้ประกาศเพื่อบอกตำแหน่งก่อนเข้าสู่รหัส (เพราะในเล่มจริงมันจะมีหลายหน้าหลายบรรทัดจึงต้องบอกพิกัดก่อน) จากนั้นเราจะเริ่มเข้ารหัสจากชุดถัดไปโดยเอาตัวอักษรที่แปลงเป็นตัวเลขแล้ว มาบวกเข้าทีละหลักไปโดยไม่มีการทด (คือถ้าได้ 10 หรือมากกว่าก็เอาแต่เลขท้าย (mod 10)) โดยใช้ 1 กลุ่มสาร ต่อ 1 กลุ่มรหัส (แล้วใช้กลุ่มสารกับกลุ่มรหัสถัดไปเรื่อยๆ) สมมการคือ P + K mod 10 = C
[โดยที่ P = ข้อความที่เข้ารหัส, K mod 10 = เลข OTP ด้วยการบวกแบบ Modular 10, C = รหัสที่ได้รับ] (การคำนวณแบบ Modular 10 คือ ผลลัพธ์จะไม่ถึง 10 คือวนอยู่ระหว่าง 0-9 เช่น ถ้าคำนวณได้ 10 ก็เป็น 0 ถ้าได้ 11 ก็เป็น 1 เป็นต้น)

0 9 1 2 1 + 3 1 9 7 6 = 3 0 0 9 7

5 2 2 0 5 + 4 2 7 9 0 = 9 4 9 9 5

2 5 1 5 2 + 4 9 8 7 6 = 6 4 9 2 8

1 0 0 0 0 + 2 6 7 9 9 = 3 6 7 9 9


และนี่คือชุดข้อความที่เข้ารหัสแล้ว

3 0 0 9 7
9 4 9 9 5
6 4 9 2 8
3 6 7 9 9


ก็ได้เวลาเตรียมตัวออกอากาศ

ตัวอย่างสมมุติในการกระจายเสียงทางวิทยุ
[เสียงซ่าของวิทยุคลื่นสั้นแทรกมาเป็นระยะ พร้อมเสียงดนตรีประกอบสั้นๆ]

[อาจเริ่มด้วยรหัสประจำตัวตนของจารชนที่ต้องรับคำสั่งนี้ อาจพูดซ้ำสามครั้งหรือเท่าไหร่ก็แล้วแต่ตกลงกัน]

"0 0 7, 0 0 7, 0 0 7"

[มีเสียงสัญญาณ "ปี๊บ" จากนั้นตามด้วยเลข 5 หลักแรก เพื่อบอกพิกัดว่าให้หาเลขชุดนี้ในหนังสือกุญแจ เพื่อเป็นหัวรหัสในการหาเลขชุดถัดๆไปเพื่อถอดรหัส]

"7 5 6 9 0, 7 5 6 9 0, 7 5 6 9 0"

[ตามด้วยข้อความที่ต้องการแจ้ง]

"3 0 0 9 7, 3 0 0 9 7, 3 0 0 9 7"

"9 4 9 9 5, 9 4 9 9 5, 9 4 9 9 5"

"6 4 9 2 8, 6 4 9 2 8, 6 4 9 2 8"

"3 6 7 9 9, 3 6 7 9 9, 3 6 7 9 9"

[สัญญาณปิดรายการ]

ขั้นตอนการถอดรหัส
เมื่อจารชนเปิดวิทยุคลื่นสั้นตามเวลานัดหมายออกอากาศ แล้วได้ยินเลขรหัสประจำตัวของตัวเอง ก็เตรียมจดเลขกลุ่มแรก 75690 เพื่อให้รู้หัวรหัส และเลขทั้งหมดเพื่อถอดรหัส จากนั้นจารชนจะเปิดหนังสือกุญแจรหัสไปที่หน้านั้นที่มีเลขหัวรหัส แล้วนำเลขที่ได้ยินมาทำการลบแบบไม่ยืม (ให้เอาเลขใหญ่ลบเลขน้อยไปเลย)
สมมการคือ C - K mod 10 = P
[โดยที่ C = รหัสที่ได้รับ, K mod 10 = เลข OTP ด้วยการลบแบบ Modular 10, P = ข้อความที่เข้ารหัส]

3 0 0 9 7 - 3 1 9 7 6 = 0 9 1 2 1

9 4 9 9 5 - 4 2 7 9 0 = 5 2 2 0 5

6 4 9 2 8 - 4 9 8 7 6 = 2 5 1 5 2

3 6 7 9 9 - 2 6 7 9 9 = 1 0 0 0 0

เมื่อนำตัวเลขมาเรียงกันจะได้

09 12 15 22 05 25 15 21

ซึ่งแปลงความจาก A1Z26 ได้ว่า

ILOVEYOU ซึ่งก็คือ I LOVE YOU

จารชนของเราได้รับข้อความลับแล้ว จบการเข้าและถอดรหัส ได้เวลาฉีกหนังสือกุญแจหน้านั้นและเผาทิ้ง แล้วดำเนินภารกิจ

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

ปกติเขาส่งข้อความอะไร?
ในทางพิชัยสงครามข้อมูลยิ่งสั้นยิ่งคลุมเครือยิ่งปลอดภัย ข้อความมักจะสั้นกระชับไม่เกิน 20-50 กลุ่ม เนื้อหามักจะเป็นการสั่งการหรือยืนยัน ซึ่งก็อาจเป็นคำรหัสอีกชั้นหรือไม่ก็ได้

นี่คือตัวอย่างประโยคหรือวลีที่จารชนอาจได้รับ โดยแบ่งตามประเภทภารกิจ

1. ภารกิจด้านการจัดหาและรับส่ง

"PACKAGE PLACED AT SECTOR SEVEN" (วางของไว้ที่เขต 7 แล้ว)
"COLLECT THE BLUE CONTAINER AT MIDNIGHT" (ไปเก็บที่ใส่ของสีฟ้าตอนเที่ยงคืน)
"DEAD DROP LOCATION ALPHA IS COMPROMISED" (จุดส่งของลับจุด A ถูกตรวจพบแล้ว ห้ามใช้)
"COURIER WILL ARRIVE AT THE TRAIN STATION" (คนส่งของจะไปถึงที่สถานีรถไฟ)

2. ภารกิจด้านการสอดแนมและข่าวกรอง

"OBSERVE THE FREIGHT HARBOR" (เฝ้าสังเกตการณ์ที่ท่าเรือขนส่งสินค้า)
"COUNT THE VEHICLES AT THE BORDER" (นับจำนวนรถที่ข้ามพรมแดน)
"REPORTS ON PROJECT RED ARE NEEDED" (ต้องการรายงานเรื่องโปรเจกต์สีแดง)
"IDENTIFY THE NEW STAFF AT EMBASSY" (ระบุตัวตนพนักงานใหม่ที่สถานทูต)

3. คำสั่งเชิงยุทธวิธีและการเอาตัวรอด

"ABORT MISSION IMMEDIATELY" (ยกเลิกภารกิจทันที)
"GO TO THE SAFE HOUSE AND WAIT" (ไปที่เซฟเฮ้าท์แล้วรอการติดต่อ)
"SIGNAL RECEIVED PROCEED TO STAGE TWO" (ได้รับสัญญาณแล้ว ให้เริ่มแผนขั้นที่สอง)
"DESTROY ALL ENCRYPTION DEVICES" (ทำลายอุปกรณ์เข้ารหัสทั้งหมดทิ้ง)

4. ข้อความยืนยันและสภาพจิตใจ
บางครั้งก็ส่งเพื่อแจ้งข่าวส่วนตัวหรือเรื่องการเงิน เพื่อให้จารชนยังมีใจทำงานต่อ

"FUNDS TRANSFERRED TO SWISS ACCOUNT" (โอนเงินเข้าบัญชีสวิสเรียบร้อยแล้ว)
"FAMILY IS SAFE AND WELL" (ครอบครัวปลอดภัยและสบายดี)
"HAPPY BIRTHDAY FROM THE CENTER" (สุขสันต์วันเกิดจากศูนย์บัญชาการ - มีกรณีนี้เกิดขึ้นจริงบ่อยครั้งครับ)

แต่บางครั้งก็มีที่ส่งตัวเลขสุ่มๆออกไปเฉยๆ เพื่อรักษาตารางเวลาให้ดูเหมือนมีการใช้งานเพื่อสร้างความสับสนให้กับฝ่ายตรงข้าม

ข้อความเหล่านี้มีจะลักษณะพิเศษ 3 ประการ
ไร้บริบท: หากคุณแอบฟังได้และถอดรหัสได้คำว่า "Observe the harbor" คุณก็ไม่รู้ว่า "ท่าเรือไหน?" เพราะจารชนย่อมตกลงกับศูนย์ไว้ล่วงหน้าแล้วว่า Harbor หมายถึงที่ไหน อย่าลืมว่าสัญญาณวิทยุนี้ส่งกระจายไปทั่วโลก มีแต่จารชนถูกระบุตัวเท่านั้นที่จะรู้ อีกอย่างคือ ภารกิจทางทหารพวกนี้มักจะหมดอายุเร็ว ต่อให้แกะได้จริงก็ไม่ทันเวลาอยู่ดี
ประหยัดถ้อยคำ: มักใช้คำสั้นๆเพื่อลดความยาวของรหัสตัวเลข
การใช้รหัสซ้อน: บางครั้ง "Happy birthday" อาจไม่ได้แปลว่าสุขสันต์วันเกิดจริงๆ แต่อาจเป็นรหัสลับที่แปลว่า "เริ่มการระเบิดได้" ก็เป็นได้

เกร็ดจารชน
มีเรื่องเล่าว่าจารชนโซเวียตคนหนึ่งถูกจับได้เพราะเขาจดบันทึกข้อความที่ถอดรหัสแล้วไว้ในกระดาษ แต่ลืมเผาทิ้ง ข้อความนั้นคือ "The weather in Moscow is cold" (มอสโกหนาวมาก) ซึ่งเป็นรหัสยืนยันว่าศูนย์ได้รับข้อมูลข่าวกรองชิ้นสำคัญแล้ว

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

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

ขอให้สนุกกับการสร้างรหัสลับขั้นสุดยอดด้วยตัวเองครับ ^_^

KGB เคยใช้เปลือกวอลนัทเพื่อซ่อนหนังสือกุญแจ

แถม
สำหรับคนที่สนใจวิทยุคลื่นสั้น เรามีรุ่นแนะนำ คือ Tecsun R-911 https://s.shopee.co.th/9zk0fX3t1H เป็นวิทยุคลื่นสั้นพกพาราคาถูกที่รับคลื่นได้แม่นยำและชัดเจนที่สุดในราคาหลักร้อย ที่นักวิทยุคลื่นสั้นหลายท่านให้การยอมรับ
หรือหากยังไม่อยากซื้อแต่อยากทดลองใช้ตัวรับสัญญาณวิทยุ อาจลองผ่านเว็บนี้ได้ครับ http://websdr.ewi.utwente.nl:8901/ เป็นตัวรับวิทยุของมหาวิทยาลัย Twente ประเทศเนเธอร์แลนด์ ซึ่งได้รับความนิยมที่สุดในโลก รับสัญญาณได้กว้างมากและมักจะมีคนเข้าไปดักฟัง Numbers Stations ฝั่งยุโรปกันที่นี่ เว็บนี้เปรียบเสมือนมีเครื่องรับวิทยุราคาแพงและสายอากาศยักษ์ที่ตั้งอยู่ที่ประเทศเนเธอร์แลนด์ โดยควบคุมได้จากหน้าจอที่บ้าน และแน่นอนว่าการปรับละเอียดและซับซ้อนมากกว่าวิทยุคลื่นสั้นทั่วไปหลายเท่ามาก แต่โดยเบื้องต้นให้ตั้งค่าเป็น AM เพื่อจูนฟังวิทยุคลื่นสั้นครับ ตรงที่เป็นแถบสว่างๆจะมีคลื่นที่ออกอากาศอยู่ แต่บางครั้งก็อาจเป็นสัญญาณรบกวนจากเรดาห์ที่มีแต่เสียง "อือ~" ก็ได้ ให้ลองปรับตัวจูนไปที่ 16 m แล้วกดที่ band ดู มันจะซูมลงไปบริเวณนั้น อาจมีให้เราเลือกกด Labels เพื่อเลือกช่องสถานีได้แม่นยำขึ้น จะออกมาดูภาพรวมก็กด max out ก็ต้องลองเล่นกันดูครับ ยอมรับเลยว่าเจ้าเครื่องนี้มันซับซ้อนมากจริงๆแต่ก็ละเอียดมากและกว้างมากด้วยเช่นกัน แต่ถ้าให้สะดวก ซื้อเป็นวิทยุคลื่นสั้นมาแค่สับสวิทช์หมุนจูนหาคลื่นตามปกติก็เรียบร้อยแล้วแต่ละไม่กว้างและละเอียดเท่าครับ

11 มกราคม 2568

รหัสผ่านที่ซับซ้อนแข็งแกร่งจริงหรือ?

t.ly/qRKCl

แนวคิดที่แพร่หลายว่ารหัสผ่านที่ยิ่งซับซ้อนจะยิ่งแข็งแกร่งและเจาะยาก คือต้องมีตัวเลข ตัวอักษรเล็ก-ใหญ่ และสัญลักษณ์พิเศษ ซึ่งเป็นแนวจาก NIST (National Institute of Standards and Technology สถาบันมาตรฐานและเทคโนโลยีแห่งชาติสหรัฐอเมริกา) ในสมัยปี 2003 ได้ออกมาเป็นนโยบายแนะนำเป็นแนวทาง หลายองค์กรหรือเว็บไซต์ก็บังคับให้คิดรหัสผ่านโดยต้องมีตัวเลข ตัวอักษรเล็ก-ใหญ่ และสัญลักษณ์พิเศษ อยู่ในรหัสผ่านด้วย ซึ่งสร้างความยุ่งยากและจำยาก (ยังไม่นับเรื่องนโยบายการบังคับเปลี่ยนรหัสทุกๆ 90 วันอีกนะ ซึ่งในทางปฏิบัติผู้คนมักจะเปลี่ยนไม่ต่างจากเดิมหรือเปลี่ยนแค่ตัวเดียว วุ่นวายมากแต่ได้ผลน้อย)

จนกระทั่งปี 2017 ทาง NIST ก็ได้ทราบว่าการบังคับให้มีตัวเลข ตัวอักษรเล็ก-ใหญ่ และสัญลักษณ์พิเศษ อยู่ในรหัสผ่านนั้น เป็นการสร้างข้อจำกัดให้รูปแบบของรหัสผ่าน แทนที่จะแข็งแกร่งขึ้นเพราะซับซ้อนแต่กลับทำให้ถูกเจาะได้ง่ายขึ้นจากโปรแกรมแบบ Brute force (เดาดิบๆทีละตัวอักษรไปเรื่อยๆจนกว่าจะเจอในทุกความเป็นไปได้)
จากนั้นปี 2020 NIST จึงได้ออกนโยบายใหม่ แทนที่จะแนะนำให้ใช้รหัสที่ซับซ้อนแบบนั้น NIST แนะนำให้ใช้คำที่จำง่ายๆหลายๆคำแทน เพราะรหัสผ่านที่ซับซ้อนแต่ถูกกำหนดรูปแบบเอาไว้จะอ่อนแอ แต่ความยาวของรหัสผ่านจากคำง่ายๆหลายๆคำที่เป็นอิสระย่อมมีความเป็นไปได้มากกว่าจึงสร้างความแข็งแกร่งได้มากกว่า (ยิ่งถ้าได้จากการสุ่มยิ่งดี แนะนำบทความ Diceware - เทคนิคการตั้งรหัสผ่านแบบจำง่ายแต่แกะยากโดยใช้ลูกเต๋า) และจะบังคับให้เปลี่ยนรหัสผ่านเฉพาะเมื่อเกิดการละเมิดความปลอดภัยบางประการเท่านั้น ไม่ใช่ทุกๆ 90 วันเหมือนมาตราฐานเก่า

รหัสที่ซับซ้อน
ซับซ้อนแค่สำหรับมนุษย์
แต่ไม่ใช่สำหรับโปรแกรมคอมพิวเตอร์

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

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

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

แฮ็กรหัส Wifi อย่างง่ายด้วย Kali Linux
https://coady.tech/hacking-wi-fi-with-kali-linux/

แถม
บางคนเมื่อรู้แนวคิดตรงนี้ที่ว่า ควรใช้ประโยคยาวๆ ก็อาจเลือกใช้เนื้อเพลงที่ชอบหรือเนื้อหาจากหนังสือที่ชอบมาตั้งเป็นรหัสผ่าน ซึ่งไม่แนะนำนะครับ มันยาวจริง แต่อย่าลืมว่าโปรแกรมเจาะรหัสสมัยนี้นอกจากจะ Brute force แล้ว ก็มักจะศึกษาพฤติกรรมของเหยื่อผ่านโซลเซียลก่อน และเอาโพสต่างๆของเรามาเป็นฐานข้อมูลในการเดาด้วย ดังนั้น การเลือกรหัสผ่านเองจึงอาจถูกคาดเดาได้ในเชิงพฤติกรรมได้ ดังนั้น ทาง EFF (the Electronic Frontier Foundation) จึงแนะนำให้ใช้ชุดคำที่ได้จากการสุ่ม เช่น ระบบ Diceware - เทคนิคการตั้งรหัสผ่านแบบจำง่ายแต่แกะยากโดยใช้ลูกเต๋า มาใช้เป็นรหัสผ่านจะดีที่สุด เพราะไม่สามารถคาดการณ์เชิงพฤติกรรมได้ เพราะเกิดจากการสุ่มล้วนๆ คำต่างๆมีความหมาย ไม่ต้องจำทีละตัวอักษร จึงทำให้จำได้ง่ายกว่าแม้จะถูกสุ่มมาก็ตาม

อ้างอิง
https://pages.nist.gov/800-63-3/sp800-63-3.html
https://www.engadget.com/2017-08-08-nist-new-password-guidelines.html
https://www.wsj.com/articles/the-man-who-wrote-those-password-rules-has-a-new-tip-n3v-r-m1-d-1502124118
https://auth0.com/blog/dont-pass-on-the-new-nist-password-guidelines/

07 มกราคม 2568

ระบบสร้างรหัสผ่านแบบสุ่มด้วยเหรียญ


จากบทความ Diceware - เทคนิคการตั้งรหัสผ่านแบบจำง่ายแต่แกะยากโดยใช้ลูกเต๋า (แนะนำให้อ่านเพิ่มเติม) ซึ่งเป็นระบบสร้างรหัสผ่านแบบสุ่มด้วยลูกเต๋าที่ให้ความปลอดภัยได้สูงมาก ซึ่งเป็นระบบที่ EFF (the Electronic Frontier Foundation) แนะนำให้ใช้เป็นแนวทางในการสร้างรหัสผ่านส่วนตัวเพื่อความปลอดภัยขั้นสูงสุด และสอดคล้องกับแนวทางของ NIST (National Institute of Standards and Technology มาตรฐานและเทคโนโลยีแห่งชาติสหรัฐอเมริกา) ในปัจจุบัน

ระบบสร้างรหัสผ่านด้วยการสุ่มเหรียญในบทความนี้ก็เป็นทางเลือกอีกระบบ บางครั้งอาจไม่สะดวกหากต้องคิดรหัสผ่านใหม่นอกสถานที่ เพราะต้องใช้ลูกเต๋าร่วมกับรายการคำศัพท์ หรือบางเว็บไซต์ยังใช้มาตรฐานเก่าที่บังคับให้ต้องมีอักขระพิเศษ ตัวพิมพ์ใหญ่ และตัวเลข รวมอยู่ด้วย (ซึ่งการกำหนดเช่นนี้ปัจจุบันทราบกันดีแล้วว่าเป็นการเพิ่มข้อจำกัดของรหัสผ่าน ทำให้รหัสผ่านมีความปลอดภัยน้อยลงและเดาได้ง่าย ทางผู้เสนอแนวทางนี้ก็ได้แสดงความเสียใจไปแล้วตั้งแต่ปี 2017) แล้วจะทำอย่างไรดีล่ะหากต้องการสร้างรหัสแบบสุ่มแท้? ไม่ต้องเป็นห่วง ยังมีระบบสร้างรหัสผ่านแบบสุ่มด้วยเหรียญอยู่ครับ สามารถนำไปประยุกต์ใช้ได้ โดยใช้เพียง
  1. เหรียญ 4 เหรียญ (เหรียญอะไรก็ได้ แต่แนะนำให้เป็นขนาดและชนิดเดียวกัน หรือใช้เหรียญเดียวทอยหลายรอบก็ได้)
  2. แป้มพิมพ์คอมพิวเตอร์มาตราฐาน
เราจะใช้หน้าของเหรียญเพื่อสร้างเลขฐานสอง โดยเมื่อทอยเหรียญลงพื้นแล้วให้เหรียญทางซ้ายสุดหรือบนสุดเป็นหลักใหญ่แล้วไล่รองลงมาตามลำดับ  โดย หัว = 1; ก้อย = 0

กระบวนการสร้างรหัสผ่าน
  1. สุ่มกำหนดแถวของแป้นพิมพ์ ทอย 2 เหรียญ: ก้อย-ก้อย (00) = แถวล่างสุด, ก้อย-หัว (01) = แถวถัดขึ้นมา, หัว-ก้อย (10)= แถวรองบนสุด, หัว-หัว (11) แถวบนสุด
  2. สุ่มกำหนดปุ่มในแถว ทอย 4 เหรียญ: จะได้ค่าตั้งแต่ 0 ถึง 15 (ซึ่งแปลงเลขฐานสองเป็นฐานสิบแล้ว) ใช้ตัวเลขนี้เพื่อนับปุ่มในแถวที่เลือก โดยเริ่มจากด้านซ้ายไปขวา และนับปุ่มอักษรแรกเป็น 0
    • หากค่าที่ได้มากกว่าจำนวนปุ่มในแถว ให้ทอยใหม่
    • หากต้องการได้ค่าความสุ่มระดับสูงสุด คุณควรเริ่มใหม่ตั้งแต่ข้อ 1 คือสุ่มแถวใหม่อีกครั้ง แต่ค่าเบี่ยงเบนของความสุ่มก็ไม่ได้มีความแตกต่างอย่างมีนัยสำคัญมากนัก หากจะใช้แถวเดิมก็ไม่เป็นไร
  3. สุ่มกำหนดว่าพิมพ์ใหญ่หรือพิมพ์เล็ก (กด Shift หรือไม่) ทอย 1 เหรียญ: เพื่อกำหนดว่าตัวอักษรจะเป็นตัวพิมพ์ใหญ่ (หัว) หรือตัวพิมพ์เล็ก (ก้อย) 
ตัวอย่าง
  1. ทอยครั้งที่ 1: เหรียญทางซ้าย = หัว, เหรียญทางขวา = ก้อย (10): เลือกแถวรองบนสุด (QWERTYUIOP...)
  2. ทอยครั้งที่ 2: เหรียญจากซ้ายไปขวา: หัว-ก้อย-ก้อย-หัว (1001 = 9): เลือกปุ่มลำดับที่ 9 ซึ่งก็คือ P (เริ่มนับ 0 ที่ Q)
  3. ทอยครั้งที่ 3: ก้อย (0): ให้ใช้ตัวพิมพ์เล็ก (ไม่ต้องกด Shift): ดังนั้นคือตัว p
แล้วให้ทำซ้ำแบบนี้ไปเรื่อยๆจนกว่าจะได้ความยาวรหัสผ่านพอกับความต้องการ (โดยมาตราฐานแนะนำที่ 10 ตัว หรือ 8-16 ตัวขึ้นไป)

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

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


แถม
เว็บไซต์อันดับสถิติรหัสผ่านที่ใช้กันเยอะและเจาะง่ายทั่วโลก มีอันดับเฉพาะสำหรับแต่ระประเทศ รวมถึงประเทศไทยด้วย https://nordpass.com/most-common-passwords-list/

หากไม่สะดวกทอยเหรียญจริงแนะนำให้ทอยเหรียญผ่านเว็บ https://www.random.org/coins/ ซึ่งเป็นเว็บแบบสุ่มแท้ (True random จากสัญญาณรบกวนในบรรยากาศ ซึ่งไม่ใช่จากการสุ่มเทียมที่คำนวณด้วยโปรแกรม หรือให้มันสุ่มรหัสผ่านให้เลยก็ได้ที่ https://www.random.org/passwords/) พอจะเทียบเท่าได้กับการทอยเหรียญจริงอยู่ครับ แต่ถ้าทอยเหรียญเองจะเป็นการสุ่มแท้ที่ดีที่สุดครับ

เพราะปัญหาของการสุ่มคือ
เราจะรู้ได้อย่างไรว่านั่นคือการสุ่ม...

ศึกษาเพิ่มเติม

24 พฤศจิกายน 2564

Diceware - เทคนิคการตั้งรหัสผ่านแบบจำง่ายแต่แกะยากโดยใช้ลูกเต๋า


ในการสร้างรหัสผ่านระบบ Diceware ซึ่งจำง่ายแต่แกะยาก แม้แต่ NSA (National Security Agency สำนักงานความมั่นคงแห่งชาติสหรัฐ) ก็ยากที่จะเดา ด้วยชุดคำต่างๆแบบสุ่ม เนื่องจากมนุษย์เราไม่ถนัดในการจำตัวอักขระหลายๆตัวที่ไร้ความหมาย แต่สามารถจำคำหรือวลีต่างๆได้ดีเพราะมันมีความหมาย ทำให้จดจำได้ง่าย การสร้างรหัสผ่านระบบ Diceware จึงใช้จุดแข็งนี้ของมนุษย์ร่วมกับพลังแห่งการสุ่ม ทำให้ได้รหัสผ่านที่แข็งแกร่ง ซึ่งเป็นระบบที่ EFF (the Electronic Frontier Foundation) แนะนำ

ในการสร้างรหัศผ่านด้วยการสุ่มคำนั้น ทางผู้เชี่ยวชาญแนะนำว่าต้องใช้การสุ่มแท้จะดีที่สุด เพราะโปรแกรมสุ่มส่วนใหญ่เป็นการสุ่มเทียม(คือสุ่มจากการคำนวณ) ดังนั้นจึงควรใช้ลูกเต๋าจริง หรือหากไม่สะดวกก็สามารถใช้เว็บ https://www.random.org/dice/ (ซึ่งเป็นการสุ่มแท้ True random จากสัญญาณรบกวนของบรรยากาศ)

วิธีสร้างรหัสผ่านระบบ Diceware
  1. ทอยเต๋าหกหน้า 5 ลูก (หรือ 1 ลูก 5 ครั้ง)
  2. จดแต้มที่ได้จากซ้ายไปขวา 
  3. เปิดรายการคำที่กำหนดไว้จาก https://theworld.com/~reinhold/diceware.wordlist.asc (เป็นรายการดั้งเดิมยอดนิยม หากต้องการรายการคำชุดใหม่จาก EFF ดูในส่วนแถมข้างล่าง ซึ่งยังมีเทคนิคการจำ และอื่นๆ)
  4. ทำซ้ำ 4-6 ครั้งหรือมากกว่า ก็จะได้คำมาใช้เรียงเป็นรหัสผ่านตามหลักการ Diceware แล้วครับ

มาตราฐาน Dicewar มักแนะนำที่ 6 คำ หรือ 5 คำ+1 อัขระพิเศษที่สุ่มขึ้นมา หรือน้อยที่สุด 4 คำ แต่ยิ่งคำเยอะก็ยิ่งแข็งแกร่ง และคำแนะนำเสริมคือควรเว้นวรรคระหว่างคำ จะช่วยให้รหัสแข็งแกร่งขึ้น (แต่จะไม่เว้นวรรคก็ได้ หรือจะใช้ตัวแรกของคำเป็นตัวพิมพ์ใหญ่ก็ได้ หรือผสมผสาน แล้วแต่ชอบเลยครับ)

ในรายการมี 7,776 คำ ถ้าทอยเต๋าหกหน้า 5 ลูก สุ่มเอาคำ 6 คำจากกรายการ ก็จะได้รายการวลีที่เป็นไปได้ 7,776 ยกกำลัง 6 = 221,073,919,720,733,357,899,776 วลี โดยมีเอนโทรปีประมาณ 77.55 bits ซึ่งเป็นค่าการสุ่มที่สูงมาก (หากสุ่มเอา 20 คำ เอนโทปีจะสูงได้ถึงประมาณ 258.5 bits!) ซึ่งต่างจากรหัสที่มนุษย์เลือกเองซึ่งมักจะมีค่าเอนโทปีเฉลี่ยอยู่ที่ 40.45 bits เท่านั้น

ในภาษาทางวิชาการจะเรียกการสร้างรหัสผ่านระบบ Diceware นี้ว่า Passphrase ไม่ใช่ Password แต่มันก็อยู่ใต้สังกัดของ Password นั่นแหละครับ แค่แยกชื่อให้เฉพาะเจาะจงลงไปเท่านั้น ส่วนในภาษาไทยเราก็เรียกว่ารหัสผ่านเหมือนเดิม เอาจริงๆมันก็คือ Password ที่ใช้วลี (phrase) แทนอักขระ (word) นั่นเอง

วิธีการคำนวณค่าเอนโทปีของข้อมูล

เอนโทปีของข้อมูล = log2(x)
เมื่อ x = จำนวนความเป็นไปได้

log2(x) คือ 2 ยกกำลังเท่าไหร่จึงได้ x เช่น ค่าเอนโทรปีของการทอยเหรียญหนึ่งเหรียญมี หัว-ก้อย คือ มีความเป็นไปได้ 2 อย่าง แทนค่าใน log2(x) ได้ log2(2) = 1 bit เพราะ 2 ที่เป็นฐาน ยกกำลัง 1 ได้ 2 ที่อยู่ในวงเล็บ คำตอบจึงเป็น 1
ดังนั้น รายการวลีที่เป็นไปได้ของ 6 คำ = 221,073,919,720,733,357,899,776 วลี จึงเป็น log2(221,073,919,720,733,357,899,776) = 77.548875 bits หรือปัดเป็น 77.55 bits นั่นเอง
หรือคำนวณจาก log2 ของรายการคำที่มีแล้วคูณด้วยจำนวนคำที่สุ่มใช้ ในรายการคำมี 7,776 คำ คือ log2(7,776) = 12.925 แล้วนำมาคูณด้วยจำนวนคำที่สุ่มใช้ ในที่นี้คือ 6 คำ เป็น 12.925*6 = 77.55 bits ถ้าต้องการหาเอนโทปีจากรายการคำชุดนี้ของการใช้คำสุ่มกี่คำก็ลองคูณดูได้ครับ
หากต้องการนำมาคิดหาค่าความเป็นไปได้ในการเดารหัสว่าต้องเดากี่ครั้งจึงจะเจอ ให้เอา 2 ยกกำลังเอนโทปี เช่น จำนวนความเป็นไปได้ในการเดาของคำสุ่ม 6 คำจะเป็น 2 ยกกำลัง 77.55 ≈ 7,776 ยกกำลัง 6 (ที่เป็นค่าประมาณเพราะ bits ปัดเศษ) คือค่าของรายการวลีที่เป็นไปได้ของการสุ่มเอา 6 คำนั่นเองครับ

ความแข็งแกร่งของระบบ Diceware

ความแข็งแกร่งของรหัสผ่าน = เอนโทปี*ความยาว
เมื่อ ความยาว = จำนวนอักขระ หรือ จำนวนคำ (ขึ้นอยู่กับว่าโปรแกรมเจาะสุ่มทีละอักขระหรือคำ)
  • 5 คำ อาจถูกโจมตีได้ด้วยคอมพิวเตอร์ที่มีหน่วยประมวลผลกราฟิกขั้นสูงประมาณหนึ่งพันเครื่อง (กลุ่มอาชญากรที่มีเครือข่ายบอทเน็ต (botnets) ของคอมพิวเตอร์ที่ติดไวรัสสามารถรวบรวมทรัพยากรดังกล่าวได้)
  • 6 คำ อาจถูกโจมตีได้โดยองค์กรที่มีงบประมาณมหาศาล เช่น หน่วยงานความมั่นคงของประเทศขนาดใหญ่
  • 7 คำขึ้นไป ไม่สามารถถูกโจมตีได้ด้วยเทคโนโลยีใดๆที่เรารู้จักในปัจจุบัน แต่ในปี 2030 องค์กรขนาดใหญ่บางแห่งอาจมีความสามารถในการทลายรหัสผ่านเหล่านี้ได้
  • 8 คำ ควรจะมีความปลอดภัยอย่างสมบูรณ์จนถึงปี 2050




แถม
รายการคำ Diceware ชุดใหม่จาก EFF (the Electronic Frontier Foundation) https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases

หากเน้นสะดวก ไม่สนใจว่าจะเป็นสุ่มแท้หรือสุ่มเทียม สามารถใช้เว็บนี้ได้เลย https://diceware.dmuth.org/ เลือกจำนวนคำได้ คลิกเดียวจบ มันจะทอยเต๋าและเลือกคำตามการสุ่มของเว็บให้เลยครับ

แนะนำให้ใช้เทคนิคการจำแบบโลกี หรือ Roman Room หรือ Memory Palace ฯลฯ (อธิบายเทคนิคแบบสั้นๆ คือ ให้จำเป็นภาพแล้วแต่งเรื่องราวสนุกๆเกี่ยวกับภาพเหล่านั้นให้มีการเชื่อมโยงกัน) จะช่วยให้จำได้ง่ายขึ้นครับ
ถ้าจำไม่ได้จริงๆ ทางผู้สร้างระบบ Diceware แนะนำว่าอาจจดรหัสไว้ก็ได้ครับ เพราะการลืมรหัสมีโอกาสเกิดขึ้นได้มากมากกว่าการโดนขโมยกระดาษจดเสียอีก ขอแค่เก็บไว้ในที่ปลอดภัยไม่เปิดเผยต่อใครก็เป็นอันใช้ได้

รหัสผ่านแบบสุ่มนี้แม้จะมีความปลอดภัยสูงและซับซ้อนซึ่งช่วยเพิ่มความปลอดภัยให้กับบัญชีออนไลน์ อย่างไรก็ตามเท่านี้ย่อมไม่เพียงพอ ยังต้องมีความระมัดระวังและไม่เผยแพร่รหัสผ่านให้กับผู้อื่น, ใช้การตรวจสอบปัจจัยหลายชั้น(Two Factor Authentication), รหัสที่แข็งแกร่งแค่ไหนก็ช่วยอะไรไม่ได้หากพิมพ์เข้าไปในหน้าเว็บปลอมหรือถูกดักจับซึ่งขโมยรหัส ต้องตรวจสอบ URL ของเว็บให้ถี่ถ้วนก่อนกรอกรหัสเข้าไปให้ดี, จุดที่อ่อนแอที่สุดคือความประมาท (Human error), และอื่นๆ แนะนำให้ศึกษาเพิ่มเติมที่ แนะนำตัวช่วยรักษาความปลอดภัยบนโลกออนไลน์, คำถามที่พบบ่อยเกี่ยวกับ Dicewareแนวทางการใช้รหัสผ่านของ NIST และแนวทางปฏิบัติ

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

การทำ Diceware นิยมทอยเต๋า 5 ลูก