Атака на режим CBC при фиксированном IV
Подскажите, пожалуйста, какую атаку можно построить для такой задачи. Есть строка (ее длина не более 5). Строка дополняется до 16 байт нулями, а потом шифруется при помощи CBC. В качестве IV используется текущее время. После шифрования мы можем получить строку: IV+ciphertext. Также есть доступ к оракулу, который шифрует на том же ключе произвольные сообщения. Необходимо расшифровать детерминированно данную строку.
Ответы (2 шт):
По сути речь идет об атаке на 1 блок шифротекста, который путем нехитрых манипуляций превращается в 1 блок (фактически атака на ECB)
Схема атаки шифротекста:
Json -> Base64Base64 -> CBC_Byte[16]CBC_Byte[] xor IV[16] -> ECB_Byte[16]
Далее остается только brute force со словарем [0..9], длиной 5, на полученный массив байтов. Количество переборов 10^5 = сто тысяч вариантов. Максимум несколько минут (с учетом сетевых Rest запросов).
На сколько я понимаю условие:
- У нас есть блок шифротекста C0 и вектор инициализации IV0 , который использовался при его шифровании в режиме CBC. И нам известно, что открытый текст P0 для C0 состоит из 1—5 ASCII-цифр, дополненных нулями.
- Также у нас есть оракул, который для произвольного открытого текста Pn возвращает IVn.Cn — сообщение, зашифрованное тем же алгоритмом и тем же ключём что и исходный текст. При этом IVn — это текущее время в секундах, значение, которое мы с высокой долей вероятности можем предугадать.
Идея атаки:
т.к. при режиме CBC схема шифрования первого блока выглядит как:
- Сn = E(IVn⊕Pn)
то можно в качестве Pn использовать:
- Pn = IVn⊕Pt⊕IV0
где Pt — это искомый открытый текст, тогда
- Сn = E(IVn⊕IVn⊕Pt⊕IV0) = E(IV0⊕Pt)
И в случае если Сn = С0, Pt и будет искомым P0.
Т.к. вероятных Pt относительно немного (111 110, с учётом более коротких строк) то можно организовать их полный перебор. Очередной IVn для формирования Pn можно предугадать с высокой долей вероятности, запросив текущее время. Само собой, проверять, действительно ли текст был зашифрован с предсказанным вектором инициализации нужно для каждого значения.