推しを推すだけの人生

色々書きます

Airtagをハッキングする

【はじめに】

こんにちは、最近は知り合いに勧められたアニメ86を見て心が荒んでいます。今回のリレーブログはBluetoothというテーマで書くことになりました。前回はこちら、次回はこちら

BluetoothといえばnRF52ファミリですね。というわけでAirtagをハッキングします。attackを礼賛するつもりはないですが、大人に怒られたくないので、あまり詳細には書きません。(とはいってもかなり有名な話なので調べればすぐ出てきます)

【nRF52の脆弱性

nRF52ファミリはIoT機器に搭載されているSoCで有名なチップですが、フォールトインジェクションができることで知られています。AirtagにももれなくnRF52が搭載されていて、フォールトインジェクションが可能です。フォールトの種類もclock、EMなど色々ありますが、今回はvoltageです。

故障注入の仕組みを詳細に解説するつもりはありませんが、簡単に説明すると、SoCへの電圧を一瞬グリッチすることで特定の命令をスキップする手法です。

【やり方】

まず必要なものを整理します。

最初にAirtagを分解します。小さいだけになかなか大変でした。壊れているとどうしようもないので、動作確認をします。nFR52チップからの電圧がとれればOKです。Airtagのデバッグポートを調べる必要がありますが、とうの昔にColinが調べていました。

次にグリッチソースを用意します。stacksmashはraspberryPi Zeroでやっていましたが、今回はchipwhispererでやってみます。raspberypiよりはプログラムが難しいですが、操作できるパラメータが多いので使いやすいですね。scope設定は以下です(逐一リセットする必要があるそうです。バッファの問題でしょうか?よくわかりません。)
scope.io.glitch_lp = False
scope.io.glitch_hp = False
scope.io.glitch_lp = True
scope.io.glitch_hp = True

デバッガはST-Linkを使います。グリッチが成功したかどうかを検証する必要があります。以下のように接続し、chipwhispererの実行完了を待ちます。(GNDは省略)

f:id:pino_oishii:20211127193915p:plain

【次回】

ダンプファイルを解析してみようと思います。こういうハッキング関連の話はどこまで書いていいのか分かりませんね。

【参考文献】

nRF52
DEFCON

Xenon death flashってかっこいいよね

【はじめに】

こんにちは、最近は高田憂希さんの自撮りが多くて嬉しいです(公式LINE登録しような!)
今回はXenon death flashについて書いてみます。(かなり昔に発見された現象ではありますが...)
物理や化学にはあまり明るくないので完全に素人まとめです。

【Xenon death flashとは】

遊戯王の魔法カードでありそうな名前ですね
現象名としてdeathがOKなら自分が何か新しい現象見つけたら「激ヤバ死ぬ死ぬアタック」とかにします。

この現象は、ラズパイ2 にキセノンフラッシュを当てると勝手にクラッシュするというものです。(動画を見ると分かりやすいです)
WL-CSPの構造とか、光電効果とか色んなことが重なって起こっているので、一つ一つ調べてみます。

【キセノンフラッシュとは】

キセノンガス中の放電による発光を利用したランプで、キセノンランプというものがあります。ちなみに、キセノンランプはアークランプの一種で、アークランプは高圧、もしくは低圧のガス中でスパークを発生させることで電極間を光らせています。初期のアークランプは木炭が用いられていて、これは木炭の蒸気と空気がイオン化しやすいから、なのですが話題がそれてしまうのでアークランプにはあまり触れないことにします。

さて、キセノンランプに戻ります。キセノンランプはキセノンを高圧に充填したガラス内で電極に電圧をかけることによって放電を起こし、発光しています。(なんでキセノンなんでしょうか?)
電圧をかけると、気体中の原子が電気的な力を受けてプラスイオンとマイナスイオンに分裂します。するとプラスイオンは負の電極に、マイナスイオンは正の電極に進むため、ここで電流が形成されます。このとき、電子が中性子と衝突すると放電し、閃光のようなアークと呼ばれるエネルギーを放出します。

これがキセノンランプですが、今回使われているのはキセノンフラッシュランプです。カメラで使われているフラッシュは、一般的なランプのように長時間照光する必要がありません。なので、キセノンフラッシュランプは照光時間が短い代わりに、何倍もの明るさを得ることができます。
さて、一般的なキセノンランプは高電圧が必要なので、大型の電源が必要になりますが、カメラにそこまで大型の電源を実装することはあまり現実的ではありません。そこで、コンデンサが用いられます。カメラの電源から供給されるエネルギーをコンデンサに貯め続け、イオン化によって生成された電流をたどってコンデンサに貯まった電圧を一気に放出します。これによってフラッシュが焚かれる、という訳です。シャッターを切ってからフラッシュまでに時間があるのはコンデンサに蓄電しているからですね。(シャッター方式にはいくつかありますが、そのうちマグネシウムの閃光粉でもラグはあります。こっちは燃焼によるもので、粉が荒いほどラグが大きくなります。)

【WL-CSP】

ラズパイにはWL-CSP(シリコンウエハ)でパッケージされた実装部品がありますが、このXenon death flashはWL-CSPの構造に起因しています。

WL-CSPは裏側についたはんだボールを溶かして基板と接着していますが、接着できても基板との間に隙間ができてしまいます。この隙間に光が当たると光電効果が発生し、電圧が急激に落ちます。これによってラズパイがクラッシュします。

光電効果

光電効果は、金属に光を当てると電子(光電子)が飛び出してくる、という現象です。細かく分けると内部光電効果と外部光電効果がありますが、今回起こっているのは内部光電効果です。(たぶん)
内部光電効果の仕組みですが、半導体には、電子が存在する価電子帯、その上に電子が存在できない禁制帯、その上に電子が存在できるけど存在していない伝導体の3層があります。(あくまでイメージとしての話です)このときに、禁制帯を越えるだけのエネルギーをぶつけると、価電子帯に存在する電子が伝導体にジャンプします。これによって電子が移動します。

光電効果においては、ある一定以上のエネルギーを持つ光をあてないと、禁制帯を越えず、電子が飛び出てきません。フォトンのエネルギーは振動数に比例しますが、キセノンフラッシュが光電効果を起こすのは、その振動数を超えているからです。
ちなみに、スマホのフラッシュで試してみましたが、再現しませんでした。これは、スマホのフラッシュが限界振動数を超えていないからですね。

【最後に】

相当強い光を当てないと再現しないため、あまり脅威となる現象ではないらしいです。それもそのはずで、太陽の光や蛍光灯の光で再現するようなレベルなら使い物にならないような気がします。
WL-CSPの構造に依存した現象なので、対策も難しそう感があります。
光電効果が起こるのは分かるんですが、チップのどこで光電効果しているのかが気になりますね。調査中らしいですが

【参考文献】

Xenon death flash
光電効果
キセノンフラッシュ
アークランプ

IDベース暗号と準同型暗号を触るだけ

【はじめに】

 セキュリティキャンプで行ったグループワークの一環で、ブログを書くことになりました。リレー形式で一週間ごとにブログを回し、前回バトンを持っていた人が次の人のテーマを決めるというルールです。

 今回の私のテーマは「暗号」でした。暗号についてはAESとRSAくらいしか勉強したことがなかったのでとりあえず「聞いたことある単語をなんとなく知ってる程度まで理解する」ことを目標にしました。今回はIDベース暗号と準同型暗号をとりあげてみます。(間違いがあれば指摘していただければと思います。。。)

【IDベース暗号】

 公開鍵に自分の好きな文字列を入れることができる暗号をIDベース暗号といいます.
 例えばRSA暗号では,

C = M^E (\mod N)

と公開鍵Eが使われますが,この公開鍵は復号鍵Dと合わせて

M = M^{ED} (\mod N )

となる必要があるので,E,D,Nはその制限に従う必要があります.一方で,IDベース暗号では任意のデータを公開鍵に設定することができます.手順は以下のようになります.

     
  1. Key Generation Center が初期化をし,楕円曲線上の点P,乱数(マスタ秘密鍵)s,T=sP(システムパラメータ),ハッシュ関数H_1,H_2とペアリング関数eを用意します.
  2. ユーザのIDから秘密鍵
    k=sH_1(ID)
    と計算します.
  3. 乱数rを用意し,g=e(H_1(ID), T)rPをを計算します.
  4. C=\langle rP, M \oplus H_2(g^r) \rangle (= \langle U, V \rangle)
    により,暗号化平文Mに対して暗号化を施します.
  5. 逆に復号するときは
    M=V \oplus H_2 (e(k, U))
    とします.

復号の部分を計算してみます.

\begin{align} M&=V \oplus H_2 (e(k, U))\\ &=M \oplus H_2(g^r) \oplus H_2 (e(k, U))\\ &=M \oplus H_2(e(H_1(ID), T)^r) \oplus H_2(e(k, rP))\\ &=M \oplus H_2(e(H_1(ID), sP)^r) \oplus H_2(e(sH_1(ID), rP))\\ &=M \oplus H_2(e(H_1(ID), P)^{sr}) \oplus H_2(e(H_1(ID), P)^{sr}) \end{align}

eはペアリング関数なので,双線形性から

 e(P, Q)^r = e(rP, Q) = e(P, rQ)

が成り立つことと,排他的論理和の性質から復号ができます.

【準同型暗号】

 暗号化されたデータ同士で加算、または乗算のどちらかのみができるとき、それを準同型暗号といいます。完全準同型暗号になると、加算と乗算が両方でき、任意の演算ができるようになります。0,1で構成される世界では加算と乗算でほかの演算を構成できるため、加乗算ができれば任意の暗号回路演算を実現できるということでしょうか。
例えば,預金残高を保存しているデータベースがあるとして,残高とそれに結びついているユーザ情報は暗号化されている必要があります.このデータベースですべての預金残高合計を知りたいとき,いちいち平文に戻してから計算していると,戻した時点で漏えいすると危険なので,暗号のまま預金残高合計を計算できると便利だと思います.
参考文献では楕円ElGamal暗号でデモをしていたので,私もそれに倣ってみます.楕円曲線はトーラス上の計算で,一周するともとに戻る性質を持ちます.昔のドラクエのように,長方形のマップ上で上辺を越えると下辺に戻り,右辺を越えると左辺に戻ります.(図でも書けばよかった)
まず楕円曲線上の点Pと,秘密鍵kを用いて Q=kPを計算します.このときkが秘密鍵で,(P, Q)が公開鍵ということになります.ここで, P, Q から kを求めることが困難であることを 楕円曲線離散対数問題(ECDLP)と言い,これが困難であるうちは楕円曲線が安全であるということになります.
暗号化手順:Enc(M) = (kP, M+kQ) = (C_1, C_2)
復号化手順:Dec(C) = C_2 - xC_1
一応復号を確かめてみると,

\begin{align} (M + kQ) - x(kP) = M + kxP - xkP = M \end{align}

となります.次に準同型であることも確かめます.加法準同型になるらしいので倣ってみます.

\begin{align} Enc(M_1) + Enc(M_2) &= ((k_1 + k_2)P, M_1+M_2+(k_1+k_2)Q)\\ &=(k'P, M_1+M_2+k'Q)\\ &=Enc(M_1+M_2) \end{align}

なりましたね.

【最後に】

あまり中身のある内容ではなくなってしまいました。。。リレー一週目の一番手なのでハードルは上げすぎずという言い訳をしておきます。。。 暗号技術はちゃんと触れたことがなかったのでこれを機にしっかり勉強してみたいと思っています。
次回の方は9/18に更新予定です。

【参考文献】

暗号文のままで計算しよう - 準同型暗号入門 -

楕円曲線入門トーラスと楕円曲線のつながり

クラウド時代の暗号化技術論

IDベース暗号の概観と今後の展望

セキュリティキャンプ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セキュリティに対する技術を深め,情報社会に貢献できるようなエンジニアを目指したいと考えています.


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

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

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

 

2週間でギリギリ合格した応用情報技術者

【はじめに】

 2週間で合格と書きましたが、裏技的なものの紹介というわけではありません。

 

【勉強開始前の状況】

  • 基本情報技術者は取得済
  • 平日、土曜は9~21時まで研究室かバイト
  • 日曜は1日空きがほとんど

 

【試験2週間前~1週間前】

  1. 網羅系参考書を通読
    • 知識のぬけの確認をしました。
    • 断片的な知識同士をつなげる意図があるので、ノリで読むのがいいと思います。
    • ちなみに読んだのは「キタミ式イラストIT塾」です。
  2. 午前試験対策
    • 過去問道場を使って午前問題の過去問を解きました。
    • 過去5回分を解いて、間違えたもの、知らなかったものをノートにまとめました。

【試験1週間前~前日】

  1. 午前試験対策
    • まとめたノートを見返しつつ、同じ過去5回分を解きなおしました。
    • FEもそうでしたが、午前は過去問の再利用が多いので、新しい年度に挑戦するよりは同じ年度を繰り返し解く方が効果的だと思います。
  2. 午後試験対策
    • 市販の過去問題集を買って、過去3回分を解きました。
    • ここでも知らないことがあれば、ノートにまとめました。

【当日】

  • 会場まではまとめたノートを見返しつつ、過去問道場で解いたことがない年度の午前問題を解きました。
  • 会場についたら、午前試験前まで過去問道場で午後の問題を解きました。
  • 午前試験は簡単なので、見直しまで終わったら退室するのが吉です。
  • 午後試験はギリギリ解き終わる程度でした。

【試験への意識】

  1. 午前試験について
    • 先も書いたように、午前試験は過去問からの再利用が多いので、過去問がかなり有効です。
    • 「午前試験は簡単」と書きましたが、それはあくまで「一問一答」という試験形式に起因するものであり、当然ある程度の勉強時間をペイしなければ突破できません。
    • とはいえ、時間をかけるべきは午後試験対策であることを忘れてはいけません。
    • テクノロジ系の知識は、参考書でも過去問でも学習できるので特に心配はいらないと思います。
    • ストラテジ系やマネジメント系は(学生にとっては)少し厄介ですが、「バランススコアカードの4つの視点」や、「PMのプロセス群」など頻出系の項目さえ覚えておけば(過去問を解いていくうちに何が頻出か分かるようになります。)解けるようになります。
    • それでも知らない、聞いたこともない問題が出ることがあります。そういった問題は、単語の名前や選択肢から推測することができます。
  2. 午後試験について
    • 午後試験では大問11個の中から5つ選択する必要があります。どの大問を解くかは過去問演習の時点で決めておくのが吉です。
    • 本来は、過去問演習で1~2回分を11問通しで解き、得意そうな大問をみつけるのが賢いやり方ですが、私は11問全て解く時間もなかったので、分野名だけで決めました。
    • ちなみに選択したのは
      1. 問1:情報セキュリティ(必須)
      2. 問3:プログラミング
      3. 問4:システムアーキテクチャ
      4. 問5:ネットワーク
      5. 問7:組み込みシステム
      です。
    • 解く大問を決めたら、過去問演習の時点でその大問だけを解くのが良いと思います。(毎回11問解いていては疲れますからね)

まとめ

平日と土曜日は研究室とバイトに時間をとられるため、必然的に睡眠を削らなければいけませんでした。かなり命を削って勉強した感があるので、試験が終わるまでは「もっと早くから対策すればよかった」と毎日後悔していました。

体感ですが、おおよそ2か月あれば十分に対策できると思います。これから応用情報技術者試験を受けようという方には、(特に忙しい方には)早めにコツコツと対策されることを強くおすすめします。