stringtranslate.com

Lucio rojo (cifrado)

Red Pike es un algoritmo de cifrado clasificado del gobierno del Reino Unido , propuesto para su uso por el Servicio Nacional de Salud por GCHQ , pero diseñado para una "amplia gama de aplicaciones en el gobierno británico " [1] Archivado el 23 de abril de 2004 en Wayback Machine . Poco se sabe públicamente sobre Red Pike, excepto que es un cifrado de bloques con un tamaño de bloque de 64 bits y una longitud de clave de 64 bits . Según el estudio académico del cifrado citado a continuación y citado en un artículo de Ross Anderson y Markus Kuhn , "utiliza las mismas operaciones básicas que RC5 " (suma, XOR y desplazamiento a la izquierda) y "no tiene tablas de búsqueda, prácticamente no tiene programación de claves y requiere solo cinco líneas de código"; "la influencia de cada bit de clave se propaga rápidamente" y "cada cifrado implica del orden de 100 operaciones". Los 64 bits de entropía de clave ya no se consideran seguros.

Red Pike está disponible para contratistas del gobierno británico aprobados en formato de software, para su uso en sistemas de comunicación gubernamentales confidenciales (no secretos). El GCHQ también diseñó el criptosistema Rambutan para el mismo segmento.

Dado que Red Pike es un algoritmo de cifrado británico, su nombre probablemente hace referencia a una colina particular en el Distrito de los Lagos, al oeste de Inglaterra .

Supuesto código fuente

En febrero de 2014, el supuesto código fuente de Red Pike se publicó de la siguiente manera en la lista de correo Cypherpunk . [1]

 /* Código fuente del cifrado Red Pike */ #include <stdint.h> typedef uint32_t palabra ; #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 ( palabra * x , const palabra * k ) { unsigned int i ; palabra rk0 = k [ 0 ]; palabra 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 descifrar ( palabra * x , const palabra * k ) { palabra dk [ 2 ] = { k [ 1 ] - CONST * ( REDONDEO + 1 ), k [ 0 ] + CONST                                                                                                             * ( REDONDAS + 1 ) }; cifrar ( x , dk ); }        

Véase también

Referencias

  1. ^ "Cifrado Red Pike", cifrado Red Pike, lista de correo Cypherpunk, Gmane