Ослепление (криптография)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

В криптографии ослепление — это метод, с помощью которого агент может предоставлять услугу клиенту (т.е. обрабатывать данные) в закодированной форме, не зная ни реального входа, ни реального выхода. Методы ослепления также применяются для предотвращения атак по побочным каналам на устройства шифрования.

Например, Алиса владеет некоторыми секретными данными x, а Боб — функцией f для их обработки. При этом Алиса может не знать функцию f либо не иметь ресурсов для её вычисления. Поэтому она хочет, чтобы Боб вычислил для неё y = f(x), таким образом, чтобы не раскрывать ему значений x и y.

Для этого Алиса "ослепляет" сообщение, превращая его в какие-то другие данные E(x). Отображение E должно быть биекцией на множестве определения f, в идеале — некоторой случайной перестановкой. Боб вычисляет для Алисы значение f(E(x)), к которому она применяет обратное преобразование D, чтобы получить D(f(E(x))) = y.

Ослепление необходимо применять с осторожностью, так как не все функции допускают слепые вычисления. Примером этого являются подписи Рабина-Уильямса. Если случайное значение, применяемое при ослеплении, не удовлетворяет условиям Якоби на p и q, это может привести к раскрытию приватного ключа.[1]

Распространённым применением ослепления являются слепые подписи, при которых агент, подписывающий сообщение электронной подписью, не знает его содержания.

Ослепление также может использоваться для предотвращения некоторых атак по побочным каналам на схемы асимметричного шифрования. Атаки по побочным каналам позволяют злоумышленнику восстановить информацию о входных данных криптографической операции, измеряя что-то иное, чем результат работы алгоритма, например, энергопотребление, время вычислений или радиочастотное излучение устройства. Обычно эти атаки зависят от того, что злоумышленник знает характеристики алгоритма, а также некоторые входные данные. В этом случае ослепление служит для перевода входных данных алгоритма в какое-то непредсказуемое состояние. В зависимости от характеристик функции сокрытия это может предотвратить частично или полностью утечку полезной информации. Необходимо учитывать, что безопасность этого метода зависит также от устойчивости самих функций ослепления к атакам по побочным каналам.

Например, в RSA ослепление включает в себя вычисление операции ослепления E(x) = (xr)e mod N, где r — случайное целое число от 1 до N, взаимно простое с N, x — открытый текст, e — открытая экспонента алгоритма RSA, N — модуль RSA. Применение функции дешифровки f(z) = zd mod N даёт f(E(x)) = (xr)ed mod N = xr mod N. Далее результат раскрывается с помощью функции D(z) = zr−1 mod N. Умножение xr mod N на r−1 mod N даёт x, что и требуется. При расшифровке таким способом злоумышленник, способный измерить время, затраченное на эту операцию, не сможет использовать эту информацию (путем применения тайминговых атак, к которым уязвим RSA), поскольку он не знает константу r и, следовательно, реальных входных данных алгоритма.

См. также[править | править код]

Примечания[править | править код]

  1. CVE - CVE-2015-2141. cve.mitre.org. Дата обращения: 11 марта 2024.

Литература[править | править код]