วิธีตรวจสอบหมายเลขกับ Bob โดยไม่ต้องรู้ว่าอีฟ


49

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

หมายเหตุ:คำถามนี้อยู่ในรายการของ "คำถามสัมภาษณ์ Google" ด้วยเหตุนี้จึงมีคำถามมากมายหลายคำถามในเว็บและหลายคำถามยังไม่มีคำตอบที่ชัดเจนหรือแม้แต่คำตอบที่ถูกต้อง

หมายเหตุ 2:คำตอบที่น่ารำคาญสำหรับคำถามนี้คือบ๊อบควรเขียน "โทรหาฉัน" ใช่มันฉลาดมาก 'นอกกรอบ' และทุกอย่าง แต่ไม่ได้ใช้เทคนิคใด ๆ ของ CS ที่เราเรียกฮีโร่ของเราว่า "บ๊อบ" และศัตรูที่แอบดักฟัง "อีฟ" ของเขา

อัปเดต:
คะแนนโบนัสสำหรับอัลกอริทึมที่คุณและบ๊อบทำได้ด้วยมืออย่างสมเหตุสมผล

อัปเดต 2:
โปรดทราบว่าบ๊อบไม่จำเป็นต้องส่งข้อความใด ๆ ถึงคุณ แต่ยืนยันว่าเขามีหมายเลขโทรศัพท์ที่ถูกต้องของคุณโดยไม่ต้องส่งให้อีฟสามารถถอดรหัสได้ซึ่งอาจนำไปสู่การแก้ปัญหาที่ง่ายกว่า


1
แต่ "โทรหาฉัน" ยังไม่สมเหตุสมผลเลยเขายังไม่มีหมายเลขโทรศัพท์ที่ถูกต้องของคุณหรืออย่างน้อยคุณก็ไม่แน่ใจว่าเขาทำดังนั้นฉันไม่คิดว่ามันฉลาดมาก
Gigili

1
@Gigili ถ้าคุณได้รับโทรศัพท์จากเขาจากนั้นเขามีหมายเลขของคุณถ้าคุณไม่ได้รับสายจากนั้นเขาก็ไม่ได้
Joe

1
โอ้ใช่. ฉันยังคิดว่ามันไม่ฉลาด!
Gigili

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

2
@ ราฟาเอลมีซีซาร์ขนที่เป็นไปได้ไม่เกิน 10 หลัก?
Joe

คำตอบ:


27

ก่อนอื่นเราต้องสมมติว่าอีฟเป็นคนเฉยๆ จากนี้ฉันหมายความว่าเธอส่งบัตรให้กับ 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=pqpqnp1q1

  • อลิซเขียนบนบัตรn

  • บ๊อบแรกแผ่นหมายเลขโทรศัพท์ของเขาเข้าไปในลำดับไบต์ตราบเท่าที่ตามที่อธิบาย PKCS # 1 (หมายถึงนี้: 00 02 xx xx ... xx 00 bb bb bb .. ที่ 'BB' สิบไบต์ซึ่งเข้ารหัส หมายเลขโทรศัพท์และ 'xx' เป็นค่าสุ่มไบต์ที่ไม่เป็นศูนย์สำหรับความยาวรวม 128 ไบต์หากเป็นจำนวนเต็ม 1024 บิต)nn

  • Bob ตีความลำดับไบต์เป็นค่าจำนวนเต็ม (การเข้ารหัสแบบ big-endian) และคำนวณ (นั่นคือการคูณสองจำนวนด้วยจำนวนเต็มขนาดใหญ่มากจากนั้นผลลัพธ์จะเป็น ส่วนที่เหลือของแผนก) ยังคงทำได้ด้วยมือ (แต่มีอีกครั้งมันอาจจะใช้เวลาส่วนที่ดีกว่าของวัน) ผลลัพธ์ก็คือสิ่งที่บ๊อบส่งกลับไปที่อลิซmm3 mod n

  • อลิซใช้ความรู้ของเธอเกี่ยวกับและเพื่อกู้คืนจากส่งโดย Bob หน้า Wikipedia บนRSAมีคำอธิบายที่ชัดเจนเกี่ยวกับกระบวนการดังกล่าว เมื่ออลิซมีเธอสามารถลบการขยาย ('xx' ไม่เป็นศูนย์ดังนั้นไบต์ 'bb' แรกสามารถอยู่อย่างไม่น่าสงสัย) และจากนั้นเธอมีหมายเลขโทรศัพท์ซึ่งเธอสามารถเปรียบเทียบกับที่เธอมีpqmm3 mod nm

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

(อันที่จริงแล้วเราสามารถคำนวณด้วยมือได้เร็วขึ้นโดยใช้การเข้ารหัส McElieceแต่จากนั้นกุญแจสาธารณะ - สิ่งที่อลิซเขียนบนการ์ด - จะมีขนาดใหญ่มากและการ์ดจะไม่ทำอย่างนั้นอีฟต้องขนส่งหนังสือเต็มเล่ม ของตัวเลข)


1
เพียงความคิดเห็นสั้น ๆ จุดอ่อนอื่นในโพรโทคอลแรก (อลิซบอกว่า "ส่งแฮชของหมายเลขโทรศัพท์") ให้กับฉันว่ามันเสี่ยงต่อการถูกโจมตีซ้ำ หากคุณใช้งานสิ่งนี้ในโลกแห่งความเป็นจริงอลิซควรส่งสตริงแบบสุ่ม (เรียกว่า "nonce") ซึ่งถูกแฮชพร้อมกับหมายเลขโทรศัพท์
นามแฝง

1
คุณพูดว่า "มีอะไรเกิดขึ้น" ถ้าอีฟสามารถแก้ไขข้อความได้ แต่นี่ไม่จำเป็นว่าจะเป็นสาเหตุที่หายไป การใช้ RSA เราสามารถป้องกันข้อความจากการโจมตีของ MITM ได้เช่นกัน ส่งคำถาม: "คุณมีหมายเลขโทรศัพท์ของฉันหรือไม่" รวมทั้งกุญแจสาธารณะของคุณรวมทั้งลายเซ็นของ (ข้อความ + หมายเลขโทรศัพท์ของคุณ) ที่ลงชื่อด้วยรหัสส่วนตัวของคุณ หากอีฟพยายามแก้ไขข้อความ (เปลี่ยนรหัสสาธารณะเป็นของเธอเอง) เธอจะไม่สามารถสร้างลายเซ็นที่ถูกต้องได้เนื่องจากเธอไม่รู้จักหมายเลขโทรศัพท์ของคุณ
stevendesu

15

ดูเหมือนว่าแอพลิเคชันคลาสสิกของPublic Key cryptosystemเหมือนอาร์เอส

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


5
ให้บ๊อบกับอีฟนั่นน่าจะเป็นความคิดหลัก มันใช้งานได้จริงในบริบทนี้ (ดินสอและกระดาษ) หรือไม่? นอกจากนี้ฉันหวังว่าจะมีลิงก์มากกว่าหนึ่งลิงก์ไปยังบทความวิกิพีเดียที่มีเครื่องหมาย "บทความนี้ต้องมีการแก้ไข"
Joe

@ โจ: ฉันได้แก้ไขเพื่อรวมลิงค์อื่น ฉันค่อนข้างมั่นใจว่าคุณเคยได้ยินเรื่อง RSA อาร์เอสเอน่าจะใช้งานได้จริงเพราะเขียนว่าตัวเลข 1,000 หลักไม่ควรใช้เวลามาก
Aryabhata

14

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

คุณส่งพารามิเตอร์ Bob DHและ (เป็นนายกขนาดใหญ่ที่เหมาะสมและโดยทั่วไปมีจำนวนน้อย) และคีย์สาธารณะของคุณโดยที่คือหมายเลขลับขนาดใหญ่ (เป็นรหัสส่วนตัวของคุณ) รวมถึงคำแนะนำสำหรับ Bob ในการส่งคืนสิ่งต่อไปนี้:pgpggamodpa

  • กุญแจสาธารณะของเขาโดยที่คือหมายเลขลับจำนวนมากที่เขาเลือก;gbmodpb
  • สิ่งที่เขาเชื่อว่าเป็นหมายเลขโทรศัพท์ของคุณเข้ารหัสโดยใช้อัลกอริทึมการเข้ารหัสแบบสมมาตรด้วยกุญแจที่ได้มาจากความลับที่ใช้ร่วมกัน Pgabmodp

อีฟสามารถเห็นและแต่ไม่สามารถคำนวณ Pg b m o d p g agamodpgbmodpgabmodp

ตราบใดที่มีการใช้งานอย่างถูกต้องและทั้งผู้สื่อสารและผู้โจมตีมีพลังในการคำนวณเท่ากันในการกำจัดสิ่งเหล่านี้จะปลอดภัย


2

Bob ไม่ต้องส่งข้อความใด ๆ ที่คุณสามารถถอดรหัสได้ เขาแค่ต้องพิสูจน์ให้คุณเห็นว่าเขามีหมายเลขโทรศัพท์ของคุณ ดังนั้นCryptographic Hash Function (การเข้ารหัสแบบทางเดียว) เสนอทางเลือกให้กับ cryptosystem คีย์สาธารณะ ปัจจุบัน SHA-2เป็นตัวอย่างที่นิยมของฟังก์ชั่นดังกล่าว

ในกลยุทธ์นี้คุณไม่ต้องถอดรหัสข้อความของ Bob กลับมาหาคุณ คุณบอกบ๊อบฟังก์ชั่นแฮชที่คุณต้องการให้เขาใช้เช่น "บ็อบโปรดใช้ SHA-2 เพื่อเข้ารหัสหมายเลขโทรศัพท์ของฉันและให้อีฟส่งผลลัพธ์กลับมาให้ฉัน" จากนั้นคุณใช้อัลกอริทึมเดียวกันเพื่อแฮชหมายเลขโทรศัพท์ของคุณและตรวจสอบว่าคุณได้แฮชแบบเดียวกับที่บ๊อบได้รับมาหรือไม่ ไม่น่าเป็นไปได้อย่างยิ่งที่หมายเลขโทรศัพท์ที่แตกต่างกันสองหมายเลขจะส่งผลให้แฮชเดียวกันดังนั้นคุณจึงสามารถระบุได้ว่า Bob มีหมายเลขโทรศัพท์ที่ถูกต้องหรือไม่

หากคุณ Bob และ Eve ไม่มีคอมพิวเตอร์ที่จะคำนวณฟังก์ชันแฮช (หรือทำการโจมตีแบบ brute force) อาจเป็นไปได้ที่จะใช้ฟังก์ชันแฮชที่เสียสละความปลอดภัยจากการโจมตีแบบ brute force แต่ง่ายสำหรับคุณและ Bob ในการคำนวณ.


ฉันกำลังเขียนคำตอบเดียวกัน! โชคร้าย ฉันจะโพสต์ไว้เมื่อฉันใช้เวลากับมัน
Gigili

@Gigili ฉันหวังว่าจะมีใครเขียนคำตอบนี้ขึ้นมา แต่ฉันตัดสินใจเมื่อฉันเห็นว่ายังไม่มีใครเสนอทางเลือกนี้ ... ฉันยังคงมองหาเวอร์ชั่นที่เป็นมิตรกับดินสอและกระดาษ พูดตามตรงฉันไม่อยากขอให้เพื่อนทำมือ RSA หรือ SHA-2
Joe

ปัญหาคือทุกอัลกอริทึมง่าย ๆ ที่สามารถทำได้ด้วยมือจะถูกเข้ารหัสโดยอีฟ
Gigili

@Gigili คุณหมายถึง "decrypted by Eve" หรือไม่ ปัญหามีข้อ จำกัด มาก ดูเหมือนว่าควรมีแฮชแบบทางเดียวที่ง่ายกว่าจากจำนวนเต็ม 7 หลักที่อีฟไม่สามารถเลิกทำการเรียกคืนจำนวนเดิมได้
Joe

อุ๊ปส์ฉันหมายถึงถอดรหัสอย่างชัดเจน
Gigili

0

ทางออกที่ง่ายจะเป็น:

ทั้งอลิซและบ็อบเห็นด้วยกับสีเดียวกัน และมันก็ไม่มีปัญหาหากอีฟรู้สิ่งนั้นเราจะเรียกมันว่าพีว่าสมมุติว่ามันเป็นสีเหลือง ตอนนี้อลิซและบ็อบต่างก็เลือกสีแบบส่วนตัวแล้วพูดว่า "x" อลิซเลือกสีแดงและบ๊อบเลือกสีน้ำเงิน ตอนนี้พวกเขาผสมกันกับ P. Alice ตอนนี้มีสีส้มและ Bob มีสีเขียว อลิซส่งสีส้มให้กับบ๊อบและบ๊อบส่งสีเขียวของเขาไปยังอลิซเอฟตอนนี้รู้เกี่ยวกับสีเหลืองสีส้มและสีเขียว แต่อลิซก็รู้สีแดงส่วนตัวของเธอและบ็อบรู้สีน้ำเงินสีส่วนตัวของเขา ทั้งอลิซและบ็อบใช้สีส่วนตัวดั้งเดิมและเพิ่มเข้าไปในสีที่พวกเขาเพิ่งแลกเปลี่ยน ตอนนี้ถ้าพวกเขาผสมสีส่วนตัวดั้งเดิมของพวกเขาสีแดงและสีน้ำเงินเป็นสีที่ใช้ร่วมกันพวกเขาทั้งสองจบลงด้วยสีเดียวกันเรียงลำดับของสีน้ำตาลหรือสีแดงอิฐ

แทนที่จะผสมสีเข้าด้วยกันคุณสามารถใช้ เช่นนั้นว่า p เป็นจำนวนเฉพาะจำนวนมากและ g เป็นรากดั้งเดิมของ p เพราะถ้าคุณทำสำหรับ x ใด ๆ ผลลัพธ์ (ตัวเลขระหว่างศูนย์ถึง p - 1) มีแนวโน้มที่จะเท่ากันนั่นคือสาเหตุที่มีรากดั้งเดิม ถ้า p เป็นจำนวนเฉพาะ 2n + 1 ซึ่ง n ก็เป็นเช่นนั้นคุณก็รู้ว่า 2 เป็นรากดั้งเดิมของ p (ซึ่งหมายความว่าคุณไม่ต้องรำคาญกับการคำนวณรากดั้งเดิมซึ่งเป็นชนิดที่ยาก) ดังนั้น shared secret =สำหรับ Bob และสำหรับอลิซg xgx(modp)A xgx(modp)B yAx(modp)By(modp)


ฉันคิดว่าคุณสามารถเขียนบางอย่างเช่นนี้บนการ์ด:

ตัวเลขมีค่าเท่ากับ 3,5 และ 7 (ตัวอย่าง)

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


นี่คือคำบรรยายของภาพที่พบในบทความวิกิพีเดียของการแลกเปลี่ยนคีย์ Diffie-Hellmann อย่างน้อยคุณควรพูดถึงที่มาของคุณ
กราฟิลส์

@ ราฟาเอล: ฉันไม่รู้ว่าตัวเองมีคนอธิบายให้ฉันและฉันคิดว่ามันเป็นความคิดที่ดี
Gigili

0

เพียงแค่ขอให้บ๊อบคูณจำนวนด้วย 2 หรือ 3 หรืออย่างอื่นแล้วก็เลขนั้นด้วยตัวเลขนั่นเอง สามารถทำได้ด้วยมือและสามารถย้อนกลับได้ถ้าทราบหมายเลข ไม่มี sha, rsa หรือ md5 คณิตศาสตร์ธรรมดา


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

0

ส่ง Bob codeword ที่เข้ารหัสด้วยหมายเลขโทรศัพท์ของคุณ ถ้าเขาส่งรหัสคำกลับมาให้คุณคุณก็รู้ว่าเขามีหมายเลขที่ถูกต้อง

จุดอ่อนคืออีฟสามารถจำลองบ๊อบได้ดังนั้นลองใช้หมายเลขโทรศัพท์ทุกหมายเลขจนกว่าเธอจะได้หมายเลขที่ให้รหัสบางอย่างเมื่อบ๊อบกลับมา

ดังนั้นรับ Bob เพื่อเพิ่มจำนวนสุ่มขนาดใหญ่มากไปที่ codeword แล้วเข้ารหัสก่อนที่จะส่งกลับมาให้คุณ สิ่งนี้ทำให้พื้นที่การค้นหา Eves มีขนาดใหญ่เท่าที่คุณต้องการ


ดูเหมือนจะไม่ถูกต้อง หากบ๊อบมีหมายเลขผิดเขาจะถอดรหัสและรับรหัสผิด หลังจากนั้นเขาจะเพิ่มหมายเลขสุ่มต่อท้ายรหัสและเข้ารหัสด้วยคีย์ผิด เมื่อได้รับและถอดรหัสข้อความด้วยคีย์ที่ถูกต้องส่วนแรกของข้อความที่ถูกกู้คืนอาจเป็นรหัสที่ถูกต้องแม้ว่าหมายเลข Bob จะผิด
InformedA

@ สุ่มคุณต้องทำให้โค้ดยาวพอที่ความน่าจะเป็นที่จะเกิดขึ้นนั้นเล็กมากจนคุณไม่สนใจมัน
Ian Ringrose

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

-1

ฉันจะเขียนหมายเลขโทรศัพท์ 10 หมายเลขลงในการ์ดและในบรรดาหมายเลขเหล่านั้นฉันจะตรวจสอบให้แน่ใจว่า หมายเลขของฉันจะอยู่ถัดจากหมายเลขของบ็อบ และฉันจะพูดถึง "เฮ้บ๊อบหมายเลขของฉันถัดจากหมายเลขของคุณโปรดยืนยัน" :)


1
สมมติว่าฉันรู้ว่าหมายเลขของบ๊อบและอีฟไม่ได้: P
everlasto

-1

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


1
คำถามนี้ได้แยกคำตอบที่ไม่สำคัญออกไป
David Richerby

-2

ลองเล่น trik แบบนี้

ทางออกที่ 1: ถ้าจำนวนเป็น 37 แผนที่แฮชจะมีลักษณะเช่นนี้

01 07

15 12

25 20

31 36

49 43

53 50

60 62

72 72

85 82

91 94

และทำเช่นเดียวกันกับตัวเลข 10 หลักหรือมากกว่านั้นเพื่อสร้างความสับสน: P

โซลูชัน 2: หรือสร้างพหุนามซึ่งจำนวนของคุณกลายเป็นจำนวนเฉพาะอื่น ๆ

solution3: เขียนสิ่งนี้ในจดหมาย "เพื่อนโทรหาฉัน"

solution4: เขียนฟังก์ชั่นในแบบที่มันใช้งานกับทุก ๆ ตัวเลขและส่งกลับ 0 จากนั้นเขาก็ส่งจริงหรือเท็จ solution5: ถ้าปลายทั้งสองแบ่งปันฟังก์ชั่นแฮชทั่วไป ... มันทำให้ชีวิตง่ายขึ้น


ไม่ชัดเจนเลยว่ารหัสโครงการของคุณ 37. อย่างไร
David Richerby

สิ่งที่เราต้องทำคือแผนที่ ... 31 ในตัวหนาหมายถึง 3 อยู่ในตำแหน่งที่ 1 ... 72 หมายถึง 7 อยู่ในตำแหน่งที่ 2 ... ขออภัยถ้ามันไม่เข้าใจง่ายมาก
Ajay Reddy

ควรอธิบายรายละเอียดในคำตอบ แต่อย่างจริงจังถ้านั่นเป็นรูปแบบการเข้ารหัสของคุณมันไม่ปลอดภัยใช่มั้ย
David Richerby

-2

ฉันคิดว่าเราสามารถทำได้โดยใช้การดำเนินการที่ชาญฉลาดบิตขั้นพื้นฐานหรืออาจปรับแต่งมันสำหรับงานกระดาษและดินสอ หากจำนวนของอลิซสำหรับ ex: 663 มากกว่าที่เธอสามารถแปลงจำนวนโดยใช้วิธีการนี้ แปลงแต่ละหลักให้เป็นเลขฐานสองที่เทียบเท่ากันบอกว่านี่คือ A 663-> 110 110 011 มากกว่ากลับบิตที่สอดคล้องกันสำหรับแต่ละหมายเลขแต่ละคนบอกว่าเป็น B-> 011 011 110 ตอนนี้ทำ A และ B-> 010 010 010 ตอนนี้ส่งหมายเลขนี้ bob และขอให้ทำแบบเดียวกันหากผลลัพธ์มาเหมือนกันขอให้เขาตอบว่าใช่มิฉะนั้นในกรณีนี้จะไม่สามารถถอดรหัสตัวเลขได้และมีโอกาสต่ำมากที่จะมีตัวเลขต่างกันที่ลงท้ายด้วยการเป็นตัวแทนเดียวกันนี้ วิธีเดียวที่จะเดาได้ก็คือการเขียนชุดค่าผสมที่เป็นไปได้ทั้งหมดแล้วลองใช้ทั้งหมด แต่เพื่อรองรับว่าเราสามารถทำให้ซับซ้อนมากขึ้นโดยใช้กะซ้ายหรือขวาและเพิ่มบิตจำลอง


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

-3

กรุณาโทรหาฉัน (ชื่อของฉันคือ 1001001) หากคุณไม่สามารถติดต่อฉันได้โปรดเขียนหมายเลขโทรศัพท์ที่คุณมีและขอให้อีฟส่งคืนฉัน

คำอธิบาย: ถ้าบ๊อบได้หมายเลข # ที่ถูกต้องของฉันเขาสามารถติดต่อฉันได้ฉันก็รู้ว่ามันถูกต้อง #; ถ้า Bob ไม่ได้รับสิทธิ์ #, Eve ไม่สามารถอ่านหมายเลขโทรศัพท์ของฉัน (ถูกต้อง) ได้เช่นกัน ด้วยวิธีนี้ฉันได้ตรวจสอบว่า Bob มีหมายเลขโทรศัพท์ที่ถูกต้องหรือไม่


to everlasto: Eve สามารถติดต่อ Bob เพื่อที่เธอจะได้หมายเลข # ของเขามากที่สุด ดังนั้นหากคุณถามว่า "เฮ้บ๊อบหมายเลขของฉันอยู่ถัดจากหมายเลขของคุณโปรดยืนยัน" อีฟจะรู้จักคุณ #
Pobol Wong

1
คำถามนี้บอกอย่างชัดเจนว่าคุณไม่สามารถส่งการ์ด Bob ว่า "โทรหาฉัน" ได้ และบ๊อบเขียนหมายเลขที่ไม่ถูกต้องบนการ์ดถ้าเขาไม่สามารถผ่านเข้าไปได้ก็ไม่ได้เพิ่มอะไรเลย
David Richerby

ฉันเขียนโปรแกรมเข้ารหัส / ถอดรหัส LZW มาก่อน ฉันอาจขอให้ Bob ใช้มันเพื่อส่งหมายเลขโทรศัพท์ที่เข้ารหัสของฉันและสามารถใช้เพื่อเข้ารหัสส่วนที่ถูกต้องของหมายเลขโทรศัพท์ของฉันให้เขาได้
Pobol Wong

ถึง David Richerby: คำถามเพียงกล่าวถึง "คุณไม่สามารถถามเขาโดยตรง" ซึ่งหมายความว่าฉัน 100,1001 ไม่สามารถถามบ๊อบโดยตรง แต่ควรจะสามารถขอให้เขาโทรหาฉันด้วยโทรศัพท์ # เขาได้รับ
Pobol Wong

อ่านคำถามให้ละเอียดยิ่งขึ้น "หมายเหตุ 2" ในคำถามปฏิเสธวิธีแก้ปัญหาในการส่งโน้ตขอให้ Bob โทรหาคุณเพราะไม่ได้ใช้วิทยาศาสตร์คอมพิวเตอร์ใด ๆ
David Richerby
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.