デジタル人材の育成
「OSを作ってみたい、でも自分には難しそう」と思った事はありませんか?確かに、よく使われているOSは巨大で、長い歳月をかけ、多くの人の手によって作られています。しかし、OSは個人でも思ったより簡単に書けるものなんです。この「OS自作ゼミ」では、さまざまなアーキテクチャ(x86_64, ARM64, RISC-V)のOS作りに詳しい2人の講師がみなさんのOS作りをサポートします。既に自分でOSを作っている方はもちろん、このゼミをきっかけに作り始めようとする方も、チャレンジ精神さえあれば幅広く対応します。また、講師がそれぞれ作っているOSを改造するというアイディアも大歓迎です!
このゼミでは、みなさんの興味に応じて、OSのつくりかたを教えます。必要に応じて、コードの書き方、仕様書や研究論文の読み方なども手ほどきします。この講義を通じて得られる低レイヤの確かな知識は、高性能でセキュアなソフトウエアを開発する際にも大いに役立つでしょう。
より詳しい説明については、osdev-jpサイトをご覧ください。多くの皆さんのご応募をお待ちしています!
普段なにげなくCPUをつかってプログラムを実行していますが、このCPUを作ってみたいと思ったことが少なからずあるのではないかと思います。 CPUの自作というと難しそうに感じるかもしれませんが、実はそこまで難しくありません。
特に、近年ではオープンソースの命令セット・アーキテクチャ規格であるRISC-Vの登場により、CPUコアを実装して実際に動作させるハードルがかなり下がっています。
本講義ではRISC-V CPUコアの作成を通じて、CPUの内部構造と動作原理を学びます。
作成するCPUコアは非常に単純なものではありますが、動作原理を理解することによりSpectreやMeltdownといったCPUの動作に関連した脆弱性の理解につながります。
講義の内容としては、書籍「RISC-VとChiselで学ぶ はじめてのCPU自作」で解説する RISC-Vの規格で定められる RV32I 命令セットを実装したCPUコアを、FPGA上に実装できるように修正して動作を確認します。
FPGAボード上にはCPUコアおよび動作に必要な周辺回路を実装します。またCPUコア上で実行するプログラムも作成します。
キャンプ期間の3日間でFPGAボードの基本的な使い方からRISC-VコアのFPGA実装のすべてを行うのは難しいため、事前学習期間に書籍およびFPGAボードを配ります。
使用するFPGAボードはある程度周辺回路構成を変更可能なものを用意しますので、
CPUの周辺回路を実装することにより、LEDの点灯制御やスイッチ入力、UARTによる通信、Ethernetによる通信、DVI出力によるディスプレイへの映像表示などを試すことができます。
現代では,コンピュータシステムは基本的には常時アクセスが可能で,動き続けていてくれるような安心感のあるものになっているかもしれません.しかしながら,コンピュータだって機械ですので,裏で動いているモノは「すでに故障しているもの」か「まだ故障していないもの (いずれ故障するもの)」のどちらかです.また,物理的な故障だけではなく,ソフトウェアの不良動作や悪意のある不正動作に対する備えも重要です.このような様々な故障に対応しながらサービスを継続的に提供する能力 (耐故障性) は,コンピュータシステムの信頼性を支える重要な役割を担っています.
このゼミでは耐故障性を高める基盤技術としての「分散システム」と,それをうまく動かすための仕組みの一つである「分散合意」について,代表的なプロトコルの実装を通して学びます.多くの方にとってあまり馴染みのないテーマかと思いますが,複数のコンピュータが通信によって一つのシステムのように振る舞う仕組みや,通信が必要であることから生じる課題とその解決方法などに興味がある方の参加を歓迎いたします.
このゼミでは独自のCPUとコンパイラを作ります。自作コンパイラ(とアセンブラ)が自作CPU用の機械語を出力し、それを自作CPUで実行するという流れです。CPUとコンパイラは既存のアーキテクチャを参考にはしますが、模倣せず自分で一から仕組みを考えます。基本的に、CPUはVerilog、コンパイラはCで開発します。
このゼミの特徴は、単に「どっちも作る」だけではなく、両方を「並行して作る」ところにあります。最初は整数を表示するだけのCPU(機能が少ないためCPUとは呼べないかもしれない)と、1つだけ整数を読み込むコンパイラを作ります。次はCPUを加算に対応させ、コンパイラが「整数+整数」を認識できるようにする、というように、段々と機能を追加していきます。このゼミでの目標は加減算と乗算が実行できるCPUとコンパイラを作ることですが、余裕のある人は独自の機能をいくつ追加してもかまいません。
CPUとコンパイラを並行して作ることで、両方を学ぶことができるという自明なこと以外に、次のような利点があります。
A.コンパイラの実現に必要な最小限の機能をCPUに追加すれば済むため、プロジェクトをコンパクトに維持できる。
B.CPUとコンパイラの両者が作りやすいように、互いの役割分担を調整できる。
CPUの作り方は様々ですが、このゼミではCPUボードをはんだ付けにより組み立てるところから始めます。CPUボードはFPGAボードを中核として、いくつかの表示素子、スイッチ、USBシリアル変換モジュール等から構成されています。キャンプ期間でそれらを組み立て、自作CPUのプログラムを書き込み、動作させます。集中して取り組める開発期間は3日間しかなく、非常に短いです。事前学習期間に受講者の皆さんにFPGAボードが配る予定ですので、キャンプ当日までにFPGAの扱い方を練習しておくことをお勧めします。また、CPUボードの組み立てに必要な部品も事前に送付しようと思っています。はんだ付けの腕前に自信がある方は事前にCPUボードを組み立てておけば、キャンプ期間でより応用的なことができるでしょう。
コンピュータがプログラムを実行する仕組みを一気通貫で体験したい、自分でその仕組みを作ってみたい方の応募をお待ちしております。3日間という短期間でCPUとコンパイラを作る必要があるため、それらの開発に必要なスキルを持っている必要があります。具体的にはVerilogとCを使いこなせる必要があります。ただし、今それらが未経験であっても、熱意があり、応募時点までにある程度の知識を身につけられたなら、是非応募してください!
アンチウィルスやEDRといったセキュリティ対策ソフトウェアはシステムプログラミングの塊です。更にマルウェアのスキャンという信頼できないファイルをパースしたり、エミュレーションしたりなど、処理が重く、危険度の高い処理をおこなわなければなりません。本テーマでは、Rustと一部Pythonを用いて、アンチウィルスの検知通知や検知ログ管理システムの実装、マルウェアの特徴抽出用DSLの設計と実装、実際のマルウェアデータセットを用いてマルウェア検知エンジンの検知率の向上などについて、取り扱います。なお、Rustはあくまでシステムプログラミングに適しているという理由で使います。そのため、ある程度Rustでのプログラミングに慣れている人、もしくはキャンプ期間までに自習できる人のみ応募してください。
最近、サイバー攻撃の波がどんな分野でも押し寄せており、防衛側はこの攻撃を見つけて対策を講じることが緊急課題となっています。
サイバー攻撃を検知する第一歩として、狡猾なマルウェアを見つけ出すことが大切です。
マルウェア検知のロジック開発では、解析、特徴抽出、検知回避対策など、さまざまなスキルが求められます。
時代は進み、マルウェア解析の和書もたくさん出版され、以前よりもずっと手に入れやすい情報が揃っています。
しかし、検知対象の製品作成に必要な知識を整理したものはほとんど存在せず、アンチウイルス開発はいわば謎に包まれたブラックボックスとも言えるでしょう。
そこで、開発の裏側は一体どうなっているのか?
この講義では、皆さんにとって馴染みのないアンチウイルスソフトを、自分で考えながら作り上げて理解することを目指します。
日本で唯一の国産アンチウイルスベンダーの講師陣が、皆さんが創る最強のアンチウイルスソフト開発を全力でサポートします。
さあ、楽しく学びながら、サイバー攻撃から世界を守る冒険に一緒に挑みましょう!
EDR(Endpoint Detection and Response)は、エンドポイント上の脅威を検知し、迅速に対応するための機能を提供するセキュリティソリューションです。エンドポイントで生成されるテレメトリ(プロセスの作成などの様々なアクティビティ)は膨大なため、脅威を効果的に検知するためには検知ロジックの作りこみが必要不可欠です。また、脅威の可視性を高めたり、被害を最小限に食い止めるために、検知された脅威に対してリアルタイムに対応することも重要です。
本ゼミでは、EDRの仕組みを解説したうえで、「Wazuh」をはじめとするOSS(オープンソースソフトウェア)を活用し、検知ルール、および、自動レスポンスルールの開発をセキュリティ演習を通じておこないます。
演習では、Redチーム(攻撃側)役の講師がOSSのEDRが導入された環境に対して攻撃を実施し、受講生にはBlueチーム(防御側)役として、EDRが収集したテレメトリから攻撃の全体像を明らかにしてもらいます。その後、同攻撃に対抗するための検知ルールと自動レスポンスルールを開発してもらい、再度攻撃がおこなわれた際に正しく検知・対応できるかどうか確認します。発展課題として、独自のテレメトリ収集機能を実装して、それを活用した検知ルールの開発にチャレンジしていただくことも可能です。
本演習は、実際に悪用されている攻撃手法を再現(Adversary Emulation)したシナリオのため、実践的なDetection Engineeringを学ぶことができます。
検知ルールの開発においては、マルウェア解析の経験が、自動レスポンスルールの開発においては、プログラミングの経験が活用できますが、これらの経験があまりない方でも講師による個別サポートがあるため、どのような技術的なバックグラウンドをお持ちの方でも参加可能です。本ゼミを通じて脅威に対抗するための実践的なスキルを一緒に磨いていきましょう!
ブロックチェーン技術が様々な業界にも進出し、その利用が急速に広がっています。いわゆるWeb3技術を活用したブロックチェーンゲームは、従来のゲームにはない新たな体験を楽しめますが、同時にセキュリティの脆弱性が悪用される事例も増加しており、開発者のWebセキュリティ対策のスキルがますます重要になっています。
この演習では、ブロックチェーンゲーム開発におけるWebセキュリティの理解を深めることを目的としています。参加者は、サーバサイドサーバ、Solidity、およびWeb3を使用して実際にゲーム開発を実践し、その過程でWebセキュリティ対策を適切に取り入れます。
【概要】
ここ数年、重大なセキュリティインシデントが発生し続けています。その勢いは従来の標的型攻撃に加え、ランサム攻撃を仕掛ける攻撃者の相次ぐ参入と活動の活発化により、留まる事がありません。これらの重大なインシデントの発生原因は、メールに添付された不正ファイルの感染によるものだけではなく、外部に公開された管理不十分なアセット(サーバ/NW機器)からの侵入によるものが多くなっています。また2019年以降では、標的の企業や組織から窃取した情報や、攻撃の事実を一方的に暴露する「二重脅迫型ランサム」が特に猛威を振るっています。
本ゼミでは、上記のように侵入経路となったサーバがインターネットに露出しているという点と、攻撃者が被害企業・組織名を一方的かつ盛んにリークしているという、この2つの性質を利用して攻撃者の戦術変化を捉える、OSINTをベースとした全く新しい調査手法について、調査手法そのものの習得と、調査自動化のシステム開発を行っていただきます。
【詳細】
各企業や組織が所有する外部公開資産は、ShodanやCensysなどのデバイス検索エンジンを活用することで、どのような用途のサーバがどこ何台あるのかまで洗い出すことが可能です。また、ここ数年はランサム攻撃者によるリーク行為が月間あたり200~300件行われます。これらのリークされた企業や組織の外部公開資産を継続的に調査し、攻撃者毎に分類を行うことで、攻撃者がいつどの機器をターゲットしているか、その変遷が見いだせる場合があります。
【講義内容】
1:ランサム系攻撃者の動向について解説(最近の被害傾向、特に狙われるサーバとはなにか)
2:ShodanやCensysなどのデバイス検索エンジンの利用方法について解説(特に狙われるサーバを発見する方法)
3:ランサム系攻撃者のリークサイト参照
4:2と3を組み合わせた調査
5:システム開発