SAFER (cryptographie)
# SAFER (cryptographie)

SAFER (Secure And Fast Encryption Routine) est le nom d'une famille d'algorithmes de chiffrement par bloc conçus principalement par James Massey pour la société Cylink Corporation. La première version, SAFER K et la révision SAFER SK partagent les mêmes principes pour le chiffrement mais le nombre de tours et le key schedule ont été renforcés.

Des versions ultérieures comme SAFER+ et SAFER++ ont respectivement participé au concours AES et au projet NESSIE. Ces algorithmes n'ont pas fait l'objet de brevets et peuvent être utilisés sans restriction.

## SAFER K et SAFER SK

La première version de SAFER, SAFER K-64, fut publiée par Massey en 1993. Le « K-64 » se réfère à sa clé de 64 bits. La taille de bloc est de 64 bits. L'année suivante, Massey publia une version avec une clé de 128 bits et une key schedule (préparation des clés) modifiée qui avait été conçue par le ministère des affaires intérieures de Singapour. Cette version fut nommée SAFER K-128.

Lars Knudsen et Sean Murphy découvrirent des vulnérabilités dans cette version et demandèrent que le key schedule soit renforcé d'après les suggestions de Knudsen. Ces variantes furent nommées SAFER SK-64 et SAFER SK-128, le « SK » signifiant « Strengthened Key » (clé renforcée). La rumeur colportée par la FAQ sur le site de RSA Security affirme qu'en fait ce SK signifierait « Stop Knudsen ». Une autre variante, avec une clé réduite pour les restrictions d'exportation, fut publiée : SAFER SK-40.

Tous ces chiffrements sont basés sur la même architecture de tour. Chaque tour est divisé en quatre stages :

* mixage de clé
* couche de substitution
* 2e mixage de clé
* couche de diffusion

À la première étape, le bloc en clair est divisé en 8 segments de 8 bits et les sous-clés issues du key schedule sont ajoutées via une addition modulo 256 ou un XOR. La couche de substitution consiste en deux S-Boxes, l'une étant l'inverse de l'autre. Leur contenu provient de l'exponentiation discrète de $45^x$ et du logarithme x·log(45). Après un deuxième mixage, le stage de diffusion utilise une approche alors nouvelle : une pseudo-transformation de Hadamard qui sera utilisée dans Twofish par la suite.

## SAFER+ et SAFER++

Deux versions furent ultérieurement conçues par les arméniens Gurgen Khachatrian et Melsik Kuregian avec l'aide de Massey. Le schéma de chiffrement fut modifié pour l'occasion et tenir compte de nouvelles contraintes.

* SAFER+ (Massey et al, 1998) fut candidat pour le concours AES et a une taille de bloc de 128 bits. Le chiffrement n'a pas été retenu pour la finale. SAFER+ a été inclus dans le standard Bluetooth comme algorithme d'authentification et pour la génération de clés.
* SAFER++ (Massey et al, 2000) a été candidat pour le projet NESSIE. Deux versions furent publiées, une de 64 bits et l'autre de 128 bits.
