ホーム » スタッフ » 斉藤徹 » 講義録 » 情報ネットワーク基礎 » 暗号化とパスワード

2024年1月
 123456
78910111213
14151617181920
21222324252627
28293031  

検索・リンク

暗号化とパスワード

暗号化

有線LANで1本のケーブルを共有したり無線でデータをやりとりする場合、通信の盗聴が行われると危険である。
前回の授業で紹介したように、簡単な置換式暗号などでは暗号の解読ができてしまう。

暗号化アルゴリズム

1980年頃には DES(Data Encryption Standard) がアメリカでの標準的な暗号化として使われていたが、コンピュータの性能があがると共に解読される危険性が高まってきた。そこで2000年頃にはAES(Advanced Encryption Standard) が使われるようになった。どちらも共通鍵を用いてデータをブロック(固定長のデータ)単位で暗号化する共通鍵ブロック暗号方式であり、暗号の鍵の長いものは暗号解読が困難となっている。

1980年頃に開発された RSA 暗号(開発者の名前より) は、巨大な数字の素因数分解が困難なことを利用した、公開鍵暗号方式の1つである。

最近、量子コンピュータを用いた暗号解析が話題となっている。量子力学の原理を計算に応用したコンピュータで、スーパーコンピュータで1万年かかる暗号解読のような処理が200秒で終わってしまうかもしれないと言われている。

公開鍵暗号方式とは…

以前に使われていた暗号化の方式は、暗号化の鍵と復号化の鍵に同じものを用いる共通鍵方式であった。
しかし、この鍵をどうやって相手に渡すか…が問題となっていた。(鍵を相手に渡す瞬間のデータを盗聴されると危険)

このため、最近では公開鍵暗号方式が中心となっている。この方式は「暗号化するため専用公開鍵」と、「暗号化を復号するための秘密鍵」をペアにして用いる。公開鍵は、暗号化するため専用なので、この鍵が他の人に見られても、暗号を復号することはできない。

公開鍵だけでは成り済ました別人と通信してしまう可能性[1]がある。そこで通信相手が本物かどうかを、認証局とよばれる第三者機関によって証明書で確認する。HTTPを暗号化したHTTPSでは、SSL証明書と呼ばれる。最近のブラウザでは、URLの左側の鍵マーク🔒からSSL証明書を確認することができる。

[1] DNSサーバの脆弱性を利用して、間違ったIPアドレスを教えさせる DNSポイズニング が行われると、利用者を間違ったサーバに接続させることが可能。

パスワード解読方法

ログインなどで使われるパスワードは、どのように破られるのだろうか?

  • ブルートフォース攻撃:単純に全ての文字を試す方式。文字の組み合わせ問題なので、パスワード文字列長をNとした場合、数字だけ(10N)とか英字だけ(26N)といった組み合わせでは、短時間に解読されてしまう。数字,大文字,小文字,記号などを交えたパスワードが理想。
  • 英単語辞書を用いた辞書攻撃:パスワードが長い場合、文字列の全ての組み合わせを試すには長い時間が必要となる。しかし、パスワードはユーザが記憶して使うことから覚えやすい単語が使われる。このため英単語辞書の文字を組み合わせることで、解読時間を短くできる場合がある。
  • 漏えいパスワードによる辞書攻撃:サーバへのリモート接続などができてしまった場合、パスワード情報が盗まれる場合がある。この時、別なサイトに同じパスワードを使っていると、その漏えいしたパスワードで別のサイトも接続ができてしまう。これらのことから、同じパスワードを使いまわすことは避けるべきである。
  • ソーシャル攻撃:パスワードには、簡単に覚えられるように自宅の電話番号、誕生日、家族の名前といったものを使う人が多い。このため、SNS で相手に友達登録をしてもうことで、こういった情報を手に入れ、パスワードを破る方法。最近の有名人の個人情報漏洩はこの手の攻撃が多い。

    ソーシャル攻撃は、”元クラッカー” ケビン・ミトニックが有名

  • パスワードスプレー攻撃:login 画面などにブルートフォース攻撃を加えて簡単にパスワードが破られるのは問題となる。このため、短時間に何度も login 操作をできないように、数回のパスワード入力に失敗すると一定時間 login ができなくなるような対策が取られる。しかし、プログラムを使ってブルートフォース攻撃をするのであれば、攻撃間隔を空ければいい。攻撃者は、その代わりにネットワークの別のコンピュータでブルートフォース攻撃をすればいい。時間当たりの攻撃回数が少ないため、通常ユーザのパスワード間違いと区別ができないので、気づかないうちにパスワード破りに成功するかもしれない。このため、長期間パスワードを変更しないユーザは、不正利用被害が発生する可能性がある。

攻撃が難しいパスワードへ

先に述べたような、login に使うパスワードなどは、ブルートフォース攻撃をうけると解読は時間の問題となる。これらの対策として毎回違う鍵(パスワード)を使えばいい。

  • ワンタイムパスワード:使い捨てのパスワードをあらかじめ沢山作っておき、接続の度に次のパスワードを用いる方式。あるいは、時間から特殊な計算方法で生成されるパスワード。時間と共に変化するのでその度毎に違うパスワードとなる。毎回違うパスワードを入力するため、パスワード表を常に持ち歩いたり、入力が面倒なので数字だけを使うことが多く、この方法だけでは使いにくい。(次週に多要素認証などの解説も行う)

多要素認証

パスワードはブルートフォース攻撃をうければ、いつかはパスワードが破られる危険性がある。こういった対策で最も重要な方法が、多要素認証(2段階認証)である。

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

  • 携帯電話にテキストメッセージ(SMS)でワンタイムパスワードを送る。
  • かかってきた電話の機械音声のワンタイムパスワードを伝える。
  • 時間で変化するワンタイムパスワード生成アプリの数字を入力する。
  • メールで送られてきたワンタイムパスワードを含んだURLにアクセスする。
  • 認証画面に表示されたQRコードのURLにアクセスする。


SMSやワンタイムパスワードアプリは、携帯電話などを常に持ち歩いていることが本人確認となっている。このような方式では、携帯電話などを失くすとシステムが使えなくなるので、バックアップコード(非常時用のパスワード)の保存や、login先とは別のメールアドレスを登録してあることが重要となる。

CAPTCHA

最近では、フリーで取得できるメールアドレスをプログラムで動くロボットで自動生成し、そのアカウントを使ってspamを送るなどの手口が問題となっている。このため、接続してきた相手が人間か判定することがある。判定には、読みづらく加工された英字を入力させたり、パズルを解かせるといった方法が使われる。

元々は、読みづらい文字はコンピュータでは画像解析しづらいことから、CAPTCHA が使われるが、最近では機械学習によって解析ができるようになってきた。

セキュリティキー

SMSやメールを使ったワンタイムパスワードによる多要素認証も、間にネットワークを挟むと多要素認証では問題となる。そこで、もっと複雑な暗号で多要素認証を行うために、セキュリティキーが使われる。

多要素認証が必要になると、パソコンにセキュリティキーを差し込むことで認証が行われる。現在では FIDO(Fast IDentity Online)や FIDO2 といった規格のものが普及している。

ハッキング

インターネットの用語でハッカー(Hacker)は、コンピュータを使って悪いことをする人という意味でよく使われている。しかし元々は「主にコンピュータや電気回路一般について常人より深く高度な技術的知識を持ち、その知識を利用して技術的な課題をクリアする人々のこと」(Wikipedia引用)という意味で使われていた。このため本来は「優秀なエンジニアへの最大級の誉め言葉」として使われており、ハッカー以上の技術者を ウィザード/wizard や グル/guru と呼称することもある。

しかしながら一部のハッカーの中で、その技術を悪用する人も出てきたことから、インターネットで悪いことをする人という意味で使われることも増えてきた。そこで、悪いことをする人は別な呼び方をしようということで、攻撃を加えるひとはクラッカーと呼ぶことが多い。最近では、正義のためのハッカー = ホワイト・ハッカー、悪いハッカー = ブラック・ハッカー という表現も使われるが、黒人差別主義につながる用語ということで、正義のためのハッカーには最近はエシカル・ハッカー(高い倫理観と道徳心を兼ね備えている高い技術を持ったハッカー)という言葉を使う。

理解度確認

  • Formsによる理解度確認テスト
  • 標的型攻撃メールがウィルス対策ソフトでは防ぐことが難しい理由を述べよ。
  • ファイアウォールでは、どういった処理を行うのか説明せよ。