推しを推すだけの人生

可読性のなさには自信があります

セキュリティキャンプ2021応募課題晒し

【はじめに】

セキュリティキャンプ2021全国大会に参加することになりました。課題を解く際に応募課題晒しにかなり助けられたので私も来年以降の方々の助けになればと思い、晒すことにしました。あらためて読むと文才のなさに唖然としますが、あえて原文ママで載せようと思います。。。ちなみにXトラックです。

(Q1)以下の技術用語を解説してください。

(A1)

オームの法則、UART、SPI(Serial Peripheral Interface)、I2C(I-squared-C)、ソフトウェア無線(SDR)について解説する問題でした。特に難しい用語でもないので省略します。知らなくてもググることができます。

(Q2)直流と交流どちらが感電したときに危険だと思いますか?また感電はどんな工夫をすれば防げるでしょうか

(A2)

交流のほうが危険になると思います.
1.交流はプラスとマイナスを行き来するため,筋肉,特に心筋に対して微細動を起こします.これによって人体はダメージを受けます.
2.交流は実効値があり,メータなどで表示されている数値が直流と交流で同じでも,交流のほうが実際は大きな電圧が発生していることがあります.
3.人体は静電容量がありますが,交流と直流ではインピーダンスが交流のほうが低くなります.(コンデンサは電流の周波数によって流れる量が変わるため.)
感電対策には以下が考えられます.
1.アースを忘れない.
2.ゴム手袋や,長袖などで体の抵抗を上げる.
3.通電する金属が露出している部分(ワニ口クリップなど)にマスキングテープなどを巻く(ショートを防ぐ役割もある.).
4.いきなり大電流を流さない.
5.充電部や機械周辺にホコリをためない.
6.可能なら電源を切って作業する(特に商用電源).配線をネジで止めるタイプの場合,電源を切らないと感電の可能性がある.
7.体や機械が濡れた状態で操作しない.
8.機械や絶縁物が劣化した状態で使わない.

(Q3)データシートから以下の項目を読み取ってください

(A3)

与えられたPDFのデータシートからクリスタルの周波数や規格外電圧などを読み取る問題でした。英語のデータシートが読めれば全く問題ないと思います。

(Q4)IoT温度計を作ってください

(A4)

【機能】

最近世界を席巻するコロナは,症状が急激に悪化することが知られています.寝ている数時間の間に急逝された方も多く,発熱に対して非常に緊急性の高い病気であると思います.しかし,寝ている患者を一時間ごとに起こして体温を計らせる訳にもいきません.そこで,寝ている患者の体温をリアルタイムでモニタリングできる体温計があれば急激な発熱に対しても迅速に対応することができます.

【体温計について】

 体温計についてあまり調べたことがなかったので,この機に少し調べてみました.主要な体温計には水銀を使ったもの,サーミスタを使ったもの,赤外線を使ったものに分かれています.水銀を使ったものは寝ている患者に取り付けるものとしては危険であること,赤外線を使ったものは誤差が大きく,正確な温度測定が必要になる先ほどのような機能には不適切であることから,今回はサーミスタを使った温度計にしようと考えました.  次にサーミスタを使った温度計(以下電子温度計)についても調べてみます.サーミスタは熱によって電気的抵抗が変化する素子で,温度上昇に伴って抵抗が減少するNTCサーミスタと,逆に上昇するPTCサーミスタに大分されます.NTCサーミスタはPTCサーミスタと比べて温度に対する感度がいいことから,電子体温計にはNTCサーミスタが使われ,今回もそれに倣ってNTCサーミスタを採用します.  さらに電子体温計は測定部位の実際の温度を測定する「実測式」と,体温を短時間で計算し,分析する「予測式」に分かれます.実測式は正確である代わりに10分と測定時間が長いこと,予測式は測定時間が数十秒と短い代わりに計測誤差の懸念があることが特徴です.今回は実測式を採用したいと思います.寝ている間に計測するので10分程度の計測時間は気にならないこと,数度の違いが判定に大きな影響を与えることが主な理由です.また,より信ぴょう性を高めるために実測値を計測した後に予測式で数回測定する機能もつけたいと考えています.以上より,電子体温計を,NTCサーミスタを使って実測式と予測式で作りたいと考えています.なお,ファイルとして簡単なブロック図を添付します.

寝ている患者に取り付けるので,邪魔にならないものがよいと考えられます.そこで,ニット帽のようにとりつけるものを考えました.体温計測は額の部分で行い,それ以外の部分でデータを保存するシステムと通信します.そのままだと機械が頭に当たって寝辛いので,スポンジなどで包むなどの対策が必要になります(ニットだと不必要に温度が上がってしまうためスポンジを採用しました.).  体温データベースでは,体温を監視しつつ,上昇傾向が見られたら通知するという機能を搭載します.例えば,計測間隔は10分で,38度以上を更新したら通知する,などです.

【ブロック図について】

 1.電池...今回は電池で駆動する方式で考えました.頭に装着する装置なので,常に電源を供給する形式だと感電の不安がぬぐえません.この理由から電池駆動にしました.ただ,数時間の連続駆動を想定しているので電池が弱ってきても定電圧を供給できるように昇圧コンバータを間に挟む必要があります.  

2.演算...予測式では測定情報から体温を計算,予測する必要があります.そこでその計算予測を演算部で行います.  

3.ROM...計算のための情報をROMに格納します.この情報は更新する必要がなく,読みだすだけなのでROMを採用しました,  

3.判定...実測式では測定体温が一定を保ち始めたらそれを体温として出力します.その判定をこのブロックで担います.


ブロック図を一緒に添付して提出しました。ほんとうはArduinoでも使って実際に作るつもりだったのですが、あいにくマイコンも何もなかったので諦めました。Arduinoホスィ...

(Q5)今までにリバースエンジニアリングした経験、またはものづくりした経験を好きなだけ語って下さい。

(A5)

【アンプ1】

ものづくりに興味を持ち始めてから一番最初に作ったものがアンプです.現在までにアンプはいくつか作ってきましたが,一番印象に残っている最初のアンプについて書きたいと思います.  一番最初に作ったアンプは秋月電子で買ったD級アンプで,電子工作の練習として挑戦しました.はんだ付けの練習のつもりで買ったのですが,はんだ付けだけでなく説明書の読み方や配線の方法,素子の知識など,初心者の私にとっては想像以上に勉強になりました.

【アンプ2】

これは今も製作中で完成していないのですが,Nutubeを使ったヘッドホンアンプを作っています.もともと音響が趣味で,その流れで真空管に興味をもったのですが,完全に真空管初心者の私がいきなり真空管を触るのは経験知的に感電や破壊が怖い,ということで,低電圧でも作動する,蛍光表示真空管であるNutubeに挑戦しました.  ヘッドホンアンプですので,Nutubeの前後にインピーダンスを低くする(入力の高インピーダンスを出力の低インピーダンスに変換する)仕組みを搭載する必要があるのですが,ここをソースフォロワ回路が担うか,オペアンプで替えるかという問題がありました.もともと参考にしていた回路図ではソースフォロワ回路を採用していたのですが,真空管に造詣が深い知り合いに訊いたところ,「真空管が初めてならなるべく計算を簡単にした方がいいからオペアンプを使うといい」とアドバイスをいただいたので,オペアンプで代用することにしました.  さて,アンプを作っていざ聞いてみると,音が聞こえるのはいいのですがノイズが気になります.調べてみると真空管のマイクロフォニックノイズというノイズが問題のようで,振動によって電極がが揺れ,ひずみが生まれるとのことでした.また,Nutubeのアノード側の電流が10~34μAでかなり小さく,本当にちょっとした電磁誘導だけでもノイズになってしまうようです.さらに調べてみるとNutube自体にスポンジをつけて,また金属などのケースにしまうことで対策ができるとわかりました.Nutubeがむき出しの方がかっこいいと個人的には思ったのですが,背に腹は代えられないので金属ケースとスポンジでノイズ対策を施すことにしました.現在はこの段階で止まっており,注文品待ちとなっています.  ノイズを抜きにすると,Nutubeの性能にはとても感動しました.まず,通電するとアノードの蛍光体が青く光ります.些細なことですがとてもワクワクします.また,真空管特有の歪みも感じられます.真空管を意識するとあたたかみのある丸い音を想像していたのですが,意外にもパキっとした高音を感じました.おそらく無帰還であるためだと想像しますが,歪みがよく出ているのもこの無帰還のためか,と考察しました.

シンセサイザー

私は作曲もすることがあるのですが,その際にアナログシンセサイザーを使ってみたいと思い,ネットに公開されている回路図を使って基板と配線を作成しました.  私がものづくりしたものの中ではこれが一番大きいもので,回路の作成も,ボリュームなど各インタフェースとの配線も当時はかなり苦労しました.また,ボリューム(ローテートポテンショメータ)の一つの端子に3,4本の配線をつなげる部分がいくつかあったのですが,電子工作の経験がまだ浅い私にとってはかなり至難の業で,このシンセサイザー制作全体を通してもっとも苦労した箇所でした.また,この大きさのハードウェアをデバッグするのも初めてで,テスターで正しく通電しているかを一つ一つ確かめるしかなく,必要以上に時間がかかってしまいました.一番追及に苦労したのは配線の際にトグルスイッチの端子とボリュームの端子が近い箇所でショートしてしまっていたというものでした(配線の剥き芯がくっついてしまっていた.).  最終的には完成し,音もアナログシンセサイザーらしい不安定な音が聞こえたのですが,正直なところ内部構造についてはまだ理解できていません.理論としてアナログシンセサイザーは理解しており,電圧制御発振器やアンプなどもブロック図としては理解しているのですが,実際の基板上でどう対応しているのかはわかっていません.現在はリバースエンジニアリングのつもりで内部構造を調べており,ゆくゆくは改造も試してみたいと考えています.


(Q6)あなたが今一番リバースエンジニアリングしたいもの、またはものづくりしたいものを紹介して下さい。

(A6)

ギターを作ってみたいと考えています.

【ハードウェアとして】

 ギターは単に電磁誘導が起こっているだけなので,内部構造はシンセサイザーなどよりもはるかに簡単です.ピックアップ(ギターのボディについている,弦の振動を電気信号に変える磁石)さえ手に入れば単純な配線を組むだけで完成します.しかし,外部構造はそうもいかず,ピックアップをはめる場所やネックの長さ,自分の体形に合ったボディの形など,木材の切り出しがかなり大変になります.

【通信できるギター】

ただのギターでは面白みがないので,通信ができるギターを考えたいと思っています.ギターを弾いていてストレスの原因となるのはやはりケーブル問題だと思います.作曲用のソフトウェア(以下DAW)にギターの音を録音する際,エレキギターはライン入力で録音することがほとんどですが,一般的な広さの部屋で机と椅子とギターとアンプとケーブルと...と置いていくと,広さの面で利便性に欠けたシステムになります.そこで,ギターの音をそのままDAWに取り込めるようなギターを作りたいと考えています.

【ソフトウェアについて】

そのまま通信ができるギターを作ってもギターの信号をどうDAWに取り込むかという問題があります.私が使っているDAWCubaseというSteinberg社が開発したものなのですが,そのDAWで使えるプラグインVSTプラグインというものがあります.VSTプラグインC++で自作することができます.そこで,もしIoTギターを作るのであればこのVSTプラグインも自作する必要があります.  こうしたワイヤレスギターは実際にライブで使われていますが,接続用のデバイスが必要になります.しかし,ワイヤレスギターのシステムはやや高価であったり,安いものだとCubaseに対応していない(そもそもDAWにも対応していない)こともあります.ものづくりの魅力はこうした場合にも自分だけの環境にあったものを作れることにあると思います.

(Q7)何か他にアピールしたいことがあれば、自由に書いてください。

(A7)

【音響の趣味と内部構造を調べること】

前にもふれたように,私は音楽を作ることが趣味で,音響にも興味があります.もともとポケモンのBGMに興味があり,Dominoというフリーソフト耳コピしていたことが事の始まりでした.

 作曲においては,DAWソフトシンセサイザーなどのVSTプラグインを使うことがほとんどなのですが,使うVSTプラグインのうちほとんどの仕組みを調べたことがあります.ただ,ソフトウェアなので仕組みといっても大層なものではなく,各インターフェースがどのようにつながっていて,どこをいじればどう音が出るのか,というどちらかというと使い方に近いものだと思います.ただ,VSTプラグインはほとんどの場合プリセットを使うことが多く,自分で一から音を作ることの方が少ないようです.ですので,周りの作曲仲間と比べて遠回りな道を選んでいたことになります.ですが,もともとVSTプラグインの仕組みに興味があり,調べることで使いこなせるようになったと思うと後悔はしていません.

 作曲を進めていくにつれて次第に実物の楽器や音響システムに興味をもつようになりました.楽器についてはギター,ピアノに触れたのですが,どちらも内部構造に興味がありました.ギターは弦がボディに触れていないのに電気的な音になることや,テレキャスストラトなどギターの種類によって音が変わることを疑問に思い,それをきっかけに調べました.ピアノに関しては,調律師が何をしているのかということをきっかけに興味を持ちました.この知識により,作曲で楽器の力を最大限に引き出すことができるようになったと考えています.

また,音響システムとは,例えばスピーカやマイク,ケーブルなど音を入力して出力するまでの一連のデバイス群のことをいいます.私はこういったデバイスについても調べることがよくあります.スピーカやマイク,ケーブルなどはメーカーや製品によって内部構造が違うことが多く,それが音質や値段の違いを生んでいます(基本的な構造は一緒ですが,材質や配置など細かい部分が違うことが多いです.).それがおもしろく,頻繁に調べています.ですが,音響デバイスは非常に高価なものが多いので(ケーブルだけで10数万するものもあります.),安物を分解して基本構造を調べた後は雑誌など書面で調べることが多いです.

 私の個人的な見解ですが,音響は一度仕組みに興味をもってしまうと止まらなくなってまう分野だと思っています.アンプはもちろん,ケーブルや電源を変えるだけで音質が上がることもあります.また,新製品が毎日のように発表され,技術も日々進化しています.毎日勉強してもそのたびに知らないことが増え,いくら調べても足りないことだらけに感じています.また,音響は守備範囲が広く,パソコンやプリンター,魚探など音(正確には音波)を発するものはすべて音響が関係しています.機械のノイズを減らすにはどうすべきか,部屋の中で最大限音を響かせるにはどうすべきか,難聴はなぜ起こるのかなど,仕組みを調べると止まらなくなってしまいます.

【ハードウェアセキュリティ】

 私はハードウェアとソフトウェアの境界面におけるセキュリティを専門に勉強しています.セキュリティというとマルウェアアナリティクスなどソフトウェア方面に重きを置かれがちですが,私はハードウェアのセキュリティも考えるべきだと思います.マルウェアはインターネットから切断してしまえば感染する確率は大幅に減少しますが(外部デバイスからの感染の懸念はまだ残っていますが...),ハードウェアのセキュリティはそうもいきません.

例えばサービスが終了したIoT製品の多くは捨てられてしまいますが,捨てられた製品もUARTポートなどから情報が盗み出せてしまいます.IoT製品に限らず,row hammer攻撃やlight command攻撃, サイドチャネル攻撃などハードウェアそのものを攻撃する技術も多くあります.こうした攻撃はインターネットの有無にかかわらず成功してしまいます.

 IoTなどの組み込み機器は現実世界と情報領域をつなぐ機械といえます.先も述べたようなlight command攻撃などは特に情報領域への入り口を攻撃する技術であり,これがハードとソフトの境界面におけるセキュリティの意味するところです.例えば,自動運転技術にはセンサが必要不可欠ですが,このセンサに対して攻撃してしまうと誤った判定を出力し,事故を起こします.  現実世界の情報をインターネットに接続するIoT技術は今後も発展し,私たちの生活の多くを支えることになるといわれています.こうした技術に対する攻撃がMiraiなどのようにまた甚大な被害を生む可能性は否定できません.こうした攻撃を防ぐためにあらかじめ先回りして脆弱性を発見する必要があります.しかし,脆弱性の発見のためには物の仕組みを知ることが必要不可欠になります.私はセキュリティキャンプでの学習を通してIoTの技術,とくにリバースエンジニアリングについて勉強し,より一層IoTセキュリティに対する技術を深め,情報社会に貢献できるようなエンジニアを目指したいと考えています.


以上になります。黒歴史すぎて泣きそうになりました。よくもまあこんな稚拙な文章が書けるもんですね。。。

今回のセキュリティキャンプはオンラインで物理的制限がないため、自分が選択した講義のほかにいくつか追加で受講することができました。そのため、私がメインで受講するのはハードウェアセキュリティですが、ソフトウェアセキュリティ関連の講義も追加で受講することになりました。暗号の実装やアプリケーションの作成などの経験はあるものの、セキュリティに関して深く追求したことがなかったのでかなり楽しみです。

もしセキュリティキャンプに少しでも興味があるのであれば応募課題を解いてみることをおススメします。プログラミングつよつよでなければ合格できない、ということはないので、技術力に自信がなくても是非応募してみてはいかがでしょうか。