SAFER

created by .derf
(thing) by .derf (2.9 y) (print)   (I like it!) Mon Jul 23 2001 at 22:01:04
Free encryption algorithm created by James Massey for Cylink Corporation. SAFER stands for Secure And Fast Encryption Routine. Anyone can use SAFER as there is no patent on the algorithm.

SAFER uses a 64 bit key and block size. The first, fourth, fifth and eighth bytes of the block are XORed with the key while the remaining bytes are added to a subkey (K2i-1).

The bytes that were added are run through the equation "y = log45 x", while the XORed bytes are run through the equation "y = 45x mod 257". These equations yield the two following tables:


Table 1 = {1, 45, 226, 147, 190, 69, 21, 174, 120, 3, 135, 164, 184, 56, 207, 63, 8, 103, 9, 148, 235, 38, 168, 107, 189, 24, 52, 27, 187, 191, 114, 247, 64, 53, 72, 156, 81, 47, 59, 85, 227, 192, 159, 216, 211, 243, 141, 177, 255, 167, 62, 220, 134, 119, 215, 166, 17, 251, 244, 186, 146, 145, 100, 131, 241, 51, 239, 218, 44, 181, 178, 43, 136, 209, 153, 203, 140, 132, 29, 20, 129, 151, 113, 202, 95, 163, 139, 87, 60, 130, 196, 82, 92, 28, 232, 160, 4, 180, 133, 74, 246, 19, 84, 182, 223, 12, 26, 142, 222, 224, 57, 252, 32, 155, 36, 78, 169, 152, 158, 171, 242, 96, 208, 108, 234, 250, 199, 217, 0, 212, 31, 110, 67, 188, 236, 83, 137, 254, 122, 93, 73, 201, 50, 194, 249, 154, 248, 109, 22, 219, 89, 150, 68, 233, 205, 230, 70, 66, 143, 10, 193, 204, 185, 101, 176, 210, 198, 172, 30, 65, 98, 41, 46, 14, 116, 80, 2, 90, 195, 37, 123, 138, 42, 91, 240, 6, 13, 71, 111, 112, 157, 126, 16, 206, 18, 39, 213, 76, 79, 214, 121, 48, 104, 54, 117, 125, 228, 237, 128, 106, 144, 55, 162, 94, 118, 170, 197, 127, 61, 175, 165, 229, 25, 97, 253, 77, 124, 183, 11, 238, 173, 75, 34, 245, 231, 115, 35, 33, 200, 5, 225, 102, 221, 179, 88, 105, 99, 86, 15, 161, 49, 149, 23, 7, 58, 40}


Table 2 = {128, 0, 176, 9, 96, 239, 185, 253, 16, 18, 159, 228, 105, 186, 173, 248, 192, 56, 194, 101, 79, 6, 148, 252, 25, 222, 106, 27, 93, 78, 168, 130, 112, 237, 232, 236, 114, 179, 21, 195, 255, 171, 182, 71, 68, 1, 172, 37, 201, 250, 142, 65, 26, 33, 203, 211, 13, 110, 254, 38, 88, 218, 50, 15, 32, 169, 157, 132, 152, 5, 156, 187, 34, 140, 99, 231, 197, 225, 115, 198, 175, 36, 91, 135, 102, 39, 247, 87, 244, 150, 177, 183, 92, 139, 213, 84, 121, 223, 170, 246, 62, 163, 241, 17, 202, 245, 209, 23, 123, 147, 131, 188, 189, 82, 30, 235, 174, 204, 214, 53, 8, 200, 138, 180, 226, 205, 191, 217, 208, 80, 89, 63, 77, 98, 52, 10, 72, 136, 181, 86, 76, 46, 107, 158, 210, 61, 60, 3, 19, 251, 151, 81, 117, 74, 145, 113, 35, 190, 118, 42, 95, 249, 212, 85, 11, 220, 55, 49, 22, 116, 215, 119, 167, 230, 7, 219, 164, 47, 70, 243, 97, 69, 103, 227, 12, 162, 59, 28, 133, 24, 4, 29, 41, 160, 143, 178, 90, 216, 166, 126, 238, 141, 83, 75, 161, 154, 193, 14, 122, 73, 165, 44, 129, 196, 199, 54, 43, 127, 67, 149, 51, 242, 108, 104, 109, 240, 2, 40, 206, 221, 155, 234, 94, 153, 124, 20, 134, 207, 229, 66, 184, 64, 120, 45, 58, 233, 100, 31, 146, 144, 125, 57, 111, 224, 137, 48}


Then the bytes that were added to the subkey are now XORed with it while the bytes that were XORed with it are added. Each pair of bytes (1 and 2, 3 and 4, etc) are processed with an operation called a Pseudo-Hadamard Transform (PHT). The inputs, a1 (the first byte of the pair) and a2 (the second) result in the following output:

b1=(2a1 + a2) mod 256

And

b2 = (a1 + a2) mod 256

The results are then passed along and become the inputs to another round of the transform as follows:

1 remains 1.
2 becomes 5.
3 becomes 2.
4 becomes 6.
5 becomes 3.
6 becomes 7.
7 becomes 4.

After that, all the bytes are shifted again in the same manner.

The bytes are then passed through another five to seven rounds. After 8 rounds, it is much more resistant to cryptanalysis.

To decrypt SAFER, subtraction is substituted for addition and PHT is reversed:

a1 = (b - b2) mod 256

And

a2 = (-b1 + 2b2) mod 256.

Any file encrypted with SAFER shares the ciphertext with one to nine other different plaintexts encrypted with another key. This makes SAFER somewhat useless as a one-way hash or as a Message Authentication Code

The government of Singapore uses a version SAFER with a 128 bit key. It should also be noted that the NSA may have had a hand in the design of SAFER, so don't try to use it to hide your secrets from the government.

An improved key schedule exists for SAFER, known as SAFER-SK. SAFER-SK supports 64 and 128 bit keys.

Cryptology Meta-Node

Y'know, if you log in, you can write something here, or contact authors directly on the site. Create a New User if you don't already have an account.