コンピュータサイエンス

科目基礎情報

学校 久留米工業高等専門学校 開講年度 令和03年度 (2021年度)
授業科目 コンピュータサイエンス
科目番号 7E12 科目区分 専門 / 選択
授業形態 講義 単位の種別と単位数 学修単位: 2
開設学科 機械・電気システム工学専攻(電気電子工学コース) 対象学年 専2
開設期 前期 週時間数 2
教科書/教材 サイバーセキュリティープログラミング(Justin Seitz,オライリー・ジャパン)
担当教員 加藤 直孝

到達目標

本科目では,Pythonを用いたサイバーセキュリティープログラミングを体験することを目的とする.このプログラミングを通して,主にLinux上のネットワークプログラミングを行う経験を得ると同時に,ネットワークとセキュリティーに対する理解を深めることを目標とする.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1VMWare workstation player 上のネットワーク構成を構築でき,色々な攻撃プログラムを開発する環境を整備できる.VMWare workstation player 上の特定のネットワーク構成を使うことができるVMWare workstation player 上で必要なネットワーク構成を構築できない.
評価項目2VMWare workstation player上でクライアント・サーバープログラムをプログラムできる.VMWare workstation player上で単純なクライアント・サーバープログラムをプログラムできる.VMWare workstation player上で単純なクライアント・サーバープログラムをプログラムできる.
評価項目3scapyモジュールを活用したネットワークプログラミングができる特定のScapyモジュールの関数を活用することができる.Scapyモジュールの使い方が理解できない.

学科の到達目標項目との関係

JABEE B-1 説明 閉じる

教育方法等

概要:
サイバーセキュリティープログラミングについてコードを書きながら学習する.作成するプログラムの一つひとつは短いものである.また,Pythonのプログラミングであるため,内容も容易に理解できる.理論等で難しいこともない.ただし,仮想ネットワーク上で適切なクライアント・サーバー環境を構築したり,複数のOS間での通信を実現するなど,プログラミング以外の知識が必要である.また,教科書にあるプログラムは,正確に打ち込めば,問題なく動作するプログラムがほとんどであるが,プログラムが少し古いのでPython2.7の環境のプログラムである.3月には新版(ただし英語)が予定されており,Python3のコードなので,必要ならば新しいコードを提示する.多少の障害を乗り越えれば,今まで言葉のみで聞いていたことを,実際に動作させ体験できるので,プログラミング自身は非常に有意義なものである.
実務経験のある教員による授業科目:加藤は企業(IBM)でソフトウェアの開発を担当していた.その経験を活かし,オブジェクト指向におけるソフトウェア・インターフェースについて授業を行う.
授業の進め方・方法:
この授業では,学生にできるところはできるだけ学生によるプレゼンテーションで授業を進める.単に教科書のプログラムを打ち込んで,その内容を理解し,動作させるだけでなく,小さなモディファイでよいので,プログラムを改変することで,学生独自の攻撃プログラムを作成することに期待している.
注意点:
授業では,攻撃プログラムを作るので,WMWare workstation playwer 16 (VMWareはWSL2との共存ができるため)を活用する予定である.すでに,Virtualboxを使っている学生は,そのままVirtualboxを活用できるように配慮する.VMWare workstation playerを使う理由は,VMWare Workstation proにおいて,日本語のマニュアルが充実しているためでもある.
評価方法詳細:
発表 70%,課題等その他 30% を目安として評価する. 60点以上を合格とする.再試は行わない.
発表者以外も次回の授業範囲を予習し、教科書の該当範囲を事前に読んでおくこと。

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
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

評価割合

試験発表相互評価態度ポートフォリオその他合計
総合評価割合07000030100
基礎的能力0300001040
専門的能力0200001030
分野横断的能力0200001030