Taille de la sortie de cryptage RSA
Quelle est la taille de sortie de cryptage RSA lorsque vous utilisez la clé de 2048 bits (en utilisant pkcs1padding). Est-ce toujours 256 octets indépendamment de la taille de l'entrée? comment puis-je calculer pour d'autres tailles de clé?
3 réponses
Oui, il est.
sortie-tailledevrait égale toujours la taille du Modulus
(partie de la clé), donc:
2048 bit Modulus -> 2048 bit output
1024 bit Modulus -> 1024 bit output
...
Si elle n'est pas, il existe de nombreuses attaques sur RSAici pour les informations de base à ce sujet.
donc pour garantir que le sortie2048 bit
même quand le entrée pour chiffrer est, disons 7
,
un rembourrage doit toujours être appliqué!
La sortie (entier) de RSAEP (RSA encryption primitive) est toujours entre 0 et n:
Si le message représentant m n'est pas entre 0 et n-1, sortie message représentant hors de portée et stop.
Laissez-c = m^e mod n.
Sortie c.
bien sûr, c
un nombre. Donc vous devez le convertir en d'octets pour être utilisable. La seule chose connue sur c
c'est qu'il est plus petit que n
pour une grande valeur de m
. Il se peut que c
est quelques octets de plus petits, même si m
est grande.
vous avez mentionné PKCS1Padding, qui fait partie de la RSAES-PKCS1-V1_5-ENCRYPT schéma de chiffrement. Le rembourrage fera en sorte que m
est toujours grand et aléatoire; les exigences pour le cryptage RSA pour être sûr.
Vous aurez trouver que l'encodage de c
est spécifié dans:
...
Étape 4: convertir le représentant de chiffrement c en un chiffrement C de longueur des caractères: C = I2OSP (c, k)
...
où k est la taille du module en octets (bytes).
oui, la réponse est toujours:k
, la taille du module en octets. Tout simplement parce que la norme exige d'elle de cette façon. C'est une valeur codé comme unsigned big endian numéro avec le préfixe autant de zéro octets requis.
Notes:
le module size définit la taille de la clé. Ainsi, la sortie d'un cryptage RSA est la même que la taille de la clé:
ceil(keySize / 8.0)
en utilisant des flotteurs ou(keySize + 8 - 1) / 8
utilisant des entiers.RSA avec oaep padding utilise la même technique, de sorte que la réponse est correcte pour OAEP aussi bien (et la plupart des autres, moins connus schémas tels que RSA-KEM).
de nombreuses routines de bibliothèque qui effectuent des RSA "raw" (juste exponentiation modulaire du message avec l'exposant public) effectuent toujours la fonction I2OSP - mais mieux vérifier pour être sûr.
la taille de sortie de RSA simple (en utilisant un certain schéma de remplissage, mais non chiffrement hybride) est toujours la taille de la clé. La raison en est que pour quelque clé publique n
le résultat est un certain entier c
0<=c<n
. Il y a beaucoup d'introductions pour RSA, par exemple http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-045j-automata-computability-and-complexity-spring-2011/lecture-notes/MIT6_045JS11_rsa.pdf