Red Pike (cipher)

Red Pike is a classified United Kingdom government encryption algorithm, proposed for use by the National Health Service by GCHQ, but designed for a "broad range of applications in the British government" . Little is publicly known about Red Pike, except that it is a block cipher with a 64-bit block size and 64-bit key length. According to the academic study of the cipher cited below and quoted in a paper by Ross Anderson and Markus Kuhn, it "uses the same basic operations as RC5" (add, XOR, and left shift) and "has no look-up tables, virtually no key schedule and requires only five lines of code"; "the influence of each key bit quickly cascades" and "each encryption involves of the order of 100 operations".

Red Pike is available to approved British government contractors in software form, for use in confidential (not secret) government communication systems. GCHQ also designed the Rambutan cryptosystem for the same segment.

Given that Red Pike is a British encryption algorithm, its name likely refers to a particular fell in the western English Lake District.

Supposed source code

In February 2014, the supposed source code for Red Pike was posted as follows to the Cypherpunk mailing list. [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);
 }
gollark: This spacesuit will allow you to convert the apples into apple slices, which are easier to eat.
gollark: Anyway, if *that* somehow fails, you need to use the `Tardis` monad to invert time so you can buy a better spacesuit.
gollark: Then, use that to `unsafePerformIO . launchMissiles $ pirates`.
gollark: Use a side-channel attack against `tell` to extract the internal `unsafePerformIO` function.
gollark: Well, the solution is obvious then.

See also

  • Type 1 product

References

  1. "Red Pike cipher", Red Pike cipher, Cypherpunk mailing list, Gmane
  • C Mitchell, S Murphy, F Piper, P Wild. (1996). Red Pike an assessment. Codes and Ciphers Ltd 2/10/96.
  • Paper by Anderson and Kuhn which includes excerpts from (Mitchell et al., 1996). Another version is Anderson, Ross; Kuhn, Markus (1997). "Low Cost Attacks on Tamper Resistant Devices" (pdf). Security Protocols, 5th International Workshop. pp. 125–136.
  • "The use of encryption and related services with the NHSnet"
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.