หลักการเบื้องหลังการใช้เกณฑ์ของบล็อกรหัสคืออะไร
แนวคิดคือเรานำทุกสถานะความลับของรหัส (ไม่ว่าจะเป็นตัวกุญแจเองหรือค่าสถานะภายใน) และแปลงเป็นการแสดง "เกณฑ์" โดยที่ค่าตรรกะของสถานะลับ $s$ ดำเนินการจริงโดย $t$ ค่าทางกายภาพที่แตกต่างกัน $s_0, s_1, \จุด, s_{t-1}$ในลักษณะที่เป็นความรู้ของ $t-1$ ของค่าทางกายภาพไม่ให้ข้อมูลเกี่ยวกับค่าตรรกะ $s$.
วิธีทั่วไปในการนำสิ่งนี้ไปใช้คือการใช้ xor-sharing; ถ้า $t=2$จากนั้นแต่ละสถานะทางตรรกะ $s$ แสดงโดย $s = s_0 \oบวก s_1$; ถ้า $s_0, s_1$ ได้ทั้ง 1 อย่างด้วยความน่าจะเป็น $0.5$จากนั้นการเรียนรู้เพียงหนึ่งในนั้นไม่ได้ให้ข้อมูลเกี่ยวกับ $s$.
คำถามที่ชัดเจนคือ "คุณดำเนินการกับการแสดงเกณฑ์เหล่านี้อย่างไร" การดำเนินการเชิงเส้น/เลียนแบบนั้นง่าย: หากต้องการลบล้าง คุณเพียงแค่พลิกส่วนประกอบทางกายภาพชิ้นใดชิ้นหนึ่ง ในการ xor คุณ xor ค่าสองค่าตามส่วนประกอบ: $(s_0, s_1) \oplus (t_0, t_1) = (s_0 \oplus t_0, s_1 \oบวก t_1$)
การดำเนินการแบบไม่เชิงเส้นนั้นซับซ้อนกว่าเล็กน้อย ในการดำเนินการ AND สิ่งที่เราทำได้คือเลือกค่าสุ่มใหม่ $r$และคำนวณ $(s_0, s_1) \land (t_0, t_1) = (s_0 \land t_0 \oplus (s_1 \land t_1 \oplus r), s_0 \land t_1 \oplus (s_1 \land t_0 \oplus r))$. สิ่งนี้ใช้ได้เพราะเรามีทฤษฎีบทของ DeMorgan: $(s_0 \oplus s_1) \land (t_0 \oplus t_1) = (s_0 \land t_0) \oplus (s_0 \land t_1) \land (s_1 \land t_0) \oplus (s_1 \land t_1)$ (ซึ่งสรุปเป็นค่าเกณฑ์ตามอำเภอใจ และเราทำการสุ่มใหม่ $r$ เพราะมิฉะนั้นค่าทางกายภาพจะไม่ถูกแจกจ่ายให้เท่ากันอีกต่อไป
ด้วยการดำเนินการ NOT, XOR และ AND คุณสามารถสร้างรหัสบล็อกใดๆ ก็ได้
สิ่งนี้จะป้องกันการโจมตีช่องทางด้านข้างได้อย่างไร
แนวคิดก็คือแม้ว่าผู้โจมตีจะได้รับข้อมูลบางอย่างเกี่ยวกับสถานะของ $t-1$ ค่าความลับพร้อมกันจากการโจมตีช่องทางด้านข้าง ซึ่งไม่ได้บอกอะไรเขาเลยเกี่ยวกับสิ่งที่เกิดขึ้นกับรหัส
ฉันถูกขอให้ใส่ข้อมูลอ้างอิง การอ้างอิงทั่วไปที่เก่าแก่ที่สุดที่ฉันรู้คือ สู่แนวทางที่เหมาะสมในการต่อต้านการโจมตีด้วย Power-Analysis โดย Chari และคณะ; โดยเฉพาะอย่างยิ่ง ดูหัวข้อ 3.3 "การเข้ารหัส"