3

Java Card アプレットにバグがあるとします。一時的なバイト配列が RAM ではなく EEPROM に保存されます。さらに、このバイト配列は APDU ごとに上書きされるとします。

このバグは、遅かれ早かれカードを損傷するはずです。

どのような症状が予想されるでしょうか? 明示的な警告やエラーがなくても、配列内の値が正しくありませんか? この配列にアクセスするときにいくつかの例外がスローされましたか? アプレットが選択できない?カード全体が完全に応答しませんか?

カードは「一度だけ永久に」破損する必要がありますか?それとも、これらの障害がますます頻繁に発生するのでしょうか?

私の実験 (J2E145) では、5 000 000 APDU の後に最初の障害が発生し、その症状は、カードが R-APDU をまったく送信せず、単に停止したというものでした。しかし、次の APDU は再び OK になり、その後 10000 回のうち約 1 回の APDU が失敗し (頻度は増加)、最終的に 5 100000 回の APDU の後、カードは完全に通信を停止しました。

EEPROM が損傷した場合に何が起こるべきかを示す標準はありますか? (探しましたが、見つかりませんでした。)

質問が広範であり、おそらく特定のチップに依存していることは承知していますが (私は特に NXP チップに興味があります)、あなたのコメント、回答、および経験は、展開後にコードにバグを発見した多くの Java Card 開発者に役立つと思います。

4

2 に答える 2

3

NDA が適用されていない情報を見つける最善の方法は、特定のプラットフォームの Common Criteria セキュリティ ターゲットであると思います。

NXP のハードウェア プラットフォームの例: NXP セキュア スマート カード コントローラ P5Cx128V0A/P5Cx145V0A、MSO (BSI-DSZ-CC-0645)

  • TOE 概要から:

    不揮発性 EEPROM [...] には、データの完全性を保証する信頼性の高いセルが含まれています。[...] セキュリティ機能により、すべてのメモリの内容が保護されます。

  • セキュリティ機能 SF.OPC から:

    [...] 単一障害挿入検出回路によって例外が強制されます。マイナー コンフィギュレーション オプション「Inverse EEPROM Error Correction」が有効になっている場合 [...] フォールト挿入エラーを検出する確率が高くなり、エラー検出時にエラー修正ロジックによって例外が発生します。

  • セキュリティ機能 SF.PHY から:

    EEPROM は、各バイト内の 1 ビット エラーを訂正できます。[...] EEPROM は、ユーザーの操作なしで自動的にエラーを修正します [...]

したがって、このハードウェア プラットフォームは EEPROM セルの障害を検出することができ、各バイト内の 1 ビット エラーを自動的に修正することさえできます。検出された他のすべてのエラーについては、ソフトウェアで処理できる例外が発生します。

これはハードウェア プラットフォーム用です (OS / JCRE なし)。では、JCOP のセキュリティ ターゲットが何を示しているか見てみましょう。私はNXP J3A128 と J3A095 Secure Smart Card Controller Rev. 3 (BSI-DSZ-CC-0731)を選びました。

  • セキュリティ機能 SF.Audit から:

    TSP の潜在的な違反の兆候に基づく TOE による以下の対応が可能です。

    • 例外をスローする
    • カードを終了します (ライフサイクル状態: TERMINATED)
    • Java Card システムの再初期化 (ウォーム リセット)
    • [...] EEPROM は、各バイト内の 1 ビット エラーを修正できます。[...] EEPROM は、ユーザーの操作なしで自動的にエラーを修正します [...]
    • カード セッションをロックします (単に処理を停止します。セッションのリセット/カード ティアリングでエスケープします)。

    これらのタイプの応答/反応に基づいて、上記のイベントは次のようにマッピングされます。

    • 読み取り/書き込み操作と一貫性/完全性チェックの例外によって監査される EEPROM 障害:ロック カード セッション
    • 起動時のセルフ テスト メカニズム:カード セッションのロック
    • チェックサム オブジェクトの破損:カード セッションのロック
  • セキュリティ機能 SF.SecureManagement から:

    TSF は、最初の起動時 (各電源投入時) に一連のセルフテストを実行して、TSF の正しい動作を実証し、TSFデータの完全性を検証し、保存された TSF 実行可能コードの完全性を検証します。これには、EEPROM の整合性のチェックが含まれます。エラーが検出された場合、TOE はセキュアな状態 (カード セッションのロック)に入る

    TSF は、ユーザー データ D.APP_CODE、D.APP_I_DATA、D.PIN、D.APP_KEYの完全性エラーを監視します。エラーが発生した場合、TSFはセキュアな状態を維持します (カード セッションのロック)。

そのため、このソフトウェア プラットフォームは (再び) EEPROM セルの障害を検出でき、各バイト内の 1 ビット エラーを自動的に修正することさえできます。検出された他のすべてのEEPROM エラーについては、「カード セッションをロック」します。つまり、単に処理を停止してリセットを実行します。これは、「症状は、カードが R-APDU をまったく送信せず、単に停止した」という観察と一致するようです。

于 2015-06-05T08:17:54.250 に答える
3

ネイティブオペレーティング システムの図: 新しい値を不揮発性メモリに書き込む場合、ハードウェア ルーチンは、値が正しく書き込まれたかどうかを自動的にチェックし、そうでない場合はエラー ステータスを返します。これは 65 81 の SW1/SW2 に変換されます。影響を受けるファイルまたはオブジェクトは破損しているとマークされ、それ以降のアクセス試行は完全に拒否されます。アプリケーションにとって不可欠な場合、これは機能しなくなります。

私の記憶が正しければ、私たちのハードウェア (非 NXP) は、今回は値を正しく書き込むことができましたが、メモリ セルが限界に達しようとしていることを示す事前警告さえ発行します。

于 2015-06-04T20:39:31.023 に答える