Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Наложение гаммы 14.06.02 10:19
Автор: iddqd <Юрий> Статус: Member
|
Товарищи, подскажите, где уязвимость в наложении гаммы?
Например, таким образом:
генерится последовательность
blok[n+1]=md5(blok[n]+password)
blok[0]=0
и накладывается по xor на сообщение.
|
|
Наложение гаммы 14.06.02 11:27
Автор: igori Статус: Незарегистрированный пользователь
|
> blok[n+1]=md5(blok[n]+password) > blok[0]=0 > и накладывается по xor на сообщение.
Как минимум - для одного пароля гамма каждый раз будет одинаковая.
Отсюда: если поxorить два сообщения с одним паролем, то получиться xor от двух сообщений без всякой гаммы. А если одно из сообщений более-менее известно - то и все остальные, считай, известны.
Для этого надо пользовать случайное число - "синхропосылку" в терминах ГОСТ или "вектор инициализации", IV, "salt" и пр.
Делаешь
IV = rnd(бит этак 64-128)
blok[0] = IV
block[n+1] = f(block[n])
к сообщению приписываешь IV (он несекретен).
Естествено, xorить начинаешь не с block[0] - он известен.
igori
|
| |
Наложение гаммы 15.06.02 10:14
Автор: iddqd <Юрий> Статус: Member
|
> > blok[n+1]=md5(blok[n]+password) > > blok[0]=0 > > и накладывается по xor на сообщение. > > Как минимум - для одного пароля гамма каждый раз будет > одинаковая. > Отсюда: если поxorить два сообщения с одним паролем, то > получиться xor от двух сообщений без всякой гаммы. А если > одно из сообщений более-менее известно - то и все > остальные, считай, известны. > Для этого надо пользовать случайное число - "синхропосылку" > в терминах ГОСТ или "вектор инициализации", IV, "salt" и > пр. > Делаешь > IV = rnd(бит этак 64-128) > blok[0] = IV > block[n+1] = f(block[n]) > к сообщению приписываешь IV (он несекретен). > Естествено, xorить начинаешь не с block[0] - он известен. > > igori
Т.е., грубо говоря, мне нужно сделать так: block[0]=md5(salt+pass), где salt известен и представляет собой случайное число.
|
| | |
Наложение гаммы 17.06.02 15:54
Автор: igori Статус: Незарегистрированный пользователь
|
> > > blok[n+1]=md5(blok[n]+password) > > Т.е., грубо говоря, мне нужно сделать так: > block[0]=md5(salt+pass), где salt известен и представляет > собой случайное число.
Угу. И этот salt должен заново генерироваться для каждой операции зашифрования. Причем его качество как "случайного" не очень важно - хоть счетчик бери. Важна неповторяемость. Опасно именно неоднократное использование одного salt.
igori
|
| | | |
Наложение гаммы 17.06.02 16:53
Автор: iddqd <Юрий> Статус: Member
|
Большое спасибо за помощь!
З.Ы. Об имитостойтости, я так понимаю, не может быть и речи.
|
|
|