デジタル人材の育成

セキュリティ・キャンプ全国大会2023 講義一覧(開発コースL・X)

  • セキュリティ・キャンプ全国大会2023 8月7日月曜日~11日金曜日にクロスウェーブ府中で開催

Lクラス

  • L1『暗号化通信ゼミ』

    担当講師
    プロデューサー
    分野・キーワード
    • 暗号理論
    • 通信技術
    • プロトコル
    講義概要

    セキュリティを学び始める際, 必ずどこかでSSL/TLSという用語を耳にすることと思います. この用語は暗号化通信の方法の一つを表すもので, TLSは2023年時点のネットワーク・セキュリティに欠かせない基盤技術です. 本ゼミで学ぶのはこのような暗号化通信にまつわる技術であり, 特に実装を通じてこれを学びます.

    暗号化通信において, 「プロトコル」「プリミティブ」の2観点は安全性を推し量る基準観点の基本です. プリミティブは暗号そのもの(AESやECDSA, RSA等が著名ですね)であり, プロトコルはその使い方・通信の手順です. どちらも安全性に深く影響します.

    本当はプロトコル・プリミティブを両方同時に学べれば良いのですが, しかしそれには量が多すぎます. このため, 本ゼミではそのうち片方を選択する形となっています. そして講義の中で「自分でもう片方を埋められる力」を身につけて頂ければと考えています.

    また, 本ゼミでは2コースに共通して「原典を読めること」を重要な目標とします. 簡単な要約は世の中枚挙にいとまがありませんが, ことセキュリティの文脈においては妥協・要約では済まされません. ゼロからの自作を目指す場合にも原典は必須です. このための基礎体力を養うこと, それが「原典を読めること」の意義です.

    暗号技術は理論から実装まで幅広くまたがった横断的な分野です. 暗号化通信もそのほんの一部ですが, しかし尻込みする必要はありません. 喩えて言うなら, 我々は船の材料を一隻分提供し, 加えて船の造り方と操舵法, 海図の読み書きまでの全てを提供します. 皆さんに用意していただきたいのは, 船を造り乗りこなすための多少のプログラミングの知識と, 「あの島を目指すのだ」という知的好奇心だけです. 本ゼミを卒業した後には, 暗号技術のみならず情報セキュリティ, はては情報技術の海全体で開拓劇を繰り広げることを期待します.

    【プロトコルコース】
    「プロトコルコース」は今年から新しく作られたコースです. 暗号プロトコルの実装を通して, 暗号技術は現実世界でどのように利用されているのかを見ていこう!というのが本コースの目的です. 情報を秘密にするだけが暗号ではありません. 鍵管理や認証にも暗号技術が使われています. 暗号化通信では, 機密性と認証の両方を維持しないと, 本当の意味で”暗号化”したことにはなりません。

    暗号技術を正しく理解し, 暗号プロトコルに組み込むことができ, その上で安全性の評価もできる. そんな暗号プロトコルに通じた人材を目標として, 学んでいきます。

    実装するプロトコルはTLS 1.3を中心としたものを想定していますが, それ以外でも問題ありません。自分の興味がある暗号プロトコルでの応募をお待ちしております.

    【プリミティブコース】
    暗号の安全性は常に解読手法と隣り合わせです. 昨年まで実施されていた「暗号解読チャレンジゼミ」はこの点を特に強調し, 暗号における解読手法を軸としたゼミを実施していました.

    しかしながら, プリミティブに偏ったゼミになっていたことは否定できません. 今回設定されたこの「プリミティブコース」はその流れを汲みますが, 特に「暗号プリミティブはどのように使われるのか」という視点をより重視するようになります.

    プリミティブの構成・解読はいわば研究者の目線に近く, 「その実装が安全に使われるための条件は何か」「可能な限り少ない仮定で, 便利かつ安全に使われるためにはどうすればいいのか」といった視点はそこにありません. 本コースは, プロトコルコースと協調しながらこれらを学んでいきます.

    ゼミで学ぶ対象となる暗号プリミティブは, 受講決定の後, 応募課題での選択肢等をもとに相談して決定します. 特に興味のあるプリミティブが存在するのであれば, 応募課題の時点でお知らせいただいても構いません.

  • L2『暗号のままで計算しようゼミ』

    担当講師
    プロデューサー
    分野・キーワード
    講義概要

    「暗号のままで計算ができる」のが準同型暗号です。このゼミではその中でも「任意の回数論理演算ができる」TFHEという暗号を実装します。このゼミは、「準同型暗号の応用」よりも、「準同型暗号そのものを構成するにはどうしたらよいか?」という「暗号学の理論とその実装」を軸としたゼミです。本ゼミでは「暗号のままで計算ができる」ということを目指しますので、準同型暗号の「暗号としての安全性や攻撃法」はあまり扱いません。 進め方としては、まず暗号を数式として考え、それをプログラムに落とし込むということを繰り返して進めます。ですので、数学へ忌避感がないことが望ましく、初等的なベクトルと確率がわかっているとベターです。
    TFHEは恐らくみなさんが考えるよりは簡潔で、数学として美しく、エンジニアリングとしても高速化や応用の余地があって楽しいものです。 準同型暗号は今も新しい研究成果が次々に出ています。今年は整数演算の評価も扱えれば良いと思っています。皆さんのやる気次第ではこのゼミの内容が学術的未踏領域に入ることもありえるでしょう。誰もやったことのないことに挑戦する意志のある人を期待しています。

  • L3『Cコンパイラゼミ』

    担当講師
    プロデューサー
    分野・キーワード
    講義概要

    普段何気なく書いているプログラミング言語というものが、いったいどうやって実装されているのか、気になったことがある人も多いでしょう。プログラムを書く人であればコンパイラはそれなりに身近な存在かと思いますが、コンパイラが内部で何をしているのか、どのようにできているのかという点に目を向けてみたらますます面白いと思いませんか?

    本ゼミでは、C言語のソースコードを受け取って対応するアセンブリを出力する「Cコンパイラ」をゼロから自作します。自分の力でゼロからCコンパイラを作り上げていくことで、身近で遠い存在だったコンパイラの中身がどんどんと明らかになり、C言語の仕様やアセンブリの知識も自然と身についていきます。

    コンパイラなどという複雑怪奇で大きなソフトウェアを作るなんて大変そうだと思うかもしれませんし、実際簡単なことではありません。ですが、最初は極限まで小規模なものから始め、そこから少しずつ機能を増やしていくので、実装・テスト・デバッグの繰り返しを続けるうちにどんどんコンパイルできるコードが増えていきます。あっという間に書いている本人よりもコンパイラの方が賢くなっていって驚くことでしょう。その過程を十全に楽しめるよう、大会期間前には多めに事前学習期間を設けてじっくりと開発できるようにします。実装のためのテクニックやC言語のややこしい仕様に関するフォロー、豊富なテストの提供やデバッグなどといった様々な面で講師陣がサポートしていきますので、ご安心ください。

    C言語は長年にわたって多岐にわたる使われ方をしてきた言語ですから、Cコンパイラを自作することにより様々な目標を狙うことができます。たとえば、自作コンパイラのソースコードを自作コンパイラ自身でコンパイルする「セルフホスト」。自分のコードのバグが予測外の箇所に悪影響を及ぼし、頭を抱えながらバグを探す経験は、セルフホスト以外ではなかなか味わえない醍醐味と言えるでしょう。他にも、既存のOSSの大きなコードを動かすことを目標としても面白いでしょう。そんなのをコンパイルできるほど完成度を上げるなんて気が遠くなると思うかもしれませんが、穴だらけの自作コンパイラであっても実は既存資産が結構読めたり動かせたりします。他人の書いた実用的なコードをコンパイルする過程で自分の実装の思わぬミスを見つけることができるため、何を動かせて何をまだ動かせないか調べていくことでコンパイラがどんどん磨かれていきます。

    もちろん、これらの目標を達成できるコンパイラを作るには、それなりに多くの構文や仕様に対応する必要がありますし、出力される大量のアセンブリをかき分けてデバッグする必要もあり、決して簡単な道筋ではありません。しかしながら、このゼミを通じて、低レイヤと高レイヤの橋渡しをするための共通言語としての地位を確立している言語である C 言語と必ずや真剣に向き合うことができるでしょう。皆さんが今後どのような道を進むのかは我々には知るよしもありませんが、そのような経験は、今後いかなる方面でセキュリティや低レイヤに触れようとも必ず役立つものとなると信じております。皆さんの応募、お待ちしております。

  • L4『分散型アプリケーション脆弱性解析ゼミ』

    担当講師
    プロデューサー
    分野・キーワード
    講義概要

    分散型アプリケーションの脆弱性は、ときに多額の資金流出やガバナンスの乗っ取りなど甚大な被害をもたらします。2022年だけでも約5000億円に相当する資産が攻撃により失われたと報告されています。このゼミでは、現実世界で起こった分散型アプリケーションのエクスプロイトを解析し、その理論の理解および攻撃コードの実装を行い、(テスト環境で)実際に攻撃を再現することを通して、安全な分散型アプリケーションの構築技術を学びます。

  • L5『TEEの活用と攻撃実践ゼミ』

    担当講師
    プロデューサー
    分野・キーワード
    講義概要

    あるデータをマシン内外の脅威から厳密に保護しながらそのデータを用いた処理を行うという試みは、一昔前までは実現が不可能であるか、実現するにしても外部から遮断された隔離部屋での缶詰作業のような、極めて非効率な手法に依存する必要がありました。
    しかしながら、最近では技術の発展も相まって、この問題を解決する様々な技術が提案されてきています。中でも、データを保護しながら計算や分析を行う「秘密計算」やそれに関連する要素技術(準同型暗号、秘密分散など)の発展には目覚ましいものがあります。

    そんな中、近年頭角を現しつつある比較的新しい技術に「TEE(Trusted Execution Environment; 信頼可能な実行環境)」というものがあります。
    TEEとは、ハードウェア(多くの場合CPU)の機能でRAM上に(ユーザが動作定義を実装可能な)保護領域を生成し、秘密情報をその保護領域と安全なCPUパッケージ内でのみ取り扱い処理を進める事で、上記のようなデータを保護しながらの処理を実現する技術です。

    TEEには、秘密計算に利用されるような関連技術、即ち準同型暗号や秘密分散と比較してみても計算コストが小さめで効率的であり、その上で高度な安全性を提供できるというメリットがあります。
    一方で、ハードウェアに依存する以上ベンダを信頼する必要がある、サイドチャネル攻撃にはデフォルトでは脆弱といった独特な性質などにより、特に準同型暗号には相対的に安全面で劣ります。
    殊に、TEEの代表的な実例である「Intel SGX(Software Guard Extensions)」は、そういったTEEの性質や、CPU及びSGX自身の抱える脆弱性を突かれ、おびただしい数の攻撃の餌食となっています。

    本講義では、TEEの基本的な背景をご紹介した後、特にIntel SGXを用いた開発を実践的に行います。
    SGXを用いた基礎的なプログラミングから、最終的にはSGXを利用した鍵管理ソフトウェア等の開発を行う事で、現代の情報技術における安全性と速度のトレードオフの最適解の1つである「TEE」という技術の魅力に迫ります。

    一方で、本講義ではTEE特有の性質やSGXに対する攻撃についても実践的に体験し、TEEが決して秘密計算実現の上でのワイルドカードではない事を確かめます。
    SGXに対する攻撃には、Controlled-Channel Attacks、Sealing Replay Attack、Foreshadow、Plundervolt、LVI、ÆPIC Leakなど、名だたる高度かつ難しい攻撃が無尽蔵に存在しますが、あくまでもゼミ内で取り扱える範囲に簡略化して実践していきます。

    本ゼミを通して、TEEといういい意味でも悪い意味でも混沌としたからくり屋敷の魅力に迫っていきましょう。

Xクラス

  • X1『リバースエンジニアリングゼミ』

    担当講師
    プロデューサー
    分野・キーワード
    講義概要

    リバエンゼミではIoT機器を分解、解析してものが動く動作を明らかにするリバースエンジニアリングを中心に行います。
    また実際のIoT機器を分解、解析してどのような仕組みで動くかを明らかにし、可能であれば脆弱性が無いかを検証します。

    今後 IoT 製品がどんどん増えていく世の中に向けて、分解しながら物作りのためのアイディアの源泉を得るもよし、徹底的に分解を進めてすべてを明らかにする喜びを全力で満たすもよしの内容となっています。仕組みを知ること、解析することに興味がある方からの応募をぜひお待ちしています。

  • X2『電子回路・プリント基板を作ろうゼミ』

    担当講師
    プロデューサー
    分野・キーワード
    講義概要

    本講義では受講者のみなさまに「電子回路・基板を作る」選択肢を加えていただくことを目的として、みなさまと一緒にIoT機器の解析にも利用できるマイコンを使ったデバッガー基板を作ります。
    講義は「電子回路とは何か」という初歩から始め、回路図の読み方や部品の種類等を紹介しつつ、最後には回路図CAD・基板設計アプリ(kicad)を使った基板の設計、発注、および実装(はんだづけ)を行います。
    この講義を受けることで、日常の小さな「困った」を電子回路の知識や基板設計技術を用いて解決できるようになるでしょう。

    この講義は「電子回路に興味はあるけど作ったことがない」という方も大歓迎です。
    実際に手を動かすものづくりに興味のあるみなさまからの応募をお待ちしています。


    【受講を考えていただいている方へのお願い】
    基板の製造や部品発注を行う都合上、講義内容のほとんどを事前学習期間内に行う必要があります。
    そのため、受講を希望される方は以下の期間の予定の確認と確保をお願いします。
    (学業優先のため、テスト期間等はそちらを優先してください)

    講義予定
    ・キャンプ参加(6月初旬)〜 6月末: 事前学習
      ・配布資料を用いた自習(随時質問可)
      ・最低週1度程度のオンラインもくもく会(進捗に応じて増減)
    ・7月1日〜7月16日: 回路および基板設計
      ・オンラインもくもく会
       (例年締切に近づくにつれてもくもく会の時間が伸びる傾向にあります)
        ・毎日平日夜に1時間以上
        ・毎週休日どちらか半日
    ・7月17日: 基板発注締め切り & 発注
    ・8月7日〜8月11日(開催期間): 会場にて基板実装

  • X3『ハードウェア魔改造ゼミ』

    担当講師
    プロデューサー
    分野・キーワード
    講義概要

    本ゼミでは市販の無線ルーターにモーターと履帯(「キャタピラ」とも)を着けてラジコンに変貌させます。その過程で電気回路からHTTPに至るまで全レイヤーに触れるため、コンピューターを構成する技術スタックの全体像をハードやソフトの枠を超えて具体的に知ることができます。電波法令に定められた技術基準適合証明(いわゆる「技適」)への対応も含むため、魔改造にあたって遵守する事柄も同時に理解できます。コードは書けるけど低いレイヤーに触れたことがない・一風変わった技術の学び方に興味がある・見た目に楽しいハードを作ってみたい・改造の具体的手法が知りたい…といった方を主に想定しています。

  • X4『無線通信ハッキングゼミ』

    担当講師
    プロデューサー
    分野・キーワード
    • SDR
    • 無線
    • IoT
    講義概要

    無線通信ハッキングゼミでは、実際の無線通信で使われている技術を学んだ後、SDR(Software Defined Radio)を使用して実際の無線通信を受信し、通信内容の解析を行います。また、無線機を解析したり、実際にジャミングやリプレイ攻撃などを行って、意図しない動作を起こせるかどうかの検証も行います。
    無線通信に興味がある方、ちょっと違うレイヤーのセキュリティを学んでみたい方の応募をお待ちしています。