10
MIFARE Classic Access Conditions Dec, 22, 2012 hiro99ma

MIFARE ClassicのAccess Conditions

Embed Size (px)

Citation preview

Page 1: MIFARE ClassicのAccess Conditions

MIFARE Classicの Access Conditions

Dec, 22, 2012 hiro99ma

Page 2: MIFARE ClassicのAccess Conditions

MIFARE Classicとは?

● NXP社が作るNFCカードの1つ● 値段は安い● メモリも多い● 鍵を掛けることができる

Page 3: MIFARE ClassicのAccess Conditions

メモリ構成

● 1ブロックは 16byte● 1セクタは以下で構成される

● 3つの data block● 1つの sector trailer

● sector trailerにメモリアクセス方法を設定

data block 16 byte

data block 16 byte

data block 16 byte

sector trailer Key A Access Bits Key B

Page 4: MIFARE ClassicのAccess Conditions

Access Conditionsとは?● メモリへのアクセス設定のこと

– read / write設定● read/write blockでも value blockでもできる

– increment / decrement / transfer / restore設定● value blockのみ

● ブロックごとに設定できる● Access Conditionsは sector trailerに書き込む

– 設定データのことを Access Bitsと呼ぶ– sector trailerには鍵 A、鍵 Bというデータも書く– 鍵 Bは optionalらしい

Page 5: MIFARE ClassicのAccess Conditions

Access Conditionsの設定● Access Conditionsの設定はAccess Bits

● Access Bitsは 4byteで、有効なのは 3byte● 残り 1byteは、ユーザデータ● チェックサムとか鍵バージョンに使うのか?

● この設定値を理解するのが難しい● と、私は思う。

data block 16 byte

data block 16 byte

data block 16 byte

sector trailer Key A Access Bits Key B

Page 6: MIFARE ClassicのAccess Conditions

Access Bits の意味 (1)

● 「状態」は大きく 4つ● 鍵 Aの認証でアクセスできる● 鍵 Bの認証でアクセスできる● 鍵 Aか鍵 Bの認証でアクセスできる● アクセス不可

● data blockと sector trailで異なる● data blockは、 read/write blockと value block● sector trailは、鍵 A、鍵 Bと Access Bits

Page 7: MIFARE ClassicのAccess Conditions

Access Bits の意味 (2)

● data blockの場合● 出荷時は何でもできるように、パターン 0

– たぶん transport configurationと呼ばれている

No. read write increment other

0 鍵 A or 鍵 B 鍵 A or 鍵 B 鍵 A or 鍵 B 鍵 A or 鍵 B

1 鍵 A or 鍵 B 不可 不可 鍵 A or 鍵 B

2 鍵 A or 鍵 B 不可 不可 不可3 鍵 B 鍵 B 不可 不可4 鍵 A or 鍵 B 鍵 B 不可 不可5 鍵 B 不可 不可 不可6 鍵 A or 鍵 B 鍵 B 鍵 B 鍵 A or 鍵 B

7 不可 不可 不可 不可

Page 8: MIFARE ClassicのAccess Conditions

Access Bits の意味 (4)

● sector trailの場合● 出荷時は、何でもできるようにパターン 1

No. 鍵 A Access Bits 鍵 B

read write read write read write

0 不可 鍵 A 鍵 A 不可 鍵 A 鍵 A

1 不可 鍵 A 鍵 A 鍵 A 鍵 A 鍵 A

2 不可 不可 鍵 A 不可 鍵 A 不可3 不可 鍵 B 鍵 A or B 鍵 B 不可 鍵 B

4 不可 鍵 B 鍵 A or B 不可 不可 鍵 B

5 不可 不可 鍵 A or B 鍵 B 不可 不可6 不可 不可 鍵 A or B 不可 不可 不可7 不可 不可 鍵 A or B 不可 不可 不可

Page 9: MIFARE ClassicのAccess Conditions

Access Bitsの値

● パターンが 8つなので、 3bit● その 3bitが 4ブロック分なので、 12bit

– ・・・ではなく、ビット反転などの組み合わせ● 出荷時

● data block : パターン 0● sector trailer : パターン 1

– この組み合わせが、 FFh, 07h, 80h、になる

Page 10: MIFARE ClassicのAccess Conditions

おわりに

● MIFARE ClassicはNFC Forumの規格外だが比較的安く手に入りやすい

● その割りには、鍵が使える● NFC Forumの規格外だが、NXPが自前で

Classic用のNDEF設定を考えているのでAndroidでもそれが使えるのかも

● 最近は Broadcom社のNFCチップが増えているので、 Androidの libnfc-nxpも変わってくるかも● ってより、NCI対応になって汎用化するのかな