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

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

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

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

สิ่งนี้เรียกว่าการให้คะแนนกลาง และเป็นหนึ่งในตัวสร้างตัวเลขสุ่มหลอก ดังนั้น อะไรคือความแตกต่างระหว่างลำดับที่สร้างขึ้นแบบสุ่มและลำดับที่สร้างขึ้นแบบสุ่มเทียม?
ความแตกต่างหลักๆ คือ ถ้าตัวเลขสุ่มหลอกถึงจำนวนที่กำหนด ลำดับก็จะวนซ้ำในที่สุดเมื่อหมายเลขเมล็ดที่ใช้มาก่อนปรากฏขึ้นในอัลกอริทึม วัฏจักรจะเริ่มต้น ความยาวก่อนลำดับของตัวเลขสุ่มหลอกซ้ำเรียกว่า ระยะเวลา ระยะเวลาจำกัดอย่างเคร่งครัดโดยความยาวของเมล็ดเริ่มต้น
ตัวอย่างเช่น หากเราใช้ seed 2 หลัก อัลกอริทึมสามารถสร้างตัวเลขได้มากถึง 100 ตัวก่อนวนซ้ำ, seed 3 หลักสามารถสร้างตัวเลขได้ 1,000 ตัวก่อนวนซ้ำ และ seed 4 หลักสามารถสร้างตัวเลขได้ 1,000 ตัวก่อน วนซ้ำ สร้าง 10,000 ตัวเลข แต่ถ้าเราใช้เมล็ดที่ใหญ่พอ ตัวเลขในลำดับจะขยายเป็นล้านล้านก่อนที่จะทำซ้ำ
มีความแตกต่างที่สำคัญอีกประการหนึ่งซึ่งสำคัญมาก และนั่นคือเมื่อคุณสร้างตัวเลขแบบสุ่มหลอก จะมีลำดับที่ไม่สามารถสร้างได้
ตัวอย่างเช่น หาก Alice ซึ่งเป็นตัวเข้ารหัสสร้างลำดับการกระจัด 20 รายการแบบสุ่มจริงๆ สิ่งนี้จะเทียบเท่ากับการสุ่มเลือกลำดับจากสแต็กของลำดับการกระจัดที่เป็นไปได้ทั้งหมด ซึ่งมี 26 ยกกำลังของความเป็นไปได้ 20 รายการ นี่คือทางดาราศาสตร์ รูป.
แต่ถ้าผู้เข้ารหัสใช้เมล็ดสุ่ม 4 หลักเพื่อสร้างลำดับตัวเลขสุ่มเทียม 20 หลัก เขาสามารถเลือกผลลัพธ์ที่เป็นไปได้ทั่วไปเท่าๆ กันจากผลลัพธ์ที่เป็นไปได้ 10,000 รายการ ซึ่งหมายความว่าเธอสามารถสร้างลำดับที่แตกต่างกันได้เพียง 10,000 รายการ
เมื่อเราย้ายจากการแทนที่แบบสุ่มไปสู่การแทนที่แบบสุ่มหลอก มันเทียบเท่ากับการย่อพื้นที่หลักให้เหลือพื้นที่เมล็ดที่ค่อนข้างเล็ก
มีการเสนอแนวคิดของตัวเลขสุ่มเทียมเพื่อให้ตัวเข้ารหัสและตัวรับไม่จำเป็นต้องแบ่งปันลำดับการแทนที่แบบสุ่มทั้งหมดล่วงหน้า แต่ต้องการแบ่งปันเมล็ดพันธุ์สุ่มที่ค่อนข้างสั้น แล้วจึงขยายเป็นลำดับสุ่มที่ดูเหมือนเหมือนกัน เมื่อจำเป็น สามารถ
แต่ถ้าพวกเขาไม่เคยพบกันเพื่อแบ่งปันเมล็ดพันธุ์นี้ นี่คือเนื้อหาที่สำคัญที่สุดของเทคโนโลยีการเข้ารหัสสมัยใหม่และแกนหลักของการเข้ารหัสในบล็อกเชน ซึ่งเราจะให้ความสำคัญในบทความถัดไป



