2017-09-09 3 views
1

私はJavacardで左から右のバイナリモジュラ累乗を実装すると考えています。Javacardの左から右のバイナリモジュール累乗指数

私はRSA暗号化などを行うことができるライブラリがあることを知っていますが、私の場合は剰余演算を行うだけです。

私が混乱している唯一の事は、Javacardが最大でintデータ型を受け入れるように、データ型の使用制限があるからです。しかし、私の場合、数字は2倍になる可能性もあります。

このアルゴリズムは、大きな数字に対してJavacard APIを使用して実装することはできますか。

答えて

2

モジュラ累乗は、一般に、生のRSA(パディングなしのRSA)またはJava CardでのDiffie-Hellman計算によって使用できます。このようにして、一般にハイエンドのJava Card実装に存在するコプロセッサーを直接使用することができます。暗号コプロセッサのハードウェア支援モンゴメリ計算では、非常にの大きなマージンで特定の計算より優れています。非常に多数の計算を行うことは、効率の問題のためにローエンドのプロセッサを使用することさえできません。

通常、Java Cardの実装ではintは利用できません。Java Card API全体がintをどこでも使用していないからです。これは、プロセッサが浮動小数点プロセッサ(FPU)を含む可能性が極めて低いため、doubleでは2倍になります。だから、一般的にあなたは(署名された)short値で立ち往生しています。もちろん、shortを使用してあらゆる種類の計算を実行することができます。私の答えはhereですが、それほど高速ではありません。

JavaのJava Cardサブセットは、簡単にTuring-complete machineです。そう、はい、何かが可能になるまでは、メモリまたは実際には時間が足りなくなります。


セキュリティ対策は、一般的なモジュール式の演算に使用するなど、生のRSAなどのいくつかのトリックを不可能にする場合があります。 DHを最初に試し、マニュアルに深く掘り下げて、特定のプラットフォームの要件がどのようなものかを調べることをお勧めします。

関連する問題