トリコロールな猫/セキュリティ

思いついたことをぼちぼち書いてます。

機械学習・深層学習の主なアルゴリズムまとめ2〜半教師あり学習・パーセプトロン・ニューラルネットワーク

前回の続き。

security.nekotricolor.com

前回は統計学色が強かったけど、ここからいよいよ「機械学習」色が強まる。気がする。完全に個人用メモで、これを読んだだけではなんだかわからないと思うので参考書籍と一緒にどうぞ。

半教師あり学習

答えのわかっているデータ(ラベル付きデータ)とわかってないデータが混在。ラベルをつけるのは大変なので、少量のラベル付きデータを使ってラベルなしデータにラベルをつけ、それを学習データに利用しようという試み。識別モデルと生成モデルに分かれる。
各モデルのアルゴリズムは調べきれず。基本的には前回の教師あり学習アルゴリズムを使う。

products.sint.co.jp

kento1109.hatenablog.com

www.slideshare.net

www.slideshare.net

強化学習

これはこれで大きな一分野で追っていくときりがないので定義と代表的な学習方法の名前のみ。
強化学習 - Wikipediaより:

ある環境内におけるエージェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学習の一種。エージェントは行動を選択することで環境から報酬を得る。強化学習は一連の行動を通じて報酬が最も多く得られるような方策(policy)を学習する。

TD学習

Temporal Difference Learning、時間的差分学習のこと。

Q学習

Q-Learningとも。

www.atmarkit.co.jp
これとCNNを組み合わせたDeep Q Network(DQN)が流行り。

パーセプトロン

ただ「パーセプトロン」といった場合には、「単純パーセプトロン」のことを指すことが多い。複数の信号を入力として受け取り、各入力に重みを乗算し、その総和がある値(閾値)を超えれば1を、そうじゃない場合は0を出力するアルゴリズムのこと。よくある図を描いておく。◯を「ニューロン」とか「ノード」とか呼ぶ。

f:id:nekotricolor:20190821141001j:plain
パーセプトロン

qiita.com

活性化関数

activation function。入力信号の総和を出力信号に変換する関数のこと。

ステップ関数

活性化関数の一つ。パーセプトロンで使われる。入力が0を超えたら1を、それ以外は0を返す。

ニューラルネットワーク

パーセプトロンに似ている(ニューロンのつながり方は一緒)が、シグモイド関数やReLUなど、ステップ関数ではない活性化関数を使う。ちなみに、パーセプトロンもニューラルネットワークも活性化関数には非線形関数を用いる必要がある。線形関数だと、多層にしても単層で表すことができるので意味がない。詳しくは「0から作るDeep Learning」の「3.2.6 非線形関数」(P.51)に。

活性化関数

シグモイド関数

Sigmoid。ニューラルネットワークで昔からよく用いられる活性化関数の一つ。ステップ関数が0か1かになるのに対し、ヌルヌルと1に近づいていく。

ReLU

Rectified Linear Unit。最近流行りの活性化関数。入力が0以下なら0を、0を超えていればその入力をそのまま返す。3つの関数のグラフを描いてみた:

f:id:nekotricolor:20190821141011j:plain:w350
ステップ・シグモイド・ReLU

出力層の活性化関数

ソフトマックス関数

分類(多クラス分類)に使用する。指数関数を用いる。2クラス分類ではシグモイド関数を使う。出力が0から1.0の実数になるため、確率として解釈することができる(ので分類に使える)。

恒等関数

回帰問題に使用する。入力をそのまま出力する。

畳み込みニューラルネットワーク

CNN(convolutional neural network)ともいう。隣接する全てのニューロン間に結合がある全結合では、例えば3次元のデータでも1次元にする(すべてのニューロンが同じ次元にある)必要があるが、CNNではその必要がなく、形状を維持して計算できる。画像や音声認識によく使われ、とくに画像認識のディープラーニングではほぼすべてがCNNがベースとなっている。畳み込み層(Convolutionレイヤ)とプーリング層(Poolingレイヤ)がある。

再帰型ニューラルネットワーク

RNN(recurrent neural network)ともいう。中間層の出力が自分自身へ戻される帰還路を持つ。これにより情報を一時的に記憶することができ、時系列データに対応することが可能。そのため、音声や言語、動画を扱うのが得意。

Web上の各所でRNNのRをリカーシブとかリカレントとか書かれていて最高にわかりづらいので書籍を参照したところ:

「深層学習」には

再帰型ニューラルネット(recurrent neural network)
回帰(型)ニューラルネット、あるいは循環ニューラルネットと訳されることもありますが、同じものです。*1

「ゼロから作るDeep Learning 2」には

Recurrent Neural Networkは、日本語では「再帰ニューラルネットワーク」
(略)と訳されます(略)
Recursive Neural Network(略)は木構造のデータを処理するためのネットワークで、リカレントニューラルネットワークとは別物です*2

と書かれており、どうやらリカーシブは別物らしい。リカーシブって「再帰」じゃないの・・・?

Long Short-Term Memory

ゲート付きRNNの一つ。中間層を入力/忘却/出力の3つのゲートと記憶(メモリ)セルを使ったネットワークに置き換え、より長い文脈を考慮した学習ができる。ので自然言語処理に強い。

オートエンコーダ

自己符号化器ともいう。ニューラルネットワークを利用した次元削減(Dimensionality reduction:高次元で定義されたデータを、新しい特徴量に変換して次元を減らすこと。計算量の削減や可視化のために用いる。線形では主成分分析(PCA)、対応分析などがある)アルゴリズム。事前学習(ネットワークの重みの良い初期値を得るための学習)に用いられることが多い。

制約ボルツマンマシン

RBM(Restricted Boltzmann Machine)ともいう。ボルツマンマシンは双方向に結合しているニューラルネットワークのことで、RBMは結合の仕方に制約があるもののこと。事前学習に用いられることが多い。

深層学習

Deep Learning。中間層がたくさんあるニューラルネットワークのこと。散々調べたけどそれ以上でも以下でもねえ。

参考書籍

何冊か読んでみましたが、ニューラルネットワークを使わないなら前エントリで紹介した書籍とWebサイトだけで十分だし、ニューラルネットワークを使うなら以下の「ゼロから作る〜」2冊と「深層学習」の3冊だけでいい感じ。ニューラルネットワークに関しては、Webはあてにしない方がいいです。良い記事もありましたがそれ以上に混乱させられる記事が多すぎる。

入門 機械学習

「スパムフィルタ」「暗号解読」などのシステムを構築しながら機械学習を学べる。でも言語がRなんだよねえ(私がRを知らないのが悪いんですが)。翻訳もちょっと読みにくい(のは原文が読みにくいからだと思われる)。Rを使わないなら下の「ゼロから作る〜」の方が日本人が著者で読みやすいしおすすめ。

入門 機械学習

入門 機械学習

  • 作者: Drew Conway,John Myles White,萩原正人,奥野陽,水野貴明,木下哲也
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/12/22
  • メディア: 大型本
  • 購入: 2人 クリック: 41回
  • この商品を含むブログ (11件) を見る

ゼロから作るDeep Learning

「最初からそう説明してくれればもっと早く理解できたのに・・」と感じることがたくさん書かれている、大変わかりやすい書籍。パーセプトロンとニューラルネットワークの説明はこれが一番よかった。ほんっっっとにね、わかりやすいんですよ・・日本人著者のありがたみ・・。Pythonインタプリタを使ってその場で簡単に確認できるのも良い。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning2

「ゼロから作るDeep Learning」の続編。こちらも大変わかりやすい。RNNはこれなしじゃ理解できなかったです。

ゼロから作るDeep Learning ? ―自然言語処理編

ゼロから作るDeep Learning ? ―自然言語処理編

深層学習

「ゼロから作る〜」があまり数式を使わずに説明していたのに対し、こちらはゴリゴリと数学的に説明していく。教科書としてよく使われているそうで、確かにレイアウトが教科書っぽい。深層学習に関して押さえておくべきことがきっちりと載っている感じ。ちなみにオートエンコーダ(自己符号化器)とボルツマンマシンはこの本には載っているけど「ゼロから作る〜」には載っていない。

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

*1:「深層学習」「7.1 系列データの分類」P.112

*2:「ゼロから作るDeep Learning 2」「5.2 RNNとは」P.183/太字は著者による

機械学習・深層学習の主なアルゴリズムまとめ1〜教師あり学習と教師なし学習

数学的に完全に理解する必要はないけど、あれをするときはこれを使う、くらいは分かっておきたいのでメモ。オフラインで書いてるとテンションが上がらないのではてダに残す。長くなりそうなので半教師あり学習・強化学習・深層学習はこちら。

security.nekotricolor.com

全体を通してこの図が参考になった。scikit-learnはPythonの機械学習ライブラリのこと。
peekaboo-vision.blogspot.com

教師あり学習

Classification(分類)

入力データからクラスを予測する。

分類木

決定木(Decision tree)の一種。目的変数(予測したい変数)が質的変数の場合。

ナイーブベイズ分類器

単純ベイズ分類器とかベイジアンフィルタともいう。ベイズの定理を使って、あるクラスに属する確率を求める。全ての特徴量は互いに独立であるという前提から「ナイーブ」と呼ばれる。出てくるのは確率なので(ここまでなら回帰だよね?)、◯%以上ならA、それ以外はBなど「決め」が必要。スパムフィルタでよく使われる(今もそうなのかしら?)。

rtokei.tech

サポートベクターマシン

SVM。簡単に線引き(3次元なら平面で)できないものを、高次元に変換(2次元を3次元にするとか)して線(平面)を引いて分けられるようにする。

f:id:nekotricolor:20190810135737j:plain
サポートベクターマシン

k近傍法

k Nearest Neighbor ということでkNNとも書く。説明は以下のQiitaが分かりやすい。

qiita.com

Regression(回帰)

入力データから数値を予測する。

回帰木

決定木(Decision tree)の一種。目的変数(予測したい変数)が量的変数の場合。

線形回帰

単回帰分析の一つ。グラフ上に点があって、なんとなくたくさん点があるところを通る直線のあれ。説明変数(予測に使われる変数)と目的変数の関係を1次式で表す。
www.albert2005.co.jp

ロジスティック回帰

目的変数が質的変数、特に0か1の2値のときに用いる。

istat.co.jp

スパムフィルタにも使われているらしい。記事が古い(2006年)からいまは違うかも?
thinkit.co.jp

あれ、質的変数なら分類では?と思ったらまず確率を求めるので回帰だということ。
scrapbox.io

じゃあナイーブベイズ分類器の方が回帰よね。これも確率を求めてそれを元に分類しているので。(分類までして1セットなので「分類器」なんでしょう。)
どっちを使うのがいいかというと:

・十分にデータがあるならロジスティック回帰が有利
・データの少ないタイミングではナイーブベイズが有利

だそうです。
scrapbox.io

教師なし学習

クラスタリング

似たものをグループ化する。

ウォード法

階層クラスター分析=途中過程が階層のように表せる(デンドログラムが作れる)の一つ。

www.albert2005.co.jp

確かこれでマルウェアの系図を作る論文があったな・・・と思ったらこれは静的解析がメインだった。系統解析(階層クラスター分析のことでいいのかな?)でデンドログラムを出している。
展開型静的解析と動的解析を連携させたマルウェア解析手法

FFRIのこれはまさにウォード法でやっている。
動的情報に基づいたマルウェアのクラスタリング

NTT情報流通プラットフォーム研究所でも階層的クラスタ分析でマルウェアの分類をやってる。
機械語命令列の類似性に基づく自動マルウェア分類システム

k平均法

k-meansともいう。非階層クラスター分析の一つ。ランダムにクラスタを割り当て→重心を計算→一番近い重心にクラスタを割り当て直す、を繰り返す。説明は以下のサイト。
tech.nitoyon.com

k-meansを改良したO-means法によりスパムをクラスタリングする試み。やっぱりベイジアンフィルタだけでは排除しきれないようになってきてるのかな?

スパムによる攻撃を分析するためのクラスタリング手法と特徴量選択手法について

参考書籍

統計学の図鑑

仕事で文書のクラスタリングをするときに最初に買った本。
図鑑というだけあってでかいし絵が豊富。でもベイジアンフィルタのことまで書いてある。とっつきやすい。

統計学の図鑑 (まなびのずかん)

統計学の図鑑 (まなびのずかん)

完全独習 統計学入門

中高の数学をだいぶ忘れていたので上の本と一緒に購入。標準偏差について非常に詳しく説明している(ので機械学習をツールとして使うだけならあまり必要ないかも)。章末の練習問題をやったりして学生気分に。

完全独習 統計学入門

完全独習 統計学入門

Rによるデータマイニング入門

上2冊に比べると本格派。これを一番よく読んでいる気がする。Rに慣れてないのでソースが読みにくいのと図(Rによるプロット)がきれいでないのがちょっとあれだけど、知りたいことがだいたい章題になっているので手放せない。

Rによるデータマイニング入門

Rによるデータマイニング入門

2018年に公開されたセキュリティ関連文書まとめ

もう3月ですがやらないよりはいいだろうということで・・・。
2018年はリアルタイムには情報を追っておらず、お知らせ一覧等から調べているため抜けがあるかもしれません。

ルールは以下。

  • 公共性の高いものを載せています
  • WGや研究会の純粋な活動報告書、個別のインシデント・脆弱性は載せていません

情報源はこの辺。

security.nekotricolor.com

政府機関

NISC

文書タイトル 公開日
サイバーセキュリティ戦略 2018/07/27

セキュリティ関連団体

その他

文書タイトル 公開日 公開組織
危険な12 の落とし穴 クラウドの重大セキュリティ脅威 + 2017 インシデント事例集 2018/05/19 CSAジャパン
フィッシング対策ガイドライン 2018 年度版 2018/06/04 フィッシング対策協議会
フィッシングレポート 2018 2018/06/04 フィッシング対策協議会
クラウドコンピューティングのためのセキュリティガイダンスバージョン4.0(日本語版) 2018/06/24 CSAジャパン
違法・有害情報対策活動報告(2017年) 2018/08/20 セーファーインターネット協会

*1:公衆無線LANの現状、セキュリティ対策のあり方などが載っているので掲載

SecHack365の成果発表会に行ってきました

3月8日に秋葉原で行われたSecHack365の成果発表会に行ってきました。

sechack365.nict.go.jp

最初の3つの発表しか聴けませんでしたが面白かったのでメモ。

QEMUによる自動バイナリ防御機構の開発

セキュリティ機能をつけたQEMUという感じでした。リターンアドレスを保存しておいて実際の戻り先と比較し違っていたら終了させるとか、printfの%nを他の文字列に置き換えるとか(フォーマットストリングバグか!なつい!!*1)、ダブルフリーやuse-after-freeの防止、GOTの書き換えを検知・・などなど、怒涛のスライド177枚。

個人的には古きよき?脆弱性からGOTやらヒープ領域やら一通り勉強できていいなあと思いました。その辺の仕組みと実装を本にまとめたら売れるかも・・いや私が欲しいだけですが・・。

デモは上記のバグを持つプログラムを実行してもcore dumpさせないというものでした。考察にもありましたがハニーポットによさそうですよね。
アカウントは非公開でって最初のスライドにあった気がするのでGitHub等のリンクは控えます。

NFCとWebUSBを用いたWebアプリ用認証システム

公式サイトでは上記のタイトルになっていましたが、当日の発表タイトルは「マイナンバーカードで描くCivic Techの未来〜Webで使える認証機能を作ってみた〜」でした。
Civic Techとは、市民がテクノロジーを活用して行政サービスの問題やや社会課題を解決する取り組みのことだそうです。WebUSBというのは、ChromeなどのブラウザからUSBデバイスに接続するためのAPI。このAPIを使い、カードリーダーにマイナンバーカードをおいてPINコードを入力することで、パスワードレスにWebサイトにログインする認証機能を作ったということでした。忌避されがちなマイナンバーですがこういうところで活用できるといいですよねえ。

WebUSBでリーダーを制御するドライバがないので作りました、という潔さが良い。

github.com

他の成果物も以下で公開されています。

www.npmjs.com

Exgdb ~GDBを用いた動的なバイナリ解析の効率化~

マルウェアやシェルコードをgdbを使って解析する人には普通に嬉しい拡張機能です。GitHubで公開されています。

github.com

出力をgrepできたり(CALL命令を抜き出すとか)、例えば以下のようなアセンブリ言語

mov QWORD PTR [rbp-0x20],rax

の[rbp-0x20]に何が入っているのか表示するとか。(常に表示させるモードもある)
やだ便利。

プラグインの管理用コマンドも充実。こういうの細かいとこだけど大事だよね。例えば新たなプラグインをインストールするときはこんな感じ。

$ exgdbctl install https://github.com/anybody/anyplugin


手動でできることを自動化しただけでしょ?新規性は?という仮想ツッコミに対し、自動化だって新規性だし!(私もそう思う)でも文句いう人のために新規性あるものも作ったよ!というのがとてもよかったです。学会によっては自動化も新規性と解釈されるそうなので、論文を書くならそういうところに出すといいかも?

感想

「作りたいから作った」「作ってみたら楽しかった」「褒められて嬉しかった」「だからもっと頑張りたい」という、忘れていたものを思い出させてくれるような健全な発表会でした。とはいえ学業や仕事と並行してこれをやり切るのは相当大変だったと思います。こういう環境があることがうらやましい気もしますが、自分が若い頃にあったとしてもやり切れたかどうか・・。内容も話し方も三者三様でしたが、みなさんとっても発表が上手で日本の未来は明るいなあとなんか元気をもらいました。

なお、当日の様子は以下のTogetterにまとめられています。
togetter.com

2月20日から始まる、総務省とNICTによる大規模なIoT機器調査と注意喚起「NOTICE」について調べて書いてみました

【2019/02/20追記】参加するプロバイダについての情報がありましたので追記しました。

2月20日から始まる、総務省と国立研究開発法人情報通信研究機構 (以下 NICT) による大規模なIoT機器調査と注意喚起「NOTICE」について調べて書いてみました。
本件、いろんなところで記事になっていますが、このエントリは公的機関とNICTが公開している情報のみ参照して書いています。

まずはどういった検査を行うのかと、それに関わる法律についてまとめてみます。

検査の概要は総務省の報道資料「IoT機器調査及び利用者への注意喚起の取組「NOTICE※」について」にあります。画像以外ほぼまるっとコピペ。

改正情報通信研究機構法に基づき、本年2月20日(水)より情報通信研究機構(NICT)がサイバー攻撃に悪用されるおそれのある機器を調査し、電気通信事業者を通じた利用者への注意喚起を行う取組「NOTICE」を開始。

1. NICTがインターネット上のIoT機器に、容易に推測されるパスワードを入力することなどにより、サイバー攻撃に悪用されるおそれのある機器を特定。
2. 当該機器の情報を電気通信事業者に通知。
3. 電気通信事業者が当該機器の利用者を特定し、注意喚起を実施。
※利用者からの問合せ対応等を行うサポートセンターを設置。

検査の流れをざっと知るには総務省による報道資料「電気通信事業法及び国立研究開発法人情報通信研究機構法の一部を改正する法律(平成30年法律第24号)の施行に伴う省令の制定について(NICT法の一部改正に伴う識別符号の基準及び実施計画に関する規定整備関係)」が良いです。この日の総会の議事録「情報通信行政·郵政行政審議会総会(第10回)議事録」の2ページから5ページと一緒に読みましょう。

もう少し詳しい実施計画が「国立研究開発法人情報通信研究機構法(平成11年法律第162号)附則第8条第2項に規定する業務の実施に関する計画の認可申請の概要」として公開されています。

専用の公式サイトもあります。

notice.go.jp

以上の情報から、以下のような検査を行うと思われます。

1.ポートスキャン(バナー等取得、認証の有無確認)
2.1.で認証が可能なものに、ID、パスワードの組み合せ約100通りを入力。
3.認証が通った機器について、通信の送信元IPアドレス、送信先IPアドレス、タイムスタンプ等を記録
4.1.により認証なしでログイン可能な機器や、脆弱なソフトウェアを使用している機器を記録
5.3.および4.の機器についてプロバイダに連絡
6.プロバイダから該当機器のユーザに注意喚起

対象は

日本国内の約2億のグローバルIPアドレス(IPv4)*1

だそうです。2億··。

2.について、不正アクセスではないかと騒がれていましたが、そうではありません。ちょっとややこしいですが法律の該当箇所を順番に見てみます。

まず「国立研究開発法人情報通信研究機構法」附則第八条第二項第一号。

機構は、第十四条及び前項に規定する業務のほか、平成三十六年三月三十一日までの間、次に掲げる業務を行う。

  • 特定アクセス行為を行い、通信履歴等の電磁的記録を作成すること。*2

で、この業務を行う間、不正アクセス行為の禁止等に関する法律(不正アクセス禁止法)第二条第四項第一号が変更されます。

7 第二項から第四項までの規定により機構の業務が行われる場合には、次の表の上欄に掲げる規定中同表の中欄に掲げる字句は、それぞれ同表の下欄に掲げる字句とする。*3

この「次の表」がちょっと引用しにくい形になっているので、不正アクセス禁止法の該当部分の原文と変更したものを並べてみます。変更部分は太字にしました。

原文は以下。

4 この法律において「不正アクセス行為」とは、次の各号のいずれかに該当する行為をいう。
一 アクセス制御機能を有する特定電子計算機に電気通信回線を通じて当該アクセス制御機能に係る他人の識別符号を入力して当該特定電子計算機を作動させ、当該アクセス制御機能により制限されている特定利用をし得る状態にさせる行為(当該アクセス制御機能を付加したアクセス管理者がするもの及び当該アクセス管理者又は当該識別符号に係る利用権者の承諾を得てするものを除く。)*4

それがこうなる。

4 この法律において「不正アクセス行為」とは、次の各号のいずれかに該当する行為をいう。
一 アクセス制御機能を有する特定電子計算機に電気通信回線を通じて当該アクセス制御機能に係る他人の識別符号を入力して当該特定電子計算機を作動させ、当該アクセス制御機能により制限されている特定利用をし得る状態にさせる行為(当該アクセス制御機能を付加したアクセス管理者がするもの、当該アクセス管理者又は当該識別符号に係る利用権者の承諾を得てするもの及び国立研究開発法人情報通信研究機構法(平成十一年法律第百六十二号)附則第九条の認可を受けた同条の計画に基づき同法附則第八条第二項第一号に掲げる業務に従事する者がする同条第四項第一号に規定する特定アクセス行為を除く。

つまり、NICTは認可を受けた計画に基づいているのであれば、利用者の承諾を得ずに特定アクセス行為をしてオッケーということですね。

「特定アクセス行為」の定義は以下。

機構の端末設備又は自営電気通信設備を送信元とし、アクセス制御機能を有する特定電子計算機である電気通信設備又は当該電気通信設備に電気通信回線を介して接続された他の電気通信設備を送信先とする電気通信の送信を行う行為であって、当該アクセス制御機能を有する特定電子計算機である電気通信設備に電気通信回線を通じて当該アクセス制御機能に係る他人の識別符号(当該識別符号について電気通信事業法第五十二条第一項又は第七十条第一項第一号の規定により認可を受けた技術的条件において定めている基準を勘案して不正アクセス行為から防御するため必要な基準として総務省令で定める基準を満たさないものに限る。)を入力して当該電気通信設備を作動させ、当該アクセス制御機能により制限されている当該電気通信設備又は当該電気通信設備に電気通信回線を介して接続された他の電気通信設備の特定利用をし得る状態にさせる行為をいう。*5

ああ法律って難しい・・IDとパスワード(他人の識別符号)で認証できるかやってみます、使うIDとパスワードは「不正アクセス行為から防御するため必要な基準として総務省令で定める基準を満たさないものに限る。」と。で、その総務省令は案しか見つけられませんでしたが、基準は以下の通りです。

1. 8⽂字以上であること。
2. これまで送信型対電気通信設備サイバー攻撃のために⽤いられたもの、同⼀の⽂字のみ⼜は連続した⽂字のみを⽤いたものその他の容易に推測されるもの以外のものであること。*6

この基準を満たさないものとして、以下のような例が挙げられています。

password 、admin1234 、supervisor、smcadmin aaaaaaaa、11111111、abcdefgh、12345678*7

また、4.についてはポートスキャンで返ってきたバナー等で判断するようです。

パスワード設定以外の脆弱性を有する機器(アクセス制御機能を有しない、ソフトウェアの脆弱性を有する等)に関する情報ついても、 ①(1)のポートスキャンで判別可能な場合には、送信先IPアドレスに係る電気通信事業者に対して、当該情報の提供を行う。*8

以下、この件で個人的に感じたことや懸念事項など。

いやー、政府(とNICT)もプロバイダもよくやる気になったねー!!すごいねーー!!!

というのが最初に抱いた率直な感想です。

だってすごい数ですよ?2億って。ツールで自動的にやるとはいえトラブル必至、プロバイダだってそりゃ親玉がやれっていえばやらざるを得ないだろうし、自分とこに接続してる機器がDDoS攻撃に加担させられたらたまったもんじゃないでしょうが、脆弱な機器のユーザに注意喚起したら、専用のサポセンはありますが絶対大量の問い合わせがくるだろうし··って、想像したくもないです。しかも間違いなく槍玉に挙げられますからね。いやもうロシアW杯のポーランド戦の西野監督のように、必要だからやる、非難は甘んじて受ける、という覚悟を感じますね(西野監督は非難とか感じないアレな人にも見えますが)。ただもうそれだけやばいってことなんですよね。ていうかIoT機器はパスワードを初期設定のままでは使用できないようにしてほしいですね。あと本来の機能に対してよけいなことができすぎるんですよ。たぶんLinuxが普通に動いてるものが多いんでしょうが、もうちょっと機能を落としてほしい。これを機に、検査を非難するのではなく、検査せざるを得ないシステムの方に目を向けてほしいです。

さて、親戚からの問い合わせに対応するだろう身として、懸念事項が2つあります。

1. これを利用した詐欺がはやりそう
2. 持っている機器が検査対象か調べるすべがないので、連絡がない=安全といえない

1.については去年8月の総会でも話題になったようです。日本総研の大谷委員から。

例えば、NICTを装ったメールなどでパスワードの変更を要請してくるメールなどの、新たな被害を防止するための対策などもあわせて講じていただくことが必要だと思っておりまして、必ず、こういった新しい対策を講じると、それを悪用するような動きも出てくることなどが通例だと思いますので、そのあたりを、実施計画を取りまとめる助言などを行う際に、よく想定しておいていただければと思っております。 *9

これに対する赤阪サイバーセキュリティ統括官付参事官の回答。

今回の取り組みにつきましては、NICTからも、あるいは総務省としても、十分に周知を行った上で、きちんとユーザー側のご理解をいただきながら進めたいと思っておりますし、また、今回ご指摘のありましたような、こういった取り組みを悪用するようなものも出てきかねないところがありますので、電気通信事業者から行う注意喚起についても、きちんと紛れがないように、どういった形で実効あるものとしてできるかということを、引き続き中身を詰めながら進めさせていただきたいと思っております。 *10

まあ、周知徹底以外やりようはないですよね。これに伴う詐欺被害よりも、踏み台にされたりするリスクの方が大きいということなのでしょう。

で、2.の方は、自分の機器が調査対象かどうかを知るすべは、少なくとも今回調べた限りでは見つかりませんでした。一応、いくつかのプロバイダが参加表明しているのは見つけました。

www.iij.ad.jp
www.ntt.com
news.kddi.com

ということで、連絡ない?じゃあ大丈夫!っていえないなと。大手プロバイダが参加しているので、脆弱な機器は大幅に減ることが期待できますが、"うちの"がどうなのかは知りたいところです。もちろんログを見れば分かりますが、ほとんどの人にとってログを見るなんて敷居が高すぎて現実的じゃない。結論としては、連絡が来ようが来まいが一度機器の設定を見直してねってことですかね。NOTICEにもそういう狙いがあるのでしょうね。

【2019/02/20追記】ここから
参加するプロバイダについての情報がありましたので追記。上記3社の他、ソフトバンク株式会社、ニフティ株式会社、ビッグローブ、株式会社ジュピターテレコム(J:COM)など計23社が参加するそうです。総務省の発表ですが見つけられなかったので日経xTechの記事から。一番下に一覧の画像があります。

tech.nikkeibp.co.jp
【2019/02/20追記】ここまで


結果は取りまとめて公開されるようです。

我が国のサイバーセキュリティ確保の観点にも留意しつつ、本取組の実施状況を取りまとめ、公表することを予定しています。*11

こんな大規模調査は少なくとも国内では前例がないと思います*12ので楽しみです。公開されたらまた何か書こうと思います。

*1:国立研究開発法人情報通信研究機構法(平成11年法律第162号)附則第8条第2項に規定する業務の実施に関する計画の認可申請の概要」P.2「① 特定アクセス行為等による調査」より

*2:国立研究開発法人情報通信研究機構法」附則第八条第二項第一号より

*3:国立研究開発法人情報通信研究機構法」附則第八条第七項より

*4:不正アクセス行為の禁止等に関する法律第二条第四項第一号

*5:国立研究開発法人情報通信研究機構法」附則第八条第四項第一号より

*6:電気通信事業法及び国立研究開発法人情報通信研究機構法の一部を改正する法律(平成30年法律第24号)の施行に伴う省令の制定について(NICT法の一部改正に伴う識別符号の基準及び実施計画に関する規定整備関係)」P.2「省令案の概要」より

*7:電気通信事業法及び国立研究開発法人情報通信研究機構法の一部を改正する法律(平成30年法律第24号)の施行に伴う省令の制定について(NICT法の一部改正に伴う識別符号の基準及び実施計画に関する規定整備関係)」P.2「【該当するパスワードの例】」より

*8:国立研究開発法人情報通信研究機構法(平成11年法律第162号)附則第8条第2項に規定する業務の実施に関する計画の認可申請の概要」P.3 「④ その他業務」より

*9:情報通信行政·郵政行政審議会総会(第10回)議事録P.5より

*10:情報通信行政·郵政行政審議会総会(第10回)議事録P.5より

*11:NOTICE公式サイトFAQ「問11 本取組で得られた結果は公表するのか」より

*12:海外でこういう検査をした事例ってあるんですかね?

航空会社のパスワードについて調べてみました〜2018年版

航空会社のパスワードについて調べてから4年経ったので、また調べてみました。

security.nekotricolor.com

ルールは前回と同じです。

  1. 最初に日本語のサイトを確認
  2. 日本語のサイトが存在しない場合、(国を選べる場合は)日本の英語サイト→(国を選べる場合は)アメリカの英語のサイト→その航空会社の国の英語サイトの順
  3. 実際に登録はしていないため、登録ページやFAQなどにぱっと見情報がないものは掲載していません

4年前と比べてログイン機能を提供する航空会社が増えた印象ですが、登録時に住所やパスポート番号などの個人情報を要求するところも増え、調べられなかったサイトも多かったです。

ちと設定が古いのは否めませんが、前回も参照した情報漏えいを防ぐためのモバイルデバイス等設定マニュアル:IPA 独立行政法人 情報処理推進機構から、強度が十分なパスワード(=ブルートフォース攻撃でのパスワード破りが現実的でないパスワード)の文字種と文字数を「大小英字+数字、12文字以上」として、合格している航空会社は緑字にしてみました(最長何文字か書かれていない場合は除外)。逆に、数字のみのところは赤字にしました。

数が多いのでアライアンスごとに分けてます。

スターアライアンス加盟会社

航空会社名 記号 文字数
アビアンカ航空 8〜14
エア・カナダ 6〜10
エーゲ航空 8〜30
エジプト航空 4〜10
エバー航空 6〜12
LOTポーランド航空 6〜
オーストリア航空 10〜40
コパ航空 8〜
シンガポール航空 6
スイスインターナショナルエアラインズ 5〜20
スカンジナビア航空 6〜12
全日本空輸 8〜16
中国国際航空 6
トルコ航空 6
南アフリカ航空 4
ユナイテッド航空 8〜32
ルフトハンザドイツ航空 8〜32

ワンワールド加盟会社

航空会社名 記号 文字数
アメリカン航空 6〜16
イベリア航空 6
カタール航空 8〜12
キャセイ・パシフィック航空 8〜
スリランカ航空 8
日本航空*1 6
フィンランド航空 8〜32
ブリティッシュ・エアウェイズ 6〜
マレーシア航空 6〜12
ラン航空 8〜

スカイチーム加盟会社

航空会社名 記号 文字数
エールフランス 8〜12
KLMオランダ航空 8〜12
チャイナエアライン 6〜10
中国東方航空 8
デルタ航空 8〜20

まとめ

前回、合格としていた「大小英字+数字、12文字以上」のパスワードを設定しているのは34社中9社でした。今回は、32社中16社と、明らかに増えています。さらに、記号を使えたサイトが前回は2社しかなかったのが今回は14社。4年間でセキュリティ意識が高まったと言っていいのではないでしょうか。とてもいいことだと思います。

嬉しかったのでこの4年間で文字の長さや種類が増えたサイトを列挙。

航空会社名 2014年からの変化
アビアンカ航空 英数のみ文字数不明→英数記号文字数8〜14へ
エバー航空 英数のみ文字数6〜8→英数記号文字数6〜12へ
ルフトハンザ航空 英数のみ文字数4〜16→英数記号文字数8〜32へ
アメリカン航空 英数のみ文字数6〜12→英数記号文字数6〜16へ
カタール航空 英数のみ文字数6〜12→英数記号文字数8〜12へ
キャセイ・パシフィック航空 数のみ文字数6〜8→英数記号文字数8〜へ
フィンランド航空 英数のみ文字数8〜32→英数記号文字数8〜32へ
ラン航空 英数のみ文字数6〜→英数のみ文字数8〜へ
エールフランス 数のみ文字数4→英数記号文字数8〜12へ
チャイナエアライン 英数のみ文字数6〜8→英数のみ文字数6〜10へ
デルタ航空 英数のみ文字数6〜20→英数記号文字数8〜20へ

記号に対応するついでに文字数も増やした、という感じですかね。ルフトハンザ航空、フィンランド航空、デルタ航空が英数記号使えて8文字以上必須、32文字までOKという幅広さで好き。
にしてもラン航空やチャイナエアラインはなぜそんな微妙な変更を・・・?

以下余談。
NISTが「パスワードは(英単語そのままとかでなければ)8文字以上ってことでOK、数字のみでもいいし。大事なものは2段階認証など他の方法も使って守りましょう。」的なことを言い出しています。

  • Passwords obtained from previous breach corpuses.
  • Dictionary words.
  • Repetitive or sequential characters (e.g. ‘aaaaaa’, ‘1234abcd’).
  • Context-specific words, such as the name of the service, the username, and derivatives thereof. *2

総務省の「IDとパスワード > 設定と管理のあり方」JPCERTの「適切なパスワードの設定・管理方法について」でも追従しているので、今後はそうなっていくのでしょう。でもシステム側でそれをチェックするのはなかなかめんどくさそうですね。辞書と突き合わせるのはともかく、過去に漏えいしたことがあるパスワードとかどうやってチェックしろというのか。

とはいえ個人的には文字種や長さの選択肢が増えることはいいことだと思っています。現実問題、すぐに2段階認証を取り入れるのは難しいサイトの方が多いでしょうから、当分パスワードのみで管理する状況は続くでしょうし。ただ長くて記号を含むものを「必須」とすると、使い回しや類推しやすいものにする人が増え結果的に脆弱になるというのはありそうですね。

さらに余談ですが前回記号が使えた2社のうちの1社だったエア・ベルリンは2017年に破綻しルフトハンザ航空に吸収されたとか。諸行無常・・。

また4年後、カタールW杯の年に調べてみたいと思っています。そのときには人類はパスワード管理から解放されているのでしょうか。

*1:日本航空ははチケットの購入などにはWebパスワード(英数記号文字数8〜16)という別のパスワードが必要です。そっちを含めると表が変わってきますが、他社ではそこまで調べていないので、あくまでログインに必要なパスワードということで。

*2:NIST Special Publication 800-63B Digital Identity Guidelines「5.1.1.2 Memorized Secret Verifiers」より

情報セキュリティ白書2018の第1章を読んでみた

IPAが毎年販売している「情報セキュリティ白書」、アンケートに答えるとPDF版が無料で読めるということで、主婦の嗜みとして読んでみました。

www.ipa.go.jp

きれいにまとめようとすると時間がかかって旬を逃すため、まずは「第1章 情報セキュリティインシデント・脆弱性の現状と対策」について、気になった事件や用語をメモ付きで抜き出してみました。

Wanna Cryptor

WannaCryじゃなくてCryptorになってる。2017年に世界を席巻したランサムウェアですが、実は身代金による被害は(振込人を特定する機能を持たず)比較的少なかったらしい。
ただ、ワームのような自己増殖機能を持っていたために感染はかなり拡大して、病院や鉄道などのインフラサービスにも波及し大きな話題になった、と*1

この自己増殖機能は「EternalBlue」というワームの機能で、CVE-2017-0144のSMBv1の脆弱性を悪用している*2。ちなみにASLR回避機能付き

EternalBlueについては以下のPDFが面白そう。

ETERNALBLUE: A PROMINENT THREAT ACTOR OF 2017–2018 - VIRUS BULLETIN

ビジネスメール詐欺

企業に「振込先が変わったんでよろしく」という送金依頼メールを出して金銭をせしめるという技術的にはなんの面白みもない詐欺。ただ被害額はかなり大きくて、ドイツでは数百万ユーロ*3、国内でもJALが4億円近く騙し取られている*4
振込先が変わったならそれ相応の確認をしないんだろうか?と思いますが、JALの件では本来の取引先に変更を確認するメールを送り、本来の取引先から本当だという返信があったらしい(ただしそのメールが本物だったかは不明)*5

DDoS攻撃の傾向

booter

DDoS攻撃を請け負うサービスの名前。表向きは負荷テストを実施する代行業者を装っている*6

Mirai

2016年に流行ったIoT機器を対象とした感染した機器をDDoS攻撃の踏み台にするウイルス。やってることは単純な辞書攻撃でログイン→C&Cサーバからボットをダウンロード(自身がC&Cサーバにもなる)というオーソドックスなものですが、ソースコードがGithubなどに公開されているので亜種がいろいろ出ている。

www.atmarkit.co.jp

マルチベクトル型攻撃

DoS攻撃にはDNSのリフレクター攻撃とかSYN FLOODとかいろいろあるわけですが、複数のレイヤに対して同時にDoS攻撃を仕掛けるのが流行り*7。資料にあった例では、DNS/NTPのリフレクター攻撃・SYN FLOOD・Webアプリケーションに対する巨大なファイルのPOST(POST FLOODっていうのかな?)の3つ。しかもその結果から、ターゲットの弱点を判断するらしい。そこを自動的にやるかどうか知りたくて参照先(The Top 10 DDoS Attack Trends - Impreva)をザッと読んだけど見つけられず。

偽警告・偽サイト

マウスポインタを非表示に

「ウイルスに感染しています」というポップアップを表示してセキュリティソフトに見せかけたウイルスを購入・インストールさせる手口は大昔から存在していますが、最近は本来のマウスポインタを非表示にしてブラウザ上にマウスポインタのアニメーションを表示し、勝手に動いているように見せかけたり、手口が巧妙になっている*8。CSSのcursor:noneを使っているのかな?

developer.mozilla.org

ワンクリック請求の無料相談

ワンクリック請求自体は目新しいものではありませんが、請求画面を消す方法を検索すると、「無料相談」「返金可能」をうたいつつ解決はしないけど費用を請求する探偵業者が出てくるらしい*9。SEO頑張ってるんですね。

ばらまき型メール・標的型攻撃

特に目新しいことはなかったのだけど、常日頃思っているのは、組織は従業員に「あやしーめーるはひらかないよーにしましょー」というだけで対策した気になんなよ?ってこと。メール添付型ウイルスの訓練とか流行ってるみたいですけど、ばらまき型のような汎用なものならともかく、攻撃者が本気になって偽装したメールがあやしいものかどうかを一利用者が判断するのはもはや不可能です。いや、よっぽど訓練すれば分かるようになるかもしれないけど、そんなコストをかけられるのか?完璧な訓練を施したとして、添付ファイルやURLを含む全てのメールについて、メールの送信元が偽装されているかどうか、ヘッダを見て正規の送信元のドメインと見比べる?送信元(に見える組織)に本当にこのメールを送ったのか問い合わせる?一人でも、一度でも開いてしまえば感染してしまうものについて、感染を完璧に防ぐことの方にコストをかけるより、感染することを前提とした対策の方が現実的なんですよ。
もちろんある程度の訓練は必要だとは思いますけど、組織は「あやしーめーるはひらかないよーにしましょー」というだけで対策した気になって、あとはあやしーめーるをひらいた従業員の責任ですってなってるじゃないですか。それじゃあ感染したことがわかっても隠蔽しますって。いっそ感染を報告した人は表彰するくらいしてほしい。そういう意味で、情報セキュリティ事故対応アワードみたいなものが世間に周知され評価されるといいですね。

news.mynavi.jp

あとは、利用者のスキルに頼らないシステム的な対策を積極的に取り入れてほしい。実行ファイルを一度サンドボックスで実行してみてから受信させるやつとか、PDFをテキストファイルに変換しちゃうやつとか、ありますよね、メールの無害化ってやつ。本気で感染を完全に防ぎたいなら、それくらいやれよっていいたい。知識や経験にばらつきのある従業員に全てを押し付けるなと。

この話は個人的に本当に腹が立っているので長々書いてしまいましたが、白書の方でも、個人に責任を押し付けない、(よほど悪質でなければ)感染しても責めない体制の重要性を説いてほしいなと思いました*10

感想

技術的に面白いものはあんまりなくて、手口が巧妙になっているだけという印象。技術的に頑張るより人を騙す方が簡単に稼げるってことですかね。同じくIPAが公開している情報セキュリティ10大脅威2018を見ても、不当請求や人材不足といった「人」寄りの脅威が多い印象。あ、でもEternalBlueは楽しそう。ASLR回避のいい教材っぽいので文中のPDFは読んでおきたいところ。

2章・3章についても気が向いたら書こうと思います。

*1:P.8「(1)ランサムウェア被害の深刻化」

*2:P.33「(2)Windowsの脆弱性を悪用した攻撃」

*3:P.11「(4)フィッシングとビジネスメール詐欺の傾向

*4:P23.「(1)ビジネスメール詐欺による金銭被害」

*5:P.24「図1-2-5 JALの貨物地上業務委託料被害事例の経緯」

*6:P.16「1.2.2 サービス妨害を狙った攻撃による被害」

*7:P31. 「(b)マルチベクトル型攻撃」

*8:P.46「(a)新たな偽警告の手口」

*9:P.26「(c)ワンクリック請求による被害」

*10:P.40「(b)組織体制による対策」