Красная щука (шифр)
Red Pike — засекреченный алгоритм шифрования правительства Соединенного Королевства , предложенный для использования Национальной здравоохранения GCHQ службой , но предназначенный для «широкого спектра приложений в британском правительстве » [1]. Архивировано 23 апреля 2004 г. в Wayback Machine . О Red Pike публично известно мало, за исключением того, что это блочный шифр с 64-битным размером блока и 64-битной длиной ключа . Согласно академическому исследованию шифра, приведенному ниже и процитированному в статье Росса Андерсона и Маркуса Куна , он «использует те же основные операции, что и RC5 » (сложение, XOR и сдвиг влево) и «не имеет справочных таблиц». практически нет расписания клавиш и требуется всего пять строк кода»; «Влияние каждого ключевого бита быстро распространяется каскадом» и «каждое шифрование включает порядка 100 операций». 64-битная энтропия ключа больше не считается безопасной.
Red Pike доступен утвержденным британским правительственным подрядчикам в виде программного обеспечения для использования в конфиденциальных (не секретных) правительственных системах связи. GCHQ также разработал криптосистему Rambutan для того же сегмента.
Учитывая, что Red Pike — это британский алгоритм шифрования, его название, скорее всего, относится к определенному водопаду в западном английском Озерном крае .
Предполагаемый исходный код [ править ]
В феврале 2014 года предполагаемый исходный код Red Pike был опубликован в списке рассылки Cypherpunk следующим образом . [1]
/* Red Pike cipher source code */
#include <stdint.h>
typedef uint32_t word;
#define CONST 0x9E3779B9
#define ROUNDS 16
#define ROTL(X, R) (((X) << ((R) & 31)) | ((X) >> (32 - ((R) & 31))))
#define ROTR(X, R) (((X) >> ((R) & 31)) | ((X) << (32 - ((R) & 31))))
void encrypt(word * x, const word * k)
{
unsigned int i;
word rk0 = k[0];
word rk1 = k[1];
for (i = 0; i < ROUNDS; i++)
{
rk0 += CONST;
rk1 -= CONST;
x[0] ^= rk0;
x[0] += x[1];
x[0] = ROTL(x[0], x[1]);
x[1] = ROTR(x[1], x[0]);
x[1] -= x[0];
x[1] ^= rk1;
}
rk0 = x[0]; x[0] = x[1]; x[1] = rk0;
}
void decrypt(word * x, const word * k)
{
word dk[2] =
{
k[1] - CONST * (ROUNDS + 1),
k[0] + CONST * (ROUNDS + 1)
};
encrypt(x, dk);
}
См. также [ править ]
Ссылки [ править ]
- ^ «Шифр Red Pike» , шифр Red Pike, список рассылки Cypherpunk, Gmane
- С. Митчелл, С. Мерфи, Ф. Пайпер, П. Уайлд. (1996). Красная щука — оценка. ООО "Коды и Шифры" 10.02.96.
- Статья Андерсона и Куна, включающая выдержки из (Mitchell et al., 1996) . Другая версия Андерсон, Росс; Кун, Маркус (1997). «Недорогие атаки на защищенные от несанкционированного доступа устройства» (PDF) . Протоколы безопасности, 5-й международный семинар . стр. 125–136.
- «Использование шифрования и связанных с ним услуг в NHSnet»