最終更新:2013-02-02 (土) 13:59:03 (4099d)  

FeliCa/MAC
Top / FeliCa / MAC

Message Authentication Code

メッセージ認証コード?

  • 通信データの改ざんの有無を検知し、完全性を保証するために通信データから生成する固定長のコードの総称
  • MAC値を作り出すのに元データだけでなく、送信者と受信者のみが共有する鍵を使う
  • MAC値を、読み出した人が自分でも計算してみて、同じ値になったら「自分が発行したカードだ」と認識する

使うブロック

FeliCa/ブロック/RC (0x80)

  • MAC生成機能に用いる乱数を書き込むブロック
  • このブロックに書き込まれた値からMAC生成に用いるセッション鍵を生成

FeliCa/ブロック/MAC (0x81)

  • FeliCa Liteに搭載されているMAC用ブロック。読み込み時のMAC生成
  • MACは同時に読みだしたデータに対して生成される
  • 経路上の改ざん検知とかに使う

FeliCa/ブロック/MAC_A (0x91)

  • FeliCa Lite-Sで追加。読み/書き時のMAC生成
  • ライトアクセス権制御、及びライトデータの改ざん検知などに使える。
  • 書き込まれたブロックデータとブロック番号及びWCNT値からMACを生成
    • 生成したMACとMAC_Aに書き込まれたMACを比較して、一致した場合のみデータを格納

動作

FeliCa/カード鍵

  • FeliCa/ブロック/CK
  • 発行時に書き込む
  • カード鍵は書き込み専用レジスタなので直接読み出すことはできない

FeliCa/セッション鍵 (SK1,SK2)の生成

MACの生成

  • セッション鍵(SK1,SK2)を鍵、読みだしたブロックのデータを平文、ランダムチャレンジ(RC1)を初期値とする2-key Triple DES-CBCで生成
  • MACは読みだしたブロックのデータに対して生成される
  • 1ブロックに対して生成されたMACは次のブロックに対するMAC生成の初期値となる

スライド

FeliCa Liteの片側認証 from Hirokuma Ueno

関連

参考