View
3.099
Download
5
Category
Preview:
Citation preview
MIFARE Classicの Access Conditions
Dec, 22, 2012 hiro99ma
MIFARE Classicとは?
● NXP社が作るNFCカードの1つ● 値段は安い● メモリも多い● 鍵を掛けることができる
メモリ構成
● 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
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らしい
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
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
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 不可 不可 不可 不可
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 不可 不可 不可
Access Bitsの値
● パターンが 8つなので、 3bit● その 3bitが 4ブロック分なので、 12bit
– ・・・ではなく、ビット反転などの組み合わせ● 出荷時
● data block : パターン 0● sector trailer : パターン 1
– この組み合わせが、 FFh, 07h, 80h、になる
おわりに
● MIFARE ClassicはNFC Forumの規格外だが比較的安く手に入りやすい
● その割りには、鍵が使える● NFC Forumの規格外だが、NXPが自前で
Classic用のNDEF設定を考えているのでAndroidでもそれが使えるのかも
● 最近は Broadcom社のNFCチップが増えているので、 Androidの libnfc-nxpも変わってくるかも● ってより、NCI対応になって汎用化するのかな
Recommended