こんにちは、こじろうです。
銀行振り込みをインターネット経由でやるときなど、インターネットバンキングを利用する機会は多いと思います。
その時、普段ATMで入力している暗証番号とは別に、パスワードを求められますよね?
あの認証方式をチャレンジアンドレスポンスと言います。
この記事では、文系SEの方々やITビギナーの方々向けに、チャレンジアンドレスポンスついて紹介していきたいと思います。
【この記事でわかること】
- チャレンジアンドレスポンスとは何か?
- 具体的なポイントは何なのか?
- チャレンジアンドレスポンスはどこで役立つの?
ワンタイムパスワードで使われている認証方式
チャレンジ&レスポンス方式とは、主にワンタイムパスワード認証に用いられる方式で、認証サーバー
から送られてくるデータ(チャレンジ)を元に、クライアントが持っているパスワードを組み合わせ
て演算し、ハッシュ値を認証サーバーに「レスポンス」として返すことにより認証を行う方法です。
なぜこの方式がメガバンクの本人認証等で利用されるほど流行しているのか?理由は主に2つになります。
- アクセスするごとに合言葉(数字)を変えることができるため
- パスワードをインターネット上に晒す必要がないため
一般には、専用のカードやスマホでチャレンジ(数字)を受け取る
PCから銀行のネットバンキングサイトなどへ必要な情報を入れてログインボタンを押すと、ワンタイムパスワードを入力する指示が表示されると思います。(これが認証サーバからのチャレンジになります。)
その後、専用のカードやスマホ(事前の設定が必要)に表示されるワンタイムパスワードをPCへ入力します。
この時、自分のPCの中では、受け取ったチャレンジと自分のパスワードから”ハッシュ値”を計算し、サーバへ”ハッシュ値”を送り返します。(ワンタイムパスワードを入力しますが、この数値をサーバへ送り返しているわけではないのです。)
参考:説明の図 20200325_challenge_and_response_view
ハッシュって何?
何か文字列を入力すると、特定の決まりに基づいて文字列を出力する。この時に出力された文字列のことをハッシュと呼び、“特定の決まり(関数)”をハッシュ関数と言います。
ハッシュ関数には、どのようなパターンで文字列を出力するかMD5やSHA-160といったものがあります。
ハッシュ値の不可逆性
ハッシュ関数・ハッシュ値を利用するメリットは冒頭にも述べましたが、実はメリットがもう一つあります。それは、”出力されたハッシュ値からは、元の値(つまりパスワード)は逆算できない”(不可逆性がある)という点になります。
非機能設計(特にユーザの認証設計)で役立つ
パスワード頻繁に利用するけど、その仕組みについて知っている人は稀だし、ITの仕事をしていてもこの知識を必要とする場面はそんなに多くはないでしょう。
一方で、昨今重要性がどんどん高まっているセキュリティの観点からはこのような認証周りの知識は必須となります。
実は、2017年にハッシュ値からパスワードが解読されてしまった
なんと、GoogleがSHA-1を解読してしまいましたw
もう、世の中はGoogleに支配されてしまうのか、というかもうされているか。You tubeとか毎日見ているし。
興味が沸いた方は、自分でハッシュ値を作ってみましょう
ハッシュ値は、実はお手元のPCで試すことができます。
参考:最小完全ハッシュの作り方
中身はどうでも良くて、今すぐにでも欲しいんだ!という方はこちらからどうぞ。
参考:SHA2/SHA1/MD5ハッシュ生成(Hash Generator)
それでは、Tchau◎
こじろう