Score:1

จะตั้งค่าคงที่อย่างปลอดภัยภายในวงจรที่อ่านไม่ออกได้อย่างไร?

ธง tr

สมมติว่ามีค่าคงที่ที่ต้องตั้งค่าภายในวงจร วิธีที่ไร้เดียงสาคือการส่งค่าคงที่ที่จำเป็นเป็นอินพุตไปยังวงจร แต่ดูเหมือนว่าจะสิ้นเปลือง

อะไรคือวิธีที่เหมาะสมในการตั้งค่า (เช่น ฮาร์ดโค้ด) ค่าคงที่ในวงจรที่อ่านไม่ออก?

Score:0
ธง us

ฉันจะถือว่าค่าคงที่ฮาร์ดโค้ดเหล่านี้เป็นสาธารณะ มีตัวเลือกไม่กี่:

  1. ปฏิบัติต่อค่าคงที่เป็นอินพุตพิเศษให้กับวงจรตามที่คุณแนะนำ โปรดทราบว่าสายอินพุตสามารถใช้ซ้ำได้กับประตูหลายบาน ดังนั้นคุณจึงต้องการเพียงสายเดียว จริง และ เท็จ ลวดสำหรับวงจรทั้งหมดส่วนใหญ่สนับสนุนแผนการอ่านไม่ออก ไม่ ประตูฟรี ดังนั้นคุณต้องการค่าคงที่เท่านั้น จริง ลวด. นอกจากนี้ยังปรากฎว่าคุณสามารถใช้ จริง ป้ายลวดเป็นสตริงของเลขศูนย์ทั้งหมดโดยไม่สูญเสียความหมายทั่วไป เมื่อรวมข้อสังเกตทั้งหมดเหล่านี้เข้าด้วยกัน สายอินพุตคงที่พิเศษจะเพิ่มต้นทุนให้กับวงจร

  2. เผยแพร่ค่าคงที่ผ่านวงจร ตัวอย่างเช่นประตู y=AND(x,จริง) กลายเป็นเพียง y=xหมายความว่าคุณสามารถแทนที่ สายโดย x ในประตูท้ายน้ำใด ๆ ที่ใช้ เป็นอินพุต ประตู y=AND(x,เท็จ) กลายเป็น y=เท็จและคุณสามารถเผยแพร่ได้อีกครั้ง y=เท็จ ล่องในประตูที่ใช้ เป็นอินพุต เมื่อทำสิ่งนี้ คุณจะเห็นว่าเกตดาวน์สตรีมของค่าคงที่ฮาร์ดโค้ดสามารถถูกลบออกจากวงจรได้ทั้งหมด กระบวนการนี้ไม่เกี่ยวกับการอ่านไม่ออก แต่เป็นเพียงการลดความซับซ้อนของวงจรบูลีนตามอินพุตแบบฮาร์ดโค้ด

หากเฉพาะผู้ที่อ่านไม่ออกเท่านั้นที่รู้ค่าคงที่ เป้าหมายคือลดความซับซ้อนของวงจร/การอ่านไม่ออกในขณะที่ซ่อนค่าคงที่เหล่านั้น

แผนการที่อ่านไม่ออกส่วนใหญ่ (และแน่นอนว่าเป็นผู้นำของศิลปะ) สนับสนุนประตูที่ดูดซับได้ฟรี ไม่ ประตู หมายความว่าคุณสามารถอ่านไม่ออก และ(ไม่ใช่(x),y), และ(x,ไม่ใช่(y)), ... ประตูสำหรับค่าใช้จ่ายเช่นเดียวกับการอ่านไม่ออก และ ประตู. ในความเป็นจริงแผนการที่อ่านไม่ออกเหล่านี้ซ่อนการมีอยู่ของสิ่งเหล่านี้ ไม่ ประตู จากการสังเกตนี้ คุณยังสามารถทำ #1 จากด้านบนได้ หากคุณต้องการฮาร์ดโค้ดประตู y=และ(x,เท็จ) จากนั้นคุณสามารถเลี้ยงเดี่ยวของคุณ จริง ป้อนลวดเข้าประตูของแบบฟอร์ม y=และ(x,ไม่(จริง)) ในขณะที่ซ่อนการปรากฏตัวของสิ่งนั้น ไม่ (เช่น การซ่อนว่าเกตเข้ารหัสตายตัวด้วย a จริง หรือ เท็จ).

อย่างไรก็ตาม คุณสามารถทำได้ดีขึ้นเล็กน้อยโดยใช้ "ประตูกั้นกึ่งกลาง" จากโครงสร้างครึ่งประตู สิ่งนี้ช่วยให้คุณอ่านไม่ออก และ(x,จริง) หรือ และ (x,เท็จ) ประตูในขณะที่ซ่อนอันที่อ่านไม่ออกในราคาครึ่งหนึ่งของราคาเต็ม และ-ประตู.

walter7x avatar
tr flag
ขอบคุณ @Mikero ในกรณีของฉันฉันใช้ BHKR13 (AES คีย์คงที่) + FreeXOR + GRR3 ค่าคงที่เป็นสาธารณะ ตัวเลือก 1 (ป้อนสายจริงหนึ่งเส้นและสายปลอมหนึ่งเส้น) เป็นตัวเลือกที่น่าสนใจที่สุด แต่ฉันกังวลว่าถ้าเช่น ค่าคงที่ 0 บิตสองบิตจำเป็นต้อง XORed เข้าด้วยกันภายในวงจร ซึ่งหมายถึง XORing สายเดียวกันกับตัวมันเอง ซึ่งจะส่งผลให้ label0 = 0 และ label1 = delta ของวงจร ฉันต้องแน่ใจหรือไม่ว่าวงจรถูกจัดเรียงเพื่อให้ label1 ไม่เป็นเอาต์พุตเลเบลของวงจร หรือฉันพลาดความคิดของคุณไปทั้งหมด?
us flag
มันเป็นความจริงที่เกท 'y xor y' ให้ค่าเท็จ รวมถึงกรณีที่ y ถูกฮาร์ดโค้ดด้วย ด้วย free-xor สายเอาต์พุตของเกทนี้เป็น 0 และ $\Delta$ เนื่องจากเกตนี้เป็นไปไม่ได้ที่จะให้ output=true การรักษาความปลอดภัยตามปกติจึงบอกคุณว่าเป็นไปไม่ได้ที่ผู้ประเมินจะเรียนรู้ป้ายชื่อลวดจริง $\Delta$ เมื่อคุณลองคิดดู ผู้ประเมินก็เพียงแค่ xor'ing wire label ด้วยตัวเอง ซึ่งเธอสามารถทำได้แม้ว่าจะไม่มี xor gate ในวงจร -- ดังนั้นหาก gate ประเภทนี้รั่วไหล $\Delta$ ดังนั้นผู้ประเมิน สามารถทำลายวงจรใด ๆ เพียงแค่จินตนาการถึงประตูดังกล่าว
walter7x avatar
tr flag
ดังนั้นจะเป็นไปได้ไหมแทนที่จะให้อินพุตจริงและเท็จหนึ่งอินพุตแก่วงจรเพื่อ 1) ใช้สายอินพุตที่ไม่คงที่ 2) xor ด้วยตัวเองเพื่อรับสาย x = เท็จ 3) ตั้งค่าสาย y = ไม่ (x) =จริง 4) ใช้สาย x และ y เพื่อตั้งค่าคงที่ใด ๆ ?
us flag
ใช่ นั่นก็ใช้ได้เหมือนกัน และจะเป็นวิธีที่เทียบเท่าในการตีความแนวทาง "ปล่อยให้อินพุต `เท็จ` คงที่มีป้ายกำกับลวดเป็นศูนย์ทั้งหมด"

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา