Online Store

NDEF Detection and Access – MIFARE Classic & MIFARE Plus タグ

NDEF の検出とアクセス #

この章では、NDEFデータ(NDEFメッセージなど)をMIFAREクラシックおよびMIFAREプラスタグに保存およびアクセスする方法について説明します。

このアプリケーションノートがMIFAREクラシックおよびMIFARE Plus内で管理するNDEFメッセージは、必須のNDEFメッセージTLVまたは最初のNDEFメッセージTLVと呼ばれるNDEFメッセージTLV内に保存されます。 必須の NDEF メッセージ TLV は、NDEF 検出手順で検出された NDEF メッセージ TLV でもあります( セクション 1 を参照)。4.1)。

NDEF マネジメント #

MIFAREクラシックおよびMIFARE Plusタグ内のNDEFデータ(NDEFメッセージなど)を検出してアクセスするには、NFCセクターのGPBと一緒にMADを使用する必要があります( セクション2.4を参照)。

NFC AIDと呼ばれるMADのアプリケーション識別子(AID)は、NDEFデータを持つセクターを識別するために予約されています。 NDEFデータを持つセクターはNFCセクターと呼ばれます。 NFC AID の 2 つのフィールドは次のように設定されます。

関数クラスタコードは、NDEFデータを持つセクターのクラスタを識別するためにE1hと等しく、

アプリケーションコードは、このアプリケーションノートが関連するNFCセクターを識別するための03hに等しくなります。

1つ以上のNFCセクターがMIFAREクラシック1k / 4kタグ内に存在する可能性があります。

複数のNFCセクターが存在する場合、NFCセクターは連続しているものとします。 4キロバイトのMIFAREクラシック4kまたはMIFARE Plusの場合、MADセクター16を含むNFCセクターのシーケンスが連続していると見なされるものとします。

隣接するNFCセクターの例は次のとおりです。

  • セクター2からセクター3までのNFCセクター、および
  • セクター1からセクター39までのNFCセクター。 この場合、MADセクター16が含まれていますが、上記のように、NFCセクターは連続していると見なされます。

連続していないNFCセクターの例は次のとおりです。

  • セクター 3 とセクター 4 のないセクター 5 は NFC セクターです。 この場合、4 は NFC セクターではないため、残りの 2 つの NFC セクターは連続していません。

NDEF データは、最小のセクター番号を持つ NFC セクターから最大のセクターまで書き込まれるものとします。

各NFCセクターの汎用バイト(GPB、セクション2.1およびセクション2.3を参照)は、NDEFデータをMIFAREクラシックおよびMIFARE Plusに保存するために使用されるマッピングモデルのバージョン番号に関する情報を提供します(セクション1を参照)。 1.1)およびNFCセクターの書き込みアクセス。 GPB は 、表 1 に示すようにコーディングする必要があります。

1. 汎用 バイト構造

MSB ビット 7  ビット 6  ビット 5  ビット 4  ビット 3  ビット 2  ビット 1 LSB ビット 0
バージョン番号のマッピング アクセス条件
メジャーバージョン番号 マイナー バージョン番号 読み取りアクセス条件 書き込みアクセス条件

GPB の 4 つの最下位ビット (lsb) は、NFC セクターのアクセス条件を示します。

  • ビット 2-3 は、読み取りアクセス条件を示します。
    • 値 00b は、セキュリティなしで許可された読み取りアクセスを示します。
    • 値 11b は、読み取りアクセス権がまったく付与されていないことを示します。
    • その他の値は、ベンダーのセキュリティ操作が読み取りアクセス権、つまり独自のアクセス権を付与するために必要であることを示します。
  • ビット 0-1 は、書き込みアクセス条件を示します。
    • 値 00b は、セキュリティなしで許可された書き込みアクセスを示します。
    • 値 11b は、書き込みアクセス権がまったく付与されていないことを示します。
    • その他の値は、ベンダーのセキュリティ操作が書き込みアクセス権、つまりプロプライエタリを付与するために必要であることを示します。

最上位 4 ビット (msb) は、マッピングのバージョン番号を示します ( セクション 1.1.1):

  • ビット 7-6 (マッピング バージョン番号フィールドの 2 msb) は、メジャー バージョン番号を示します。
  • ビット 5-4 (マッピング バージョン番号フィールドの 2 lsb) は、マイナー バージョン番号を示します。

MIFAREクラシックおよびMIFARE Plusタグ内では、必須のNDEFメッセージTLVを含むNFCセクターは、00hに等しい読み取りアクセス条件と00bまたは11bのいずれかに等しい書き込みアクセス条件で設定されるものとします( セクション1を参照)。3)。

このアプリケーションノートを実装するリーダーデバイスは、メジャーバージョン番号が01b、マイナーバージョン番号が00bのMIFAREクラシックおよびMIFARE Plusタグ、つまりマッピングバージョン1.0を管理する必要があります。

バージョン処理 #

NFCセクターのGPBには、MIFAREクラシック1k / 4kまたはMIFARE Plusタグの適用されたマッピングモデルのマッピングバージョン番号が含まれています。 マッピング バージョン番号は、メジャー バージョン番号とマイナー バージョン番号の 2 つの番号で示されます。

MIFARE クラシックまたは MIFARE Plus タグ (MSVNo と呼ばれる) とリーダー デバイスに実装されているもの (NFCDevVNo と呼ばれる) の異なるメジャー バージョン番号とマイナー バージョン番号の処理については、 12 の 4 つのケースで説明します。

12. マッピング文書のバージョン番号 の処理

いいえ バージョン番号の大文字と小文字 処理
1 メジャー NFCDevVNo はメジャー MSVNo と等しく、

マイナー NFCDevVNo がマイナー MSVNo 以上です

リーダーデバイスは、MIFAREクラシックまたはMIFAREプラスタグにアクセスし、このMIFAREクラシックまたはMIFAREプラスタグに適用されたマッピングドキュメントのすべての機能を使用するものとします。
2 メジャー NFCDevVNo がメジャー MSVNo と等しい場合、および

マイナー NFCDevVNo はマイナー MSVNo よりも低い

MIFAREクラシックまたはMIFAREプラスタグのすべての機能にアクセスできるとは限りません。 リーダーデバイスは、そのすべての機能を使用し、このMIFAREクラシックまたはMIFAREプラスタグにアクセスするものとします。
 

いいえ バージョン番号の大文字と小文字 処理
3 メジャー NFCDevVNo がメジャー MSVNo よりも小さい場合 互換性のないデータ形式です。 リーダーデバイスは、MIFAREクラシックまたはMIFAREプラスタグデータを理解できません。 リーダーデバイスは、このMIFAREクラシックまたはMIFAREプラスタグを拒否するものとします。
4 メジャー NFCDevVNo がメジャー MSVNo よりも大きい場合 リーダー デバイスは、メイン バージョンに加えて、この仕様の以前のバージョンのサポートを実装する場合があります。 リーダーデバイスが以前のバージョンからサポートされている場合は、MIFAREクラシックまたはMIFAREプラスタグにアクセスする必要があります。 逆に、リーダーデバイスが以前のバージョンからサポートされていない場合は、MIFAREクラシックまたはMIFAREプラスタグを拒否する必要があります。

NDEF ストレージ #

NDEF メッセージのデータ形式は で [NDEF]定義されています。 NDEF メッセージは、1 つ以上の NFC セクターを使用して、NDEF メッセージ TLV ( セクション 2.6.1 を参照) の値フィールド内に格納されるものとします。 NFCセクターは、MADセクターのNFC AIDによって識別されます。

生活環 #

MIFAREクラシックまたはMIFAREプラスタグのNFCセクターは、次の状態である可能性があります 初期化済み、読み取り/書き込み、または読み取り専用。 NFCセクターは、特定の時点で1つの状態のみにあるものとします。 状態は、NFCセクターの内容に反映されるものとします。 州は単一のNFCセクターではなく、すべてのNFCセクターに関連しています。 状態については、次のセクションで説明します。

MIFAREクラシックまたはMIFARE PlusタグにNFCセクターのみが含まれている場合、NFCセクターの状態はMIFAREクラシックまたはMIFARE Plusタグの状態と呼ばれます。 以下の説明では、MIFAREクラシックまたはMIFAREプラスタグの状態がNFCセクターの状態と混同されています(つまり、等しい)。

すべての状態には、遷移または状態変更と呼ばれる有効な操作があります。 状態遷移は、MIFAREクラシックまたはMIFARE Plusタグを書き込むことができるリーダーデバイスにのみ関連します。

異なる状態は、必須の NDEF メッセージ TLV が開始される NFC セクターの GPB と、必須の NDEF メッセージ TLV のフィールドを比較することによって識別されます。 セクション2.5で説明したセクタートレーラのアクセスビットは、このアプリケーションノートでは特定の状態を識別するために使用されていないことに注意してください。

このアプリケーションノートに従ってMIFAREクラシックまたはMIFAREプラスタグが有効な状態でない場合、すべてのNFCセクターのMIFAREクラシックまたはMIFARE PlusタグのNDEFデータは無視されるものとします。 理由は次のとおりです。

  • 連続していないNFCセクター。
  • タグ内にNFCセクターが存在しない、つまりNFC AIDを使用してMADによってセクターが示されていない。
  • TLV ブロック全体の長さとデータ域の実際の長さの不一致。
  • TLV ブロックが無効です。

初期化された状態 #

MIFAREクラシックまたはMIFAREプラスタグは、次の場合に初期化された状態で検出されるものとします。

        • GPB は、セクション 1 の説明に従って設定されます。1、特にビット0-1が00bに等しく、ビット2-3が00bに等しい(読み取りおよび書き込みアクセスが許可される)、
        • NFCセクタには、1つのNDEFメッセージTLV(必須のもの)が含まれています。
        • 必須 NDEF メッセージ TLV の長さフィールドは 00h です。

初期化状態では、NFCデバイスは、NDEFメッセージを書き込む必須のNDEFメッセージTLVの内容を変更することができます。 第10章の附属書D、第0章の附属書E、第12章の附属書Fは、それぞれMIFAREクラシック1k、2キロバイトのMIFAREプラス4キロバイトのMIFAREクラシック4kまたはMIFAREプラスの2つの例を示しています。

読み取り/書き込み状態 #

MIFAREクラシックまたはMIFAREプラスタグは、次の場合に読み取り/書き込み状態で検出されるものとします。

        • GPB は、セクション 1 の説明に従って設定されます。1、特にビット0-1が00bに等しく、ビット2-3が00bに等しい(読み取りおよび書き込みアクセスが許可される)、
        • 必須の NDEF メッセージ TLV が NFC セクターに存在し、
        • 必須の NDEF メッセージ TLV の長さフィールドがゼロと異なります。

読み取り/書き込み状態は、初期化された状態を介して到達する必要があります。 この状態では、NFCデバイスは、NDEFメッセージを書き込む必須のNDEFメッセージTLVの内容を変更することができます。

読み取り専用状態 #

MIFAREクラシックまたはMIFAREプラスタグは、次の場合に読み取り専用状態で検出されるものとします。

        • GPB は、セクション 1 の説明に従って設定されます。1、特にビット0-1が11bに等しく、ビット2-3が00bに等しい(書き込みアクセスは許可されず、読み取りアクセスのみが許可されます)、
        • 必須の NDEF メッセージ TLV が NFC セクターに存在し、
        • 必須の NDEF メッセージ TLV の長さフィールドは、ゼロと異なるものとします。

読み取り専用状態では、すべてのNFCセクターに読み取り専用アクセスが許可されます。 MIFARE クラシックまたは MIFARE Plus タグは、残りのライフサイクルの間、読み取り専用状態のままです。

コマンド シーケンスの説明 #

このセクションでは、NFCセクター内の必須のNDEFメッセージTLVなど、NDEFデータを管理するためのいくつかの手順について説明します。 MIFAREクラシックタグまたはMIFAREプラスタグの状態間のさまざまな状態変更または遷移も詳細に示されています。

手順に関与する各セクターは、読み取りまたは書き込みの前に、認証操作を使用して認証されるものとします。 公開鍵Aは、セクタータイプ、つまりMADセクターまたはNFCセクターに基づいて選択されるものとします。

NDEF 検出手順 #

NDEF検出手順は、MIFAREクラシックまたはMIFAREプラスタグ内の必須のNDEFメッセージ(を参照) [NDEF]を検出するために使用されるものとします。

NDEF検出手順は、次のチェックに基づいています。

        • MADセクター、
        • NFCセクター、および
        • NDEF メッセージを含む必須の NDEF メッセージ TLV。

すでに述べたように、NDEF 検出手順によって検出された NDEF メッセージ TLV は、必須 NDEF メッセージ TLV または最初の NDEF メッセージ TLV と呼ばれます。 MIFARE クラシックまたは MIFARE Plus が読み取り/書き込みまたは読み取り専用状態の場合、この NDEF メッセージ TLV には NDEF メッセージが含まれます。 初期化状態では、NDEF メッセージ TLV は空です。

NDEF graph(1) 認証または読み取り操作が失敗すると、MIFAREクラシックまたはMIFARE Plusはどのコマンドにも応答しなくなりNDEF検出手順を続行するには、再度アクティブ化して選択する必要があります。

NDEF検出手順を実行するには、リーダーデバイス(またはNFCデバイス)は、MIFAREクラシックまたはMIFAREプラスで次の操作( 図6も参照)を実行する必要があります。

  1. MADセクターの存在を確認してください。
  2. 読み取り操作を使用して、MAD セクターを認証して読み取ります (MAD1 の場合はセクター 0、MAD2 の場合はセクター 0 と 16)。
  1. MAD内に、1つ以上の連続したセクターに関連するNFC AIDと等しい1つ以上のAIDが見つかった場合は、項目4に進みます。 それ以外の場合、MIFARE クラシックまたは MIFARE プラスタグで NFC AID が検出されず、MIFARE クラシックまたは MIFARE プラスタグが有効な状態にありません。
  2. NFCセクターごとに、最小セクター番号から最大セクター番号まで、次の操作を実行します。
    1. NFC セクターの公開キー A を使用して、NFC セクターのセクター トレーラーを認証して読み取ります( 6 を参照)。
    2. 認証と読み取り操作が成功した場合は、NFC セクターのセクター トレーラーを確認します。 それ以外の場合、認証または読み取り操作が失敗した場合は、独自のNFCセクター(以下のNFCセクターの説明を参照)が見つかった場合は、項目fに進みます。
    3. GPB のビット 4 から 7 が上記の規則に従って正しいバージョン番号を記述している場合は、項目 d に進みます。それ以外の場合は、MIFARE クラシックまたは MIFARE Plus タグが有効な状態でないために手順を停止します。
    4. GPBのアクセス条件フィールド(ビット2-3)の読み取り値が00bに等しく、GPBの書き込みアクセス条件フィールド(ビット0-1)の値が00bまたは11bのいずれかに等しい場合、 セクション5.1.3で指定された読み取り操作を使用して相対NFCセクターのデータブロックを読み取り、NDEFメッセージTLVを探します。 をクリックし、項目 E に移動します。 それ以外の場合、GPB の読み取りアクセスフィールド値が 00h と異なる場合、または GPB の書き込みアクセス条件フィールド (ビット 0-1) 値が 00b および 11b と異なる場合は、独自の NFC セクター (以下の NFC セクターの説明を参照) が見つかった場合は、項目 f に進みます。
    5. NDEF メッセージ TLV が見つかった場合、これは必須の NDEF メッセージ TLV (つまり、最初のもの) であり、項目 5 に進みます。 それ以外の場合、NDEF メッセージ TLV が見つからない場合は、項目 f に進みます。
    6. 可能な場合は、次のNFCセクターを確認し、項目aに進みます。 それ以外の場合、使用可能な NFC セクターがなくなった場合は、NDEF メッセージ TLV が見つからないため、手順を停止します。 MIFAREクラシックまたはMIFAREプラスタグが有効な状態ではありません。
  3. 必須の NDEF メッセージ TLV の長さフィールドがゼロと異なる場合、NDEF メッセージ ( を参照 [NDEF]) が MIFARE クラシックまたは MIFARE Plus タグで検出され、リーダー デバイスは NDEF 読み取り手順または NDEF 書き込み手順を使用できます。 長さフィールドがゼロに等しい場合、MIFAREクラシックまたはMIFARE PlusタグでNDEFメッセージは検出されず、リーダーデバイスはNDEF書き込み手順を使用できます(タグは初期化状態である可能性があります)。

NDEF 検出手順は、有効な NDEF メッセージとは関係ありません。 NDEF メッセージ TLV の長さフィールドから NDEF メッセージ長を読み取りますが、NDEF メッセージを解析しません。

リーダーデバイスは、独自のNFCセクターを無視してジャンプするものとします。 独自のNFCセクターは、NFCセクターの公開鍵Aで認証できないか、GPBの読み取りアクセスフィールド値が00bと異なるか、GPBの書き込みアクセス条件(ビット0-1)値が00bおよび11bと異なるNFCセクターとして定義されます。

認証操作、読み取り操作、または書き込み操作が失敗するたびに、MIFAREクラシックまたはMIFARE Plusはサイレントのままになり、どの操作にも応答しなくなります。

コマンド。この状況でNDEF検出手順を続行するには、MIFAREクラシックまたはMIFAREプラスを再アクティブ化して選択する必要があります。

NDEF 読み取り手順 #

NDEF 読み取りプロシージャは、必須の NDEF メッセージ TLV から NDEF メッセージを読み取るためにリーダー デバイスによって使用されます。 NDEFメッセージを読み取る前に、NDEF検出手順が実行され、MIFAREクラシックまたはMIFAREプラスタグが有効な状態にある必要があります。

NDEF読み取り手順を使用して、リーダーデバイスは、1つ以上の読み取り操作を使用して、必須のNDEFメッセージTLVからNDEFメッセージ全体を読み取る必要があります。 読み取られる NDEF メッセージの長さは、必須の NDEF メッセージ TLV の長さフィールドから提供されます。

必須の NDEF メッセージ TLV が 1 つ以上の NFC セクターに格納されている場合、リーダー デバイスは、NFC セクターの公開キー A を使用してこれらすべてのセクターを認証できる必要があります ( 表 6 を参照)。 認証手順が失敗した場合、MIFAREクラシックまたはMIFAREプラスタグは有効な状態にありません。

NDEF 書き込みプロシージャ #

NDEF書き込み手順は、MIFAREクラシックまたはMIFARE Plusタグ内にNDEFメッセージを含む必須のNDEFメッセージTLVを書き込むためにリーダーデバイスによって使用されるものとします。

NDEF 書き込みプロシージャでは、読み取り操作と書き込み操作を使用します (セクション 5.1.3 およびセクション 5.1.4 を参照)。

NDEFメッセージを書き込むには、MIFAREクラシックまたはMIFAREプラスタグが初期化済みまたは読み取り/書き込み状態にある必要があります。

NDEF write procedure

NDEF書き込みプロシージャを実行するために、リーダーデバイスはMIFAREクラシックまたはMIFAREプラスタグに対して次の操作を実行する必要があります。

  1. NDEF 検出手順( セクション 1.4.1 を参照)を使用して、必須の NDEF メッセージ TLV を検索します。 必須の NDEF メッセージ TLV が見つかった場合は、項目 2 に進みます。 それ以外の場合、NDEF メッセージ TLV が見つからない場合は、手順を終了します。
  2. NDEF メッセージ TLV で使用可能なメモリ サイズが NDEF メッセージ サイズ以上の場合、以下の操作は、1 つ以上の書き込み操作を使用して次の順序で実行されます。
    1. 必須のNDEFメッセージTLVの長さフィールドは1バイト長でなければならず、その値は00hに設定されなければならない。
    2. 新しい NDEF メッセージは、必須の NDEF メッセージ TLV の値フィールドに書き込まれるものとします。
    1. 必須の NDEF メッセージ TLV の長さフィールドは、NDEF メッセージの長さで更新されるものとします。

それ以外の場合、MIFAREクラシックまたはMIFAREプラスタグで十分なメモリスペースが利用できない場合、NDEFメッセージはMIFAREクラシックまたはMIFAREプラスタグに書き込まれてはなりません。

  1. 項目 2 が正常に行われた場合、リーダー デバイスは、書き込み操作を使用して、NDEF メッセージ TLV の後の次のバイトにターミネータ TLV を書き込む必要があります。ターミネータTLVは、必須のNDEFメッセージTLVが最後に利用可能なNFCセクターの最後のバイト、つまり最大のセクター番号を持つNFCセクターで終了する場合、書き込まれてはなりません。

操作項目2について。b、見つかったNDEFメッセージTLVの値フィールドの書き込みは、次の操作項目2で必要とされる長さフィールド用に1バイトまたは3バイトを残すものとします。c は、NDEF メッセージの長さを格納します。

NDEF 書込プロシージャでは、必須の NDEF メッセージ TLV の開始位置は変更されません。

NDEF 書き込みプロシージャは、MIFARE クラシック 4k および 4K バイトの MIFARE Plus が使用されている場合、MAD セクター 16 を除く連続した NFC セクター間で NDEF メッセージ TLV を書き込むことができます。

必須の NDEF メッセージ TLV で使用可能なメモリ サイズは、必須の NDEF メッセージ TLV の位置から次の合計として計算されます。

  • 必須の NDEF メッセージ TLV を含む NFC セクターの空きメモリ領域。 空きメモリ領域は、必須のNFCメッセージTLVの先頭から始まり、NFCセクターの最後に終わります。
  • 必須の NDEF メッセージ TLV を含むセクターに続く NFC セクターのメモリ空間全体。 次のNFCセクターのサイズは、48バイト(3ブロック)または240バイト(15ブロック)です。 以下の利用可能なNFCセクターに関する情報は、MADセクターから取得されるものとします。

書き込み操作では、たとえば NDEF メッセージ TLV がブロックの途中で開始される場合に、完全に更新されていないブロックの読み取りが最初に必要になります。

状態の変更 #

このセクションでは、MIFARE クラシックまたは MIFARE Plus タグの可能な状態変更について説明します。 8は、状態とそれらの間の状態変化(遷移とも呼ばれます)を示しています。 このアプリケーションノートでは、INITIALIZEDからREAD/WRITEへの遷移のみが指定されています。

リーダーデバイスは、初期化状態、読み取り/書き込み状態、または読み取り専用状態でMIFAREクラシックまたはMIFARE Plusタグを発行できます。life cycle transaction

初期化から読み取り/書き込みへの移行 #

初期化から読み取り/書き込みへの移行を実行するために、リーダーデバイスは次の操作を実行するものとします:空でないNDEFメッセージTLV(ゼロとは異なる長さフィールド)は、NDEF書き込み手順を使用して以前の空のNDEFメッセージTLVを置き換えるものとします。 NDEF メッセージ TLV は、NDEF 検出手順を使用して検出される必須のメッセージです。

空の NDEF メッセージは、空でない NDEF メッセージを置き換えるために使用できます。