FeliCaを偽装してみました その2
先日の書き込みでは、FeliCaの非暗号領域がいかに簡単に偽装できるのか?について紹介しました。
その後、いろいろな反響をいただきました。現在、わけあって、コメント受付はしておりませんが、そのような中でも、直接いろいろな質問、疑問をいただきました。
最も、多かったのは、、
「あれはどうやってやるの?教えて」(苦笑)
というものでした。あとは、
「うちのシステムは大丈夫なのだろうか?」(たぶん駄目・・・かも)
というものや、
「とはいえ、いまいちリスクがわからない」(説明が悪いですね)
というものもありました。
自社のシステムに対する懸念やリスクを分析するには、具体的にどのように偽装しているのかについて説明するのが一番良いのですが、悪用の恐れもありますので、悪用予防の範囲で偽装の仕方を簡単にご紹介します。
まず、偽装に使うツールというか技術ですが、NFCという技術を応用しています。
NFCは、ICカードの規格であるISO14443 TypeA, TypeB, FeliCaをラップし、統合するような規格であると同時に、それぞれのカードをエミュレーションする機能も持っています。今回は、そのうちの、FeliCaをエミュレーションする機能を利用しています。
もちろん、標準でエミュレーション(偽装)できるのは非暗号領域だけですが、セキュリティーモジュールを搭載し、鍵情報を登録すれば、暗号化領域を偽装することも可能です(電子マネーなどの鍵情報は入手できませんが)。
NFCのリーダ・ライタと呼ばれる機器があれば、物理的に偽装が可能になります。但し、リーダ・ライタはあくまで物理レイヤーの話であって、実際にハードがあっても、ソフトウエアやカードコマンドなどを生成しないと、偽装はできません。
具体的なコマンド等に関しましては、残念ながらここではお教えできません。
あしからず、ご了承ください。
NFCリーダ・ライタ自体は例に漏れず?秋葉原等で入手可能です。
今回の偽装?には、日本製の携帯電話に強引にNFC機能を搭載し、カードエミュレーションをさせています。海外ではNokiaなどから、標準でNFC搭載携帯が出ているので、エミュレーションアプリを書くことができます。
実際に偽装した情報は下記写真のようにリーダに読ませます。
偽装アプリに偽装したいIDmやEdyNo、金額を入力すると、自由自在にカード偽装することができます。携帯電話にインプリしているので、持ち運びも自由です。
カードに固有のIDmを偽装してみたのが、下記の写真です。
上段のIDが本物のカード(私のEdyカード)で、下段が偽装(エミュレータ)されたものです。区別はできません(静止画だとまるで差がわからない・・・・すみません)。
なお、IDmの読み取りには、橋本商会さんが作ったテストプログラムを利用させていただきました。
海外では比較的一般的な機能であるNFCをモバイルディバイスと融合することにより、強力な偽装ツールを作成することができます。
「お前、こんなツール作って、偽装する気満々だな」と思われるかも知れませんが、そうではありません。
IDm等を利用したクリティカルではないシステムにおいて、カードは破損した場合、2度とシステムが動かなくなることを防ぐために、マスターキー的なツールとして開発しているだけです。
しかし、世の中、私のような善人ばかりとは限りませんので、ご注意ください。