最終更新日:2019年6月6日
本ページの情報は2019年6月時点のものです。
転ばぬ先の法律入門(サイバー空間編)
法律は、身近に感じることがあまりなく、難しいものと思われがちです。しかし、法律は、社会の人々の約束事であり、犯罪から社会を守る機能だったり、争いごとを公平に解決するための機能などを持っている大切なものです。
また、法律は、「やっていいこと、悪いこと。」を判断するためにも知っておくべきものです。特に、サイバー空間に関する法律は、歴史が浅い上、関係する人たちの考え方や常識も様々であり、「やっていいこと、悪いこと。」の判断が難しい領域です。
ですので、サイバーセキュリティ領域は、知らず知らずのうちに、違法と評価されかねない行為をしてしまう危険が大きいのですが、そのようなサイバー空間を安全に生きていく上での考え方を、共に考えていきたいと思います。
俺のTPM/TEEスキルで転生後も無敵です
本講義ではTrusted Platform Module (TPM)、Trusted Execution Environment (TEE) に代表される暗号技術プロセッサおよびセキュアエレメントの概念と設計について学びます。
近年スマートフォンやゲーム機、ICカードを初めとしたあらゆるポータブルデバイス上に個人情報が保存されており、これらを攻撃者の脅威から保護する事が急務となっています。TPMおよびTEEはプロセッサレベルでシステム外に専用の領域を作成し、暗号化、復号化、ハッシュ生成を行うことで攻撃者からデータや処理を隠蔽し重要なデータの多層防御を行います。
しかし残念な事に全てのデバイスがこの機能を有効化しているわけではなく、またシステム開発者の仕様把握が不十分なために間違った実装やパラメータ設定が行われている事もあります。
そこで本講義ではこれら暗号技術プロセッサについて仕様書や実装コードを通してその設計思想を学ぶ事を目的とします。また実際に発生した開発者のミスおよびそれを悪用した攻撃手法についても触れます。
攻撃検知エンジンの開発
本講座では、攻撃ベクター生成エンジンを用いて攻撃検知エンジンを開発します。事前に配布するデータセットをもとに簡単な攻撃検知エンジンを開発し、実際にベクター生成エンジンと対決。
そのフィードバックを元に改良して再度ベクター生成エンジンと対決します。題材はクロスサイトスクリプティング系列(予定)。特徴モデルをベースにする開発プロセスを超短期ですが実践することで、特徴の捉え方、その強さや弱さ、組み合わせについて学べるでしょう。
エミュレータによるCPU特殊命令の追加の実験
エミュレータに独自に追加されているCPUの仕様不明の特殊命令について、エミュレータにデバッガで接続して命令の入出力からその仕様を推測し、さらに同等の命令をエミュレータ上に再実装して動作させます。
DSPや組込み向け・制御向けマイコン、16ビットマイコン、FPGA用アーキテクチャ、32ビットRISCアーキテクチャ、64ビットアーキテクチャなど、多彩な10種類のアーキテクチャを対象とすることで、特定のアーキテクチャに依存しない本質的な視点から、命令の仕様が入出力からいかに推測できるか、実機を模擬すること以外へのエミュレータ利用の可能性、セキュリティのためにCPUに機能を追加するという発想、CPUとOSカーネルなど複数モジュール間で連携してセキュリティを確保するという考え、といったことについて模索します。
だまされないGPS
端末の位置情報の取得に利用されるGPSは、人工衛星が送信している無線信号により動作しています。GPSと同じ無線信号を作り出すことができれば位置情報を偽装(スプーフィング)することが可能で、ゲームでの悪用例や無人機を捕獲した実例が知られています。
本講義では、GPSの仕組みを理解するとともに、GPSによる位置計算プログラムを改良してスプーフィング対策を試みます。GPSをだませば何ができるか、GPSがだまされないためにはどうすればよいか、一緒に考えましょう。
暗号アルゴリズムのFPGA実装
本講義ではAESの仕様書(https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.197.pdf)を理解していることを前提とします。暗号アルゴリズムのAESのCのソースコードとFPGAソースを事前に示します。
ゴールは特に設定しませんが、CのソースコードからHDLに書き替えるスキルの習得を第一目標とします。特に重要な点はアルゴリズムの中から並列化できる個所を見つけだし、ハードウエア実装することでどの程度の高速化が期待できるか見積れる知見です。高速化のみがハードウエア化の目的ではありません。消費電力や発熱を抑えること、またより少ない半導体リソースで目的達成する回路を組むことも重要です。
しかしこれらはトレードオフの関係にあり、それらのバランスをとることが成功する半導体チップデザインのカギとなります。本講義で暗号モデルとしてAESを取り上げますが、AESは当時主流だった32ビットCPUで最も効率的に実行できるように設計されています。昨今の半導体トレンドであるFPGAやASICあるいはGPUあるいはメニーコアのアーキテクチャーに対応した新たな暗号アルゴリズムの考察も視野に入れたいと思っています。
ロバストなプロトコルを考案せよ
一般にサイバーセキュリティとは悪意を持った第三者からの攻撃から情報通信機器やデータを守ることに重点が置かれがちですが、これ以外に事故や自然災害から通信を確保することもサイバーセキュリティの大事な要素と考えます。
本講義ではふたつのRJ45端子があるブラックボックスを講師が用意します。その端子間でとある通信障害が発生する仕組みになっています。そのブラックボックスから障害の内容を調査し、その障害に対応したプロトコルを考案し実装します。あらかじめ示された評価軸に基づき、各自が考案したプロトコルを講師や参加者とともに評価します。
この講義ではどのプロトコルが優れているかを競うのではなく、今回の実装に至った思考過程を明らかにし、各自のプロトコルの設計思想を共有することを本講義の目的とします
モブプログラミング
モブプログラミングは複数人で1台のパソコンを使ってコーディングする開発スタイルの一種です。ここ数年で流行ってきた手法で知名度は低いですが、とても実用的な技術ですので使いこなせるようになりましょう。モブプログラミング参加者はある程度のプログラミングスキルが求められますから、事前に練習しておくことが推奨されます。