Computationally bounded adversary
In information theory, the computationally bounded adversary problem is a different way of looking at the problem of sending data over a noisy channel. In previous models the best that could be done was ensuring correct decoding for up to d/2 errors, where d was the Hamming distance of the code. The problem with doing it this way is that it does not take into consideration the actual amount of computing power available to the adversary. Rather, it only concerns itself with how many bits of a given code word can change and still have the message decode properly. In the computationally bounded adversary model the channel – the adversary – is restricted to only being able to perform a reasonable amount of computation to decide which bits of the code word need to change. In other words, this model does not need to consider how many errors can possibly be handled, but only how many errors could possibly be introduced given a reasonable amount of computing power on the part of the adversary. Once the channel has been given this restriction it becomes possible to construct codes that are both faster to encode and decode compared to previous methods that can also handle a large number of errors.
Comparison to other models
Worst-case model
At first glance, the worst-case model seems intuitively ideal. The guarantee that an algorithm will succeed no matter what is, of course, highly alluring. However, it demands too much. A real-life adversary cannot spend an indefinite amount of time examining a message in order to find the one error pattern which an algorithm would struggle with.
As a comparison, consider the Quicksort algorithm. In the worst-case scenario, Quicksort makes O(n2) comparisons; however, such an occurrence is rare. Quicksort almost invariably makes O(n log n) comparisons instead, and even outperforms other algorithms which can guarantee O(n log n) behavior. Let us suppose an adversary wishes to force the Quicksort algorithm to make O(n2) comparisons. Then he would have to search all of the n! permutations of the input string and test the algorithm on each until he found the one for which the algorithm runs significantly slower. But since this would take O(n!) time, it is clearly infeasible for an adversary to do this. Similarly, it is unreasonable to assume an adversary for an encoding and decoding system would be able to test every single error pattern in order to find the most effective one.
Stochastic noise model
แบบจำลองสัญญาณรบกวนแบบสุ่มสามารถอธิบายได้ว่าเป็นแบบจำลองสัญญาณรบกวนแบบ "โง่" กล่าวคือ มันไม่มีความสามารถในการปรับตัวเพื่อรับมือกับภัยคุกคามแบบ "อัจฉริยะ" แม้ว่าผู้โจมตีจะมีขอบเขตจำกัด แต่ก็ยังเป็นไปได้ที่พวกเขาอาจจะสามารถเอาชนะแบบจำลองแบบสุ่มได้ด้วยความชาญฉลาดเพียงเล็กน้อย แบบจำลองแบบสุ่มไม่มีวิธีที่แท้จริงในการต่อสู้กับการโจมตีประเภทนี้ และด้วยเหตุนี้จึงไม่เหมาะสมที่จะรับมือกับภัยคุกคามแบบ "อัจฉริยะ" ซึ่งควรจะมีระบบป้องกันไว้
ดังนั้น จึงมีการเสนอแบบจำลองการต่อต้านที่มีขอบเขตการคำนวณเป็นทางออกประนีประนอมระหว่างทั้งสอง[ 1 ]ซึ่งบังคับให้ต้องพิจารณาว่าข้อความอาจถูกบิดเบือนโดยเจตนา หรือแม้แต่โดยมุ่งร้าย แต่ไม่ต้องบังคับให้นักออกแบบอัลกอริทึมต้องกังวลเกี่ยวกับกรณีหายากซึ่งมีโอกาสน้อยมากที่จะเกิดขึ้น
แอปพลิเคชัน
การเปรียบเทียบกับช่องสัญญาณรบกวนแบบสุ่ม
เนื่องจากศัตรูที่มีข้อจำกัดในการคำนวณใดๆ สามารถโยนเหรียญสำหรับแต่ละบิตได้ในเวลา O( n ) จึงเป็นที่เข้าใจได้ง่ายว่าระบบการเข้ารหัสและการถอดรหัสใดๆ ที่สามารถทำงานต่อต้านศัตรูนี้ได้จะต้องทำงานในแบบจำลองสัญญาณรบกวนแบบสุ่มด้วยเช่นกัน ในทางกลับกันนั้นซับซ้อนกว่า อย่างไรก็ตาม สามารถแสดงได้ว่าระบบใดๆ ที่ทำงานในแบบจำลองสัญญาณรบกวนแบบสุ่มสามารถเข้ารหัสและถอดรหัสได้อย่างมีประสิทธิภาพต่อต้านศัตรูที่มีข้อจำกัดในการคำนวณ และมีค่าใช้จ่ายเพิ่มเติมเพียงเล็กน้อยซึ่งเป็นพหุนามในnเท่านั้น[ 1 ]วิธีการต่อไปนี้ในการดำเนินการนี้ได้รับการออกแบบโดย Dick Lipton และนำมาจาก: [ 1 ]

อนุญาตทำหน้าที่เป็นตัวเข้ารหัสสำหรับแบบจำลองสัญญาณรบกวนแบบสุ่ม และให้มีตัวถอดรหัสแบบง่ายๆ สำหรับข้อมูลเดียวกัน โดยแต่ละตัวทำงานในเวลาพหุนาม นอกจากนี้ ให้ทั้งผู้ส่งและผู้รับใช้ฟังก์ชันการเรียงสับเปลี่ยนแบบสุ่ม ร่วมกันและรูปแบบสุ่ม.
สำหรับการเข้ารหัส: 1. ให้.
2. ให้.
3. ส่งสัญญาณ
จากนั้นสำหรับการถอดรหัส: 1. รับข้อมูลคำนวณ.
2. คำนวณ.
เช่นเดียวกับการเปรียบเทียบ Quicksort ข้างต้น หากช่องทางนั้นต้องการทำอะไรที่ชาญฉลาด มันจะต้องทดสอบการเรียงสับเปลี่ยนทั้งหมดก่อน อย่างไรก็ตาม นี่เป็นสิ่งที่ไม่สามารถทำได้สำหรับผู้โจมตีที่มีข้อจำกัดด้านการคำนวณ ดังนั้นสิ่งที่พวกเขาสามารถทำได้มากที่สุดคือการสร้างรูปแบบข้อผิดพลาดแบบสุ่มแต่แล้ว:
เนื่องจากตามคำจำกัดความ
- , ที่ไหน
เนื่องจากการเรียงสับเปลี่ยนใดๆ ก็ตามเป็นเชิงเส้นเมื่อเทียบกับการดำเนินการ XOR
ตามคำจำกัดความของข้างบน.
เนื่องจากเป็นการสุ่มเป็นเพียงสัญญาณรบกวนแบบสุ่ม และเราสามารถใช้ตัวถอดรหัสแบบง่ายเพื่อถอดรหัสข้อความที่ได้รับและส่งกลับได้.
การใช้งานเฉพาะด้าน
โดยการสมมติว่าฝ่ายตรงข้ามมีขีดจำกัดในการคำนวณ เป็นไปได้ที่จะออกแบบรหัสที่ถอดรหัสได้ในระดับท้องถิ่นซึ่งมีประสิทธิภาพและใกล้เคียงกับค่าที่เหมาะสมที่สุด โดยมีความน่าจะเป็นของข้อผิดพลาดที่น้อยมาก รหัสเหล่านี้ใช้ในทฤษฎีความซับซ้อนสำหรับสิ่งต่างๆ เช่น การคำนวณที่แก้ไขตัวเอง ระบบ พิสูจน์ที่ตรวจสอบได้ด้วยความน่าจะเป็นและการลดความยากจากกรณีที่เลวร้ายที่สุดไปสู่กรณีเฉลี่ยในการสร้างตัวสร้างเลขสุ่มเทียม พวกมันมีประโยชน์ในด้านการเข้ารหัสลับอันเนื่องมาจากการเชื่อมโยงกับ โปรโตคอล การดึงข้อมูลส่วนตัวพวกมันยังอยู่ในแอปพลิเคชันฐานข้อมูลจำนวนมาก เช่นการจัดเก็บข้อมูลที่ทนต่อข้อผิดพลาด[ 2 ]
นอกจากนี้ ยังสามารถสร้างรหัสที่เหนือกว่าขีดจำกัดที่ทราบกันดีสำหรับรหัสกรณีเลวร้ายที่สุดได้ โดยเฉพาะอย่างยิ่ง การถอดรหัสที่ไม่ซ้ำกันด้วยอัตราข้อผิดพลาด[ 3 ] สามารถทำได้โดยการต่อลายเซ็นดิจิทัลที่มีการประทับเวลาเข้ากับข้อความ ช่องสัญญาณที่มีขอบเขตการคำนวณจำกัดไม่สามารถปลอมลายเซ็นได้ และในขณะที่อาจมีลายเซ็นที่ถูกต้องในอดีต ผู้รับสามารถใช้การถอดรหัสรายการและเลือกข้อความได้ก็ต่อเมื่อลายเซ็นมีการประทับเวลาที่ถูกต้องเท่านั้น