自動車セキュリティについて
はじめに
この記事は、東京電機大学電子技術研究部の部誌に寄稿するものです。
電子工作のことはわからないんで、自動車セキュリティについて知っていることとかを書きます。
自動車セキュリティ
自動車の✨高度情報化✨
自動車はめっちゃ通信します。
カーナビみたいなVICS(道路交通情報通信システム)とか車間通信(V2V),交通インフラとの通信(V2X)もそうですし、Tesla Model Sなんかは組み込み向けのLinux系OS上でGoogle MapやWebブラウザが走ります。*1これらの通信は3Gで行われ、通話も可能です。
こういった車外との通信が危険を孕んでいることは言うまでもないですし、自動車の自己診断機能(OBD2)などを利用して車内ネットワーク(CAN,LIN,FlexRay,MOST,etc...)の情報を得ることもできます。車内外でめっちゃ通信が行われているわけです。車内で車載システムのコミュニケーションが完結していたこれまではセキュリティとか割とどうでもよかったんですが、最近はそんな感じなんで自動車セキュリティは割と界隈で重要課題になっている印象があります。
高度情報化という点で言うと車載ソフトウェアの標準化が進んでいます。AUTOSARという標準仕様に基づいてソフトウェアを設計していく機会が増えているらしいです。独自仕様をやめて標準化に取り組むことはセキュリティ面でもプラスなので、この辺の動向も追っていきたいと思っています。
自動車セキュリティハッカソン
先日、自動車セキュリティハッカソンなるものがありました。自分も参加してみました。
このハッカソンでは今挙げた通信の中でも車内通信(CAN)にフォーカスして、
- ECUの物理エミュレータに専用のソフトウェアで接続して、トラフィックを見たりパケットを送ったりしてみる
- ECUになりすまし、CAN上のメッセージを受け取ったり送ったりするプログラムを書いてみる(このAPIを使いました )
- 通信のログ(前述の専用のソフトウェアのログファイル)から暗号化に使われた手法を解明する
といったことをCTF形式でやりました。ハッカソン参加者は翌日・翌々日のESCAR ASIA 2016に無料で参加できました。
さいごに
特にオチがなくなっちゃったんですけれど、自動車セキュリティっていう分野メッチャアツいと思ってるんで誰か一緒にやっていきましょう。これ↓とか。
https://www.amazon.co.jp/dp/4822275167
偉そうに書きましたけれど、僕この↑本2冊とも途中で読むのやめたしハッカソンもなんとか受かって(事前課題があった)当日は座ってるだけだったオタクなのでよろしくお願いします。一緒にやっていってくれる人がほしい本当に。
あと退学は親がめっちゃキレるんで転科しようとしています。おわり。
自動車セキュリティハッカソンに参加しました
golang(anaconda)で特定のユーザのTLをストリーミングする
友人にTwitter Botをつくることを約束してしまい、そういえば某氏が某fuckjpはgolangで書かれていると言っていたなと思い出した。
そんなGolangのTwitterライブラリはAnacondaが有名らしい(某fuckjpが何使っているかはわからない)ので、それ使って作ることにした。
作成中、Anacondaで特定のユーザのTLをストリーミングする例が見当たらなかったので書いておく。
func main() { anaconda.SetConsumerKey(config.ConsumerKey) anaconda.SetConsumerSecret(config.ConsumerSecret) api := anaconda.NewTwitterApi(config.AccessToken, config.AccessTokenSecret) v := url.Values{} v.Set("follow", "ID1,ID2,ID3...") stream := api.PublicStreamFilter(v) for { select { case stream := <-stream.C: switch status := stream.(type) { case anaconda.Tweet: fmt.Printf("%s: %s\n", status.User.ScreenName, status.Text) } } } }
tweepyとかと比べて死ぬほど速い。goは神。