ホーム » スタッフ

スタッフ」カテゴリーアーカイブ

2019年9月
« 8月    
1234567
891011121314
15161718192021
22232425262728
2930  

最近の投稿(電子情報)

アーカイブ

カテゴリー

福井高専のドメイン名

そろそろ前期期末の成績締め切り。学生さんがレポート課題提出で先生にメールを送ることも多いが、メールアドレスの書き間違いでメールがエラーになって届かないトラブルがちらほら。

メールアドレスをどう書き間違えているのか確認すると、hoge@fukui-nctac.jp と書いていたりする。高専機構のドメイン名は、hoge@fukui.kosen-ac.jp で、ac の前がハイフンに間違えてるんだろうな。

まずは結論

高専機構(福井)のメールアドレスは、hoge@fukui.kosenac.jp です。

福井高専のメールアドレスは、hoge@fukuinct.ac.jp です。

ということで、以下解説。

ドメイン名の一般ルール

ちなみに、日本のドメイン名は古くは、組織ドメイン.種別ドメイン.国ドメイン の形式。

組織ドメイン=fukui-nct , 種別ドメイン=ac(教育機関) , 国ドメイン=jp(日本)

種別ドメインには、.co.jp(会社) , .ne.jp(ネットワークサービス) , .or.jp(団体) , .go.jp(政府機関) といったものがあるが、企業のサービスだと、.co.jp なのか .ne.jp なのか曖昧だったりするので、最近は省略したものを申請できるようになっている。

国ドメインは、アメリカはネットを作った所なので、国ドメインは省略され、.us(アメリカ) を使うことはめったに無い。一方、国ドメインも、.jp(日本) , .uk(イギリス) , .ch(中国) とかあっても、世界中に拠点を持つ企業では、.jp なのかよくわからないので、国ドメインを持たない種別ドメイン .com (企業) を取得することも多い。

高専機構のドメイン名

日本では最近様々な形式の学校が出てきたため、.ac.jp のドメインを取る時の審査は厳しくなっている。

このため、高専機構では、kosen.ac.jp を取得したいが審査が通らずしかたがないので kosenac.jp を取得している。

組織ドメイン=kosen-ac , 種別ドメイン=なし , 国ドメイン=jp(日本)

ちなみに、”-ac.jp” といった変則的なドメイン名は、教育機関を偽装したドメイン名と勘違いされやすく、kosen-ac.jp のドメイン名を見て「怪しい…」と思う人も多い。

福井高専のドメイン名

一方、高専機構ができた後の福井高専の英語の正式名称は、“National Institute of Technology, Fukui College” であり、福井高専のドメイン名としては、本来 “nit-fukui.ac.jp” を取得したい。

組織ドメインの綴りのルールは無いので、大学でも 大学名-u.ac.jp だったり u-大学名.ac.jp など色々あるが、最近は後者が主流となっている。(福井大学も以前は、fukui-u.ac.jp だったが、最近は u-fukui.ac.jp に変更されている)

しかし、.ac.jp の審査が厳しく、高専機構の1組織っぽい nit-fukui.ac.jp は審査が通らない可能性が非常に高く、どの高専も以前のドメイン名をそのまま使用しているのが現状である。

CTF講座・K-SEC第3ブロック学生向け講習会に参加

高専機構の情報セキュリティ人材育成プロジェクトの一環として、岐阜大学サテライトキャンパス(岐阜高専主幹)にて8/28(水)に開催された、CTF講座・K-SEC第3ブロック学生向け講習会に3EI学生1名が参加しました。

CTFとは

CTFとは、Capture The Flags という、情報セキュリティの知識を使ってクイズを解く競技です。

例えば、簡単なものでは、

  1. PGS{fnzcyr} からフラグを見つけよ。# rot13暗号化
  2. SQLインジェクションでデータ漏洩が発生するWebシステムが用意されていて、SQLインジェクションが発生するようなデータを入力させて情報を見る。

といった問題があります。複雑な問題では、

  1. C言語で生成された機械語があって、通常では何も表示されないけど、逆アセンブルして条件判断の一部をバイパスさせて、データを表示させる。

といった、OSや機械語の知識が要求されるものもあります。

初心者には大変だったかな

今回、4年はインターンシップなどで参加者があつまらず、初心者の3年の学生さんに参加してもらいました。CTFの初心者向け講習会ということで、基礎的演習もあるかと思いましたが、いきなりの簡易版CTF大会となりました。知識が不足していて、苦労していましたが基礎的問題をいくつか解けていたようです。

最後に、講習会の修了証をもらいました。

ダナンでの海外インターンシップ

専攻科1年でのインターンシップでは、海外インターンシップにも参加している。

今年は、本校電子情報工学科のベトナムからの留学生のOBのダン氏がベトナム・ダナンで起業したD-SOFTさんにお願いし、電子情報系専攻科生1年が4週間にて参加となりました。D-SOFTさんでのインターンシップは初めての受け入れのため、私も初日に同行すべくダナンに行きました。

キャンパスツアー2019(in電子情報)

8/11(日)には、福井高専のキャンパスツアーが開催され、電子情報工学科でも様々な展示を行いました。

ログ解析とSOC演習(in 石川高専)

高専機構の情報セキュリティ人材育成イベントK-SECにて、主管の石川高専さんにて、「ログ解析とSOC演習」の講習会がありました。

ログ解析

セキュリティ機器の設定や組織内のルールにて、防衛を行うことはできるが、完全に脅威を検知・防御することは難しい。通信ログやアクセス履歴などの取得・蓄積しログから脅威を検出することが重要。

ログ解析演習

Raspberry-Pi のサーバが学生1人毎に準備してあり、演習用のログデータから目的となる情報を探す演習を行なった。

$ ls -R
~pi/log/event1-5/pcap/sqlinjection.pcap
~pi/log/event1-5/web-log/access_log_yyyymmdd.log

まずは基本コマンド

$ cd log/event1-5/web-log/
$ ls -al access_log_yyyymmdd.log
$ cat access_log_yyyymmdd.log | more

ユーザーエージェントの確認

$ cat access_log_yyyymmdd.log | cut -d ' ' -f 12- | more
  # cut 特定の項目を抜き出すコマンド
  #   -d ' ' データの区切り文字は ' ' 空白
  #   -f 12- 12項目以降を出力
  # more 出力をページ単位で出力
  #   大量のLOGだと、長時間かかるよぉ…

ディレクトリパストラバーサルの確認

$ grep "¥.¥./" access_log_yyyymmdd.log
  # grep 特定の文字を含む行を抜粋して表示

# アクセス履歴のPATHを確認
$ grep "¥.¥./" access_log_yyyymmdd.log | awk '{print $7}'
  # awk '{print $7}' 各行の7番目を出力 ( cut -d ' ' -f 7 と同じ )

# アクセス成功の確認
$ grep "¥./" access_log_yyyymmdd.log | grep "¥" 200"
  # Webサーバのアクセスログには、データ取得成功=200 が記載されている行を抜粋

# 特殊なアクセスPATHを確認
$ grep /proc/cpuinfo access_log_yyyymmdd.log
  # 脆弱なphp,cgiだとアクセスのURLに、アクセスしたいPATHが含まれる
  # /proc/cpuinfo は、CPUの種別などの情報が取れる

# 攻撃者のIPアドレスを確認
$ grep -h "¥./" access_log_yyyymmdd.log | awk '{print $1}' | sort | uniq -c
  # アクセスログの先頭 $1 には、IPアドレスが書いてある。
  # sort 出力をソートする(同じ行を集めるためにソート)
  # uniq -c 同じ行が繰り返す行数をカウント

OSコマンドインジェクションの確認

脆弱性のあるメール送信ページへの攻撃の確認
# addressを含む行で@を含まないものを検索
$ grep -h address access_log-yyyymm*.log | grep -v @
  # grep
  #   -h 複数ファイルの処理で、ファイル名を出力させない
  #   -v 含まない行を出力する。

$ grep -h address access_log-yyyymmdd.log | grep -v @ ¥ | awk '{print $7}' | nkf -w --url-input
  # nkf 漢字などの文字コードを変換
  #   -w UTF-8 で出力
  #   --url-input %20みたいなURLエンコードを復号
この実行結果には以下のようなものがあるかもしれない。
"address=;/bin/echo Permit_RootLogin yes >> /etc/ssh/sshd_config"

SQLインジェクションの確認

  • 不正ログイン、情報漏洩、完全性損失、可用性損失 の可能性

SOC演習

大量のログでは、unixコマンドで解析するにしても、コマンド組み合わせを考えるのは大変。企業では、ログ解析専用ソフトを用いて解析を行う。ただし、専用の解析ソフトは高価。今回は、K-SEC事業で一時的な借り物で演習。


創造工学演習発表会

創造工学演習

  • 07/30 (不明飛行物捕手) UFOキャッチャーのシミュレータをUnityで作成。UFOキャッチャーの有名な技をいくつか実践できることを目指した。(UFOキャッチャーに3000円ツッコム想定でレベル変化。俺は500円以上ツッコンだことない) #創造工学演習
  • 07/30 (不明飛行物捕手) UFOキャッチャーのシミュレータ #創造工学演習 https://twitter.com/TohruSaitoh/status/1…
  • 07/30 (Typing. edu) タイピング練習とプログラミングのためのタイピング? もう少しプログラミングの言語をイメージした練習ワードをでるようにして欲しかったり。でもこれは情報系ジジイ教員の感想ね。 #創造工学演習
  • 07/30 (sin Go!!) 信号はsignalとかsignだしsign(しん)go(ごー)じゃね? #創造工学演習
  • 07/30 (sin Go!!) 運転支援で信号の変化を予測できないか…。信号情報はVICSから取得したいが、そのハードは開発困難で想定データを受信できたとしてシステム構築。データが公開されている地域も限定的なのでデータフォーマットなども想定で作らざるおえなかったみたい。 #創造工学演習
  • 07/30 (sin Go!!) #創造工学演習 https://twitter.com/TohruSaitoh/status/1…
  • 07/30 (ideal idea) アイデア発想の支援するために、曼荼羅法などの機能を実装。関連ワードの検索で支援。検索結果の内容を評価ができれば高評価だけど…。関連ワード検索などは動くけど複数人の利用を想定したセッション管理は未実装かな。 #創造工学演習
  • 07/30 (ideal idea) #創造工学演習 https://twitter.com/TohruSaitoh/status/1…
  • 07/30 (UnEI-C) 学祭の運営の支援システム構築。発表がソフトコンペのような丁寧なアイデア提案型で始まったけど、全般にわたるいい説明ですな。1人説明だけどな。支援のためのページを簡単生成できるような自動化について議論が欲しかった。 #創造工学演習
  • 07/30 (UnEI-C) #創造工学演習 https://twitter.com/TohruSaitoh/status/1…
  • 07/30 質問者から「実際にお客さんにサービス提供したとして幾ら?」との質問。シビアな質問だけど、先日訪問した情報・経営システム工学課程なら、定番の質問だろうな。ま、本科4年では意識を持てるだけで充分。 #創造工学演習
  • 07/30 →ALL 自分たちで作ったもの写メってTweetしたかぁ?? #創造工学演習
  • 07/30 (忘れ物防止) RFIDで忘れ物防止システムの構築。発表は実装重視型かな。個人的には好きだけどね。グループで作るネタをうまく配分してたかな。 #創造工学演習
  • 07/30 (忘れ物防止) #創造工学演習 https://twitter.com/TohruSaitoh/status/1…
  • 07/30 (ceries) 複数の希望に応じた候補のランキングなどのアルゴリズムの説明が欲しい。Instagram連携にチャレンジしているのは女の子らしくってGoodだけど、そこは未完か…残念。 #創造工学演習
  • 07/30 (ceries) 週末デートをどうするか支援するアプリだとぉ〜。非リア充は土日は引きこもりなんだよ。 #創造工学演習
  • 07/30 (TCMS) 注文までのインタフェースは基本が完成していた。作るメニューの画面を写真とテキストを与えたら自動生成するなどの対応を期待。発注の流れをメールに割り切ったのは基本機能を完成させる点でアリかな。 #創造工学演習
  • 07/30 (競技部門) 敵の行動予測をしたい,先の手をもっと読ませたいとの目標だけど、同じじゃ無いか? 領域ポイントの戦略がこのゲームの面白さなので、フィールドスカスカのターン数のはず。スカスカな状態で終わるターン数でもっと戦略を試してほしい。 #創造工学演習

 

2段階認証用USBセキュリティキー

Office365で、パスワードが破られspamメール送信に利用される事案が発生している。

こういうパスワードへの攻撃には2段階認証が有効。私もSMSへの使い捨ての数字パスワードや、認証アプリを使ったりしている。でも最近では、なりすましサイトを挟んで使い捨て数字パスワードを盗む手法も出てきているので注意が必要。この中で最近注目されているのが、物理的キーを使うもの。Google では、全社員がこれを使うことで被害を防いでいるらしい。

以下は、YubiKey というFIDO対応のUSBキー。認証時に、パソコンのUSBキーに刺して、真ん中のボタンに触れるだけで認証が完了する。ただ、ChromeなどのFIDO対応のブラウザが必要らしい。

購入してから、あまり使ってこなかったけど、Google や Facebook は FIDO の認証に対応してきたようなので、設定してみた。

オブジェクト指向プログラミング2019全講義録

情報制御基礎2019全講義録

3年学際科目・情報制御基礎の2019年度の講義録の一覧

オブジェクト指向とソフトウェア工学

オブジェクト指向プログラミングの最後の総括として、 ソフトウェア工学との説明を行う。

トップダウン設計とウォーターフォール型開発

ソフトウェア工学でプログラムの開発において、一般的なサイクルとしては、 専攻科などではどこでも出てくるPDCAサイクル(Plan, Do, Check, Action)が行われる。 この時、プログラム開発の流れとして、大企業でのプログラム開発では一般的に、 トップダウン設計とウォーターフォール型開発が行われる。

トップダウン設計では、全体の設計(Plan)を受け、プログラムのコーディング(Do)を行い、 動作検証(Check)をうけ、最終的に利用者に納品し使ってもらう(Action)…の流れで開発が行われる。設計の中身も機能仕様や動作仕様…といった細かなフェーズになることも多い。 この場合、コーディングの際に設計の不備が見つかり設計のやり直しが発生すれば、 全行程の遅延となることから、前段階では完璧な設計が必要となる。 このような、上位設計から下流工程にむけ設計する方法は、トップダウン設計などと呼ばれる。また、処理は前段階へのフィードバック無しで次工程へ流れ、 川の流れが下流に向かう状態にたとえ、ウォーターフォールモデルと呼ばれる。

引用:Think IT 第2回開発プロセスモデル

このウォーターフォールモデルに沿った開発では、横軸時間、縦軸工程とした ガントチャートなどを描きながら進捗管理が行われる。

引用:Wikipedia ガントチャート

一方、チェック工程(テスト工程)では、 要件定義を満たしているかチェックしたり、設計を満たすかといったチェックが存在し、 テストの前工程にそれぞれ対応した機能のチェックが存在する。 その各工程に対応したテストを経て最終製品となる様は、V字モデルと呼ばれる。

引用:@IT Eclipseテストツール活用の基礎知識

しかし、ウォーターフォールモデルでは、(前段階の製作物の不備は修正されるが)前段階の設計の不備があっても前工程に戻るという考えをとらないため、全体のPDCAサイクルが終わって次のPDCAサイクルまで問題が残ってしまう。巨大プロジェクトで大量の人が動いているだから、簡単に方針が揺らいでもトラブルの元にしかならないことから、こういった手法は大人数巨大プロジェクトでのやり方である。

ボトムアップ設計とアジャイル開発

少人数でプログラムを作っている時(あるいはプロトタイプ的な開発)には、 部品となる部分を完成させ、それを組合せて全体像を組み上げる手法もとられる。 この方法は、ボトムアップ設計と呼ばれる。このような設計は場当たり的な開発となる場合があり設計の見直しも発生しやすい。

また、ウォーターフォールモデルでは、前工程の不備をタイムリーに見直すことができないが、 少人数開発では適宜前工程の見直しが可能となる。 特にオブジェクト指向プログラミングを実践して隠蔽化が正しく行われていれば、 オブジェクト指向によるライブラリの利用者への影響を最小にしながら、ライブラリの内部設計の見直しも可能となる。 このような外部からの見た挙動を変えることなく内部構造の改善を行うことリファクタリングと呼ばれる。

一方、プログラム開発で、ある程度の規模のプログラムを作る際、最終目標の全機能を実装したものを 目標に作っていると、全体像が見えずプログラマーの達成感も得られないことから、 機能の一部分だけ完成させ、次々と機能を実装し完成に近づける方式もとられる。 この方式では、機能の一部分の実装までが1つのPDCAサイクルとみなされ、 このPDCAサイクルを何度も回して機能を増やしながら完成形に近づける方式とも言える。 このような開発方式は、アジャイルソフトウェア開発と呼ぶ。 一つのPDCAサイクルは、アジャイル開発では反復(イテレーション)と呼ばれ、 短い開発単位を繰り返し製品を作っていく。この方法では、一度の反復後の実装を顧客に見てもらい、 顧客とプログラマーが一体となって開発が行われる。

引用:コベルコシステム

エクストリームプログラミング

アジャイル開発を行うためのプログラミングスタイルとして、 エクストリームプログラミング(Xp)という考え方も提唱されている。 Xpでは、5つの価値(コミュニケーション,シンプル,フィードバック,勇気,尊重)を基本とし、 開発のためのプラクティス(習慣,実践)として、 テスト駆動開発(コーディングでは最初に機能をテストするためのプログラムを書き、そのテストが通るようにプログラムを書くことで,こまめにテストしながら開発を行う)や、 ペアプログラミング(2人ペアで開発し、コーディングを行う人とそのチェックを行う人で役割分担をし、 一定期間毎にその役割を交代する)などの方式が取られることが多い。

リーンソフトウェア開発は、品質の良いものを作る中で無駄の排除を目的とし、本当にその機能は必要かを疑いながら、優先順位をつけ実装し、その実装が使われているのか・有効に機能しているのかを評価ながら開発をすすめる。

伽藍(がらん)とバザール

これは、通常のソフトウェア開発の理論とは異なるが、重要な開発手法の概念なので「伽藍とバザール」を紹介する。

伽藍(がらん)とは、優美な寺院のことであり、その設計・開発は、優れた設計・優れた技術者により作られた完璧な実装を意味している。バザールは有象無象の人の集まりの中で作られていくものを意味している。

たとえば、伽藍方式の代表格である Microsoft の製品は、優秀なプロダクトだが、中身の設計情報などを普通の人は見ることはできない。このため潜在的なバグが見つかりにくいと言われている。これに対しバザール方式の代表格の Linux は、インターネット上にソースコードが公開され、誰もがソースコードに触れプログラムを改良してもいい。その中で、新しい便利な機能を追加しインターネットに公開されれば、良いコードは生き残り、悪いコードは淘汰されていく。

バザール方式は、オープンソースライセンスにより成り立っていて、このライセンスが適用されていれば、改良した機能はインターネットに公開する義務を引き継ぐ。このライセンスの代表格が、GNU パブリックライセンス(GPL)であり、公開の義務の範囲により、BSD ライセンスApacheライセンスといった違いがある。