Предположим, что $р$ и $q$ разные простые числа (если $q$ делит $р$, например, проблема тривиальна). Преобразование модуля обычно не является простой задачей в контексте обмена секретами.Наиболее распространенный вариант использования этого типа примитивов, например, $b\in\{0,1\}$ который является секретным по большому простому $р$ как $b = а+b\bmod p$, и превращая его в бинарные аддитивные акции $b = а'+b'\bmod 2$ (что в итоге $b = а'\oплюс b'$. Это имеет много применений, например, когда вы хотите иметь дело с неарифметическими операциями в безопасных многосторонних вычислениях (например, безопасные сравнения, усечения, математические функции и т. д.).
Большинство подходов к задаче безопасного преобразования следуют этому методу. Обозначим $[x]_p$ когда значение $х$ является секретным по модулю $р$. Наша цель - получить $[х\bmod q]_q$. Предположим, что у сторон уже есть акции со случайным значением $г$, неизвестный ни одной из сторон, используя оба модуля $р$ и $q$. Другими словами, предположим, что стороны $[r]_p$ и $[r]_q$. Далее стороны могут действовать следующим образом:
- Вычислить локально доли $x-r$ по модулю $р$ локально вычитая их доли $х$ со своими акциями $г$.
- Отправить свои акции $x-r$ друг к другу, чтобы каждая сторона узнала $x-r$. Это держит $х$ скрыт, потому что он маскируется $г$, который является равномерно случайным и неизвестным ни одной из сторон.
- Одна из сторон добавляет $(х-r\bmod q)$ к его/ее доле $г$ по модулю $q$, что приводит к $[r]_q + (x-r) = [x\bmod q]_q$.
Это предполагает, что стороны имеют доступ к паре $([r]_p, [r]_q)$, но во многих случаях это не так просто получить. Например, если $д=2$, некоторые приемы, которые могут оказаться полезными, можно найти здесь. Все становится еще сложнее, когда в дело вступает активная безопасность.