Красная щука (шифр) - Red Pike (cipher)

Красная щука это классифицированный объединенное Королевство правительственный алгоритм шифрования, предложенный для использования Национальный центр здоровья к GCHQ, но предназначен для "широкого спектра приложений в Британское правительство " [1]. Мало что известно о Красной Щуке, кроме того, что это блочный шифр с 64-битным размер блока и 64-битный длина ключа. Согласно академическому исследованию шифра, цитируемому ниже и цитируемому в статье Росс Андерсон и Маркус Кун, он "использует те же основные операции, что и RC5 "(сложение, XOR и сдвиг влево) и" не имеет таблиц поиска, практически не имеет расписания ключей и требует только пяти строк кода ";" влияние каждого бита ключа быстро каскадируется "и" каждое шифрование связано с порядком 100 операций ».

Red Pike доступен утвержденным британским государственным подрядчикам в форме программного обеспечения для использования в конфиденциальных (не секретных) правительственных системах связи. GCHQ также разработал Рамбутан криптосистема для того же сегмента.

Учитывая, что Red Pike - это британский алгоритм шифрования, его название, вероятно, относится к определенному упал в западной части английского озерного края.

Предполагаемый исходный код

В феврале 2014 года предполагаемый исходный код Red Pike был размещен в Шифропанк список рассылки.[1]

 / * Исходный код шифра Red Pike * /  #включают <stdint.h>  typedef uint32_t слово;  #define CONST 0x9E3779B9 #define РАУНДЫ 16  #define ROTL (X, R) (((X) << ((R) & 31)) | ((X) >> (32 - ((R) & 31)))) #define ROTR (X, R) (((X) >> ((R) & 31)) | ((X) << (32 - ((R) & 31))))  пустота зашифровать(слово * Икс, const слово * k) {   беззнаковый int я;   слово rk0 = k[0];   слово rk1 = k[1];    за (я = 0; я < РАУНДЫ; я++)   {     rk0 += CONST;     rk1 -= CONST;      Икс[0] ^= rk0;     Икс[0] += Икс[1];     Икс[0] = ROTL(Икс[0], Икс[1]);      Икс[1] = РОТР(Икс[1], Икс[0]);     Икс[1] -= Икс[0];     Икс[1] ^= rk1;   }    rk0 = Икс[0]; Икс[0] = Икс[1]; Икс[1] = rk0; }  пустота расшифровать(слово * Икс, const слово * k) {   слово dk[2] =   {     k[1] - CONST * (РАУНДЫ + 1),     k[0] + CONST * (РАУНДЫ + 1)   };    зашифровать(Икс, dk); }

Смотрите также

Рекомендации

  1. ^ "Шифр красной щуки", Шифр ​​Red Pike, список рассылки Cypherpunk, Gmane
  • Ч. Митчелл, С. Мерфи, Ф. Пайпер, П. Уайлд. (1996). Красная щука - оценка. Codes and Ciphers Ltd 2.10.96.
  • Статья Андерсона и Куна, которая включает выдержки из (Mitchell et al., 1996). Другая версия Андерсон, Росс; Кун, Маркус (1997). «Недорогие атаки на устройства с защитой от взлома» (pdf). Протоколы безопасности, 5-й международный семинар. С. 125–136.
  • «Использование шифрования и связанных услуг с NHSnet»