web-dev-qa-db-ja.com

mifareカードの信頼性の確保、クローン作成からの保護

私は、クライアント用のバウチャーカードの発行と取得のワークフローを設計しています。カード用に選択されたテクノロジーは不幸なものでした。

私はクレジットカードでの経験が豊富で、可能な限りPOSフレンドリーなテクノロジにしたいので、取得プロセスをできるだけ簡単にして、既存のPOSアプリケーションワークフローにプラグインできます。

また、HSMは本当にクレジットカード中心のHSMの1つであるため、非常に安全なロックダウンHSMを使用することによるセキュリティ上の利点を維持したい場合は、「業界標準」の暗号化を使用する必要があります。

カードが閉ループになっている私は、発行および取得プロセスのすべてのコンポーネントを完全に制御しています。私の素朴な最初のアイデアは、カードにトランザクションの署名を生成させることでしたが、カードコマンドの仕様を見ると、これに実際に対応するものはなく、暗号化された通信を備えたデータストアにすぎません。

したがって、答えは「チャネル暗号化ルークを使用する」かもしれませんが、この暗号化はPOSとデバイスの間で行われる必要があります。つまり、非接触スワイプ(悪いモバイルインターネットなど)の期間中にPOSがオンラインコールを行う必要があります。または、POSはカードキーを知る必要がありますが、それはいいことではありません。

だから私の質問は、私は本当にそれを正しく理解していたのかということであり、これを取得するためにセキュリティを確保する唯一の方法は、

  1. pOSネットワークと秘密を共有する
  2. pOSが安全なメッセージを交換するホストへのチャネルのように動作するようにしますが、これがオプションかどうかはわかりません

何か不足していますか?

1
bbozo

確かに、私は何も欠落していませんでした、唯一のオプションは本当にです:

  1. 発行スキームのマスターシークレットキーをPOSネットワーク全体で共有する(基本的なアイデア)
  2. サーバー側のHSMを使用してNFC通信用のセッションキーを作成します。つまり、POSとサーバーは、POSができるように、スワイプ中にAPI要求/応答サイクルを交換する必要があります。カードで認証する

明らかに、Mifareは低コスト、低リスクのソリューションとして設計されました。壊れた場合、攻撃者は破壊するよりも価値を下げることができ、この役割では非常に安全です。

他のテクノロジー(例 https://en.wikipedia.org/wiki/Java_Card )を使用すると、より安全で堅牢なワークフローを実行でき、それに一致する価格タグが付いています。


[〜#〜] edit [〜#〜]最後に、サーバーサイドAPIを選択しました

  1. サーバーコンポーネントはHSMを介してカードキーにアクセスでき、
  2. card-challenge文字列でchallenge-response文字列に応答できます
  3. 同じAPI応答で、セッションキーをアプライアンスに送信します
  4. 同様に、セッションキーは同じ種類のテクノロジを使用して保護されますPINブロックはセキュリティで保護されます(セッションキー、DUKPT、アプライアンス上のキーの安全なストレージ)。

ここで、「アプライアンス」は「Mifareカードに話しかけるアプライアンス」です。最終結果は「十分に良い」と思われます。

  1. 個々のカードマスターキーはアプライアンスで共有されません。ほとんどの実装は、何らかの方法で共有するためにカードマスターキーに依存しており、これは私のユースケースではノーゴーです
  2. 通信を実現するためにクラウド内のHSMに必要なAPI呼び出しは1つだけです-私が見た他の実装のほとんどは、完全なパススルーcard <-> HSMを実行します。私のユースケースではノーゴーです
  3. 最悪の場合、攻撃者は個々の交換のセッションキーを把握できます。これは、PCI業界で同じ種類の暗号化保護PINブロックを突破できた場合に限ります。

これが私が必要としているもののスイートスポットだと思います。

0
bbozo

DESfire EV1は安全(2008年以降)と見なされ、複製できません。 NXPから直接購入してください。秘密鍵はカードを離れることがないため、盗聴することはできません。 UIDは無関係であり、ランダムに設定すると、中程度のスキルを持つ俳優であっても混乱する可能性があります。

DESfireカードを処理するためのコードへのリンクは次のとおりです(Teensy 3.2では、Arduinoのわずかに簡略化されたC++を使用します)。

リンク: https://www.codeproject.com/Articles/1096861/DIY-electronic-RFID-Door-Lock-with-Battery-Backup

抜粋:Mifare Desfire EV1カード2009年に次の世代が市場に登場しました。MifareDesfire EV1カードは再び改良され、今日まで攻撃は知られていません。したがって、Desfire EV1カードを使用する場合、ステンレス鋼の財布は必要ありません。 Desfire EV1カードの購入はより困難です。オファーはそれほど多くなく、安価なものでは50、100、または500枚のカードを購入する必要があります。また、RyscCorpとSmartcard Focusの2つの会社も販売量が少ないことがわかりました。 eBay経由で販売しているSmartcard Americaから注文することもできますが、その配送料は他の国に比べて非常に高くなります。 eBayで中国からの偽造品に注意してください:中国のクローンが元のNXPカードと同じセキュリティ基準を満たしている保証はありません。比較Mifareクラシック<-> Desfire MifareクラシックMifare Desfire EV1一意の識別子4バイトのUIDは常に暗号化せずに読み取ることができます7バイトのUIDは通常モードでは常に暗号化せずに読み取ることができますが、ランダムIDモードではPICCマスターキーが必要です。 EEPROMストレージ1kBメモリのカード:各16バイトの4ブロックの16セクター(ブロックとセクターは固定サイズ)最大28のアプリケーションにそれぞれ最大32の可変サイズのファイルを含めることができます各セクターは2つで保護できます。キーごとに異なるアクセス許可を持つキー(キーAおよびキーB)各アプリケーションは、キーごとに異なるアクセス許可を持つ最大14の異なるキーで保護できます。暗号化独自仕様(暗号1、48ビット)DES( 56ビット)、2K3DES(112ビット)、3K3DES(168ビット)、AES(128ビット)セキュリティ暗号化は2008年にクラックされました今日攻撃は確認されていませんクラシックカードは完全に静的ですが、Desfireカードはデータを動的の「ファイル」に保存します「アプリケーション」に含まれるサイズ。アプリケーションとは?アプリケーションはファイルのコンテナにすぎません。大学の学生に発行されたRFIDカードを想像してください。同じカードを使用して、学生は食堂で食べることができます。この例では、2つの独立したアプリケーションがあります。カード上のもの:1つの食堂アプリケーションと1つの駐車アプリケーション。学生は、対応するアプリケーションのファイルに保存されている昼食代と駐車料金を請求できます。各アプリケーションには、それぞれのアプリケーションに格納されている値を変更できる1つまたは複数の暗号化キー(アプリケーションキー)があります。各キーには、読み取り権限のみ、書き込み権限のみ、またはその両方を設定できます。さらに、カードには別の重要なキーがあります。PICCマスターキーは「神のキー」です。 PICCマスターキーを使用すると、アプリケーションを作成および削除したり、各アプリケーションにキーを割り当てたり、カード全体をフォーマットしたりできます。しかし興味深いことに、PICCマスターキーは、アプリケーションに保存されているデータにアクセスできません。食堂もパーキングデッキもPICCマスターキーを知りません。彼らは、対応するアプリケーションにのみアクセスでき、アプリケーションの外部にはアクセスできません。

0
user400344