Засліплення (криптографія)
Засліплення (англ. blinding) — це підхід згідно з яким агент може надати послугу (тобто, обчислити функцію для) клієнту в зашифрованій формі без знаття ані дійсних вхідних даних, ані вихідних. Техніка засліплення також застосовується для упередження атак стороннім каналом на шифрувальні пристрої.
Точніше, Аліса має вхідні дані x, а Оскар має функцію f. Аліса хотіла б щоб Оскар обчислив для неї y = f(x), при цьому не показуючи йому ні x, ні y. Причиною може бути те, що вона не знає функцію f або не має ресурсів для обчислення. Аліса «сліпить» повідомлення шифруючи його в якийсь інший вхід E(x); шифрування E повинно бути бієкцією на просторі входів f, найліпше випадковою переставкою. Оскар подає їй f(E(x)), до якої вона застосовує розшифрування D, щоб отримати D(f(E(x))) = y.
Звісно, не всі функції дозволяють сліпе обчислення.
Найзвичніше використання засліплення сліпий підпис. У протоколі сліпого підпису, підписувач підписує повідомлення цифровим підписом не знаючи його змісту.
Шифр Вернама — це застосування засліплення для убезпечення питання зв'язку. Аліса хотіла б переслати секретного листа Бобу, однак оскар може читати всі їхні комунікації. Отже Аліса відправляє листа після засліплення його за допомогою секретного ключа або Шифру Вернама. Боб скасовує засліплення після отримання листа. Тут функція f — тотожна і E, і D обидва зазвичай операція XOR.
Засліплення можна використати для уникнення певних атак сторонніх каналів на асиметричні алгоритми шифрування. Атаки сторонніх канілів дозволяють супротивнику отримати інформацію про дані на вході криптографічної операції, через вимірювання чогось окрім висліду роботи алгоритму, наприклад, споживання енергії, час роботи. Зазвичай таки атаки покладаються на знання нападником характеристик алгоритму, а також вхідних даних. В такому випадку, засліплення слугує для зміни вхідних даних в деякий непередбачуваний стан. Залежно від характеристик функції засліплення, вона може виключити деякі або й всі витоки корисної інформації. Зауважте, що безпечність також залежить від стійкості функції засліплення до атак стороннім каналом.
Наприклад, в RSA засліплення включає обчислення засліплюючої операції E(x) = x re mod N, де r — випадкове ціле в проміжку 1 і N, x — шифротекст, e — відкритий RSA експонент і N — RSA модуль. Як звично, функція дешифрування f(z) = zd mod N застосовується і дає f(E(x)) = xd redmod N = xd r mod N. Зрештою відновлення відбувається за допомогою функції D(z) = z/r mod N. Через те, що D(f(E(x))) = xd mod N, це насправді RSA розшифрування.