web-dev-qa-db-ja.com

「Mifare DESFire EV1」スマートカードのリーダーは、カードを認証するために本当にカードの秘密鍵を知っている必要がありますか?

アクセス制御と支払いに使用される非接触型スマートカードシステムのセキュリティを理解しようとしています。カードはMifare DESFire EV1実装ISO 1444です( このドキュメントコレクションを参照 )。

スマートカードから秘密キーを抽出することを目的としたサイドチャネル攻撃について読みました(「 アナログ復調を使用した暗号化RFIDのサイドチャネル分析 」を参照)。彼らは成功しましたが、実行するのはかなり難しいようです。

そのようなカードの認証プロセスを理解しているので、リーダーとカードの両方がチャレンジ/レスポンス手順で秘密鍵の知識を証明する必要があります(プロトコルは公開されていませんが、論文でリバースエンジニアリングされています 3.2章で25 $ の暗号化RFIDカードを複製する。したがって、すべての読み取りデバイスも秘密鍵を知っている必要があります。しかし、多くのベンダーからの多くのリーダーが存在する可能性があります(たとえば、コーヒーマシン、レジにある小さなUSBリーダー、アクセスコントロールパネルなど)、それらすべてに本当に秘密鍵がありますか?キーの保存方法に関する基準はありますか?カードがネットワーク経由で認証される場合もありますが、一部のデバイスはオフラインで動作することがわかっています。

コーヒーマシンのベンダーは一般的にセキュリティをあまり気にしないので、私はそれらが非常に有望な攻撃ベクトルであると思います。攻撃が成功したことを説明する論文はありますか?または、これらのリーダーのいずれかに、キーが同じ方法で格納されている同様のチップがありますか?

19
Beat

MIFARE DESFire EV1は複数のアプリケーション(28)を持つことができ、各アプリケーションは異なるタイプ(4)の複数のファイル(32)を持つことができます。カード自体には、PICCマスターキーと、アプリケーションごとに1〜14個のキーがあります。各アプリケーションのキーは、そのファイルへのアクセスを制御するために使用されます。

カードで使用される各サービスは、異なるアプリケーションである可能性があり、おそらく異なるアプリケーションです。コーヒーマシンのキーが危険にさらされている場合(アプリケーションA)、同じカード内のアクセス制御アプリケーション(アプリケーションB)のキーが危険にさらされているわけではありません。

クレジットを差し引くために1つのキーK1を使用し、DESFire EV1カードにクレジットを追加するために別のキーK2を使用する、カード上のコーヒーマシンアプリケーションを検討してください。あなたがコーヒーを手に入れるために使用し、カードからクレジットを差し引くマシンは、キーK1のみが必要です。クレジットを追加するためにキーK2を持っている必要はありません(他の場所で行われます)。したがって、コーヒーマシンのキーを危険にさらした場合にできることは、カードからお金を取り、クレジットを増やさないことだけです。クレジットを追加するには、そのためのキーが必要です。これは、より安全な環境の別の場所で、おそらくは人間のオペレーターによっても行われる可能性があります。

常に侵害のリスクがありますが、キーを巧妙に使用し、サービスを異なるアプリケーションに分離することで軽減できます。オフラインで作業できるオフィスエリア全体に200台のコーヒーマシンを置いているかもしれませんが、カードを補充するのに必要なのは10台だけで、セキュリティを強化するためにオンラインで行うこともできます。

コーヒーマシンはセキュリティアクセスモジュールを使用してキーを保存できます。彼らがそれをするかしないか、そして彼らがそれを必要とするならば、それは別の話です。

3
Daniel

編集:OK。 「簡単な回答」のリクエストがあるため、ここに「エグゼクティブサマリー」があります。

質問:したがって、すべての読み取りデバイスは秘密鍵も知っている必要があります。しかし、多くのベンダーからの多くのリーダーが存在する可能性があります(たとえば、コーヒーマシン、レジにある小さなUSBリーダー、アクセスコントロールパネルなど)、それらすべてに本当に秘密鍵がありますか?キーの保存方法に関する基準はありますか?」

回答:「はい。リモート/サーバーが開始するDESFireカードとの通信以外に、すべてのリーダーは秘密鍵も知っている必要があります。そして、はい–キーの保存方法に関する標準があります– Secure Access Moduleの使用– MIFARE SAM(現在はAV2モデル)。

以下のすべてのコンテンツは、興味がない場合は忘れることができます;)

基本的に、MIFAREカードには、MIFARE ClassicとDESFire(および同様の派生物)の2つのファミリーがあります。さらに、MIFARE Plusがあり、最初はMIFARE Classic市場を対象としています(構成する場合は完全にサポートします)。さらに2つのセキュリティ操作モードがあり、これにより、MIFARE Classicインフラストラクチャのセキュリティがさらに向上します。 DESFire。

それらのMIFAREファミリーの間で使用される多くの認証プロトコルがあり、いくつかは非常に似ていますが、細部が異なる場合があります。そのため、最初は非常に似ていても、読み取りインフラストラクチャが別のプロトコルを処理できないことがあります…

DESFire EV1に関するあなたの質問にとってより重要なことは、リーダー側のセキュリティの基本的なアプローチは、リーダー/ターミナルにセキュリティ関連の機能を提供する特殊なスマートカードである、いわゆる「セキュアアクセスモジュール」(SAM)の使用です。 SAMはすべてのキーを保持し、カードとリーダー間の安全な通信内で使用されるセキュリティプロトコルを実行するエンジンも備えています。これは、DESFire EV1の使用に関するリーダーセキュリティのアンカーです。キーはカードごとに個別に取得することもできるため、カードのすべての認証および暗号化プロトコルに同じキーを使用するわけではありません。ホストから暗号化された追加のプロトコルを使用して、SAMモジュールのキーをフィールドのSAMに安全にアップロードできますORバッチオフラインアップロード(USBスティックなど)による)。

一部のRSAベースのプロトコルも署名/検証でサポートされており、共有キープロトコルを使用せずに一部のアクションが認証されるようにします。

SAMは巧妙に計画されており、セキュリティの面で非常に堅実です。そのため、そのようなSAMモジュールを自動販売機に置くと、必要なすべてのセキュリティがサポートされます。 SAMはホストへの安全なチャネルとカードへの別のチャネルを確立し、「再暗号化プロキシ」を提供することにより、「安全なプロキシ」として機能できるため、リモートホストによって開始されたDESFireカードの変更でも安全に確立できます。途中で。もちろん、SAMは標準的なカードであり、「クライアント」であり、あらゆるコマンド交換であるため、リーダーは参加者間でAPDUを送信、受信、転送することによってこれらのプロトコルをサポートする必要があります。 SAMは、リーダーのチップへの直接接続もサポートし、透過プロキシとして機能します。

2DES、3DES、AES、CRYPTO1、RSA、および標準アルゴリズムの独自仕様のバリアントをサポートしています。

SAMには、「操作カウンター」という賢い概念さえあります。これは、盗まれて頻繁に使用されるというセキュリティの脅威に対処するのに役立ちます。操作ごとにカウンターが減少します。カウンターは、ホストが開始したアクション(オンラインまたはオフライン)によって定期的に増加する必要があります。暗号化および署名された「スクリプト」は、何らかの方法(USBスティックなど)でSAMに送信する必要があります。また、キーをバージョン管理して、システムのライフタイム中にキーの安全なロールオーバーをサポートすることもできます。

SAM自体は、設計されたセキュリティモデルを実施するために、強力な暗号化に基づくアクセス制御ロジックを備えています。慎重に計画および設計されたキー管理スキームは、システムの多くのプレーヤー間の安全なキー配布をサポートします。通常、最初のSAMコンテンツは、安全なSAMパーソナライゼーションと制御された配信によって配布され、指定された参加者(自動販売機ベンダーなど)には、許可されたSAM/DESFireカード操作への初期アクセスを取得するための認証キーがすでにあります。典型的な操作の1つは、認証キーの交換です。これらのキーが特定のプレーヤーにのみ割り当てられている場合です。

UIDへの別のコメント、そのクローン作成など:最新のMIFARE製品は、衝突防止プロトコルで使用されるRandomUIDにアクセスするための個別のコマンドと、カードを識別するための静的UIDをサポートします(オプションで、認証と暗号化プロトコルによって保護され、 「安全なチャネル」)。これは、システムの設計者に、UIDのクローン作成またはエミュレーションに対する保護を強化するための適切なツールを提供します。しかし、多くの「セキュリティデザイナー」はとにかく怠惰であり、それらの可能性が存在していてもそれを使用しません…

5
DARc

私が知っているほとんどのシステムは、実際にネットワーク接続を使用してチャレンジ/レスポンスでカードを認証します。

カードのUIDと保存された値のみを比較するオフラインデバイスをいくつか見ました。ただし、RFIDデバイスをエミュレートするか、特別なカードをフラッシュするだけでこれらのIDをコピーできるため、これは安全ではありません。

オフラインデバイスが有望であることについて、あなたに同意します。私はすでに、既知のUIDを送信するだけでそれらの一部をだましています。 UIDはアンチコリジョンレイヤーですでに送信されているので、プロトコルスタックを深く理解する必要もありませんでした。

あなたがそのことをもっと深く知りたいのであれば、私はいくつかのハードウェアデバイスで遊ぶことをお勧めします。これらの動作を見るのはとても静かです:-)

最先端のソリューションは、PROXMARKです http://hackerwarehouse.com/product/proxmark3-kit/

または、一部のカードをコピーするだけの場合は低予算のソリューション http://www.instructables.com/id/RFID-Emulator-How-to-Clone-RFID-Card-Tag-/

キーリングデバイスもeBayで20ドル未満で見ましたが、現在見つかりません。

3
fr00tyl00p