シミュレーション -> Blenderに変換(?)できる何かを作ってみた
何を作ったか
シミュレーションソフトの応力の分布画像 → Blender内のGrease pencilに変換するもの。 シミュレーションソフト(と言っていいのかわからないけれど)はFusion360を使用。
これが
こんな感じに。
比較したらこんな感じになった。
Cell Fracture比較#blender pic.twitter.com/LVGzxaRI5g
— ユクロ (@kurokuro_dev) 2018年10月8日
左が今回作ったスクリプトで、右がデフォルトのCell Fracture。 まぁまぁ効果を発揮していることが分かった。
やっていること
①元の画像からOpenCVで輪郭検出、及びその輪郭に対して近似する楕円を取得
②Blender内で取得した楕円をグリースペンシルで対象のオブジェクトに対して描く
作った理由
BlenderのアドオンのCell Fractureって挙動がおかしい(自分が納得できる挙動になるまで時間を要する)ことがあるので、 何かのシミュレーションソフト → BlenderのCell Fractureに変換できるものがあったらいいなぁっと思ったから
注意
このスクリプトはあるコンテストのためにやっつけで作ったものなので、他の画像だと正常に動かない可能性が高い...
参考
CyberRebeat CTF Writeup(と感想)
解いた問題は多くないけれど、書かないと確実に忘れるので書いておきます。
チームpineappleで出ました。
Rotation(Crypto)
こちらのサイトにお世話になりました。
Calculation(Programming)
こんなコードを書きました
import socket import time import re s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('59.106.212.75', 8080)) for i in range(10000): print("counter is {0}".format(i)) data = s.recv(256) time.sleep(1) print("data is {0}".format(data.decode())) data = data.decode() reg = r'^[0-9]' matchobj = re.match(reg,str(data)) if not isinstance(matchobj,type(None)): result = eval(str(data)) result = str(result) result = result + '\n' print("result is {0}".format(result.encode())) s.send(result.encode())
Prime factor
import socket import time import re import sympy s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('59.106.212.75', 8081)) for i in range(10000): #time.sleep(1) print("counter is {0}".format(i)) data = s.recv(256) time.sleep(1) print("data is {0}".format(data.decode())) data = data.decode() #time.sleep(1) reg = r'^[0-9]' matchobj = re.match(reg,str(data)) if not isinstance(matchobj,type(None)): result = sympy.factorint(int(data)) result = max(result) result = str(result) result = result + '\n' print("result is {0}".format(result.encode())) s.send(result.encode())
CyberRebeatScript (Recon)
のページを適当に見ていたら、delete FLAG という文字を発見したので中身を見たらflagだった。
Changehistory(Reacon)
このページのissueでThat commit hash is ~ でハッシュ値があるので、
それをhttps://github.com/ennach/ChangeHistory/commit/ + (ハッシュ値)につなげると、該当のflagが書いてある。
Alpha(Stegano)
問題の画像をStegsolveを使って解いた。
下のボタンをポチポチしてたらなんか解けた()
flagが出てくるのはAlpha plane 0の部分。
※他にも解いた問題はあるけれど、なんかやったらできたレベルなので...
感想
いままで、一人だけでCTFをやってきたのでチームの中で同じ仲間がいるというのは凄くモチベーションにつながった。
おかげで、思っていたよりも多く解けたと思う。
でもバイナリが...(精進します)
セキュリティ・キャンプ2018参加記
先日、セキュリティ・キャンプ(セキュキャン、Δ)に参加してきました。
セキュリティ・キャンプとは
↓を見てもらった方が早いかと思います。
www.ipa.go.jp
応募課題
セキュリティ・キャンプに参加するには、応募課題を提出する必要があります。
僕の応募課題はこちら(一部省略してあるけれど)
yukuro.hatenablog.com
見ればわかる通り、セキュリティに関して全く詳しくないです。
大体1週間程度で書きました。
セキュキャン参加~終了まで
~府中
僕は関東に住んでいるので、他の方と比べるとメチャメチャ近いです。
よって、他の方は小旅行っていう感じなのに、僕は「ちょっとそこまで行ってくる」みたいな感じで臨むことができました。
到着~昼食
着いた pic.twitter.com/l53NWGym6Q
— ユクロ (@kurokuro_dev) 2018年8月14日
無事、到着。
少し遅めに到着したため、受付にできていた長蛇の列に並ぶことに。
受付をしたら、昼食でした。
コミュ障の僕は無事死亡()
全体講義
全体講義の会場についた際に協賛企業様からのたくさんの記念品に驚きました。
と同時に「...これ、持ち帰れるのか???」とも思いましたが。
全体講義はすべての基礎となる話+ココでしか聞けない話みたいな構成でした。
チェックイン~夕食
部屋は自分の部屋より広かった(と思っている)
ここ、本当に研修施設か?と思うほどのところでした。
夕食は豚の角煮でした~。
美味しかった(^^♪
LT大会~グループワーク
LT大会では様々な分野の発表が行われました。
ただ、それぞれのスライドの終了時刻がバラバラだったので、きちんと見れてないのが少し残念なところ。
その後はグループワーク。
本日最後にはグループワークが行われました。今晩は今回提示されたテーマである「未来について」を考える材料として、キャンプの講師・チューター・その他スタッフとの活発なディスカッションがなされていました。 #seccamp pic.twitter.com/YZ2wCCnTPB
— セキュリティ・キャンプ (@security_camp) 2018年8月14日
前年度までの参加記や参加者の噂を聞く限り、かなりブラックなものを想像していたのですが今年から緩和されたらしいです。
このグループワークが今回のセキュキャンにおいて、一番役立つ(今後の展望的に)ものだったかなと思っています。
DAY2
朝からやらかしました。
朝からキー閉じ込めした
— ユクロ (@kurokuro_dev) 2018年8月14日
寝ぼけてました()
講義
- D1 ドローンシステムにおけるセキュリティーガイドラインを作ろう!
D トラックでは今村博宣さんによる講義「ドローンシステムにおけるセキュリティーガイドラインを作ろう!」が始まりました! #seccamp pic.twitter.com/jU6YhtbOxq
— セキュリティ・キャンプ (@security_camp) 2018年8月15日
ドローンについての講義のあと、いくつかのグループに分かれてガイドライン作りをしました。
僕は4アマを持っているのですが、3陸特も取って、ドローン開発してみたいな(セキュリティ的なものも含め)という気持ちになりました。
- D2 ROSロボットをハックせよ
フィジカルトラックでは、中川さんによる「ROSロボットをハックせよ」が行われています。 #seccamp pic.twitter.com/Khe2Gru7U8
— セキュリティ・キャンプ (@security_camp) 2018年8月15日
簡単な講義のあと、Raspberry Pi Mouseを使った演習が行われました。
Raspberry Pi Mouseは普通に買うと5万円(いまの自分にはとても買えない)なので、いい経験になったと思います。
個人的にはもっといじり倒したい感じだったので、時間の足りなさを痛感しました。
幸いにも、ハードウェア情報が公開してあるそうなので、自作してみたいです。
メモ:
- D3 チップレベルでカスタマイズができることで見える世界の体験
フィジカルトラックでは、秋田さんの講義「チップレベルでカスタマイズができることで見える世界の体験」が行われています。 #seccamp pic.twitter.com/7zwlNkdZWO
— セキュリティ・キャンプ (@security_camp) 2018年8月15日
講義のあとに、実際にLSIを作る過程を体験(線の配置など)しました。
今まで、半導体の中身にまで興味を持ったことがなかったので、とても面白かったです。
原子からネットワークに至る学問体系は本来一つのものだったという話がとても印象的でした。
食事
昼食はフォーとガパオ丼、夕食はオムライスにしました。
...おいしすぎでは?
DAY3
やっと、6時起きの生活にも慣れてきました。
しかし、眠かったので
6時に起きる
↓
朝食
↓
講義開始(8時30分)の20分前ぐらいまで二度寝
みたいな生活を送っていました。
講義
- D4 自走運転車両を攻撃せよ(自動運転車両の脅威分析)
フィジカルトラックでは、村松さんによる講義「自走運転車両を攻撃せよ(自動運転車両の脅威分析)」が行われています。 pic.twitter.com/BSKQHUUN6E
— セキュリティ・キャンプ (@security_camp) 2018年8月16日
講義のあと、自動運転車(コネクテッドカーとかも含む)の脆弱性とそれに対する対策を1分程度プレゼンしました。
自動運転車については"自動運転"自体に注目したことはあっても、"車"自体に注目する機会がなかったので、色々と学ぶことがありました。
本日から始まった特別トラックでは、午後から小崎資広さんによる講義「Linuxカーネル脆弱性入門」が行われています。この講義では、カーネルの脆弱性についての基礎を学びます。 #seccamp pic.twitter.com/9dPCMAxjcK
— セキュリティ・キャンプ (@security_camp) 2018年8月16日
初めて、脆弱性とかに関する講義も取ってみました。
Linuxカーネルに関する簡単な講義のあと、自ノートPCに対して脆弱性を突いた攻撃を行う演習をしました。
...正直に言うと、講義の半分ぐらいしか理解できませんでした。(脆弱性の概要などが、ふんわり分かった程度)
よって、精進の必要性をはっきりと感じた講義でした。
でも、演習をして、実際に攻撃(ルート権限を奪取)が成功した時は、楽しいと思いました。(攻撃が楽しいという意味ではなく、実際に動いたことが楽しいという意味で)
食事
...おいしい
お仕事紹介
協賛企業の方が来て、様々なお話を聞くことができました。
LT大会(同じトラック内で)
ホームルームの時間に同じトラック内でLT大会が開かれました。
僕も自作LIDARに関する発表をしました。
安く出来そうとか言ったくせに製作中だとか、中身スカスカで申し訳ありませんm(__)m
...スライドは全て完成してからネット上に上げることにします。
他の方のスライドはどれも面白かったです。
DAY4
講義
- E6 デジタル・フォレンジックス手法による情報漏えい事案調査
特別トラックでは、伊原秀明さん、北條孝佳さん、佐藤敦さん、郷晴奈さんによる「デジタル・フォレンジックス手法による情報漏えい事案調査」が行われています。ディスカッションを行い、法律の考え方とデジタル・フォレンジックスの実務の関係を学びます。 #seccamp pic.twitter.com/6p21fqizp9
— セキュリティ・キャンプ (@security_camp) 2018年8月17日
状況の説明の後、実際に保全したPCとUSBのデータを調べ、誰が犯人なのか調査する演習を行いました。
ミステリー小説を読んでいるみたいでとても楽しかったです。
あと、時間が圧倒的に足りない...
楽しかったので、デジタル・フォレンジックがもっと出来る問題集みたいなものがあったらなぁ...とも思いました。
- C7 攻防型CTFによるWebオンラインゲームのチート行為の体験
バラエティトラックでは、中矢誠さん、大川昌寛さんによる「攻防型CTFによるWebオンラインゲームのチート行為の体験」が行われています。この講義では、攻撃側と防御側の視点に立ってサーバとクライアントのコードを読み解き、チートに対する問題を学習します。 #seccamp pic.twitter.com/DYjjTlhRJT
— セキュリティ・キャンプ (@security_camp) 2018年8月17日
部屋内で築かれたネットワーク上のサーバーで稼働しているWebアプリのゲームに対して、脆弱性をついて攻撃し、得点を稼ぐ演習をしました。
今まで、このような形でやった事がなかったので、非常に刺激的でした。
僕の両隣に強い人がいて、無事死亡()
ですが、守るってこういうことなんだ、みたいな感じのものが得られたので良かったです。
あと、chrome developer toolの使い方をマスターしたような気がします。
プレゼント大会
プレゼント開示#seccamp pic.twitter.com/YBcMqjNb52
— ユクロ (@kurokuro_dev) 2018年8月17日
こんな感じなものをもらいました。
FPGAはいつかやりたいな~と思っていたのでゲット出来て良かったです。
食事
DAY5
グループワーク
最終日のグループワークでは、セキュキャン後は何をしよう、のような目標を決めました。
終了後の意気込み紹介のところで紹介された人たちの目標と比べ、僕は...みたいな気持ちになりました。
成果発表
集中開発コースの発表と選択コースの発表(と紹介)が行われました。
フィジカルトラックに至っては、強制的な誓約をさせられたり...?(戻ってくる気がないわけではないので、いいのですが)
食事
...こんな豪華な食事から離れねばならないとなると、悲しい気持ちに
閉会式
閉会式では、セキュキャンが終わったら必ずアウトプット(ブログを書くとか、勉強会に参加するとか)しようみたいな話がありました。
おわりに
セキュリティ・キャンプは僕にとって役に立つイベントだったと思います。
参加者の方たちは、みんな強い人(僕を除く)なので、刺激を受けました。
交通費も全て出してくれるので、「ちょっと行ってみようかな」ぐらいの気持ちで応募してもいいと思います。
僕もセキュリティ・キャンプで出会った「強い人」になれるように精進します。
AVD Managerの出し方(Android Studio 3.x)
※この話は単にAVD Managerだけ出したい!という話(ビルド後とかは知らない)
Android Studio 2.xまでは
公式ドキュメント:
仮想端末の作成と管理 | Android Developers
のTools > Android >AVD Manager で出来ていたが、Andoid Studio 3.xからはTools > Androidが表示されない。
適当にググっている過程で
Android studioのAVD Managerについて - スタック・オーバーフロー
のような記事を見かけたが、今回は単に(ビルドなどせずに)AVD Managerを出したかっただけなので、記事を書いた。
①File > Settingsを選択
②左上の検索窓に avd などと入力し、検索
③出てきたAVD Managerの項を選択し、Add Keyboard Shortcutを選択
④適当なショートカットを入力
⑤④で設定したショートカットを押して完了
※根本的解決にはなってないかもしれないが、簡単に出せるようになった。
セキュリティキャンプ2018応募課題
セキュリティキャンプ全国大会2018の選考に通過しました。
フィジカルトラックです。
セキュリティキャンプ全国大会2018の選考通過しました!フィジカルトラック部門です。
— ユクロ (@kurokuro_dev) 2018年6月14日
よろしくお願いします!#seccamp #seccamp2018
ROSロボットをハックせよという講義に釣られて応募した。
もちろん、他の講義も超魅力的だけれど。
そもそもセキュリティキャンプ自体を知ったのが今年の4月だったので、よく受かったなーというのが正直なところ。
熱意+成果物(どちらかが欠けてもダメ)みたいに書くといい感じがする。
一番苦労したのはA6のlongjmp、setjmpを用いてプログラムを書く問題。
(いくつかの授業が犠牲に...(単位を落とすレベルではない))
課題A
A1.あなたのプログラミングのスキルを推し量るエピソードがあれば書いてください.
自慢できるようなスキルは持ってないので割愛。arduinoのmap関数を自作した話を書いたA2.linux(unix)に関するあなたのスキルを推し量るエピソードがあれば書いてください.
自慢できるようなスキルは持ってないので割愛。学校の資料閲覧システムを見やすいように、自分なりに工夫した話を書いた。A3.電子回路、ハードウエア、HDL等のあなたのスキルを推し量るエピソードがあれば書いてください.
この課題を通じてHDLを初めて触ったぐらいなので割愛。A4.CPUにおける割り込みの果たす役割は何ですか.
・例外処理、リアルタイム性の確保私はCPUにおける割り込み、とりわけ、組込み向けのCPUの割り込みの果たす役割は大きく分けて2つあると考えている。
一つ目は例外処理に関することである。どんな環境で動作させるにしても、予想外のことは必ず起こりうる。
その原因は、今まで私が経験した中では人為的なミスだったり、過酷な環境(炎天下の日の日なたに、マイコンを放置など)に機器が耐えられないことだったりした。
しかしながら、私はどんなに予想外であっても、サービスを提供する人に怪我などの損害を与えることは決して許されないことだと考えている。
そのために、人に損害を与えるような状況を避けるために例外処理を行うのが割り込み処理の重要な役割の一つだと考える。
2つ目は動作のリアルタイム性にかかわることである。
CPUは一つのことしか一度に処理できないため、そのままでは同時に複数のことができない。
しかしながら、一つのことしか処理できなければ、どんなに人々に役に立つ製品を作ったところで、「動作が遅いから」と人々に見放されてしまうだろう。
割り込み処理を使えば、その問題を解決したかのように見せることができ、動作させたい機能のリアルタイム性もある程度は保証できると考えられる。
A5.Lチカのサンプルプログラムを示し、実際に発光ダイオードが点滅するまでの経緯を詳しく書いてください.
#codiing: utf-8 #A import RPi.GPIO as GPIO import time #B LEDpin = 24 #C GPIO.setmode(GPIO,BCM) GPIO.setup(LEDpin, GPIO.OUT, initial=GPIO.LOW) #D for i in range(10): GPIO.output(LED,1) time.sleep(0.5) GPIO.output(LED,0) time.sleep(0.5) #E GPIO.cleanup()
このプログラムはPythonを使用し、raspbian及びraspberry pi上での動作を想定したものである。
ここでは便宜的にプログラムをAからEに分ける。
まず、Aで必要なライブラリ(GPIO制御用のRPi.GPIO、点滅する間隔を制御するtime)のインポートをする。
次にBで使うGPIOのピン番号(GPIO24番)を指定する。
また、CではGPIOとして使う番号の指定にGPIOの番号を使用することを決め、Bで設定したGPIO24番を出力モードにした後、初めの状態をLOWにするように明示的に示している。
そして、Dではfor分を使ってGPIO24番の出力を0.5秒ごとにHIGHとLOWを繰り返す。最後にEではGPIOで使っていたピン(GPIO24番)を開放している。
A6.Cの関数longjmp setjmpを用いてプログラムを書いてください.
#include <stdio.h> #include <stdlib.h> #include <setjmp.h> jmp_buf jb; int main(void){ int a,b; int val = 0; int inpnum = 0; puts("Compare two numbers"); puts("Enter a number"); scanf("%d %d", &a, &b); if(setjmp(jb) == 0){ val = cmpnum(a,b); printf("bigger number is %d", val); }else{ give_error(); return -1; } } int cmpnum(int a,int b){ int error_flag = 0; if(a == b){ error_flag = 1; } if(error_flag == 1){ longjmp(jb,1); } else{ if(a > b) return a; if(a < b) return b; } } void give_error(void){ puts("Enter different numbers!!"); }
2つの入力値を受け取り、その大小を比較するプログラムを作成した。longjmp、setjmpは2つの入力値が等しく、大小を判断することが不可能な時の例外処理に用いている。
A7.高級言語のみでOSを記述することは可能だと思いますか.いずれの場合もその理由も書いてください.・プロセッサごとに固有の部分があるので不可能だと思う
使用するプロセッサごとに固有に対応しなければならない部分が多く、プロセッサによっては高級言語の命令を機械語に翻訳できないことがあるので、OSを記述することは不可能だと思われる。
私は高級言語を使うメリットの一つは、他の環境に移植しても、ある程度の動作の互換性が保たれることであると考えている。
よって、例え、高級言語のみでそのプロセッサに対応するプログラムを書くことが可能だとしても、それはほとんど意味のないことだと考えられる。
課題B
B1.いままで作ったもの(ソフトウエア、電子字辞書、燻製、陶芸、パズル、その他なんでも)で自慢したいものがあれば教えてください.
イきり案件なので割愛。今までの製作物(ロボットハンド、FlashAirタンクとか)について書いた。B2.自由に使える半導体製造装置が手元にあるとしたら、それで作りたいものを具体的に書いてください.
・組込みOSに対応したセキュリティチップ私は、これまでセキュリティチップという言葉自体は知っていたが、具体的に何をしているかということについては知らなかった。
その原因の一つに私たちがセキュリティチップに関わる機会が少ないことがあると思う。
セキュリティチップを個人向けに販売しているところも存在するがWindows Vista用など、開発しづらいものばかりである。
そこで、組込みOS(mbed OSなど)に対応した半導体を製造し、それの評価基板やDIP化キットなどを広めれば、セキュリティチップ及びセキュリティ分野全体に興味を持つ人が増えるのではないだろうか。
B3.ロボットに期待するところと危惧するところは何ですか.
・期待するところ…人とロボットが仲のいい存在になること私がロボットに期待することは人と対等になるぐらいに人とロボットが仲のいい存在になることである。
今現在では人とロボットが触れ合う例としてはソニー(株)が販売するaiboやディアゴスティーニ・ジャパン(株)が販売するロビが挙げられる。
しかしながら、それらはペットなどの人を楽しませることを目的として販売されているものである。
私は、人を楽しませるものだけでなく、人とほぼ対等な存在になって(完全に対等であると人々は恐怖を抱き、逆に仲がいい存在になることが難しくなるかもしれない)人と仲がいい存在になれば、私たちの生活もより良いものになるのではないかと考えている。
・危惧するところ…ロボットが人間にとって危険な存在になること
私がロボットに危惧することは先述の期待するところに関連するが、人間にとって危険な存在になってしまうことである。
また、それに伴って、人が「所詮はロボット」などと決めつけ、ある意味でロボットにとっての風評被害を引き起こしてしまうことである。
一度そのような噂が立つと人々に先入観ができてしまい、ロボットはいかに役に立つものでも端から役に立たないと決め付けられ、ロボットの持つ能力を十分に生かせなくなるかもしれない。
そのようなことが起こらない、或いは起こったとしてもそれを永続的なものにさせないためにも私たちが危険なロボットを作り出さないと強く意思を持つことが重要だと考える。
B4.ドローンに期待するところと危惧するところは何ですか
・期待するところ…ドローンがインターネット回線の中継器になること私がドローンに期待するところは、ドローンにレピータなどを搭載しドローンが中継局として活躍することだ。
盛んにIoTが叫ばれている現代において、特に災害時などにそのインターネットが繋がらなければ、IoT機器が活躍できない。
そこで、ドローンが中継局となり各地に存在するIoT機器を活用することで被害を最小限に抑え、すべて人間が行っている場合に比べ、効率的に救助や災害が起こった後の復興を進めることができると思われる。
・危惧するところ…ドローンが犯罪に利用されること
私がドローンに危惧するところは、ドローンがテロなどの犯罪に使われてしまうことだ。
ドローンは他の空を飛ぶラジコン(ラジコンヘリやラジコン飛行機)に比べ、操作しやすく、誰でも簡単に使えるという特徴がある。
しかしながら、便利な反面、ドローンに爆弾などの危険物を括り付けて飛ばしてしまえば、すぐにテロなどの犯罪道具になりうる。
また、そうなった場合、日常においてドローンを見ると「これから何か犯罪を犯すのではないか」と疑念を抱き、恐怖心を覚える人も現れるかもしれない。
B5.自律走行車両に期待するところと危惧するところは何ですか
・期待するところ…運転に余裕が生まれる私が自律走行車両に期待するところは、運転手も含め車両に乗っている人が運転するということに注意を向ける必要がなくなることだ。
例えば、私が家族と共に旅行に行ったとき、父が車の運転手だったが、車の進行方向とは逆の場所に観光名所などが現れると父がよく見ることができないことがあった。
なぜなら、父は車を運転しており、わき見運転をすると事故にあう可能性が非常に高かったためである。
このような問題は自律走行車両なら解決可能であると思われる。
自律走行車両なら、完全に注意を向けないというのも危険ではあるが、車の外の観光名所を見るぐらいの余裕は得ることができるとだろう。
・危惧するところ…災害時の対処
私が自律走行車両に危惧するところは災害など、人の判断が要される出来事があった時に自律走行車両が予想しない動きをしてしまうことだ。
災害というものは突発的に起こり、予想できない。自律走行車両は主に通常の運転時を想定して作られる。
そのため、人間ならすぐに道路の脇に車を止めることができるが、自律走行車両はそれができず、意図しない方向に動き、それが原因で更に事故を引き起こしてしまう可能性がある。
B6.IoTに期待するところと危惧するところは何ですか.
・期待するところ…情報のつながりが多く出来る私がIoTに期待するところは、情報のつながりがより多く出来るようになることである。
IoTはインターネットという概念を既製品に取り入れるだけで、多大な恩恵を得ることができると私は考えている。
また、IoTはインターネットを利用するので、その製品から得られたデータを他のことに利用し、情報のつながりが多くなる。
例えば、信号機にIoTを取り入れることで、既存の信号機としての機能に加えて、その時の信号機の状態(赤か青か黄か)をインターネット上に置くことができる。
そのデータを活用すればスマートフォンから信号機の状態を見たり、渋滞の原因を探ることができたりするかもしれない。また、信号機の状態が分かれば、自律走行車両の運用にも役立てることができるだろう。
・危惧するところ…サイバー攻撃の危険に晒される
私がIoTに危惧するところは、インターネットに繋がることで、サイバー攻撃の危険に晒されてしまうことだ。
IoTは確かに便利であるが、サイバー攻撃などで意図しない動作を生み出し、場合によっては人々を危険に晒してしまったり、個人情報を漏洩する可能性がある。
Watch Dogs 及び Watch Dogs2(どちらもUbisoft Montreal)というゲームがあるが、そのゲーム内の主人公は身の回りのIoT機器を意のままにハッキングする技術を持っている。
作中では、その技術を便利なものとしてゲームを進めていくが、そのハッキングを受けた機器を使っている人の気持ちになってみれば、許せない気持ちになることだろう。
このようにIoT機器は危険な存在にもなりうると考えられる。
B7.ロボットをよりセキュアーにするためのあなたなりのアイデアを聞かせてください.
・安全装置スイッチを設ける安全装置をソフトウェア上で実装するとソフトウェア自体の問題があったり、サイバー攻撃を受けたときに機能しなくなるといった可能性がある。
これらの問題を解決するために有接点リレーを用いた安全装置スイッチをロボットに実装すべきである。
安全装置は、安全装置スイッチ、有接点リレーのみを用い、ロボットの動作にかかわる部分とは完全に分離する。
ロボットを使う人が自らに危険が及んだ場合に安全装置スイッチを押せば、直ちに動作が止まるような仕組みにする。
B8.ドローンをよりセキュアーにするためのあなたなりのアイデアを聞かせてください.
・管制システムを作るドローンは悪意ある者の使用以外にもモーターなどの不調で墜落し、ドローンの筐体が人に当たってしまうなどの問題がある。
そこで、航空機が離発着する空港には管制塔があるように、ドローンも人が多くいるところには管制塔のような管制システムを作るべきである。
管制システムは各ドローンのGPS情報を把握し、GPS情報が予定されたものと違う、或いはGPS信号が届かなくなった場合に、そのドローンが飛行している付近の人々に危険を知らせる警戒情報を出す。
また、サイバー攻撃を受けてしまった際に、何機もある(あるいは何機あるかわからないかもしれない)ドローンを個別に守るよりも、管制システムで一括で制御信号を送り、管制システムを守ったほうがずっと効率的であると考えられる。
B9.自律走行車両をよりセキュアーにするためのあなたなりのアイデアを聞かせてください.
・走行する道路をあらかじめ決めておくソフトウェア上でサイバー攻撃などに対する術を実装するのも必要だが、私は自律走行車両が走る道路をあらかじめ決めておいたほうが、簡単にかつ効率的にセキュアーになると考える。
なぜなら、あらかじめ決めておけば、その道路を渡るときに私たちはより多くの注意を向け、その結果として、現在の自動運転車での弱点といわれている歩行者の飛び出しを防ぐことができるからだ。
また、走る道路を決めていない場合に比べ、車が自由な場所に行ってしまうということがなくなるため、車同士の位置をより簡単に取得することができると思われる。
B10.IoT機器をよりセキュアーにするためのあなたなりのアイデアを聞かせてください.
・製造メーカーがIoT機器の行動規則を作るインターネットに接続している時点でサイバー攻撃のリスクは0になることはなく、また、攻撃を受けてIoT機器の動きが本来とは違うものとなっても、その違いがわかる人はIoT機器のメーカーか、その機器の使用者だけになる。
もしくは、使用者でもわからないことがあるかもしれない。
そこで、IoT機器の製造メーカーが「本来あるべき動作」をあらかじめ規則として決めておき、それから外れた場合には直ぐに電源を落とす、というような仕組みを作るべきだ。
この「本来あるべき動作」にはICへの命令の順序、センサーへかかる電圧や電流なども含まれ、この規則に基づき、IoT機器内のシステム或いはOSが動作を監視する。
B11.半導体デバイスをよりセキュアーにするためのあなたなりのアイデアを聞かせてください
・セキュリティチップを複数個搭載する今日において、半導体デバイスの多くにセキュリティチップが搭載されている。
しかしながら、そのセキュリティチップの使っている暗号化の方式に脆弱性が見つかるという事例が発生している。
そこで、セキュリティチップを複数個搭載するべきだ。
セキュリティチップを複数個搭載し、暗号化の処理を分散すれば、「セキュリティチップ①が暗号化したデータ」「セキュリティチップ②が暗号化したデータ」というように区別することができる。
脆弱性に対する根本的な解決にはそのチップのファームウェアアップデートが有効だと思われるが、それまでの時間稼ぎができ、被害を抑えることができる。
B12.あなたの情報セキュリティに対し思うところを自由に書いてください.
・ハードウェア面のセキュリティを軽視する人が多すぎる今まで、クラッキングなどの攻撃から財産を守る有効な手立てはソフトウェア上でのセキュリティ性を高めることだったと思う。
しかしながらIoTの普及に従って、ソフトウェア上だけでのセキュリティ性を高めるだけではできない、或いはハードウェアのセキュリティ性を高めたほうが簡単に済む事例が増えてきたように思われる。
しかしながら、現代においてハードウェア上のセキュリティ性を高める必要性を感じていない人が多すぎると思う。
私が大学に入学して驚いたのは、周りにソフトウェア上のセキュリティ性を高める必要性はわかっているが、ハードウェアの方はハードウェアの設計者に任せておけばよいと考えている人が意外にも多いことである。
確かに、ソフトウェア上でのセキュリティ性を高めることはPCが1台あれば、どうにかすることはできるし、楽しいのかもしれない。
だが、そのままではシステム全体でセキュリティ性を高めるという本来の目的を達成できない。
私はハードウェア上でのセキュリティ性をより高めるたに基礎となるプロセッサやHDLについての勉強を続けている。
B13.あなたの作りたいものは何ですか。それは世の中をどの様に変えますか.
・人型ロボットで人間とロボットが調和する世界をつくる私が作りたいものは前述したとおり親しみやすい人型ロボットを作ることである。
感情移入できるロボットが現れれば、人間の社会に溶け込みやすくなり、円滑なコミュニケーションをとることができる。
結果として、子育ての場面において親が仕事などで家におらず寂しいと思う子供はいなくなり、ロボットと人が共に仕事をする場面ではロボットを信頼して仕事を任せることができるようになる。
しかしながら、"親しみやすい"人型ロボットを作るには性格を構成する部分、および、それを賄うソフトウェアの役割が重要である。
また、ソフトウェアやその制御にROSなどのロボット用ミドルウェアの使用するロボットも今後増えてくるだろう。
ロボットにソフトウェアが入っている限り、サイバー攻撃のリスクからは逃れられない。
サイバー攻撃を受け、悪意あるプログラムを実行するロボットが、突然に人を傷つけたり、性格が豹変するようなことがあってはならない。
特にROSなどの共通したソフトウェアを使用する場合はさらなる注意が必要だと思う。
それを防ぐためにはソフトウェア上での対策はもちろん、ハードウェア上での対策も必要不可欠である。
しかしながら、私はその対策を行う術を十分に持っていない。
現在、本屋に並ぶ情報セキュリティに関する書籍の多くはソフトウェア上でのセキュリティ性に関するものばかりであり、ハードウェアに主眼を置いたものは少ない。
私は、ハードウェア上でのセキュリティ性を高めることに興味があるが、それを学ぶための文献が少なく、困っている。
そこで、セキュリティキャンプを利用し自分の知見を高め、ハードウェア上のセキュリティ性を高める努力をしていきたい。
最後に
全体としては9700字ぐらいに収まった。かかった期間は(最後の方に焦ってやったとは言え)1か月ぐらい。
課題をやるだけでも、色々と調べ、自分の意見にまとめる力がつくので、他の人も是非やってほしい(何よりも他の方の回答が見たい!)
自己紹介
こんにちは、ユクロです。
大学生で、ロボットとか組込み系などが好き。