認証システムとは認証システムとは認証システムとは、ユーザの正当性をチェックし、アクセスを許可したり拒否したりするシステムである。広義の認証とは、何かによって、対象の正当性を確認する行為を指す。認証の対象という観点で見ると、代表的なものは次のようなものがある。本人認証(相手に自分が正当であると納得させる)メッセージ認証(送ったメッセージが本物であると納得させる)時刻認証(作成された文書が本当にこの時刻に作られたと納得させる)ネットワークシステムで単に認証といった場合は、本人認証をさすことが多い。ここでは本人認証について説明する。認証システムでは、サーバに本人を特定するためのデータを保持しており、認証を受けようとする利用者は自分が本人であるための証拠を提出する。提出された証拠とサーバに保持されたデータが一致した場合に認証が許可される。認証データを持ち出されても、提出されるべき情報が分からないように、認証システム上では、不可逆な変換が行われたデータを管理するのが一般的である。利用者から提出された証拠は、ある変換式に基づいて不可逆な変換が成され、この変換されたデータと認証サーバに保持されているデータを照合するといった具合だ。提出する「証拠」についてユーザが認証のために提出する証拠の代表的なものは次のようなものがある。以下ではこれらについて説明する。ユーザIDとパスワードを入力するユーザIDとパスワードを入力する方法は、伝統的に利用されており、銀行のキャッシュカードを利用するのに暗証番号を入力する(カードの口座番号がユーザIDで、暗証番号がパスワード)などといった身近なところでも馴染みが深い。コンピュータを利用する時にユーザIDとログインパスワードと入力するのもこの方法である。単純にユーザIDとパスワードを利用者に入力させることで提出を促すため、最も安価に実現できる認証方法のひとつである。この方法の問題点は、ユーザIDとパスワードが他人に知れてしまうと、簡単に悪用されてしまうことである。これはシステムの脆弱性というよりは、利用モデルの脆弱性と言ってよく、ユーザIDは本人を類推させるものであることが多く、またパスワードはユーザが覚えやすいものを設定することが多い。近年のコンピュータの処理性能の向上によりパスワード解析が比較的に容易になってきているため、たとえユーザIDとパスワードが漏洩しなくても悪用されるケースも出てきている。したことから、最近ではワンタイムパスワードが利用されることも多い。ワンタイムパスワードは、サーバと認証を受ける側で同一の計算方式で計算した数値や文字列を使って認証を行う方法で、パスワードはその都度変わる。同じパスワードは二度と使われないため、パスワードが漏洩しても問題はない。Authenticatorなどのオープンソースソフトウェアが登場し、スマートフォンアプリなどで簡単に入手することができるようになったことから普及が進んでいる。第三者から認証を受けた証明書を持って認証を受ける方法で、カードリーダーにICカードを通すのもこの方式。証明書を発行するのはリソースを持っているシステムから信頼された認証局であり、このためにシステムが少々大掛かりになる。この方式の最大の難点は、この方式単体ではカードを盗まれたりスキミングされカードを偽造された場合に、成りすましが簡単にできてしまうことである。そのため、暗証番号などの別の方法と併用して本人確認されるのが一般的である。インターネットには様々な認証局があるが、証明書は有償のものが多い。した有償の証明書は、個人に配布するには費用が必要になる。そのため、組織内などで利用する場合には、プライベート認証局を構築するのが一般的である。バイオメトリクスと呼ばれるこの方法は、個人をほぼ確実に特定できる身体的特徴を提出することで非常に強固な本人認証を行うことができる。提出する対象によってそれぞれ固有のデバイスが市販されており、とくに指紋を読み取るデバイスはノートパソコンにも搭載されるなど身近な存在となっている。基づく認証は、非常に強固である。認証を受ける人が特殊な読み取りデバイスを所持していることが前提となり、導入のハードルが高い。そのため、より強固な認証を行うために、2つ以上の認証方式を組み合わせて利用することも増えている。2つの認証を組み合わせる方法を二要素認証と呼ぶ。2つ以上の認証を組み合わせる方法を多要素認証と呼ぶ。次に、特に証拠を提出する場所と証拠を確認する場所が遠隔の場合には、ネットワークを通じて証拠を提出する必要があるが、安全性などのレベルにより直接証拠データをネットワークに流す方式と、証拠データを暗号化して盗み見られないようにする方法がある。パスワードを利用した認証方式の場合は、PAP(直接もしくは可逆な証拠データを送信する)、CHAP(証拠データをやり取りするために一時的な取り決めに従って暗号化する)のいずれかが用いられる。最近は、通信そのものもTLS/SSLなどの暗号通信方式を使って暗号化することが推奨されている。認証サーバ認証サーバとしては、次のようなサーバがよく使われている。Protocol)は、人や物の情報を管理する仕組みである。Directoryは日本語では「人名録」や「住所録」を意味している。様々なアプリケーションと連携することが可能で、認証用のデータだけでなく様々なデータを保持することができる。ユーザの認証に利用する証拠データを高度な暗号形式で保管することができる。LDAPサーバとしては、オープンソースソフトウェアのOpenLDAPや、WindowsのAcriveDirectoryなどが利用されている。Service)は、古くから使われている認証プロトコルの一つです。ダイヤルインという名称は、インターネットに電話で接続した時代を物語っています。ネットワーク利用の可否の判断と、ネットワーク利用の記録保存を行います。現在でも、ネットワーク機器の認証では一般的に利用されている。ユーザの認証に利用する証拠データは、認証の方法に合わせて、暗号化して保管する場合と、暗号化せずに保管することができる。RADIUSサーバとしては、オープンソースソフトウェアのFreeRADIUSが知られている。認証を行うシステムが増加すると、人が認証のために必要な情報を記憶しておくのが困難になる。利用するシステムごとに認証を行うことも煩雑と感じるようになる。そのため、このような状態を認証システム側の工夫で回避しようとする努力が行われている。シングルサインオンは、一回の認証で様々なアプリケーションやサービスを利用できるようにする仕組みである。インターネット上のサービスでは、FacebookやTwitterなどの登録情報で認証を行うSNS認証も普及している。シングルサインオンやSNS認証を行うための技術として、OpenAMやKeycloakなどのオープンソースソフトウェアが利用されている。今回、ご紹介するRocket.Chatは、一対一のコミュニケーションや、グループでのコミュニケーションも可能です。本セミナーでは、Rocket.Chatの機能や特徴そしてRocket.Chatの外部連携についてご紹介します。ご興味のあるかたはぜひご参加ください。