ホーム » 2018 » 1月

月別アーカイブ: 1月 2018

2018年1月
« 12月   2月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

楽天を偽装したフィッシングメール

楽天を偽装したメール…完成度高いな…

職場のメールアドレスに楽天カードからの「カード利用のお知らせ」が、迷惑メールフォルダ内に落ちてる。 でも、職場のメアドで楽天さんのカードは作っていない。かといって、いつも送られてくるメールとほぼおなじ雰囲気。カード会社のメールが迷惑メールフォルダの落ちる段階で、怪しいけどな。

細かく見ていくと「Edyのチャージ」金額が、10,276円。 EdyやSuicaはよく使っているけど、3,000円 or 5,000円単位でチャージしているし、276円の端数なんやねん。
リンクにマウスを「移動」させURLを確認すると、「楽天e-NAVIにログイン」は正しそうなURL。しかし、「Gmailアドレスをご登録の会員様へ」あたりから怪しそうな短縮URLがぞろぞろ。カードというよりは、Gmail アカウント狙いっぽい。

仕方がないので最終段階の確認。メールヘッダ表示をしてみたら、案の定。

Received: from [84-40-95-70.net1.bg]  // .bg = ブルガリア
    (helo=mail.rakuten-card.co.jp)
    by 84-40-95-70.net1.bg with esmtpa...

しっかしまあ、よくできたフィッシングメールだわ。

共生社会シンポジウムでインターンシップの報告

共生社会シンポジウムでオムロン京都太陽さんでのインターンシップ報告

高専ライブ:2018年1月28日(第561回)

学生さんがテスト期間中につき、教員による収録でお送りしました。

  • 新任教員紹介 一般科目教室国語科 門屋先生
  • 高専生に聞きたい5つのこと 第15回 アマチュア無線同好会

ゲスト:一般科目教室国語科 門屋先生

担当:長水(数学科教員)、中村(国語科教員、MC)、西(電子情報工学科教員、MIX)

高専プロコン開催概要-第29回阿南大会

全国高専プロコン第29回阿南大会の大会の開催概要が発表となりました。

  • ITの未来はここにあるでないで!
  • 全国高専第29回プロコン(阿南大会)の主な大会日程(予定)
    募集期間:平成30年5月18日(金)~5月25日(金)

    • 予選(書類による審査)
      • 日時 平成30年6月23日(土)
      • 会場 東京都立産業技術高専品川キャンパス
        (東京都品川区東大井1-10-40)
    • 本選(プレゼン・デモ等による審査、競技は対抗戦)
  • 課題部門テーマ  ICTを活用した地域活性化

補足資料

高専ライブ:2018年1月21日(第560回)

収録の模様をお送りしました。

  • 期末テストの話
  • 高専生に聞きたい5つのこと 第12回 若者部会sunの釜井さん
  • 高専の入試の話
  • 料理の話

担当:越後(2E,MC)、木下(4EI,MIX)、西野(F1,MIX)、水島(3C)、西(教員)

実験用Cudaサーバでsambaの設定

専攻科の実験でCudaを用いている物があり、プログラム編集や動作結果のパソコンとのやり取りが面倒で…といった相談を受ける。

処理としては、そのCudaサーバにsambaが動いていればいいだけなので、samba のインストールのお手伝い。Cuda環境が動かなるのが不安なので、既存環境は極力触らずに対応。

samba-client などは入っているし、samba サーバをインストールして、起動すればいいだけだった。

((samba-*.debを探してきて))
$ sudo dpkg -i samba-X.X.X.deb

((ユーザのファイル共有の許可))
$ sudo vi /etc/samba/smb.conf
[homes]                      # ファイル共有関連部分のコメントを外し
  comment = Home Directories # ユーザのファイル共有を有効にする
  browseable = no

((sambaの起動))
$ sudo service nmbd start    # Windowsのコンピュータ名管理の nmbd 起動
$ sudo service smbd start    # Windowsのファイル共有管理の smbd 起動

((起動時にsambaを起動する設定))
$ sudo update-rc.d nmbd defaults
$ sudo update-rc.d smbd defaults

((ファイル共有を使うユーザの登録))
$ sudo pdbedit -a ユーザ1    # 初回登録は pdbedit で行う
enter pasword: パスワード
Re-enter password: パスワード

((パスワードの変更))
$ smbpasswd                # 個人でパスワードを変更の場合
enter pasword: パスワード
Re-enter password: パスワード

$ sudo smbpasswd ユーザ    # 管理者がパスワードを変更の場合
enter pasword: パスワード
Re-enter password: パスワード

WordPress4.9.2が出た

WordPress 4.9.2 が出てきた。日本語版”-ja” 付きではないけど、早々に入れておく。

2018/01/18 追記
お、今回は、4.9.2-ja 翌日には公開されたな。はゃっ…

2段階認証の設定とセキュリティ

2段階認証

前回授業の暗号化の説明でも解説したように、パスワードはブルートフォース攻撃をうければ、いつかはパスワードが破られる危険性がある。こういった対策で最も重要な方法が、2段階認証(多要素認証)である。

この方式では、通常のパスワード入力の後に、以下の様な方式でワンタイムパスワードを入力することでログインが可能となる。

  • 携帯電話にテキストメッセージ(SMS)でワンタイムパスワードを送る。
  • 音声を用いると、電話がかかってくると機械音声でワンタイムパスワードを読み上げてくれる。
  • 認証システムアプリは、時間で変化するワンタイムパスワードが表示される。
  • バックアップコード(非常時用のパスワード)

以下の資料では、Google と Twitter で2段階認証を設定するための例を示す。

情報ネットワーク基礎後半のレポート課題

各自が利用しているインターネットサービスの中から1つを選び、2段階認証の設定を行うこと。
もし、インターネットサービスを一切利用していない人は、暫定で入会し課題終了後解約すればいい。

設定の資料として、Google, Twitter の例を上記に示す。他にも、Facebook , Amazon , Microsoft ID などがあるので、自分にとってセキュリティ上重要なサービスについて設定を行うこと。もし、2段階認証で問題がある場合は、このレポート課題終了後、2段階認証の設定を外せばよい。

レポートでは、2段階認証の設定中の画面、ログイン時の2段階認証が行われている画面、受信したワンタイムパスワードの例などを画面のキャプチャなどで取得し、その手順の流れを解説し、考察として2段階認証の利点と欠点について記載すること。

ただし、キャプチャ画面をレポートに貼り付ける際は、自分の個人情報が記載されないように注意をすること。

既に全てのサービスで2段階認証の設定を終えている人は、いくつかのサービスで2段階認証を用いてログインする手順を説明せよ。

学校の Office365 にて、2段階認証を使いたいと思うかもしれないけど、慣れない学生さんがログインできなくなる可能性があり、一部の教職員しか使えない。

セキュリティ

インターネットをクラッカーからの攻撃をうけないように守る場合、以下の3点の対策が重要となる。

  1. インターネットの経路での対策
  2. サーバ側での対策
  3. パソコン側での対策

バッファオーバーフロー

クラッカーがサーバを攻撃する場合、サーバ上のプログラムの脆弱性を利用する。
サーバプログラムの脆弱性で最も典型的な攻撃方法は、「バッファオーバーフロー」がある。

void foo() {              // foo 実行時のstackの内容
    char str[ 10 ] ;      //   str                  fooからの戻り番地
    scanf( "%s" , str ) ; //   [ | | | | | | | | | ][ret_label]
}                         //     入力時に、abcdefghijklmn\r と入力したら
                          //     [a|b|c|d|e|f|g|h|i|j][k|l|m|n|\n]
void main() {             //                          戻り番地が破壊される
    foo() ;               //     入力時に、abcdefghij][ウィルス番地][ウィルスプログラム]
ret_label:                //     といったデータを与えると、foo() の処理が終わると
    return 0 ;            //     ウィルスのプログラムを実行してしまう
}

こういったプログラムは危険なので、こういうミスが見つかったらプログラムの更新が重要。

ファイアウォール

サーバで動かしているプログラムにバッファオーバーフローのような不備が残っていて、全世界のどこからでもこういった不備があるプログラムに簡単に接続できたとしたら、極めて危険である。

サーバで動くプログラムは、接続するためのポート番号が決まっているので、相手のコンピュータのIPアドレスが分かったら攻撃を仕掛けてくるかもしれない。

FireWall は、これらの接続をできなくするための方法で、例えば学内のWebサーバへの攻撃を防ぎたいのなら、ルータで「宛先ポート番号が80のパケットは廃棄」といった設定をすればよい。また、危険な攻撃を加えてくるコンピュータのIPアドレスがわかっている場合は、「送信元IPアドレスXX.XX.XX.XXのパケットは廃棄」という設定をすればよい。こういった、ポート番号やIPアドレスを見てパケットを遮断するルータは、FireWall(防火壁)と呼ばれる。

よくある設定であれば、ポート番号23(telnet)、137,139(Windows ファイル共有)を禁止など(ブラックリスト型)、基本は全面禁止だけどポート番号22(ssh)は許可(ホワイトリスト型)など。

mallocとfreelist

C言語では、動的メモリ領域をどのように管理していくのか解説する。

動的メモリ領域とフリーリスト

動的なメモリ領域(ヒープ領域)は、malloc()関数で処理用のメモリを借り、free()関数で使わなくなったメモリを返却する。

この借りるタイミングと返却するタイミングが、「Last In First Out」最後に確保したメモリを最初に開放してくれるのであれば、スタックを使えばいいが malloc や free のタイミングは、LIFO の順番のようにはならない。

この返却されたメモリ領域は、改めて malloc() が呼び出されたときに再利用を行う。この再利用するメモリ領域は、簡単に扱えるようにリスト構造にして保存する。この free された再利用候補のリスト構造は、free_list と呼ばれる。

mallocが一定サイズの場合

free_list の考え方を説明するために、malloc() でのメモリサイズが一定として説明を行う。

malloc() が呼び出される度に、free_list の先頭から貸し出すメモリを取り出し(a=malloc(),b=malloc(),c=malloc()まで)、free() が呼び出されると、返却されたメモリは、free_list の先頭につないでおく。

任意サイズのメモリ確保の場合

malloc() で、指定されたサイズのものが、free_list の中にあれば、それを使う。

丁度いいサイズが無い場合は、それより大きいメモリブロックの後半を切り分けて、貸し出す。

使用されていたメモリブロックが free() で返却された場合は、free_list につないでいく。ただし、単純にリストに繋ぐだけであれば、malloc(),free() を繰り返すと、小さなメモリブロックばかりになってしまい、malloc()ができなくなる。

そこで、free() で返却される際には、隣り合うメモリブロックと併合できるかを確認し、大きなメモリブロックになるような処理を行う。

ヒープメモリの断片化

ヒープメモリの malloc() , free() を繰り返すと、最悪、以下の図の様に、使用中領域(赤)とfreeされた未使用領域(黒)が交互に並ぶ状態が発生するかもしれない。この場合、全体の未使用領域の合計では十分なサイズでも、小さなメモリブロックばかりとなって、大きなメモリブロックを要求されても十分な大きさのメモリが見つからない状態が発生する場合がある。

この状態をヒープメモリの断片化といい、使用しづらい小さなメモリブロックはヒープホールと呼ばれる。

ガベージコレクタと演習(ハッシュ法)

ハッシュ法について演習ができていなかったので、前半座学(ガベージコレクタ)と後半演習(ハッシュ法)

ガベージコレクタ

前回、malloc などで使用を終えたデータを free で開放する際に発生する問題について説明し、その問題の解決法として参照カウンタ法を説明した。しかし、参照カウンタ法は循環リストなどが含まれる場合、free で開放できない状態が発生する場合があることを説明した。

このため、malloc で確保したデータ領域を、free で開放する処理は、複雑なデータ構造の場合かなり処理の記述が大変になる。

そこで最近のプログラム言語では、ガベージコレクタがある。この方法では、プログラムが malloc で確保した動的データ領域は、データが不要となっても開放処理 free は行わない。

しかし、このままでは、不要となったデータ領域がメモリに溢れ、メモリ不足が発生してしまう。そこで、一定量のメモリを使い切ったら、不要なメモリ(ゴミ=ガベージ)を回収(コレクタ)する。

マーク&スイープ法

ガベージコレクタの方法には、色々あるが、マーク&スイープ法では、

  1. 処理を一旦停止し、
  2. 動的メモリの領域すべてに「未使用マーク」をつける。
  3. 実際に使用している変数や、その変数が指している領域には「使用中マーク」をつける。
  4. マーク処理が終わったら「未使用マーク」の付いているデータは誰も使っていないので回収する。


他にも、コピー法といった方法もあるが説明は割愛する。

上で述べた様に、ガベージコレクタはプログラムを一旦停止し、全動的メモリ領域を検査するという手間のかかる作業を行うため、通常は「一時的にプログラムが止まる」ことからリアルタイムに処理を行うような場合には、極めて不都合が多い。

このため、最近では参照カウンタ法の技術なども取り入れ、局所変数は参照カウンタ法の技法を中心に回収し、大域変数はガベージコレクタの技法で回収する。

CやC++言語では、ガベージコレクタは基本的には利用できず、ガベージコレクタが取り入れられた言語としては、Java が有名。Java では、ガベージコレクタが実装されているため、通常のプログラミングでは、free や delete といった処理は不要である。しかし、処理速度や突発的な一時停止を避ける場合には、適切なタイミングで変数に null を代入するといった処理を明記するなどのテクニックが重要となる。

局所変数とスタック

局所変数は、関数に入った時に作られるメモリ領域であり、関数の処理を抜けると自動的に開放されるデータ領域である。

関数の中で関数が呼び出されると、スタックには戻り番地情報を保存し、関数に移動する。最初の処理で局所変数領域が確保され、関数を終えると局所変数は開放される。
この局所変数の確保と開放は、最後に確保された領域を最初に開放されることから、スタック上に保存される。

演習(ハッシュ法)

ハッシュ法のプログラム(オープンアドレス法もしくはチェイン法)を用いて、
(1)名前と電話番号,(2)名前と住所,(3)名前と誕生日について、名前をキーとして検索するプログラムを作成せよ。

「出席番号 % 3 + 1」の番号のテーマに取り組むこと。

レポートを作成する際には、ハッシュ関数を変更してどういった変化があるか確認せよ。
ハッシュサイズは、10〜20件程度で良い。