Подробности записи журнала 368 184

04:32, 18 декабря 2010: 61 «Повторы» 13human (обсуждение | вклад) на странице Rabbit, меры: Отклонение (просмотреть)

Изменения, сделанные в правке

x_{j,0}=
x_{j,0}=
\begin{cases}
\begin{cases}
k_{(j+1 \mod 8)} \diamond k_j , \\
k_{(j+1 \mod 8)} \diamond k_j , \ \ \ \ \ \ \ \ \ \ \ \ \ \ for \ j \ even\\
k_{(j+5 \mod 8)} \diamond k_{(j+4 \mod 8)}, \\
k_{(j+5 \mod 8)} \diamond k_{(j+4 \mod 8)}, \ \ for \ j \ odd \\
\end{cases}
\end{cases}
</math>
</math>
c_{j,0}=
c_{j,0}=
\begin{cases}
\begin{cases}
k_{(j+4 \mod 8)} \diamond k_{(j+5 \mod 8)} , \\
k_{(j+4 \mod 8)} \diamond k_{(j+5 \mod 8)} , \ \ for \ j \ even \\
k_j \diamond k_{(j+1 \mod 8)}, \\
k_j \diamond k_{(j+1 \mod 8)}, \ \ \ \ \ \ \ \ \ \ \ \ \ \ for \ j \ odd \\
\end{cases}
\end{cases}
</math>
</math>

Параметры действия

ПеременнаяЗначение
Имя учётной записи ($1) (user_name)
'13human'
ID страницы ($1) (page_id)
2927977
Пространство имён страницы ($1) (page_namespace)
0
Название страницы (без пространства имён) ($1) (page_title)
'Rabbit'
Полное название страницы ($1) (page_prefixedtitle)
'Rabbit'
Действие ($1) (action)
'edit'
Описание правки/причина ($1) (summary)
''
Была ли правка отмечена как «малое изменение» (больше не используется) (minor_edit)
false
Вики-текст старой страницы до правки ($1) (old_wikitext)
''''Rabbit''' - высокоскоростной [[поточный шифр]] впервые представленный <ref>M. Boesgaard, M. Vesterager, T. Pedersen, J. Christiansen, O. Scavenius. Rabbit: A High-Performance Stream Cipher. Proc. FSE 2003. Springer LNCS 2887, pp. 307-329 ([http://www.cryptico.com/Files/filer/rabbit_fse.pdf PDF])</ref> в феврале 2003 года на 10-м симпозиуме FSE. В мае 2005, он был отправлен на конкурс [[eSTREAM]], целью которого было создание европейских стандартов для поточных систем шифрования. Разработчиками Rabbit являются [[Martin Boesgaard]], [[Mette Vesterager]], [[Thomas Pedersen (CS)|Thomas Pedersen]], [[Jesper Christiansen (CS)|Jesper Christiansen]] и [[Ove Scavenius]]. Rabbit используют 128-битный ключ и 64-битный инициализирующий вектор. Шифр был разработан с целью использования в программном обеспечении. При этом скорость шифрования могла достигать 3.7 циклов в бит([[:en:Cycles_per_byte|CPB]]) для процессора Pentium 3 и 9.7 циклов в бит для ARM7. Тем не менее, шифр также оказался быстрым и компактным при реализации в аппаратном обеспчении. Основным компонентом шифра является генератор [[Битовый_поток|битового потока]], который шифрует 128 битов сообщения за итерацию. Достоинство шифра в тщательном перемещивании его внутренних состояний между двумя последовательными итерациями. Функция перемешивания полностью основана на арифметических операциях, доступных на современных процессорах, т.е. [[:en:substitution_box|S-блоки подстановок]] и поисковые таблицы не нужны для реализации шифра. Авторы шифра предоставили полный набор технических описаний на домашней странице [[:en:Cryptico|Cryptico]].<ref>M. Boesgaard, T. Pedersen, M. Vesterager, E. Zenner. The Rabbit Stream Cipher - Design and Security Analysis. Proc. SASC 2004. ([http://www.cryptico.com/files/filer/rabbit_sasc_final.pdf PDF])</ref>. Шифр также описан в RFC 4503. Cryptico обладала патентом на шифр, и многии годы для использования шифра в коммерческих целях требовалась лицензия. Однако, 6 октября 2008 шифр разрешили использовать для любых целях бесплатно. <ref>http://www.ecrypt.eu.org/stream/phorum/read.php?1,1244</ref> == Безопасноть == Rabbit предоставляет 128-битную защиту против аттакующих, чья цель один уникальный ключ. Если же атака происходит на несколько ключей за раз, и все равно, который из них взломают, то защищенность снижается до 96 бит.<ref>Christophe De Cannière, Joseph Lano, and [[Bart Preneel]], "Comments on the Rediscovery of Time Memory Data Tradeoffs", 2005. ([http://www.ecrypt.eu.org/stream/papersdir/040.pdf PDF])</ref>. == Алгоритм == Внутреннее состояние поточного шифра содержит 513 битов. 512 из них поделены на 8-ь 32-битных переменных состояний <big>'''<math>x_{j,i}</math> '''</big> и 8-ь 32-битных счетчиков <big>'''<math>c_{j,i}</math> '''</big>, где <big>'''<math>x_{j,i}</math> '''</big> - переменная состояния подсистемы <big>'''<math>j</math> '''</big> при итерации <big>'''<math>i</math> '''</big>, а <big>'''<math>c_{j,i}</math> '''</big> - обазначет соответствующий счетчик переменных. 513-й бит - бит переноса φ<big>'''<math>_{7,i}</math> '''</big>, который необходимо хранить между итерациями. Этот бит инициализируется нулем. 8-ь переменных состояний и 8-ь счетчиков зависят от ключа при инициализации. ===Схема установки ключа=== Алгоритм инициализируется расширением 128-битного ключа на 8-ь переменных состояния и 8-ь счетчиков так, чтосуществует взаимнооднозначное соответствие между ключом, начальными переменными состояний, <big>'''<math>x_{j,0}</math> '''</big> , и начальными счетчиками, <big>'''<math>c_{j,0}</math> '''</big>. Ключ, <big>'''<math>K^{[127..0]} </math>'''</big>, поделен на 8-мь подключей: <big>'''<math>k_0^{[15..0]} </math>'''</big>, <big>'''<math>k_1^{[31..16]} </math>'''</big>, ... , <big>'''<math>k_7^{[127..112]} </math>'''</big>, переменные состояний и счетчики инициализируются при помощи подключей: {| width=90% | :<math> x_{j,0}= \begin{cases} k_{(j+1 \mod 8)} \diamond k_j , \\ k_{(j+5 \mod 8)} \diamond k_{(j+4 \mod 8)}, \\ \end{cases} </math> | align="right" |(1) |} {| width=90% | :<math> c_{j,0}= \begin{cases} k_{(j+4 \mod 8)} \diamond k_{(j+5 \mod 8)} , \\ k_j \diamond k_{(j+1 \mod 8)}, \\ \end{cases} </math> | align="right" |(1) |} Система прогоняется 4-ре раза, согласно функции следующего состояния, определенной ниже, чтобы понизить кореляцию между битами ключа и битами переменных внутренного состояния. В конце, счетчики ре-инициализируются следующим образом: :<big>'''<math>c_{j,4}=c_{j,4} \oplus x_{(j+4 mod 8),4} \quad, </math>'''</big> для предотвращения восстановления ключа путем инверсии системы счетчиков. ===Функция следующего состояния=== : <big>'''<math> x_{0, i+1} = g_{0,i} + (g_{7,i}<<<16) + (g_{6,i}<<<16) </math>'''</big> : <big>'''<math> x_{1,i+1} = g_{1,i} + (g_{0,i}<<<8) + g_{7,i} </math>'''</big> : <big>'''<math> x_{2,i+1} = g_{2,i} + (g_{1,i}<<<16) + (g_{0,i}<<<16) </math>'''</big> : <big>'''<math> x_{3,i+1} = g_{3,i} + (g_{2,i}<<<8) + g_{1,i} </math>'''</big> : <big>'''<math> x_{4,i+1} = g_{4,i} + (g_{3,i}<<<16) + (g_{2,i}<<<16) </math>'''</big> : <big>'''<math> x_{5,i+1} = g_{5,i} + (g_{4,i}<<<8) + g_{3,i} </math>'''</big> : <big>'''<math> x_{6,i+1} = g_{6,i} + (g_{5,i}<<<16) + (g_{4,i}<<<16) </math>'''</big> : <big>'''<math> x_{7,i+1} = g_{7,i} + (g_{6,i}<<<8) + g_{5,i} </math>'''</big> Здесь все сложение по модулю 2^32. After each iteration 128 bits of output are generated as follows: s[15..0] i = x[15..0] 0,i © x[31..16] 5,i s[31..16] i = x[31..16] 0,i © x[15..0] 3,i s[47..32] i = x[15..0] 2,i © x[31..16] 7,i s[63..48] i = x[31..16] 2,i © x[15..0] 5,i s[79..64] i = x[15..0] 4,i © x[31..16] 1,i s[95..80] i = x[31..16] 4,i © x[15..0] 7,i (9) s[111..96] i = x[15..0] 6,i © x[31..16] 3,i s[127..112] i = x[31..16] 6,i © x[15..0] 1,i where si is the 128-bit keystream block at iteration i. Encryption/decryption Scheme The extracted bits are XOR’ed with the plaintext/ciphertext to encrypt/decrypt. ci = pi © si, (10) pi = ci © si, (11) where ci and pi denote the ith ciphertext and plaintext blocks, respectively. == Ссылки == <div class="references-small"> <references/> </div>'
Вики-текст новой страницы после правки ($1) (new_wikitext)
''''Rabbit''' - высокоскоростной [[поточный шифр]] впервые представленный <ref>M. Boesgaard, M. Vesterager, T. Pedersen, J. Christiansen, O. Scavenius. Rabbit: A High-Performance Stream Cipher. Proc. FSE 2003. Springer LNCS 2887, pp. 307-329 ([http://www.cryptico.com/Files/filer/rabbit_fse.pdf PDF])</ref> в феврале 2003 года на 10-м симпозиуме FSE. В мае 2005, он был отправлен на конкурс [[eSTREAM]], целью которого было создание европейских стандартов для поточных систем шифрования. Разработчиками Rabbit являются [[Martin Boesgaard]], [[Mette Vesterager]], [[Thomas Pedersen (CS)|Thomas Pedersen]], [[Jesper Christiansen (CS)|Jesper Christiansen]] и [[Ove Scavenius]]. Rabbit используют 128-битный ключ и 64-битный инициализирующий вектор. Шифр был разработан с целью использования в программном обеспечении. При этом скорость шифрования могла достигать 3.7 циклов в бит([[:en:Cycles_per_byte|CPB]]) для процессора Pentium 3 и 9.7 циклов в бит для ARM7. Тем не менее, шифр также оказался быстрым и компактным при реализации в аппаратном обеспчении. Основным компонентом шифра является генератор [[Битовый_поток|битового потока]], который шифрует 128 битов сообщения за итерацию. Достоинство шифра в тщательном перемещивании его внутренних состояний между двумя последовательными итерациями. Функция перемешивания полностью основана на арифметических операциях, доступных на современных процессорах, т.е. [[:en:substitution_box|S-блоки подстановок]] и поисковые таблицы не нужны для реализации шифра. Авторы шифра предоставили полный набор технических описаний на домашней странице [[:en:Cryptico|Cryptico]].<ref>M. Boesgaard, T. Pedersen, M. Vesterager, E. Zenner. The Rabbit Stream Cipher - Design and Security Analysis. Proc. SASC 2004. ([http://www.cryptico.com/files/filer/rabbit_sasc_final.pdf PDF])</ref>. Шифр также описан в RFC 4503. Cryptico обладала патентом на шифр, и многии годы для использования шифра в коммерческих целях требовалась лицензия. Однако, 6 октября 2008 шифр разрешили использовать для любых целях бесплатно. <ref>http://www.ecrypt.eu.org/stream/phorum/read.php?1,1244</ref> == Безопасноть == Rabbit предоставляет 128-битную защиту против аттакующих, чья цель один уникальный ключ. Если же атака происходит на несколько ключей за раз, и все равно, который из них взломают, то защищенность снижается до 96 бит.<ref>Christophe De Cannière, Joseph Lano, and [[Bart Preneel]], "Comments on the Rediscovery of Time Memory Data Tradeoffs", 2005. ([http://www.ecrypt.eu.org/stream/papersdir/040.pdf PDF])</ref>. == Алгоритм == Внутреннее состояние поточного шифра содержит 513 битов. 512 из них поделены на 8-ь 32-битных переменных состояний <big>'''<math>x_{j,i}</math> '''</big> и 8-ь 32-битных счетчиков <big>'''<math>c_{j,i}</math> '''</big>, где <big>'''<math>x_{j,i}</math> '''</big> - переменная состояния подсистемы <big>'''<math>j</math> '''</big> при итерации <big>'''<math>i</math> '''</big>, а <big>'''<math>c_{j,i}</math> '''</big> - обазначет соответствующий счетчик переменных. 513-й бит - бит переноса φ<big>'''<math>_{7,i}</math> '''</big>, который необходимо хранить между итерациями. Этот бит инициализируется нулем. 8-ь переменных состояний и 8-ь счетчиков зависят от ключа при инициализации. ===Схема установки ключа=== Алгоритм инициализируется расширением 128-битного ключа на 8-ь переменных состояния и 8-ь счетчиков так, чтосуществует взаимнооднозначное соответствие между ключом, начальными переменными состояний, <big>'''<math>x_{j,0}</math> '''</big> , и начальными счетчиками, <big>'''<math>c_{j,0}</math> '''</big>. Ключ, <big>'''<math>K^{[127..0]} </math>'''</big>, поделен на 8-мь подключей: <big>'''<math>k_0^{[15..0]} </math>'''</big>, <big>'''<math>k_1^{[31..16]} </math>'''</big>, ... , <big>'''<math>k_7^{[127..112]} </math>'''</big>, переменные состояний и счетчики инициализируются при помощи подключей: {| width=90% | :<math> x_{j,0}= \begin{cases} k_{(j+1 \mod 8)} \diamond k_j , \ \ \ \ \ \ \ \ \ \ \ \ \ \ for \ j \ even\\ k_{(j+5 \mod 8)} \diamond k_{(j+4 \mod 8)}, \ \ for \ j \ odd \\ \end{cases} </math> | align="right" |(1) |} {| width=90% | :<math> c_{j,0}= \begin{cases} k_{(j+4 \mod 8)} \diamond k_{(j+5 \mod 8)} , \ \ for \ j \ even \\ k_j \diamond k_{(j+1 \mod 8)}, \ \ \ \ \ \ \ \ \ \ \ \ \ \ for \ j \ odd \\ \end{cases} </math> | align="right" |(1) |} Система прогоняется 4-ре раза, согласно функции следующего состояния, определенной ниже, чтобы понизить кореляцию между битами ключа и битами переменных внутренного состояния. В конце, счетчики ре-инициализируются следующим образом: :<big>'''<math>c_{j,4}=c_{j,4} \oplus x_{(j+4 mod 8),4} \quad, </math>'''</big> для предотвращения восстановления ключа путем инверсии системы счетчиков. ===Функция следующего состояния=== : <big>'''<math> x_{0, i+1} = g_{0,i} + (g_{7,i}<<<16) + (g_{6,i}<<<16) </math>'''</big> : <big>'''<math> x_{1,i+1} = g_{1,i} + (g_{0,i}<<<8) + g_{7,i} </math>'''</big> : <big>'''<math> x_{2,i+1} = g_{2,i} + (g_{1,i}<<<16) + (g_{0,i}<<<16) </math>'''</big> : <big>'''<math> x_{3,i+1} = g_{3,i} + (g_{2,i}<<<8) + g_{1,i} </math>'''</big> : <big>'''<math> x_{4,i+1} = g_{4,i} + (g_{3,i}<<<16) + (g_{2,i}<<<16) </math>'''</big> : <big>'''<math> x_{5,i+1} = g_{5,i} + (g_{4,i}<<<8) + g_{3,i} </math>'''</big> : <big>'''<math> x_{6,i+1} = g_{6,i} + (g_{5,i}<<<16) + (g_{4,i}<<<16) </math>'''</big> : <big>'''<math> x_{7,i+1} = g_{7,i} + (g_{6,i}<<<8) + g_{5,i} </math>'''</big> Здесь все сложение по модулю 2^32. After each iteration 128 bits of output are generated as follows: s[15..0] i = x[15..0] 0,i © x[31..16] 5,i s[31..16] i = x[31..16] 0,i © x[15..0] 3,i s[47..32] i = x[15..0] 2,i © x[31..16] 7,i s[63..48] i = x[31..16] 2,i © x[15..0] 5,i s[79..64] i = x[15..0] 4,i © x[31..16] 1,i s[95..80] i = x[31..16] 4,i © x[15..0] 7,i (9) s[111..96] i = x[15..0] 6,i © x[31..16] 3,i s[127..112] i = x[31..16] 6,i © x[15..0] 1,i where si is the 128-bit keystream block at iteration i. Encryption/decryption Scheme The extracted bits are XOR’ed with the plaintext/ciphertext to encrypt/decrypt. ci = pi © si, (10) pi = ci © si, (11) where ci and pi denote the ith ciphertext and plaintext blocks, respectively. == Ссылки == <div class="references-small"> <references/> </div>'
Была ли правка сделана через выходной узел сети Tor (tor_exit_node)
0
Unix-время изменения ($1) (timestamp)
1292646773