web-dev-qa-db-ja.com

マイクロペイメントのmifareクラシック1k

Mifare Classic 1kを安全な方法でマイクロ決済に使用できますか?

アーケードゲームサロンで使用するシステムを考えています。レジ係からカードを取得していて、たとえば100ポイントでカードをチャージできます(データベースにはなく、IDのみを使用してカードに書き込まれます)。次に、各マシンに移動し、リーダーでカードをスキャンすると、ポイントが減り、残ったポイントが液晶に表示されます。

したがって、カードをスキャンするたびに新しいデータが書き込まれ、その整合性がチェックされます。

これは完全に防弾である可能性があり、いくつかのカスタムハードウェアにコピーすることはできませんか?

アーケードゲームでの支払いを受け入れるハードウェアと、追加操作用のソフトウェア/ハードウェアを作成します。

私は、カードの一意のIDのハッシュ(いくつかの秘密のシードを含む)と現在のポイント数を保存し、カードのeeprom内に保存する(もちろんポイント数を含む)ソリューションを考えていました。セキュリティを強化するために、AESまたは3DESブロック内にまとめることができます。キーとハッシュをハードウェア内に保存するので、かなり安全になります。

私の懸念は:

  1. 誰かが書き込み操作中にカードを取得するとどうなりますか?
  2. 誰かがそのカードを一意の識別子とeepromコンテンツを備えたある種のエミュレータにコピーできますか?
  3. 多分、使用する別のルーチンがあります。「読み取り、書き込み、チェック」をしてから、ゲームをオンにしますか?
  4. Mifare DesFire規格はマイクロペイメントソリューション用であると言いますが、カードの方が高価であり、ハードウェアもそうです。しかし、誰かが経験を積んでいて、見た目ほど怖くないかもしれません。
  5. もちろん、誰もがMifareのハードウェア推奨事項を持っています。

任意の入力を感謝します。

3
jldesings.eu

Mifareクラシックは完全に複製できます。 UIDが変更可能なカードを購入することもできます-私はたくさん注文しました。デフォルト以外のキーを必要とするカードのブロックは、安価なハードウェアを使用してPCでクラックされる可能性があります。例:PronmarkまたはAdafruit PN532/Elechouse PN532 V3、libnfcおよび他のいくつかのプログラムを使用。必要なツールはすべてKali linuxに付属しています。

デフォルト以外のキーを必要とするこれらのブロックへのアクセスはまだできていませんが、真剣な努力を払っていないためです。 Desfire EV1(IIRC)は2008年以降のリビジョンであり、これらのカードは安全であると見なされており、複製できません。これが正しくないとわかっている場合は、リンクを提供してください。

多くの場所では、アクセス制御などのためにMifareクラシックタグを使用しています。そのために、より強力ですが、お金を伴うものには、少なくともNXPのDesfire(中国のノックオフはありません)以外は使用しません。

Googleの「mifare classic clone」。

さまざまなソースを読み取ることから、これらのカードからすべてのデータを読み取るには、最大25〜30分かかると思います。デフォルトのキーを使用するカードの場合、1秒もかかりません。 Adafruit PN532(それはまともなアンテナを持っています)は7cmの距離からそれを行うことができます-この範囲はカスタムアンテナで拡大できます。 Desfireは3〜4 cmから読み取ることができます。カードが処理および通信するために必要な電力が大きいほど、スキャナーの範囲は狭くなります。トリビア:アルミホイルの単一の層はこれを防ぎます...「鋼の財布」の必要はありません。標準のクレジットカードホルダーの上にテープを貼って、財布に入れてください。

編集:ペンテスターやエンジニアからの補足情報はOPに役立ちます。 NFC;)についての誤解を修正してください

3
user400344

このようなスキームを使用できます。ただし、注意すべき点がいくつかあります。

カードUID +金額のハッシュとともに金額をカードに保存すると、カードから別のカードに金額をコピーできなくなります。

ただし、ユーザーがカードデータを読み取ったり、ゲームでカードを使用したり(つまり、金額を減らして)、後で以前のカードデータを書き換えて初期の金額に戻したりすることを妨げるものではありません。これを防ぐには、承認された端末(ゲーム機)のみがカードに書き込みできるようにする必要があります。

Mifareは、カードにカスタムキーをロードできるようにすることでこの問題を解決します。これにより、セクターの読み取りや書き込みから保護されます。これらのキーは、マシンによって認識されている必要があります。

カードのエミュレーション/複製を防ぐために、カードにカスタムキーをロードすると、この問題も解決されます。端末はトランザクションの前にカスタムキーで認証する必要があるため、カードが本物であることを確認します。この時点では、カードに金額+ UIDのハッシュを保存する必要はありません。金額が別のカードに転送されないことを保証する必要があります。これは、信頼できるマシンだけが本物に読み書きできるためです。カード。

したがって、Mifareセクターのキーとアクセスビットを適切に設定すれば、ほとんど問題ありません。ゲームマシンのハードウェアも保護する必要があります。そのようなマシンにアクセスできるハッカーは、カードに格納されている量を変更する方法を見つける可能性があるためです。

次に、詳細な質問について:

  1. 書き込み中にカードが引き出された場合、Mifareクラシックでは保証はありません。つまり、セクターが破損する可能性があります。これを防ぐために、複数のセクターにデータを書き込み、カードを再度読み取るときに整合性チェックを行うことができます。また、お客様との紛争が発生した場合に備えて、マシン内のカードイベント/データの詳細なトレース/ロギングをお勧めします。

  2. 上記のアドレス(mifareキーとアクセス条件を適切に設定した場合、カードはコピー/エミュレートできません)。

  3. 私はむしろ、ゲームを読んで、チェックして、書いて、電源を入れたいと思います。カードの完全性を事前に確認することなく、カードに何も書き込まないでください。しかし、それ以外の場合は問題ありません。

  4. Mifare DESFireには、実際にニーズに合ったクレジット/デビットコマンドがあります。これらのコマンドで許可されるのは、マシン周辺のセキュリティ要件を緩和することです。従来のアプローチでは、マシンのハードウェア/ファームウェアがハッキングされた場合、詐欺のリスクが生じます。ただし、カードが実際にデビット/クレジットを実行できるようになれば、このリスクを軽減できます。それが価値があるかどうかを確認するのはあなた次第です。

  5. それがあなたが求めていたものかどうかはわかりませんが、もちろん、NXPには、Mifareターミナルの設計に使用できる既成の chips があります。

お金の「保管」のための合理的に安全な唯一の選択肢は、カードをGUIDのやや安全なコンテナとしてのみ扱い、実際の残高の検証と変更を一元的に処理することです。

EMVクレジットカードの標準ポリシーがオフライン購入(ある場合)を20ドルの累計に制限することがよくあるのには理由があります。非常に多くの異なる攻撃シナリオがあり、はるかに安全な(そして高価な)チップを使用している場合でも、リスクが十分に低くない限り、オフラインシステムを安全に保つことができません。

人々が数時間のエンターテインメントに前払いできるという意味で「アーケードゲームサロン」である場合、リスクは低く、非技術的な手段でそれらを軽減することができます(アーケードで人がこれまでに12時間も過ごしたことがありませんか)カードを補充するか?)、しかしそれが例えばギャンブルと獲得可能な賞金は、まったく別の問題です。

0
Peteris