2017-09-09 5 views
1

Je pense à implémenter l'exponentiation binaire modulaire de gauche à droite dans Javacard.De gauche à droite exponentiation binaire modulaire dans Javacard

Je sais qu'il existe des bibliothèques qui peuvent effectuer le cryptage RSA, mais dans mon cas, je dois juste effectuer l'exponentiation modulaire. La seule chose que je suis confus est qu'il y a une restriction d'utilisation des types de données car Javacard accepte au plus le type de données int. Mais dans mon cas, les chiffres pourraient également être en double.

Il est toujours possible d'implémenter cet algorithme en utilisant l'API Javacard pour les grands nombres.

Répondre

2

L'exponentiation modulaire en général peut être utilisée via des calculs RSA (RSA sans rembourrage) ou Diffie-Hellman sur une carte Java. De cette façon, le coprocesseur - qui est généralement présent sur les implémentations Java Card haut de gamme - peut être utilisé directement. Un calcul de Montgomery assisté par matériel dans le coprocesseur cryptographique dépassera tous les calculs spécifiques par une grande marge très. En effectuant des calculs sur de très grands nombres, il n'est même pas possible d'utiliser un processeur bas de gamme en raison de problèmes d'efficacité.

Généralement, int n'est pas disponible dans les implémentations Java Card - si ce n'est que parce que l'API Java Card entière n'utilise pas int n'importe où. Cela va double pour double car le processeur est extrêmement peu susceptible de contenir un processeur à virgule flottante (FPU). Donc généralement vous êtes coincé avec (signé) short valeurs. Bien sûr, vous pouvez effectuer n'importe quel type de calculs en utilisant short - voir ma réponse here - mais ce ne sera pas joli ni rapide. En fin de compte, le sous-ensemble Java Card de Java est facilement Turing-complete machine. Alors oui, tout est possible jusqu'à ce que vous manquiez de mémoire ou - en effet - de temps. Notez que les mesures de sécurité peuvent rendre certaines astuces telles que le RSA brut impossible à utiliser pour l'arithmétique modulaire générique. Je recommanderais d'essayer d'abord DH et d'approfondir dans les manuels pour savoir quelles sont les exigences de votre plate-forme particulière.