Введение

В криптографии слепота — это техника, с помощью которой агент может предоставлять услугу (т. е. вычислять функцию) клиенту в закодированной форме, не зная ни реального входного значения, ни реального выходного значения. Методы слепоты также применяются для предотвращения атак по сторонним каналам на устройства шифрования. В частности, Алиса имеет входные данные x, а Оскар — функцию f. Алиса хотела бы, чтобы Оскар вычислил для неё y = f(x), не раскрывая ни x, ни y. Причина, по которой она этого хочет, может заключаться в том, что она не знает функцию f или у неё нет ресурсов для её вычисления. Алиса "ослепляет" сообщение, кодируя его в другой вход E(x); кодирование E должно быть биекцией на входном пространстве f, в идеале — случайной перестановкой. Оскар предоставляет ей f(E(x)), к которому она применяет декодирование D, чтобы получить y = D(f(E(x))). Не все функции допускают вычисления вслепую. В других случаях слепоту необходимо применять с осторожностью. Примером является схема подписей Рабина — Уильямса. Если слепота применяется к отформатированному сообщению, но случайное значение не удовлетворяет требованиям Якоби для p и q, это может привести к восстановлению секретного ключа. Демонстрация восстановления была представлена Евгением Сидоровым. Распространённое применение слепоты — слепые подписи. В протоколе слепой подписи подписывающий может цифровым способом подписать сообщение, не узнавая его содержания. Одноразовый блокнот (OTP) по своей природе является применением слепоты к задаче безопасной связи. Алиса хочет тайно отправить сообщение Бобу, однако всё их общение может быть прочитано Оскаром. Поэтому Алиса отправляет сообщение, предварительно "ослепив" его секретным ключом или OTP, которым она делится с Бобом. Боб отменяет слепоту после получения сообщения. В этом примере функция f является тождественной, а E и D обычно представляют собой операцию XOR. Слепота также может использоваться для предотвращения некоторых атак по сторонним каналам на асимметричные схемы шифрования. Атаки по сторонним каналам позволяют злоумышленнику восстановить информацию о входных данных криптографической операции, измеряя что-то, отличное от результата алгоритма, например, энергопотребление, время вычисления или радиочастотное излучение устройства. Как правило, такие атаки зависят от того, что злоумышленник знает характеристики алгоритма, а также (некоторые) входные данные. В этом случае слепота служит для изменения входных данных алгоритма на непредсказуемое состояние. В зависимости от характеристик функции слепоты это может предотвратить утечку полезной информации. Важно отметить, что безопасность также зависит от устойчивости самих функций слепоты к атакам по сторонним каналам. Например, в RSA слепота включает вычисление E(x) = (xr)^e mod N, где r — случайное целое число между 1 и N, взаимно простое с N (т. е. gcd(r, N) = 1), x — открытый текст, e — публичная степень RSA, а N — модуль RSA. Далее применяется функция дешифрования f(z) = z^d mod N, что даёт f(E(x)) = (xr)^(ed) mod N = xr mod N. Наконец, выполняется отмена слепоты с помощью функции D(z) = z * r^(-1) mod N. Умножение xr mod N на r^(-1) mod N даёт x, как и требуется. При дешифровании таким образом противник, способный измерять время, затраченное на эту операцию, не сможет использовать эту информацию (поскольку RSA уязвим к атакам по времени), так как он не знает константу r и, следовательно, не имеет представления о реальных входных данных, подаваемых в примитивы RSA.

Примеры

Ослепление в GPG 1.x