見出し画像

No287 キーレスエントリーの謎

最近は、クルマを運転する時にもキーに手を触れることが随分と減りました。

昔はクルマのドアロック解除もエンジン始動も鍵穴にキーを入れて行うのがあたり前でした。

ドアロックの解除は随分前(2000年頃?)から使えるようですし、エンジン始動も2010年頃には多くの車種で使えるようになっています。

今回はこのうち、キーレスエントリーと呼ばれるドアロック解除の方式について解説をします。

「がんばりすぎないセキュリティ」でクルマの話は初めてだと思いますが、現代の情報セキュリティはパソコンやスマホだけの話ではないことを是非知っていただきたいと思います。

キーレスエントリー

クルマのロックやロック解除する時にキーに付いたボタンなどを押すだけでロック/ロック解除やスライドドアの開閉が行える機能があります。
最近のクルマではもはや当然の機能と言って良いかと思います。

この機能、メーカによって言い方はまちまちみたいですが、この記事では「キーレスエントリー」と呼ぶことにします。

さらに最近では、エンジンの始動/停止もキーなしで行えるようになってきています。
こちらもメーカ毎に表現はバラバラですが、この記事では「スマートキー」と書いています。

筆者も20年程前に購入したクルマで初めてキーレスエントリーというものを経験し、これは便利なものが出てきたものだ、と思ったものでした。(スマートキーのクルマになったのは数年前ですが)

操作イメージとしてはテレビのリモコンが近いですよね。
テレビのリモコンだって、テレビに向けてボタンを押せばチャンネルや音量が変えられますから。

ですが、その実現方法はテレビのリモコンとはかなり異なっています。

テレビのリモコンは赤外線を使う

テレビのリモコンが赤外線を使っていることはご存知の方が多いと思います。
これは極めてシンプルな方式で実現しています。

モールス符号というのをご存知でしょうか?信号の長短を使い分けて、数字やアルファベットを相手に伝える優れた方式です。
映画などで嵐の中を二隻の舟がサーチライトなどで通信をするシーンが出てきたりしますよね。あれはモールス符号を使っています。

テレビのリモコンもそれと似た方式です。
リモコン側は赤外線のON/OFFでコマンドを伝え、テレビ側はそれを赤外線センサーで受信して依頼されたコマンドを知る仕組みとなっています。

いってみれば、上述のサーチライトのかわりに赤外線を使っているわけです。

さて、テレビのリモコンの場合は光を使っていますので、リモコンとテレビの間は見通しがよくないといけません。障害物があっては光が遮断されるからです。

逆に言えば、テレビのリモコンの盗聴はかなり難しいと言えます。
盗聴装置をリモコンの光が見える場所、つまりテレビのそばに置かなければならないからです。
テレビの横にいかにも怪しい装置があれば「何コレ?」ってなりますものね。

キーレスエントリーは「通信」

このキーレスエントリーはクルマとキーの間で電波を使って通信をしています。
そう、「電波」なんです。

電波は赤外線に比べれば盗聴が簡単です。
電波は基本的に拡散しますから、クルマの後ろや近くの車でも盗聴ができます。

だから、キーレスエントリーでは通信内容が盗聴されても大丈夫であることがとても重要です。
盗聴によって、他人が勝手にドアロックを解除できたりすると大変ですから。

テレビのリモコンを盗聴したって、せいぜい見ている番組がわかるくらいですが、クルマのロック解除が不正にできてしまえば、車が盗み放題です。
そんなことになったら大変です。

ですが、恐ろしいことに盗聴によってロック解除ができてしまう問題(脆弱性)の指摘が何度もありました。
最近では2022年7月にもホンダのクルマでそのような脆弱性が見つかっています。
https://gigazine.net/news/20220712-honda-key-fob-hack-rolling-pwn/

どうやってクルマを特定するのか?

そもそも、どうやってキーとクルマをペアとするのでしょうか?

まず、キーの中には小さなコンピュータが入っています。もちろんパソコンやスマホに比べればずっとずっと小規模で安価なコンピュータです。

また、キーの中には、それ以外にキー毎に異なる鍵情報(秘密情報)も入っています。
鍵情報などというと難しそうですが、内容はただの大きな数値です。もっとも数百桁程度のとてつもなく巨大な値ではありますが。

この鍵情報は、キーのペアとなるクルマ本体にも全く同じものを格納しておきます。

この鍵情報は文字通り「鍵」ですから、個々のクルマごとに異なる値となっています。

この鍵はクルマの整造段階で決め、キーとクルマ本体だけにしか存在していません。
(整造元によって保持されている可能性はあります)

なるほど。キーとクルマをペアとする方法はわかりました。
次の問題は、どうやってそのキーが本物だと判断するのか?ということになります。

キーが「私は本物」と伝える方法

キーがクルマに「私は本物だ」と伝えるにはどうすればいいでしょうか?

一番単純なのは、鍵情報をキーからクルマに送信する方式です。

何せ鍵情報はキーとクルマにしかないのですから、これが正しければ本物と言えます。

ホント?
実はこの方式、盗聴の存在を前提にすると、全く問題外です。

だって、盗聴すれば鍵情報を入手できるわけです。
とすれば、本物の鍵情報を持ったニセモノのキーが作れます。

同じ鍵情報が渡されればクルマはそれが正しいかどうかなんて判断できません。

本物であることを示すには鍵情報を送るのがベスト。でも鍵情報を送ると秘密が保持できない。
このままでは堂々巡りです。

「鍵そのもは送らないけど、鍵の内容は伝える」なんてことができるのでしょうか?
もちろん、方法はあります。(なければキーレスエントリーが実現できてません)

この方式もいくつかあるのですが、ここでは一番シンプルな「チャレンジ&レスポンス方式」を説明します。

これはクルマ側からチャレンジと呼ぶランダム値(毎回異なる)を渡し、キー側は「チャレンジの値+鍵情報の値」を計算して(この値をレスポンスと呼ぶ)返す、というものです。

クルマ側は値を受け取ってからそれを逆算します。つまり「レスポンス-鍵情報」を計算します。

こうすれば、レスポンス-鍵情報=チャレンジになるはずです。

例として、鍵情報が333(上述の通り実際には数百桁の数値です)、チャレンジが1010の場合の流れを図示します。

 1) (人が)キーのドアロック解除ボタンを押す
 2)(キーが)「ドアロック解除して」とクルマに依頼する
 3)(クルマが)「チャレンジは1010だ」と返す
 4)(キーが)1010+333=1343を計算する
 5)(キーが)「レスポンスは1343だ」と返す。
 6)(クルマが)1343-333=1010を計算し、レスポンスが正しいと判断し、ロックを解除する

なんだか子供だましのようですが、ここでのポイントは鍵情報である333が通信上に一切出てこない点です。

「なんだよそれ。チャレンジとレスポンスを両方とも盗聴すりゃ結局333の鍵情報はバレるやんか」と思った方、鋭いです。

ここでは、わかりやすくするために、足し算を例にしましたが、チャレンジ&レスポンス方式では足し算ではなく、ハッシュ関数というかなり複雑な(しかも逆算が非常にしづらい)計算方法を使います。

このように、チャレンジとレスポンスを使って、鍵情報を裏に隠したまま、キーが本物であることを識別しているのです。

なお、ハッシュ関数については、数年前に解説をしていますので、ご興味のある方はバックナンバーをご覧ください。
 No183 暗号っぽいけど暗号じゃないハッシュ関数ってナニ?
 https://note.com/egao_it/n/neb859006c961

まとめ

クルマの鍵穴を使わずにクルマのロックを解除したり、エンジンを始動する仕組みが一般的になってきています。

今回は、そのうちクルマのロック解除を行うためのキーレスエントリーという仕組みについて解説をしました。

キーとクルマの間では、電波を使って通信を行っています。盗聴のリスクがあるため、盗聴されても大丈夫なように通信内容を工夫しなければなりません。
これは、キーとクルマしかが知らない秘密情報をそのまま通信で使ってはいけないことを示しています。

そのため、秘密情報を使って計算した結果だけをやりとりして、秘密情報が出てこない方式が必要です。

今回はその中でも一番シンプルなチャレンジ&レスポンス方式を解説しました。

実際のクルマではその応用版であるワンタイムパスワードを使うことが多いようですが、今回は割愛させていただきます。

また、キーレスエントリでもボタンを押す必要がない(いきなりドアを開こうとすればロック解除してくれる)方式ではまた少し異なる方式となるケースも多くなっています。

今回解説したチャレンジ&レスポンス形式はクルマに限らず、銀行などいろいろなシーンで使われている方式で既に数十年の実績があります。

技術開発によって見た目の変化はあるものの、技術の基本というのは意外に変わらないものですね。

今回はキーレスエントリーで使われている認証方式について解説をしました。
次回もお楽しみに。

(本稿は 2022年12月に作成しました)

本Noteはメルマガ「がんばりすぎないセキュリティ」からの転載です。
当所はセミナーなどを通して皆さんが楽しく笑顔でITを利用いただくために、 難しいセキュリティ技術をやさしく語ります。
公式サイトは https://www.egao-it.com/ です。

この記事が気に入ったらサポートをしてみませんか?