NOM¶
blowfish, BF_set_key, BF_encrypt, BF_decrypt, BF_ecb_encrypt, BF_cbc_encrypt,
BF_cfb64_encrypt, BF_ofb64_encrypt, BF_options - Chiffrement avec Blowfish.
SYNOPSIS¶
#include <openssl/blowfish.h>
void BF_set_key(BF_KEY *key, int len, const unsigned char *data);
void BF_ecb_encrypt(const unsigned char *in, unsigned char *out,
BF_KEY *key, int enc);
void BF_cbc_encrypt(const unsigned char *in, unsigned char *out,
long length, BF_KEY *schedule, unsigned char *ivec, int enc);
void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out,
long length, BF_KEY *schedule, unsigned char *ivec, int *num,
int enc);
void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out,
long length, BF_KEY *schedule, unsigned char *ivec, int *num);
const char *BF_options(void);
void BF_encrypt(BF_LONG *data,const BF_KEY *key);
void BF_decrypt(BF_LONG *data,const BF_KEY *key);
DESCRIPTION¶
Cette bibliothèque implémente l'algorithme de chiffrement
Blowfish, qui a été créé et décrit par
Counterpane (voir
http://www.counterpane.com/blowfish.html).
Blowfish est un algorithme de chiffrement par blocs qui opère sur des
blocs de données de 64 bits (8 octets). Blowfish utilise
une clé de taille variable, mais en général, les
clés de longueur 128 bits (16 octets) sont
considérées comme bonnes pour un chiffrement puissant. Blowfish
peut être utilisé de la même façon que
l'algorithme DES (voir
des_modes(7)). Blowfish est actuellement un des
algorithmes de chiffrement par blocs les plus rapides. Il est un peu plus
rapide que DES, et bien plus rapide qu'IDEA ou RC2.
Blowfish consiste en une phase de mise en place de clés, puis une phase
deréel chiffrement ou déchiffrement.
BF_set_key() mets en place
BF_KEY key en utilisant la
clé de
len octets dans
data.
BF_ecb_encrypt() est la fonction de chiffrement et de
déchiffrement de base de Blowfish. Celle-ci chiffre et déchiffre
les premiers 64 bits de
in en utilisant la clé
key, et met le résultat dans
out.
enc
décide si un chiffrement (
BF_ENCRYPT) ou un
déchiffrement (
BF_DECRYPT) doit être appliqué. Le
vecteur pointé par
in et
out doit avoir une longueur de
64 bits, pas moins. S'ils sont plus grands, tout ce qu'il y a
après le 64ème bit est ignoré.
Les fonctions de mode
BF_cbc_encrypt(),
BF_cfb64_encrypt() et
BF_ofb64_encrypt() opèrent toutes sur des données de
tailles variables. Elles prennent toutes un vecteur d'initialisation
ivec qui nécessite d'être passé au prochain appel
de la même fonction pour le même message.
ivec peut
être initialisé avec n'importe quoi mais le destinataire a
besoin de savoir avec quoi il a été initialisé, ou il ne
pourra pas déchiffrer. Certains programmes et protocoles simplifient
cela, comme SSH, où
ivec est simplement initialisé
à 0.
BF_cbc_encrypt() opère sur des données qui
sont des multiples de 8 octets en longueur, alors que
BF_cfb64_encrypt() et
BF_ofb64_encrypt() sont utilisées
pour chiffrer un nombre d'octets variable (le montant peut ne pas être
un multiple de 8). Le but des deux dernières fonctions est de pouvoir
simuler des chiffrements de flux, et de ce fait, elles ont besoin d'un
paramètre
num, qui est un pointeur vers un entier dans lequel
est stocké la position courante de lecture
ivec entre chaque
appel. Cet entier doit être initialisé à 0 quand
ivec est initialisé.
BF_cbc_encrypt() est la fonction d'enchaînement pour le
chiffrement par blocs de Blowfish. Elle chiffre et déchiffre les
morceaux de 64 bits de
in en utilisant la clé
schedule, puis met le résultat dans
out.
enc
décide si un chiffrement (BF_ENCRYPT) ou un déchiffrement
(BF_DECRYPT) doit être exécuté.
ivec doit pointer
vers un vecteur d'initialisation de 8 octets.
BF_cfb64_encrypt() est le mode CFB de Blowfish avec un retour de
64 bits. Elle chiffre et déchiffre les octets de
in en
utilisant la clé
schedule, et met le résultat dans
out.
enc décide si un chiffrement (
BF_ENCRYPT) ou
un déchiffrement (
BF_DECRYPT) doit être
exécuté.
ivec doit pointer vers un vecteur
d'initialisation de 8 octets.
num doit pointer vers un entier
qui doit être initialisé à 0.
BF_ofb64_encrypt() est le mode OFB de Blowfish avec un retour de
64 bits. Elle utilise les mêmes paramètres que
BF_cfb64_encrypt(), et ceux-ci doivent être initialisés
de la même façon.
BF_encrypt() et
BF_decrypt() sont les fonctions de bas niveau du
chiffrement Blowfish. Elles chiffrent ou déchiffrent les premiers
64 bits du vecteur pointé par
data, en utilisant la
clé
key. Ces fonctions ne doivent pas être
utilisées sauf si vous implémentez
« modes » pour Blowfish. L'alternative est
d'utiliser
BF_ecb_encrypt(). Si vous voulez utiliser ces fonctions,
sachez qu'elles prennent des blocs de 32 bits dans l'ordre de
l'hôte, c'est-à-dire petit-boutiste pour les plateformes
petit-boutistes et gros-boutiste pour celles gros-boutistes.
VALEURS DE RETOUR¶
Aucune des fonctions présentées ici n'a de valeur de retour.
NOTE¶
Les applications devraient utiliser les fonctions de haut niveau telles
EVP_EncryptInit(3), etc., au lieu d'appeler les fonctions de
Blowfish directement.
VOIR AUSSI¶
des_modes(7)
HISTORIQUE¶
Les fonctions Blowfish sont disponibles dans toutes les versions de SSLeay et
d'OpenSSL.
TRADUCTION¶
La traduction de cette page de manuel est maintenue par les membres de la liste
<debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler
toute erreur de traduction par un rapport de bogue sur le paquet
manpages-fr-extra.