Рейтинг:2

Пороговая реализация шифров

флаг za

Каков принцип пороговой реализации блочных шифров и как это защищает от атак по сторонним каналам?

kodlu avatar
флаг sa
Хороший вопрос Можете ли вы дать ссылку, которая обсуждает эту тему?
Evgeni Vaknin avatar
флаг za
посмотрите: «Пороговые реализации против атак и сбоев по побочным каналам», @ https://www.esat.kuleuven.be/cosic/publications/article-847.pdf
Рейтинг:3
флаг my

В чем принцип пороговой реализации блочных шифров

Идея состоит в том, что мы берем каждое секретное состояние шифра (будь то сам ключ или значение внутреннего состояния) и преобразуем его в «пороговое» представление, где логическое значение секретного состояния $s$ на самом деле реализуется $t$ различные физические значения $s_0, s_1, \dots, s_{t-1}$таким образом, что знание $t-1$ физических значений не дает никакой информации о логическом значении $s$.

Самый распространенный способ реализовать это — совместное использование xor; если $т=2$, то каждое логическое состояние $s$ представлен $s = s_0 \oplus s_1$; если $s_0, s_1$ может оба 1 с вероятностью $0.5$, то изучение только одного из них не дает информации о $s$.

Очевидный вопрос: «Как вы выполняете операции с этими пороговыми представлениями?». Линейные/аффинные операции просты: чтобы инвертировать, вы просто переворачиваете один из физических компонентов. Для xor вы выполняете xor двух значений по компонентам: $(s_0, s_1) \oplus (t_0, t_1) = (s_0 \oplus t_0, s_1 \oplus t_1$)

Нелинейные операции немного сложнее; чтобы выполнить операцию И, мы можем выбрать новое случайное значение $г$, и вычислить $(s_0, s_1) \land (t_0, t_1) = (s_0 \land t_0 \oplus (s_1 \land t_1 \oplus r), s_0 \land t_1 \oplus (s_1 \land t_0 \oplus r))$. Это работает, потому что у нас есть теорема ДеМоргана: $(s_0 \oplus s_1) \land (t_0 \oplus t_1) = (s_0 \land t_0) \oplus (s_0 \land t_1) \land (s_1 \land t_0) \oplus (s_1 \land t_1)$ (что обобщается на произвольные пороговые значения. И мы добавляем новую случайность $г$ потому что в противном случае физические значения больше не были бы равномерно распределены.

С помощью операций NOT, XOR и AND можно построить любой блочный шифр.

как это защищает от атак по сторонним каналам?

Идея состоит в том, что даже если злоумышленник может получить некоторую информацию о состоянии $t-1$ секретные значения одновременно от атаки по побочному каналу, что ничего не говорит ему о том, что происходит с самим шифром.


Меня попросили указать ссылку; самая ранняя общая ссылка, которую я знаю, это На пути к разумным подходам к противодействию атакам анализа мощности Чари и др.; в частности, см. раздел 3.3 "Кодирование"

Evgeni Vaknin avatar
флаг za
Спасибо! Должен признаться, я посеял некоторые ответы, но ни один из них не был тем кристально чистым
Evgeni Vaknin avatar
флаг za
Итак, поправьте меня, если я ошибаюсь, чтобы реализовать, скажем, AES S-BOX с пороговой логикой, я могу добавить маску на вход, а затем создать новый S-BOX, скажем, T-BOX, такой что T(x+s) = S(x), и генерировать новые s и новый T каждый раз, когда мне нужно вычислить S(x). Это правильно?
poncho avatar
флаг my
@EvgeniVaknin: это было бы дорого - каждый раз создавать новый SBox было бы дорого. Один из способов, который я видел, - реализовать пороговую реализацию $x^{254}$ (нелинейная часть sbox) на основе идентичности порогового умножения $(s_0 + s_1)\times(t_0 + t_1) = (s_0 \times t_0) + (s_0 \times t_1) + (s_1 \times t_0) + (s_1 \times t_1)$ (где $+, \times$ — операции $GF(256)$); все еще довольно дорого, но лучше, чем каждый раз перестраивать sbox...
poncho avatar
флаг my
@EvgeniVaknin: на самом деле, поскольку возведение в квадрат в $GF(256)$ является линейным, вы можете реализовать $x^{254}$ с 7 возведениями в квадрат (дешево) и 4 пороговыми умножениями...
kodlu avatar
флаг sa
Можете ли вы дать ссылку, чтобы поставить этот вопрос и ваш хороший ответ в контекст? Я тоже спросил у ОП.

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

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