12

Android 4.4 では、ホストベースのカード エミュレーション (HCE) が導入されました。ご存知のように、すべての NFC カードには固定のカード ID ( NfcAdapter.EXTRA_ID) が付属しています。

私のオフィスのドア アクセスは、通常、認証のために NFC カード ID を検出します。携帯電話を KitKat にフラッシュした後、アクセス リーダーで携帯電話をスキャンしようとしました。しかし、画面がオフになり、再びオンになるたびに、別のカード ID が取得されます。

電話の画面をオンにしたまま、エミュレートされたカード ID をドア アクセス システムに登録してみました。なんとかドアを開けるためのアクセスを許可しました。ただし、画面がオフになり、再びオンになると、これは機能しません。

KitKat が HCE モードを導入して以来、私は携帯電話を使用してドア アクセス カードをエミュレートしようと試みてきました。

電話でエミュレートされたカード ID を修正するためのアイデアはありますか?

4

4 に答える 4

15

これは (少なくとも公式の API では) 不可能です:

交換の最初の部分で、HCE デバイスはその UID を提示します。HCE デバイスは、ランダムな UID を持つと想定する必要があります。これは、タップするたびに、リーダーに提示される UID がランダムに生成された UID になることを意味します。このため、NFC リーダーは、認証または識別の形式として HCE デバイスの UID に依存するべきではありません。

( http://developer.android.com/guide/topics/connectivity/nfc/hce.html#ProtocolParams )

于 2013-11-11T12:14:23.027 に答える
12

HCE を担当する Google 開発者の 1 人によると、次のように述べています。

申し訳ありませんが、多くの人がこれを望んでいたことは承知していますが、正式版では不可能です。(もちろん、AOSP ハッキングでそれを行うこともできます)。その理由は、HCE がバックグラウンド操作を中心に設計されているためです。アプリが UID を設定できるようにすると、すべてのアプリが独自の UID を設定する可能性があり、競合を解決する方法はありません。HCE では、NFC インフラストラクチャがプロトコル スタックのより高いレベルに移行し、UID (とにかく簡単に複製できる) に依存する代わりに認証を行うことを願っています。

于 2013-12-17T00:23:05.127 に答える
2

可能です。静的 UID を取得するには、少なくとも 2 つの方法があります。

  1. ストック ROM を実行しているときに、すべての電話機がランダムな UID を表示するわけではありません。LG G3、Xiaomi Mi 3、Mi Mix 2s など、静的な UID 01:02:03:04 を持つ電話もあります。しかし、その後、これらの電話のいずれかを持っている人は誰でもあなたの部屋に入ることができました.

  2. Google Play ストアの Card Emulator Pro を使用すると、任意の UID をエミュレートできます。画面がオフのときに UID が維持されるように切り替えることもできます。

UID のみに依存するシステムは安全ではありません。暗号化されたシステムを使用することをお勧めします。

于 2020-01-18T20:33:50.547 に答える