comment utiliser CryptoAPI dans le noyau linux 2.6
J'ai été la recherche de quelques temps mais n'ont pas trouvé n'importe où près de suffisamment de documentation et des exemples sur la façon d'utiliser le CryptoAPI qui est livré avec linux dans la création de syscalls /dans le noyau de la terre.
Si quelqu'un connaît une bonne source s'il vous plaît laissez-moi savoir, je voudrais savoir comment faire SHA1 et MD5 et Blowfish /AES au sein de l'espace du noyau.
source d'informationauteur Conor
Vous devez vous connecter pour publier un commentaire.
Il y a quelques endroits dans le noyau qui utilisent le module crypto: le eCryptfs système de fichiers (linux/fs/ecryptfs/) et la norme 802.11 sans fil pile (linux/drivers/mise en scène/rtl8187se/ieee80211/). Ces deux utiliser AES, mais vous pouvez être en mesure d'extrapoler ce que vous y trouvez du MD5.
Un autre bon exemple est le noyau 2.6.18 source de sécurité/seclvl.c
Remarque: Vous pouvez modifier CRYPTO_TFM_REQ_MAY_SLEEP si nécessaire
Cryptodev-linux
https://github.com/cryptodev-linux/cryptodev-linux
C'est un module du noyau qui expose le noyau de la crypto API vers l'espace utilisateur, par le biais de
/dev/crypto
.SHA exemple de calcul: https://github.com/cryptodev-linux/cryptodev-linux/blob/da730106c2558c8e0c8e1b1b1812d32ef9574ab7/examples/sha.c
Comme d'autres l'ont mentionné, le noyau ne semble pas exposer l'API de chiffrement à l'espace utilisateur lui-même, ce qui est dommage puisque le noyau peut déjà utiliser natif de l'accélération matérielle de la crypto fonctions en interne.
Crypto opérations cryptodev prend en charge: https://github.com/nmav/cryptodev-linux/blob/383922cabeea7dca354415e8c590f8e932f4d7a8/crypto/cryptodev.h
Crypto opérations Linux x86 prend en charge: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/x86/crypto?id=refs/tags/v4.0
Le meilleur endroit pour commencer est de Documentation/crytpo dans les sources du noyau. dm-crypt est l'un des nombreux composants qui utilise probablement le noyau de la crypto API et vous pouvez vous y reporter pour avoir une idée sur l'utilisation.
Exemple de hachage de données à l'aide de deux éléments scatterlist:
Une critique remarque:
Ne jamais comparer la valeur de retour de
crypto_alloc_hash
la fonction NULL pour la détection de la défaillance.Suit:
Toujours utiliser
IS_ERR
la fonction de ce but. En comparant àNULL
ne capture pas l'erreur, par conséquent, vous obtenez la segmentation des fautes plus tard.Si IS_ERR retourne échouent, vous avez probablement manque un algorithme de chiffrement compilé dans l'image du noyau (ou un module). Assurez-vous d'avoir choisi la crypto algo. forme
make menuconfig
.