2017-05-23 12 views
4

JavaCardのUtil。*機能が通常サイドチャネルに耐性があるのか​​どうか疑問に思っています。
サイドチャネルに耐性のあるUtil。*機能を持つJavaCardがいくつか存在しますか?
私はいくつかの公開JavaCardセキュリティターゲットを調べました。しかしどちらも、Util。*関数のセキュリティ要求はありません。Util。*機能はJavaCard側チャネルに耐性がありますか?

ネイティブコードの助けを借りずにJava自体のサイドチャネル抵抗を実現することは、不可能ではないにしても、難しいようです。したがって、JavaCardにはサイドチャネルに耐性のあるUtil。*機能が必要です。

答えて

3

いいえ、私はそういうものは見たことがないと思います。

  • arrayCopy(byte[] src, short srcOff, byte[] dest, short destOff, short length)
  • arrayCopyNonAtomic(byte[] src, short srcOff, byte[] dest, short destOff, short length)
  • arrayFill(byte[] bArray, short bOff, short bLen, byte bValue)
  • arrayFillNonAtomic(byte[] bArray, short bOff, short bLen, byte bValue)

コピーおよび動作は、一般的に配列内のビットを使って何をしていない入力します。しかし、少し必要があるように思われます。それらはバイトをコピーまたは置換しますが、内容はバイトに関係なくになります。 EEPROMまたはフラッシュレベルでのみリークが発生する可能性があります。これはJava Cardレベルでは解決されません。

警告:データの誤ったコピーは避けてください。永続メモリに書き込むと、特に情報が漏れる可能性があります。


  • getShort(byte[] bArray, short bOff)
  • makeShort(byte b1, byte b2)
  • setShort(byte[] bArray, short bOff, short sValue)

今、これらの機能は、基本的にはどちらかのバイトの内容を考えていません。彼らはちょうど正しい位置にメモリの値をコピーまたはシフトするだけで、の内容にかかわらず、再びになります。

コピー機能とショートハンドリング機能の両方について、理論的にはサイドチャネル攻撃に対して安全ではない機能を作成することができますが、一般的に安全でなければなりません。


  • arrayCompare(byte[] src, short srcOff, byte[] dest, short destOff, short length)

今、この1は、サイドチャネル攻撃を避けるために、特定のプログラミングを必要とします。

現在、arrayCompareのサイドチャネルセキュアバージョンはありません。 3.0.5のように厄介なのですSensitiveResultを使って配列の比較結果を安全にする機能を提供します。

これは、となるはずですが、今は自分でプログラミングすることに悩まされている可能性があります。

もちろん、特定のベンダーがこの呼び出しを保護する場合があります。それは意味をなさないでしょう。しかし、特定のベンダー機能に依存することで、アプレットの実装間での移植性が低下します。データアクセスが攻撃し、プラットフォーム固有の緩和策に対して脆弱であれば、どのよう


は、ご使用のプラットフォームのマニュアルを参照してください。

+0

あなたはタイミング攻撃だけを念頭に置いていたと思います。電源漏れはどうですか?ここで、コピーはハミング距離を漏らす可能性があります。 – Cryptostasis

+0

ご迷惑をおかけして申し訳ありません。私はネイティブスピーカーではないので、「あなたは最も基本的なレベルでは解決できないでしょう」という文章を理解していません。 「最も基本的なレベル」とはどういう意味ですか? – Cryptostasis

+0

それは明確ではありませんでした。つまり、情報がそのレベルで漏洩していないことを確認するために、ハードウェアまたはHALレベルのサポートが必要でした。 –

関連する問題