ユーザやデータは本物か?
システムを使うユーザや、やり取りするデータが正しいかどうかを確認することは、セキュリティの観点からは必須です。
認証(AuthenticationまたはCertification)とは、ユーザやデータなどを検証して、それらが確実に本物であることを確認することです。ユーザの場合であれば、第三者に対して自分がなりすましではなく、本人であることを証明、確認します。また、データの場合は、改ざんや破壊などによって、不正な変更や異常がないことを確認します。
本人であることを確かめるための認証方式については、次のように分類できます。
- 知識認証(ID・パスワードなど):本人のみが知り得る情報を確認
- 所有物認証(鍵・トークンなど):本人のみが所有しているものを確認
- バイオメトリクス認証(指紋、声紋など):本人の身体的・行動的特徴を確認
認証の強度を上げるために、次のような方式を用いることもあります。
- 2要素認証:異なる認証方式を2つ用いる、例:キャッシュカード(所有物)と暗証番号(知識)
- 2段階認証:同じ認証方式を2つ用いる、例:ID・パスワード(知識)と認証コード(知識)
また、やり取りするデータに改ざんや異常がないことを確認するために、そのデータをもとに生成したハッシュ値という特定の長さのコードを用いて、改ざんや異常がないことを検知するメッセージ認証があります。
マイノート(これまでの私の体験・見聞から一言)
システムを使う上でまず必要なのが、このユーザ認証です。大抵のシステムでIDとパスワードを使用してログインをすることになると思いますが、このID・パスワードの管理がよく問題になります。基本的には、ユーザ個人ごとにID・パスワードを付与するべきですが、場合によっては共有のID・パスワードを使う場合もあります。この場合は、この認証ではユーザ個人を特定することはできないし、誰でもログインして使用できるという前提で、システムを運用しなければなりません。
また、ユーザ個人ごとにID・パスワードを付与する場合は、パスワードの管理が大変重要です。ユーザ各個人でパスワードを管理して、他人に知られないようにしなければなりませんが、つい紙などに書いて人目につくようなことになったり、誕生日や電話番号などの容易に推測可能なパスワードを設定したりしてしまいます。
安易なパスワードを設定できないように、複雑なパスワード(桁数を長くする、英数字記号を含むなど)を設定するように、また定期的にパスワードを変更するように、システムで制限することが多いと思います。しかし、こうなるとパスワードを忘れたりして、使いたいときにシステムが使えないことがよく起こります。そのために、最近はパスワードを管理するためのツールを使用することも増えてきたかと思います。また、パスワードを定期的に変更することが安易なパスワードを設定することにつながるとして、複雑なパスワードを変更せずにずっと使用するべきという考え方もあるようです。
いずれにしろ、パスワード管理は永遠の課題ですね。