ก่อนอื่นเราต้องสมมติว่าอีฟเป็นคนเฉยๆ จากนี้ฉันหมายความว่าเธอส่งบัตรให้กับ Bob อย่างจริงและสิ่งที่เธอนำกลับมาหาอลิซนั้นเป็นคำตอบของบ็อบ ถ้าอีฟสามารถแก้ไขข้อมูลในทิศทางใดทิศทางหนึ่งหรือทั้งสองอย่าง (และการกระทำของเธอก็ยังไม่ถูกตรวจจับ) สิ่งใดก็จะไป
(เพื่อเป็นเกียรติแก่ประเพณีอันยาวนานทั้งสองฝ่ายที่ซื่อสัตย์ที่เกี่ยวข้องในการสนทนาเรียกว่าอลิซและบ๊อบในข้อความของคุณคุณพูดว่า "คุณ" ชื่อจริงของฉันไม่ใช่ "อลิซ" แต่ฉันจะตอบเช่นเดียวกับที่คุณเขียน ที่อลิซต้องการที่จะตรวจสอบหมายเลขโทรศัพท์ของบ๊อบ.)
คำตอบที่ง่าย (แต่อ่อนแอ) คือการใช้ฟังก์ชันแฮช อลิซเขียนลงบนการ์ด: "กลับมาหาฉันที่แฮช SHA-256 ของหมายเลขโทรศัพท์ของคุณ" SHA-256เป็นฟังก์ชันแฮชการเข้ารหัสซึ่งเชื่อว่ามีความปลอดภัยเท่าที่ฟังก์ชันแฮชดำเนินการ การคำนวณด้วยมือจะน่าเบื่อ แต่ก็ยังสามารถทำได้ (นั่นคือการดำเนินการประมาณ 2500 32- บิตโดยที่แต่ละการดำเนินการเป็นการเพิ่มการเปลี่ยนคำหรือการหมุนหรือการผสมผสานบิตของบิต Bob ควรจะสามารถทำได้ในหนึ่งวันหรือ ดังนั้น).
ตอนนี้สิ่งที่อ่อนแอเกี่ยวกับที่? SHA-256 ซึ่งเป็นฟังก์ชันแฮชการเข้ารหัสมีความทนทานต่อ "preimages": ซึ่งหมายความว่าเมื่อใช้แฮชเอาต์พุตมันยากมากที่จะกู้คืนอินพุตที่สอดคล้องกัน (นั่นเป็นปัญหาที่อีฟเผชิญ) อย่างไรก็ตาม "ยากมาก" หมายถึง "วิธีที่ง่ายที่สุดคือกำลังดุร้าย: ลองอินพุตที่เป็นไปได้จนกว่าจะพบการแข่งขัน" ปัญหาคือแรงเดรัจฉานนั้นง่ายที่นี่: มีหมายเลขโทรศัพท์ที่เป็นไปได้ไม่มากนัก (ในอเมริกาเหนือนั่นคือ 10 หลักนั่นคือเพียง 10 พันล้านเท่านั้น) บ๊อบต้องการทำสิ่งต่างๆด้วยมือ แต่เราไม่สามารถสรุปได้ว่าอีฟมีข้อ จำกัด พีซีพื้นฐานสามารถลองใช้แฮช SHA-256 ได้หลายล้านครั้งต่อวินาทีดังนั้นอีฟจะใช้เวลาน้อยกว่าหนึ่งชั่วโมง (น้อยกว่า 5 นาทีถ้าเธอใช้ GPU)
นี่เป็นปัญหาทั่วไป: ถ้าบ็อบเป็นคนกำหนดขึ้นมา (เช่นสำหรับข้อความที่ได้รับจากอลิซเขาก็จะตอบกลับแบบเดิมเสมอ) อีฟสามารถเลียนแบบเขาได้ คืออีฟรู้ทุกอย่างเกี่ยวกับบ็อบยกเว้นหมายเลขโทรศัพท์ดังนั้นเธอจึงเรียกใช้บ็อบ 10 พันล้านคนซึ่งแตกต่างจากหมายเลขโทรศัพท์ที่สันนิษฐานเท่านั้น และเธอรอให้บ็อบเสมือนหนึ่งในคืนสิ่งที่บ๊อบตัวจริงคืนมา ข้อบกพร่องนี้มีผลต่อการแก้ปัญหา "สมาร์ท" หลายชนิดที่เกี่ยวข้องกับการสุ่มการเข้ารหัสและสมมาตรแบบสมมาตร มันเป็นข้อบกพร่องที่แข็งแกร่งและรากของมันอยู่ในความแตกต่างอย่างมากในอำนาจระหว่างอีฟและบ๊อบ (ตอนนี้ถ้าบ๊อบคอมพิวเตอร์ยังมีคอมพิวเตอร์เป็นใหญ่เป็นอีฟแล้วเขาสามารถใช้ช้าฟังก์ชันแฮชผ่านการใช้การวนซ้ำหลายครั้ง นั่นคือสิ่งที่รหัสผ่านการแฮ็ชมากขึ้นหรือน้อยลงด้วยหมายเลขโทรศัพท์แทนรหัสผ่าน ดูbcryptและคำตอบนี้ )
ดังนั้นวิธีการแก้ปัญหาที่ไม่อ่อนแอจะต้องเกี่ยวข้องกับการสุ่มในส่วนของ Bob: Bob ต้องพลิกเหรียญหรือโยนลูกเต๋าซ้ำแล้วซ้ำอีกและฉีดค่าในการคำนวณของเขา ยิ่งไปกว่านั้นอีฟจะต้องไม่สามารถคลี่คลายสิ่งที่บ๊อบทำ แต่อลิซต้องสามารถทำได้ดังนั้นข้อมูลบางอย่างจึงถูกส่งเป็นความลับจากบ็อบถึงอลิซ สิ่งนี้เรียกว่าการเข้ารหัสแบบอสมมาตรหรืออย่างน้อยก็ข้อตกลงคีย์ไม่สมมาตร ขั้นตอนวิธีการที่ง่ายที่สุดของชั้นเรียนที่จะคำนวณ แต่ยังคงมีความปลอดภัยพอสมควรแล้วอาร์เอสกับPKCS # 1 padding RSA สามารถใช้เป็นเลขชี้กำลังสาธารณะ ดังนั้นโปรโตคอลจึงไป:e = 3
อลิซสร้างเลขจำนวนเต็มขนาดใหญ่โดยที่และเป็นจำนวนเต็มขนาดใหญ่ในทำนองเดียวกันดังนั้นขนาดของก็เพียงพอที่จะรับประกันความปลอดภัย (เช่นอย่างน้อย 1024 บิต ณ ปี 2012) นอกจากนี้อลิซต้องจัดให้มีและไม่ให้ทวีคูณเป็น 3n = p qพีQnหน้า- 1Q- 1
อลิซเขียนบนบัตรn
บ๊อบแรกแผ่นหมายเลขโทรศัพท์ของเขาเข้าไปในลำดับไบต์ตราบเท่าที่ตามที่อธิบาย PKCS # 1 (หมายถึงนี้: 00 02 xx xx ... xx 00 bb bb bb .. ที่ 'BB' สิบไบต์ซึ่งเข้ารหัส หมายเลขโทรศัพท์และ 'xx' เป็นค่าสุ่มไบต์ที่ไม่เป็นศูนย์สำหรับความยาวรวม 128 ไบต์หากเป็นจำนวนเต็ม 1024 บิต)nn
Bob ตีความลำดับไบต์เป็นค่าจำนวนเต็ม (การเข้ารหัสแบบ big-endian) และคำนวณ (นั่นคือการคูณสองจำนวนด้วยจำนวนเต็มขนาดใหญ่มากจากนั้นผลลัพธ์จะเป็น ส่วนที่เหลือของแผนก) ยังคงทำได้ด้วยมือ (แต่มีอีกครั้งมันอาจจะใช้เวลาส่วนที่ดีกว่าของวัน) ผลลัพธ์ก็คือสิ่งที่บ๊อบส่งกลับไปที่อลิซม.ม.3 m o d n
อลิซใช้ความรู้ของเธอเกี่ยวกับและเพื่อกู้คืนจากส่งโดย Bob หน้า Wikipedia บนRSAมีคำอธิบายที่ชัดเจนเกี่ยวกับกระบวนการดังกล่าว เมื่ออลิซมีเธอสามารถลบการขยาย ('xx' ไม่เป็นศูนย์ดังนั้นไบต์ 'bb' แรกสามารถอยู่อย่างไม่น่าสงสัย) และจากนั้นเธอมีหมายเลขโทรศัพท์ซึ่งเธอสามารถเปรียบเทียบกับที่เธอมีพีQmm3 mod nm
การคำนวณของอลิซจะต้องใช้คอมพิวเตอร์ (สิ่งที่คอมพิวเตอร์ทำมักเป็นมือแรกและสามารถทำได้ด้วยมือ แต่คอมพิวเตอร์นั้นมีความเร็วที่ชั่วร้ายดังนั้น "การทำงานได้" อาจใช้เวลามากเกินไปในการฝึกหัดการถอดรหัส RSA ด้วยมือจะใช้เวลามาก สัปดาห์ที่ผ่านมา)
(อันที่จริงแล้วเราสามารถคำนวณด้วยมือได้เร็วขึ้นโดยใช้การเข้ารหัส McElieceแต่จากนั้นกุญแจสาธารณะ - สิ่งที่อลิซเขียนบนการ์ด - จะมีขนาดใหญ่มากและการ์ดจะไม่ทำอย่างนั้นอีฟต้องขนส่งหนังสือเต็มเล่ม ของตัวเลข)