Red Pike (xifrat)
Red Pike és un algorisme de xifratge del govern del Regne Unit classificat, proposat per al Servei Nacional de Salut pel GCHQ, però dissenyat per a una "amplia gamma d'aplicacions al govern britànic " [1] Arxivat 2004-04-23 a Wayback Machine. Poc se sap públicament sobre Red Pike, excepte que és un xifrat de blocs amb una mida de bloc de 64 bits i una longitud de clau de 64 bits. Segons l'estudi acadèmic del xifrat citat a continuació i citat en un article de Ross Anderson i Markus Kuhn, "utilitza les mateixes operacions bàsiques que RC5 " (afegir, XOR i desplaçament a l'esquerra) i "no té taules de cerca, pràcticament no hi ha programació de claus i només requereix cinc línies de codi"; "la influència de cada bit de clau cau ràpidament en cascada" i "cada xifratge implica de l'ordre de 100 operacions". 64 bits d'entropia de clau ja no es consideren segurs.[1]
Red Pike (xifrat) | |
---|---|
Detall | |
Estructura | Xarxa del tipus RC5 |
Red Pike està disponible per als contractistes aprovats del govern britànic en forma de programari, per utilitzar-lo en sistemes de comunicació governamentals confidencials (no secrets). GCHQ també va dissenyar el sistema criptogràfic Rambutan per al mateix segment.[2]
Tenint en compte que Red Pike és un algorisme de xifratge britànic, el seu nom probablement es refereix a una caiguda particular al districte dels llacs anglès occidental.[3]
Suposat codi font
modificaEl febrer de 2014, el suposat codi font de Red Pike es va publicar de la següent manera a la llista de correu Cypherpunk.
/* 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);
}
Referències
modifica- ↑ «Red Pike (cipher)» (en anglès). [Consulta: 2 octubre 2024].
- ↑ FRSE, Prof Bill Buchanan OBE. «From AES to Red Pike» (en anglès), 31-10-2022. [Consulta: 2 octubre 2024].
- ↑ «Red Pike» (en anglès). [Consulta: 2 octubre 2024].