情報セキュリティの豆知識~Cisco IOSから学ぶパスワードの危険なハッシュ化~

情報漏えいなどのニュースが毎月の様に報道され、最近ではセキュリティについて考えることが一般的になってきました。

この記事では、Cisco機器のIOSでパスワードを設定するさいに利用する、ハッシュ化アルゴリズムについて紹介します。
脆弱なハッシュ化方法を利用すると復号*⁰できてしまい、悪意あるものに利用されてしまう危険性があります。
用語なども解説していきたいと思います。まずはCisco IOSの設定方法から順にみていきましょう。

*⁰ 復号とは、暗号化されたデータを元に戻すことです

Cisco IOSのパスワード設定方法

まずはIOSで利用できる主なパスワードの設定方法を確認していきましょう。

ちなみにCisco IOSとは、Cisco社が販売しているルータに入っているOSのことです。スマホでいうと、Apple社が販売しているスマホ(iphone)に入っているOSです。たまたま両方ともOSの名前がIOS(iOS)ですね。

enable password

一番初歩的なパスワードの設定方法です。設定したパスワードは平文(クリアテキスト)で保存され、show runなどの設定確認コマンドで確認した時に、そのまま表示されます。

クリアテキストとは、暗号化などされていないそのままの文字の事です。
画像はTeratermからIOSルータにアクセスし、enable passwordを設定しています。

画像の通り、show runコマンドで確認したところ、「test」の文字がそのまま表示されています。では、この文字をハッシュ化(暗号化)してみましょう。

service password-encryption

設定されているパスワード類、及び、これから設定するパスワードをハッシュ化します。
先ほどenable passwordで設定した平文のパスワード「test」が、ハッシュ化して分からなくなっていますね。

ハッシュ化とは

ハッシュ化とは、元のデータを別の文字列に置き換えることです。ハッシュ化には以下の様な特徴があります。
・元のデータが大きくても、短い長さのデータ(ハッシュ値)に置き換える
・ハッシュ値は、一意性がある(「test」をハッシュ化すると、必ず021201481Fとなる)*¹
・データ内容が1文字ちがうだけで、全く異なる値になる
・ハッシュ値から元のデータを求めることが困難(不可逆性)

*¹ハッシュ化アルゴリズムによります

ハッシュ化と暗号化のちがい

暗号化も同じく元データが分からないように加工しますが、パスワードや鍵データなどの復号方法があるため、相手が復号方法を知っていれば、暗号データを送っても相手は元データを確認することが出来ます。

ハッシュ化はハッシュ値から元データを復号することが困難であるため、データの受け渡しには利用しません。

じゃあどこで使うのかというと、データが改ざんされていないかのチェックを行う場面で利用されます。*²
暗号化には復号方法が存在します。
例えば、相手に暗号化したデータを送る途中で悪い人が盗んだ場合、さらにその悪い人はパスワードを破ってしまい、データの中身を改ざんしたうえで、元の受信者に送ったとすると、元の受信者はデータの中身が正しいものか判断する方法がありません。

*²このことを完全性といいます。また別記事にしたいと思います

元の受信者は中身が変わっていることに気づけません。

ハッシュ値を求めて一緒に送ることで、受信者は改ざんを検知できます。

話が逸れてしまいましたが、ハッシュ値の利用方法はこういった場面でも利用されます。ではIOSの設定に戻りましょう。

enable secret

パスワードの設定時に暗号化する方法です。
enable passwordでは平文で保存されましたが、enable secretを使うことで設定時に暗号化することが出来ます。

画像の通り、「test2」が全く別の文字列で表示されていますね。
ちなみにenable passwordと別で保存されるため、両方設定されている場合は、enable secretのパスワードが優先されて入力を求められます。

Cisco IOSのパスワードハッシュ化アルゴリズム

さぁ、本題です。が、さくっと行きましょう。
下の画像は先ほどの画像と同じものです。よく見るとenable passwordとかの前に「5」や「7」の数字がありますね。

実はこの番号、ハッシュ化アルゴリズム*³ を指定しています。
5番はMD5という名前のハッシュ関数(ハッシュ値を算出する関数)を指定、
7番はCisco独自のアルゴリズム関数を指定しています。

*³ アルゴリズムは、考え方、計算の仕方です。

ここが問題で、この7番のCisco独自のアルゴリズム関数は、ずいぶん前に解読されてしまい復号方法が紹介されています。

keyコマンドを使ってIOS上で復号を確認できてしまいますし、下記の様な

http://www.firewall.cx/cisco-technical-knowledgebase/cisco-routers/358-cisco-type7-password-crack.html

http://ibeast.com/tools/CiscoPassword/index.asp

海外サイトで、ハッシュ値を入力することで簡単に複合できてしまいます。
※アクセスは自己責任でお願いします。

このように、登場当時は安全であったものが、安全でなくなった状態の事を「危殆化」するといいます。

まとめ

上記で解説したように、危殆化したハッシュ化方法は復号できてしまうため、IOSでパスワードを暗号化するにはenable secretを使いましょう。
MD5も脆弱性が報告されていますが…笑
比較的新しいCisco機器では、パスワードを「6番」のAESという暗号化方法で暗号化できるようなので、対応している場合はAESを推奨します。

AESは日本政府が公開しているCRYPTREC暗号リストにも掲載されている強固な暗号化方式です。

またこのようなセキュリティ関連のお話ができたらと思います。

この記事の著者