いろんな技術に触れたいいろんな技術にふれたいスマートフォン用の表示で見るいろんな技術に触れたい日頃色々触れた技術を自分なりにまとめておきたいと思ってます。IoTSecHack365@2017を振り返ろうこんにちは。遅くなりましたが、昨年2017年度に参加していたSecHack365ですが、先月無事に卒業することができました。今回はそのまとめについて書いていきたいと思います。私達のグループが最終報告回で発表した資料(一部修正)はこちらになります。忙しい方はこちらの資料に目を通して「ふーん」と思ってくれるだけでありがたいです!改めまして、私は現在電気通信大学の大学院生をやっていますtokina(ひみつ)です。昔はネットワーク系の研究室に所属しており、自動車のセキュリティについての研究をしていました。現在は電通大のネットワーク系の研究室に移籍し、IoTに関する研究をしております。昨年からパブリッククラウド技術に興味を持ち始め、今回SecHack365の私のチームの中でもクラウド部分をメインに担当しています。SecHack365について詳しくは以下のページをご参照下さい。sechack365.nict.go.jpまた、日程が非常に近いですが、SECCON×SecHackのセチャコンというイベントが開催予定です。皆さんよければ足を運んでみて下さい。2017.seccon.jp現在('18.04.09執筆時)には2018年度生を募集しています。課題申し込みと提出申し込み締切が異なるので注意して下さい。学生の方は無料で参加できます。自己管理は徹底して下さいね。sechack365.nict.go.jp今回、一年の総轄としてまとめました。SecHack365参加を目指す方の参考になれば幸いです。最終成果報告、ポスター展示デモしたい!最後に私にとってのSecHack365(SecHack367)とは私にとって、振り返ってみるとSecHack365とは技術的交流はもちろん、自身のモチベーションをしてくれる環境でした。この機会で出会うことが出来た人や、今後の指針が見えてきたこともあり、私にとってはとても大切な一年だったことは間違いないと思っています。?気になる方は参加して見ましょう!応募のキッカケキッカケとは些細なものだと思います。私はセキュリティ・キャンプに参加していたので、サイボウズで情報が流れてきており、耳にはしていました。私はギリギリまで申し込んではいなかったのです。申し込み期限前日、私はそういえばと思いサイボウズを開き、このSecHack365に応募しました。ちなみに応募課題は非公開だそうです。最初、SecHack365を見たときに、「キャンプ関連なんだろうか・・・」くらいに漠然と考えていました。実際に参加するとキャンプの講師やTAレベルの人が沢山おり、最初は不安でいっぱいでした。ちなみに選考の基準ですが、「参加してともにイノベーションを起こせるか(なにか新しいことをひらめけるか)」だそうです(たしかそういっていた)。学歴や大学、住んでいる場所とかは一切選考に関係ないそうです。名前も伏せて選考されます。応募者が何を考えているかの本質が見られるのだと思います。プログラミング能力は必須でしょうか?私は”必須”だと思います。無いと困るとかではなく、少なくとも「アイデアを実現する力」のタネが必要だと思います。ハッカソンだからとも言えるでしょうか。ちなみに私のプログラミング能力はそんなに高くない...と思っています。私のチームは4人チームでした。チームメイトは私を含め以下の方たちでした。最初の着眼点は「パブリッククラウドを使って自動車の情報を収集した例って聞いたこと無いよね?」「簡単にできそうだけど、実際に作ってみたらなにか見えてこないかな?」というところからでした。全体の概要図は下図のようになります。こちらは実際の成果発表会で使用した資料を一部修正したものです。これにより、自動車を完全に”IoT”化できました(たぶn)。最終的にハッカソンで出来上がったアーキテクチャですが、もともとこのような最終形を想定していませんでした。今回は折角なので、そのアーキテクチャとともに振り返ってみたいと思います。私達グループメンバーはこの概要図にある通り、全体のうちの一部をそれぞれを担当していました。私はこの中でAWSやその周辺を主に担当しています。最初に掲載した資料にもありますが、最終的なアーキテクチャは以下になります。データの流れに注目しましょう。自動車に搭載された車載器からSORACOMへとデータが転送されます。ちなみにこの時データはSORACOMの専用回線を利用してアップロードされます。Streamへとデータをストリーム転送します。このFunnelとはアップロードのみに特化したサービスです。Streamに流れてきたデータは少しポーリングされるため、厳密にはリアルタイムではありません。Lambdaのメインとなるプログラムがキックされ、Base64でデコード、JSONを取り出します。SNSのキック、S3にデータをPOSTします。ServiceのKibanaを利用しています。ここで可視化されるデータとその型は以下です。SNSは通知サービスです。LINEなど)へ一度に通知します。hookを噛ませないといけないので、スケーラビリティのため別のLambdaで実行しています。S3に保存したデータは自動車情報毎に分けられ、全て生のテキストファイルとして置かれており、運転評価を行うEC2サーバ(今回はFlaskを利用してwebアプリを構築している)からデータを取得しに行きます。EC2サーバで行う運転評価については@Balius1064が作成してくれました。SDKを利用してデータにアクセスするための認証にCognitoとIAMを利用して承認を行っています。以上が全体のデータの流れになります。振り返りSecHack365は(昨年度は)全部で7回のオフラインハッカソンと、その間のオンラインハッカソンで行われます。昨年度の日程は以下でした。最初は運営の方々も手探り状態で、私達が最初の卒業生になるということもあり、一期生としての”責任”のようなものを感じていました。私達のグループメンバーは、蒲田回のアイデアソンのときから一貫して変わりませんでしたが、多くのひとはソロプレイヤーになったりするなど、悩んでいる人も多かったかな、という印象です。今年は最後のブラッシュアップを鑑みて、12月と1月を空けて最終報告回になっていますね。それではここからアーキテクチャとともに振り返ってみたいと思います。縁日(ワークショップ)、ハッカソン8月当時、私は丁度AWSのインターンシップに参加したばかりで、パブリッククラウド初心者でした。そこで、インターンシップで利用したKinesis、Lambda、RDSを利用しようと考えたのです。福岡回の最初はLINEさんのオフィスにて縁日という名前のワークショップをして頂きました。そこでnekoruriさんのワークショップにあったSORACOMを利用すればいいのでは?とヒントをいただきました。自動車のデータはストリームデータですので、Kinesisを利用するのはわかっていました。その簡単な処理にはサーバレスファンクションであるLambdaが適していることもわかっていました。そこから先は正直当時はかじった程度しか理解できていなかったため、このような簡単な仕組みになっていました。結局8月回の最後にはSORACOMから送られてきたデータをKinesisで受け取るところまで進みました。この8月で実際に作りたいモノがぼんやりと決まってきました。8月回は非常に暑く、海辺での照りつける日差しを今でも覚えています。縁日(ワークショップ)、さくらのデータセンター見学、ハッカソン10月では、縁日は一部任意になり、ハッカソンがメインとなっていました。8月から10月までSlackでやり取りしながら少しずつ進めていきました。実は9月はトヨタ自動車にインターンシップに行ったり・・・10月にはElasticsearchとLamndaの連携がどうしても上手く行かず、データの視覚化は出来ていませんでした。私達のチームはこの10月回から自動車の利用を申請しており、特別に外で実験させてもらいましたv上の図は北海道回の最初のアーキテクチャで、この回の最後には下図のようになりました。北海道回のハッカソンおかげで、かなり実際のものに近づいてきました。私は当時Elasticsearchにデータをどうしても格納できませんでした。Lambda一つでS3とElasticsearch両方にデータを流そうと考えていたのです。そこで、nekoruriさんにElasticsearchに格納する部分はNode.jsにすればよいのでは?とのアドバイスを頂いたのです。私としては人生で修学旅行以来の2回めの北海道でした。寒くもなく、ホテルの屋内プールと屋上の露天風呂が最高だったのを覚えています。空港では雪ミクを見れたり、時計台や電波塔にも行くことが出来ました。ハッカソン「12月回でハッカソンは一通りおわりなので」とのことだったので、12月回までいろいろ頑張ってどうにか形にしようと奮闘しました。調べていてわかったのですが、どうやらPythonでElasticsearchにデータを流す例があまりないことがわかりました。それでもどうにかLambda一つでS3とElasticsearchにデータを流すことに成功し、大阪回で簡単な視覚化をできるところまで持っていくことが出来ました。これで、だいたいの形は決まりました。ここまでがいわゆるインフラの部分であり、成果報告会まで、残るは”視覚化”部分となったのです。私が残る課題としていたのは付加価値である”通知”の部分です。SNSの利用は決定していたのですが、時間が足りず当時はそこまで完成していませんでした。大阪は以前から行く機会が多かったので特に何もありませんでしたね。個人的にモダン焼きが美味しくて良かったです。成果報告2月になるまで約1〜2週間に一度Slackでミーティングを行いながらどうにかみんなで形にできました。SNSを使った通知を実現し、それに合わせてこのような最後のアーキテクチャになりました。これはスケーラビリティや負荷などが考慮されていないため、実際の稼働の際にはさらに改良しないといけないのは明白ですが、去年全く知らない状態からここまで作り上げることが出来たので私としては一区切り出来たかなと考えています。この最終回の沖縄ですが、今年度の最終回も沖縄で開催される予定みたいですね。いってもホテルが豪華ですが、この時期の沖縄の天気は例年曇りで貼れることは珍しいのです。私は沖縄が大好きなので最終回が沖縄でとても嬉しかったです。ソーキそばおいしい!また国際通りに行きたいですね。最後に、最終成果報告会と題して秋葉原にて一般向けのパネル展示と一部のグループ及び個人がプレゼンを行いました。この時行ったプレゼンの資料が冒頭のスライド資料になります。ここまで一年走りきれて本当に良かったと思っています。皆さんいろいろ思うことや悩んだことも合ったと思いますが、それも含めて成長できたのではないでしょうか。デモしたい!デモ用に撮影していた動画を貼っておきます。※一応許可をもらっています。http://himitu23.tumblr.com/post/172795012478/sechack365-17においての自動車セキュリティチームの実験の様子ですまず、このように実際に自動車に乗って実験を行います(車種は分かる人にはわかるかもしれないですね、、)。ダッシュボード上のラズパイが今回作成した車載器になります。ここからSORACOM回線でクラウドにデータをアップロードしています。http://himitu23.tumblr.com/post/172795105698/sechack365-17-自動車セキュリティチーム管理者向け可視化1http://himitu23.tumblr.com/post/172818568519/sechack365-17-自動車セキュリティチーム管理者向け可視化2Kibana上ではこのようにデータが可視化されます。管理者は複数ユーザが存在する場合は一つにデータを絞ることができます。警告データなどの絞り込みや、過去のデータの検索を比較的簡単に行うことが出来ます。ElasticsearchにProxyを利用してアクセスしています。http://himitu23.tumblr.com/post/172795341171/sechack365-17Unityのアプリケーションは再帰的にS3に更新データがないか問い合わせにいきます。LambdaでデータがS3に保存されると、更新したデータがUnityアプリケーションに表示されます。Alertフラグが立っていた場合、動画のように警告が流れるようになっています。最後に最終成果報告会の様子について、アスキーさんの記事に取り上げていただきました!ascii.jpSecHack365を通してパブリッククラウド技術を実際に利用することができて非常に私としても楽しんで取り組むことができました。この一年、就活や勉強、研究といろいろありました。来年度からもSecHack365という取り組みがうまくいくように私も少しでもお手伝いできれば良いですね。振り返り]こんにちは。#2でお話させて頂いたスライ...2017-12-08自動車セキュリティの今について自分なりにまとめてみる東京モーターショー2017よりこんにちわ。_tokina23はてなブログをはじめよう!Tokinaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。