Просмотр отдельных изменений
Эта страница позволяет вам проверить переменные, сгенерированные фильтром злоупотреблений, на предмет отдельного изменения.
Переменные, созданные для этого изменения
Переменная | Значение |
---|---|
Имя учётной записи ($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 |