Serpent IP Начальная перестановка

Рейтинг: 1Ответов: 1Опубликовано: 24.10.2014

Пожалуйста, подскажите правильно ли я понимаю таблицу начальной перестановки IP в шифровании Serpent. Т.к. она используется при получение раундовых ключей, а каждый ключ K0={w0,w1,w2,w3} w0 размер 32 байта, но таблица IP имеет 128 значений, значит, нужно склеить 4 ключа, чтобы получить 128-битный ключ. Далее каждый бит 128-битного ключа переходит на соответствующую ячейку. Например, K0={0xBBBBBBBB,0xBBBBBBBB,0xBBBBBBBB,0xBBBBBBBB} переведем все в bin

10111011101110111011101110111011,10111011101110111011101110111011,10111011101110111011101110111011,10111011101110111011101110111011

Первые 5 значений в IP это 0, 32, 64, 96, 1, значит нулевой бит перейдет на нулевую позицию, 32 бит - на первую, 64 - на вторую, 96 - на третью, 1 бит - на четвертую.
Значит: 11110 и так далее. Иными словами, просто берем позицию согласно таблице IP в склеенной 128 битной строке и перенесем на новую позицию. Во всяком случае так происходит в DES. Но все же в Serpent, по-моему, IP/Inv IP работает не так.

Ответы

▲ 1

@Rrace8, зачем вы пытаетесь самостоятельно реализовать пермутации Serpent'а?

Во-первых, это довольно муторное занятие, а во-вторых, во многом бессмысленное. Имеются референсные (образцовые) реализации Serpent - погуглите или просто ткните сюда.

Битовые пермутации обычно довольно сложны в реализации, и ими занимаются сами криптографы.