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