到達目標
本科目では,Pythonを用いたサイバーセキュリティープログラミングを体験することを目的とする.このプログラミングを通して,主にLinux上のネットワークプログラミングを行う経験を得ると同時に,ネットワークとセキュリティーに対する理解を深めることを目標とする.
ルーブリック
| 理想的な到達レベルの目安 | 標準的な到達レベルの目安 | 未到達レベルの目安 |
評価項目1 | VMWare workstation player 上のネットワーク構成を構築でき,色々な攻撃プログラムを開発する環境を整備できる. | VMWare workstation player 上の特定のネットワーク構成を使うことができる | VMWare workstation player 上で必要なネットワーク構成を構築できない. |
評価項目2 | VMWare workstation player上でクライアント・サーバープログラムをプログラムできる. | VMWare workstation player上で単純なクライアント・サーバープログラムをプログラムできる. | VMWare workstation player上で単純なクライアント・サーバープログラムをプログラムできる. |
評価項目3 | scapyモジュールを活用したネットワークプログラミングができる | 特定のScapyモジュールの関数を活用することができる. | Scapyモジュールの使い方が理解できない. |
学科の到達目標項目との関係
教育方法等
概要:
サイバーセキュリティープログラミングについてコードを書きながら学習する.作成するプログラムの一つひとつは短いものである.また,Pythonのプログラミングであるため,内容も容易に理解できる.理論等で難しいこともない.ただし,仮想ネットワーク上で適切なクライアント・サーバー環境を構築したり,複数のOS間での通信を実現するなど,プログラミング以外の知識が必要である.また,教科書にあるプログラムは,正確に打ち込めば,問題なく動作するプログラムがほとんどであるが,プログラムが少し古いのでPython2.7の環境のプログラムである.3月には新版(ただし英語)が予定されており,Python3のコードなので,必要ならば新しいコードを提示する.多少の障害を乗り越えれば,今まで言葉のみで聞いていたことを,実際に動作させ体験できるので,プログラミング自身は非常に有意義なものである.
実務経験のある教員による授業科目:加藤は企業(IBM)でソフトウェアの開発を担当していた.その経験を活かし,オブジェクト指向におけるソフトウェア・インターフェースについて授業を行う.
授業の進め方・方法:
この授業では,学生にできるところはできるだけ学生によるプレゼンテーションで授業を進める.単に教科書のプログラムを打ち込んで,その内容を理解し,動作させるだけでなく,小さなモディファイでよいので,プログラムを改変することで,学生独自の攻撃プログラムを作成することに期待している.
注意点:
授業では,攻撃プログラムを作るので,WMWare workstation playwer 16 (VMWareはWSL2との共存ができるため)を活用する予定である.すでに,Virtualboxを使っている学生は,そのままVirtualboxを活用できるように配慮する.VMWare workstation playerを使う理由は,VMWare Workstation proにおいて,日本語のマニュアルが充実しているためでもある.
評価方法詳細:
発表 70%,課題等その他 30% を目安として評価する. 60点以上を合格とする.再試は行わない.
発表者以外も次回の授業範囲を予習し、教科書の該当範囲を事前に読んでおくこと。
授業の属性・履修上の区分
授業計画
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
オリエンテーションとWindows上へのAnacondaのインストール. |
独力で色々なPythonのプログラミング環境を構築できる.
|
2週 |
VMWare workstation player上にKali LinuxとUbuntuをインストールする.
|
独力でVMWare workstation player上にKali linuxとUbuntuをインストールすることができる.
|
3週 |
VMWare workstation playerのネットワーク構成を説明する.
|
VMWare workstation playerのネットワーク構成を説明できる.
|
4週 |
TCPを使ったクライアント・サーバー プログラムを作成し,実際に試す. |
クライアント・サーバー プログラムを変更し,独自のクライアント・サーバープログラムが構築できる.
|
5週 |
Netcatの置き換えプログラムを試す.(学生グループによる発表形式で行う) |
Netcatのプログラムを理解し,モディファイすることができる.
|
6週 |
TCPプロキシーを構築する.(学生グループによる発表形式で行う) |
TCPプロキシーを構築し,モディファイすることができる.
|
7週 |
予備 |
予備
|
8週 |
Paramikoを用いたSSH通信プログラムを作成する.(学生グループによる発表形式で行う) |
Paramikoを用いたSSH通信プログラムを動作させ,試してみることができる.
|
2ndQ |
9週 |
SSHトンネリングプログラムを作成する.(学生グループによる発表形式で行う) |
SSHトンネリングプログラムを試し,プログラムをモディファイすることができる.
|
10週 |
WindowsとLinuxでパケットを盗聴する. |
IPレイヤーがデコードできる.
|
11週 |
ScapyをつかったARPキャッシュポイゾニングを行う.(学生グループによる発表形式で行う) |
Scapyを使える.
|
12週 |
Webサーバーへの攻撃を説明する |
Webサーバーへの攻撃を理解できる.
|
13週 |
(この時間も予備として,時間ががあれば)key loggerを作成する |
key loggerを作成するプログラミングができる
|
14週 |
予備 |
予備
|
15週 |
予備 |
予備
|
16週 |
|
|
モデルコアカリキュラムの学習内容と到達目標
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 電気・電子系分野 | 情報 | 基本的なアルゴリズムを理解し、図式表現できる。 | 3 | |
プログラミング言語を用いて基本的なプログラミングができる。 | 3 | |
情報系分野 | プログラミング | 変数とデータ型の概念を説明できる。 | 3 | |
制御構造の概念を理解し、条件分岐や反復処理を記述できる。 | 3 | |
代入や演算子の概念を理解し、式を記述できる。 | 3 | |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 3 | |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 3 | |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 3 | |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。 | 3 | |
ソフトウェア | 時間計算量や領域計算量などによってアルゴリズムを比較・評価できることを理解している。 | 3 | |
評価割合
| 試験 | 発表 | 相互評価 | 態度 | ポートフォリオ | その他 | 合計 |
総合評価割合 | 0 | 70 | 0 | 0 | 0 | 30 | 100 |
基礎的能力 | 0 | 30 | 0 | 0 | 0 | 10 | 40 |
専門的能力 | 0 | 20 | 0 | 0 | 0 | 10 | 30 |
分野横断的能力 | 0 | 20 | 0 | 0 | 0 | 10 | 30 |