web-dev-qa-db-fra.com

La taille maximale d'un fichier que je peux chiffrer avec une taille de clé spécifique

une clé privée de 1024 bits est générée à l'aide de openssl genrsa privateKey.pem 1024 commande.

on extrait la clé publique de la clé privée en utilisant la commande

openSSl rsa -in privatekey.pem -pubout -out publickey.pem

Je veux connaître la taille de ma clé privée et ma clé publique?

Je veux connaître la taille maximale d'un fichier que je veux crypter avec ma clé publique?

et le taille maximale que je veux décrypter avec ma clé privée?

10
sarra el filali

Tout d'abord, une clé RSA 1024 bits est beaucoup trop petite pour le confort. Les recommandations actuelles pour RSA sont un débat entre 3072 ou 4096 (meilleure marge de sécurité) contre 2048 (meilleures performances). Voir:

Je veux connaître la taille maximale d'un fichier que je veux crypter avec ma clé publique? et la taille maximale que je veux décrypter avec ma clé privée?

Ici, la limite ne se résume pas à RSA lui-même, car la cryptographie à clé publique pratique est presque toujours hybride cryptographie où RSA est utilisé pour encapsuler les clés de chiffrement symétriques (généralement pour certains algorithmes basés sur AES) et les données réelles sont chiffrées avec celles-ci. En pratique, ce qui limite la taille du fichier que vous pouvez crypter, c'est la conception du fichier ou du format de message. Par exemple avec AES-GCM, vous ne pouvez pas crypter des messages individuels supérieurs à 64 Gio , et vous ne devez pas crypter plus de 232 messages avec une clé, mais cela signifie vraiment que pour crypter un plus grand volume de données, le logiciel doit le diviser en petits morceaux et crypter chacun comme un message séparé, en faisant tourner les clés après qu'un certain nombre de morceaux est dépassé.

(Remarque: même pour les petits fichiers, il est préférable de les chiffrer en morceaux de taille modeste afin que le logiciel puisse rejeter les contrefaçons sans avoir à déchiffrer le fichier entier avant de produire une sortie. Par exemple, l'une des causes de la EFail vulnérabilité est que GnuPG génère les décryptages des fichiers falsifiés avant d'effectuer un contrôle anti-falsification facultatif .)

Ce n'est qu'un exemple; la réponse générale est que votre question ne peut pas être répondue concrètement avec seulement les informations que vous donnez, et les réponses concrètes nécessitent de regarder votre logiciel cryptographique spécifique pour voir comment il est conçu et mis en œuvre. Par exemple, la documentation de GnuPG vous indique pour certains de ses algorithmes symétriques que vous ne devez pas crypter des fichiers supérieurs à 4 Gio :

En raison de sa taille de bloc 64 bits de l'ère des années 1970, [3DES] ne doit pas être utilisé pour crypter plus d'environ 4 Go de données. Au-delà de cela, cependant, il est solide comme un roc, et très peu d'utilisateurs de GnuPG remarqueront un problème avec. Si vous ne cryptez pas plus de 4 Go de données, vous pouvez utiliser 3DES en toute confiance.

Je ne pourrais pas trouver rapidement quel est le mode d'échec si vous violez cette règle, et je ne peux pas garantir s'il vous donne une erreur disant que vous avez fait quelque chose de mal (comme il se doit) ou s'il produit simplement en silence un fichier de sortie potentiellement non sécurisé (ce qui serait terrible) . Caveat emptor.

16
Luis Casillas

Le nombre de 1024 bits sur la clé décrit le module utilisé dans le cadre du chiffrement et du déchiffrement d'un message (voir https://security.stackexchange.com/a/8914/29905 ), qui est associé à un exposant public pour la clé publique et un exposant privé pour la clé privée - en effet, le message est d'abord porté à la puissance de l'exposant public e ou l'exposant privé d , puis le module de ce nombre et les 1024 bits [~ # ~] n [ ~ # ~] est trouvé. Le bit le plus significatif des 1024 bits [~ # ~] n [~ # ~] est toujours 1, donc tout bloc de 1023 bits peut être crypté as [~ # ~] n [~ # ~] sera toujours un plus grand nombre - si le texte en clair est de 1024 bits avec le bit le plus significatif réglé sur 1, il faudrait vérifier que sa valeur numérique est inférieure à [~ # ~] n [~ # ~] . La réponse de base à votre question est alors que RSA peut crypter et décrypter un message jusqu'à (longueur de clé - 1) bits. Cependant, un message peut être divisé en blocs d'une taille suffisamment petite pour permettre le remplissage (pour faire de chaque bloc une longueur unifiée et ajouter du non-déterminisme) et chaque bloc chiffré individuellement avec RSA.

Vous avez également demandé la taille de votre clé. J'ai mentionné plus tôt que la clé est en fait un composé de deux nombres, [~ # ~] n [~ # ~] et l'un ou l'autre e ou d . e et d sont liés en étant des inverses multiplicatifs modulaires les uns des autres mod λ (N) , c'est-à-dire (e * d) mod λ (N) = 1 . Leurs longueurs ne sont pas exactement liées à la longueur en bits de [~ # ~] n [~ # ~] , mais la plus petite est, la l'autre doit être plus grand puisque e * d> N (notant e, d> 1 ). Ainsi, la taille de vos clés composées est la longueur en bits de [~ # ~] n [~ # ~] plus la longueur de e ou d , où e est généralement un petit nombre premier. Cependant, dans les implémentations pratiques, le grand d n'est pas stocké et au lieu de cela certains facteurs sont stockés qui peuvent effectuer l'étape de décryptage plus rapidement et avec un empreinte mémoire lors du calcul, la longueur de la clé privée complète est donc beaucoup plus petite.

1
IllusiveBrian