よくある質問・用語集

  • もっと調べる
  • どうやって使う?

RADIUSとは

RADIUSとは、AAAサービスを実装する認証プロトコルのひとつである。RADIUSの読み方は「ラディウス」で、RFC2865で定義されている。AAAとは、Authentication(認証)、Authorization(認可)、Accounting(課金)の略称。つまり、RADIUSでは、システムに接続するユーザが正しいかを確認し、そのユーザにアクセス許可を与え、ユーザの接続時間や操作などを記録する機能を提供する。RADIUSを導入すると、各ネットワーク機器にユーザアカウント情報を個別に設定するのではなく、 RADIUSサーバで集中管理することができるようになる。

RADIUSの用途

RADIUSは、Remote Authentication Dial In User Service の略称である。これは、RADIUSがダイアルアップサービスのために開発されたプロトコルであることを意味している。近年では、RADIUSをダイアルアップサービスで使うことはほとんどなくなった。替わりに、無線LANなどのワイヤレス・ネットワークの認証や、VPNなどのセキュリティ機器の認証でRADIUSが利用されている。そのため、RADIUSにも以前より強固なセキュリティが求められるようになった。その結果、後述するEAP認証など、証明書や暗号化の技術をRADIUSと組み合わせて利用する手法が開発された。

RADIUS認証の流れ

RADIUSは、サーバ・クライアントモデルで動作する。RADIUSの認証では、認証される人(ユーザ)、ユーザが利用しようとしている機器(RADIUSクライアント)、RADIUSサーバの3つが相互に通信を行う。「RADIUSクライアント」は、NAS(Network Access Server)とも呼ばれる。RADIUS認証は、次のような手順で行われる。

  1. ユーザからの認証要求(ユーザIDとパスワード)をRADIUSクライアントが受け取る
  2. RADIUSクライアントは、認証要求(ユーザIDとパスワード)をRADIUSサーバに転送する
  3. RADIUSサーバは、受け取った情報(ユーザIDとパスワード)を基にユーザ認証を行う
  4. RADIUSサーバは、RADIUSクライアントに認証結果を返す
  5. RADIUSクライアントは、認証結果に基づいてユーザへ接続の許可または拒否を行う

また、これ以外にRADIUSでは、課金処理にも対応している。課金処理は、次のような手順で行われる。

  1. RADIUSクライアントがRADIUSサーバに課金要求を送信する
  2. RADIUSサーバが課金処理を行い応答を返す

RADIUSプロトコルと課題

RADIUSプロトコルは、UDPで実装されている。RADIUSパケットは、20オクテットのヘッダと属性で構成されている。RADIUSパケットのヘッダには1オクテットの種別コード、1オクテットの識別子、2オクテットのパケット長、16オクテットの認証符号などが記録される。RADIUSの最大の課題は、識別子が1オクテットしかないことである。識別子はクライアント毎に割り振られるため、RADIUSサーバの最大接続は256と限定されてしまう。また、RADIUSはトランスポートレベルでのセキュリティに対応していない。そのため、RADIUSは上位のプロトコルで認証情報を保護する仕組みが必要となる。

最近では、こうした問題を解決したDiameterというプロトコルがRADIUSの後継として使われ始めている。

RADIUSとPPP

RADIUSは、PPPと組み合わせて使うのが一般的である。RADIUSがトランスポートレベルのセキュリティに対応していないため、PPPにも簡易的な認証方式から、拡張認証方式まで様々な方法が用意されている。特に無線LANや認証スイッチで使われる802.1Xの認証では、拡張認証方式を使うことが多い。

PAP認証

PAPは、RADIUSクライアントからRADIUSサーバへ、プレーンテキストのパスワードを送信する認証方式である。RADIUSサーバとクライアントの間で、パスワードが平文のまま交換されるため、盗み見ることが可能だという課題がある。

CHAP認証

CHAPは、RADIUSサーバとクライアントの双方でハッシュ化したパスワードを突き合わせるという認証方式である。CHAPの方がPAPよりも安全ではある。しかし、ハッシュ化するためにはRADIUSサーバ側でもパスワードを平文で記憶しておく必要があり、最近ではそれも危険であると考えられている。

EAP-MD5認証

チャレンジ・レスポンス方式を使用して認証を行う。RADIUSサーバは、チャレンジと呼ばれるランダムなビット列をクライアントに送る。クライアントは、パスワードとチャレンジからレスポンスを計算して、ユーザIDとレスポンスをサーバに送る。RADIUSサーバは、ユーザIDに対応するパスワードをデータベースから引き出し、同じ計算をする。この結果が、送られてきたレスポンスと同じであれば、認証が成功となる。この方法も、RADIUSサーバ側でパスワードを平文で記録しておく必要がある。

EAP-TLS認証

ユーザ名とパスワードではなく、TLS証明書を使って認証を行う。認証装置(クライアント)は、RADIUSサーバの証明書を検査して正しいサーバであることを確認する。RADIUSサーバは、ユーザの持つクライアント証明書を使って、ユーザの認証を行う。利用するには、証明書の発行や管理を行う認証局が必要になる。

EAP-TTLS認証

EAP-TLSをさらに拡張した方法。RADIUSサーバとユーザの証明書で認証した後、RADIUSサーバのTLS証明書を使って通信経路を暗号化し、その経路上でユーザ名とパスワードによる認証を行う。利用するには、証明書の発行や管理を行う認証局が必要になる。

EAP-PEAP認証

RADIUSサーバ側にのみ電子証明書を準備する方法。認証装置(クライアント)は、サーバの証明書を検査して、正しいサーバであることを確認する。そして、サーバ証明書を使ってTLSによる暗号化通信路を作り、クライアント証明書以外の方法で認証を行う。この認証には、ユーザ名とパスワードを使ったり、ワンタイムパスワードを使う場合もある。

EAP-SIM認証

携帯電話などの通信機器のSIM情報を使って認証を行う方法。ユーザ名やパスワードの交換は行わない。利用する端末を限定したい場合に使われ、通信強度が非常に高い。

RADIUSサーバとクライアント間のセキュリティ

RADIUSでは、サーバが不正な認証要求を受けないようにするため、サーバとクライアントの間では、共有鍵(Shared Secret)を利用する。共有鍵は、クライアント毎にあらかじめ取り決めて定義しておく。通信を行う時には、パケットの内容と共有鍵からダイジェスト情報を作成し、それを属性情報として付加する。これによって、詐称や改竄を検知することができる仕組みになっている。

認証データの管理

RADIUSでは、認証のためにユーザ、パスワードだけでなく、それ以外の属性情報も管理する必要がある。多くのRADIUSサーバでは、認証情報を内部データベースとして管理することができる。しかし、RDBなどの外部データベースに認証情報を保管したり、LDAPやActiveDirectoryなどの認証サーバと連携できるようにしている実装も多い。

ローミングとRADIUSプロキシ

認証データを自分で管理せず、他のRADIUSサーバに認証処理を依頼することもできる。このような使い方をRADIUSプロキシと呼ぶ。また、ユーザ名を「user@domain」の形式にして、domainによって認証を依頼するサーバを決める方法が使われることもある。インターネットサービスプロバイダでは、このようなオープンソースソフトウェアを利用していることが多い。

RADIUSサーバのソフトウェア

RADIUSを実装したソフトウェアでは、製品とオープンソースソフトウェアが選択できる。製品のソフトウェアは、GUIで管理ができたり、EAPで利用する認証局の機能を持つものが多い。オープンソースソフトウェアでは、FreeRADIUSがよく利用されている。FreeRADIUSのGUIを提供するdaloRADIUSや、認証局の機能を提供するOpenXPKIなどと共に使うことで、製品のソフトウェアと同等の機能を実現することができる。インターネットサービスプロバイダでは、このようなオープンソースソフトウェアを利用していることが多い。

【カテゴリ】:プロトコル  認証  

  • もっと調べる
  • どうやって使う?

【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー

日程: 11月22日(金)Webセミナー「BigBlueButton」を使用します。
内容: OSSを導入したいけど、どこから手をつければいいかわからない方必見!
ご興味のあるかたはぜひご参加ください。

セミナー申込

関連用語

RADIUSに関連するページ(事例など)

RADIUSとは先頭へ