Рейтинг:1

Как безопасно установить постоянные значения внутри искаженных цепей?

флаг tr

Предположим, что есть некоторые постоянные значения, которые должны быть установлены внутри схемы. Наивный способ — просто передать необходимые константы в качестве входных данных схемы. Но это кажется расточительным.

Каков правильный способ установки (т.е. жесткого кодирования) постоянных значений в искаженных схемах?

Рейтинг:0
флаг us

Я предполагаю, что эти жестко закодированные константы общедоступны (известны как сборщику искажений, так и оценщику). Есть несколько вариантов:

  1. Рассматривайте константы как дополнительные входы в схему, как вы предлагаете. Обратите внимание, что входные провода можно повторно использовать для многих ворот, поэтому вам нужен только один истинный и ЛОЖЬ провода для всей цепи.Поддерживает большинство схем искажения нет ворота бесплатно, так что на самом деле вам нужна только постоянная истинный провод. Кроме того, оказывается, что всегда можно взять истинный метка провода должна быть строкой, состоящей из всех нулей, без ограничения общности. Объединяя все эти наблюдения, дополнительные постоянные входные провода не увеличивают стоимость схемы.

  2. Распространение констант по схеме. Например, ворота у = И (х, правда) становится просто у=х, что означает, что вы можете заменить у провод по Икс в любых нисходящих воротах, которые используют у в качестве входа. Ворота у = И (х, ложь) становится у = ложь, и вы снова можете распространять у = ложь вниз по течению в воротах, которые используют у в качестве входа. Сделав это, вы увидите, что многие гейты после жестко запрограммированной константы можно просто полностью удалить из схемы. Этот процесс не имеет ничего общего с искажением, а просто упрощает логическую схему на основе жестко запрограммированных входных данных.

Если константы известны только тому, кто искажает, то цель состоит в том, чтобы упростить схему/искажение, скрывая эти константы.

Большинство схем искажения (и, безусловно, самые современные) поддерживают вентили, которые поглощают свободные нет ворота, что означает, что вы можете исказить и (не (х), у), и (х, не (у)), ... ворота по той же цене, что и искажение и ворота. На самом деле, эти мошеннические схемы скрывают существование этих нет ворота. Используя это наблюдение, вы все еще можете сделать № 1 сверху. Если вам нужно жестко кодировать ворота у = и (х, ложь) тогда вы можете кормить свой сингл истинный входной провод в вентиль вида у = и (х, НЕ (истина)) скрывая присутствие этого нет (т. е. сокрытие того, были ли ворота жестко запрограммированы с помощью истинный или же ЛОЖЬ).

Тем не менее, вы можете сделать немного лучше, используя «полуворота искажения» из конструкции полуворот. Это позволяет вам исказить и (х, правда) или же и (х, ложь) калитку, при этом спрятав какой из них перекошенный, за половину стоимости полноценного и-ворота.

walter7x avatar
флаг tr
Спасибо @Mikero, в моем случае я использую BHKR13 (AES с фиксированным ключом) + FreeXOR + GRR3. Константы общедоступны. Вариант 1 (ввод одного истинного провода и одного ложного провода) является наиболее привлекательным, однако я беспокоюсь, что если, например. два нулевых бита константы должны быть объединены XOR друг с другом внутри схемы, это означает XOR одного и того же провода с самим собой, что приведет к метке0 = 0 и метке1 = дельта цепи. Должен ли я убедиться, что схема устроена так, что метка1 не станет выходной меткой схемы? Или я полностью пропустил вашу мысль?
флаг us
Это правда, что вентиль `y xor y` дает false, включая случай, когда y жестко закодирован. Со свободным xor выходные провода этого вентиля действительно равны 0 и $\Delta$. Поскольку этот вентиль не может выдать output=true, обычная безопасность говорит вам, что оценщик не может узнать истинную метку провода $\Delta$. Если подумать, оценщик сам по себе выполняет операцию xor по метке проводника, что он мог бы сделать, даже если в схеме нет такого вентиля xor. мог разорвать любую цепь, просто представив себе такие ворота.
walter7x avatar
флаг tr
Итак, можно ли вместо того, чтобы давать схеме один истинный и один ложный входы, 1) взять любой непостоянный входной провод, 2) выполнить операцию xor с самим собой, чтобы получить провод x = false, 3) установить провод y = NOT (x) = true, 4) использовать провода x и y для установки каких-либо постоянных значений?
флаг us
Да, это тоже будет работать и будет эквивалентным способом интерпретации подхода «пусть константа `false` имеет метку провода, состоящую из нулей».

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.