2017-09-09 9 views
1

Ich denke, binäre modulare Exponentiation von links nach rechts in Javacard zu implementieren.Von links nach rechts binäre modulare Exponentiation in Javacard

Ich weiß, dass es Bibliotheken gibt, die RSA-Verschlüsselung usw. durchführen können, aber in meinem Fall muss ich nur die modulare Exponentiation durchführen.

Das einzige, was ich verwirrt bin, ist, dass es eine Beschränkung der Verwendung der Datentypen gibt, da Javacard höchstens den Int-Datentyp akzeptiert. Aber in meinem Fall könnten die Zahlen auch doppelt sein.

Es ist immer noch möglich, diesen Algorithmus mit Javacard API für die großen Zahlen zu implementieren.

Antwort

2

Modulare Exponentiation im Allgemeinen kann durch rohe RSA (RSA ohne Auffüllung) oder Diffie-Hellman-Berechnungen auf einer Java-Karte verwendet werden. Auf diese Weise kann der Coprozessor, der normalerweise bei High-End-Java-Card-Implementierungen vorhanden ist, direkt verwendet werden. Eine hardwaregestützte Montgomery-Berechnung im kryptografischen Koprozessor übertrifft alle spezifischen Berechnungen durch einen großen Spielraum. Berechnungen mit sehr großen Zahlen sind aufgrund von Effizienzproblemen mit einem Low-End-Prozessor nicht möglich.

Normalerweise ist int in Java Card-Implementierungen nicht verfügbar - nur weil die gesamte Java Card API int nirgends verwendet. Das geht doppelt für double, da der Prozessor extrem unwahrscheinlich ist, einen Gleitkommaprozessor (FPU) zu enthalten. Im Allgemeinen sind Sie mit (unterzeichneten) short Werten fest. Natürlich können Sie jede Art von Berechnungen mit short durchführen - siehe meine Antwort here - aber es wird weder schön noch schnell sein.

Am Ende ist die Java Card Subset von Java leicht eine Turing-complete machine. Also ja, alles ist möglich, bis Ihnen die Erinnerung oder - ja - die Zeit ausgehen.

Beachten Sie, dass Sicherheitsmaßnahmen einige Tricks wie rohe RSA für generische modulare Arithmetik unmöglich machen können. Ich würde empfehlen, DH zuerst zu versuchen und tief in die Handbücher zu graben, um herauszufinden, was die Anforderungen Ihrer speziellen Plattform sein können.

Verwandte Themen