以下に添付図面を参照して、サーバ装置、機器、証明書発行方法、証明書要求方法、証明書発行プログラム及び証明書要求プログラムの実施形態を詳細に説明する。
(第1実施形態)
はじめに、インターネット上のウェブサーバ(以降、単に「ウェブサービス」と呼ぶ)が、ローカルネットワーク上の機器で動作するウェブサーバ(以降、単に「機器」と呼ぶ)と、ウェブサービスへアクセスする端末のウェブブラウザを介して、相互認証に基づいた暗号化通信を行うことの困難性について説明する。ここで、暗号化通信とは、例えばHTTPS(Hypertext Transfer Protocol Secure)等のTLS(Transport Layer Security)を利用する通信である。
具体的には、ユーザによる何らかの手動設定を伴わずに、以下の問題を解決することが難しい。
[問題1]ウェブブラウザ、及び、ウェブブラウザ上で動作するウェブサービスのフロントエンド(ウェブページとして制御されるインタフェース)が、ローカルネットワーク上の機器を発見することができない。
[問題2]機器が正規のサーバ証明書を持っていない。すなわち、ウェブブラウザ、及び、ウェブブラウザ上で動作するウェブサービスのフロントエンドが、信頼できる機器であることを検証できない。
[問題3]機器が、ウェブサービスの認証及びアクセス制御、並びに、ユーザの認証及びアクセス制御をできない。
[問題1]については、例えば次の解決策により解決できる。まず、ウェブサービスが機器のIPアドレスを登録するための登録インタフェースを用意する。次に、ユーザが、登録インタフェースを使用して機器のIPアドレスをウェブサービスに登録する。
[問題2]については、例えば次の解決策により解決できる。まず、ユーザが、認証局と、認証局による署名付きのルート証明書とを作成する。次に、ユーザが、ユーザにより作成されたルート証明書をウェブブラウザに信頼できるルート証明書として登録する。次に、ユーザが、ユーザにより作成された認証局による署名付きのサーバ証明書を作成する。そして、ユーザが、サーバ証明書を機器に設定する。
[問題3]については、例えば次の解決策により解決できる。まず、機器に予めユーザID及びパスワードを設定する。そして、ウェブブラウザが機器にアクセスする際に、ユーザID及びパスワードによる認証をかける。
しかしながら、上記いずれの解決策も、ユーザに手動設定作業を強いるものであり、ユーザビリティ上の問題がある。また、上記[問題2]及び[問題3]の解決策については、ウェブサービスが機器の正当性を、機器がウェブサービスの正当性を、それぞれ正規に検証できていない。そのため、悪意のあるユーザによって、悪意のある機器や、悪意のあるウェブサービスとの通信が容易に実現できてしまう。
上述の[問題2]は、機器が信頼できるサーバ証明書を持っていないことが主な原因である。しかしながら、正規の認証局は、グローバルアクセス可能なドメインを持ち、かつ、管理主体が明確なサーバに対して証明書を発行することが一般的である。そのため、インターネットとは異なるネットワークであるローカルネットワーク上の機器に対して正規のサーバ証明書を発行する方法は知られていない。
非特許文献1は、ウェブサービスに対して、DV証明書を発行する認証局の標準仕様を定めたものである。DV証明書とは、ドメインの存在検証のみを前提に発行するサーバ証明書のことであり、インターネット上のパブリックな認証局が発行する証明書の中で最も信頼性が低い証明書である。すなわち、ドメインの存在検証が、パブリックな認証局が発行するサーバ証明書の最低限のルールと言い換えることもできる。しかしながら、インターネット上の認証局は、ファイアウォールやNAT(Network Address Translation)などの機能を有する中継装置が存在するため、ローカルネットワークの機器のドメイン存在検証ができない。
機器がサーバとして振る舞う場合、プライベートアドレス空間を持ち、更に、変化し得るIPアドレスを持つローカルサーバに対して、固定的な名前(ドメイン)をどの時点で付与するのか、そのドメインの存在検証をどのように行い、証明書を発行するのか等を解決することは難しい。
以下の説明では、ウェブサービスから、ローカルネットワーク上の機器に、ウェブブラウザを介して、安全に(クロスオリジン)アクセスできるようにする方法について説明する。ここでいう「安全に」とは、ウェブブラウザが、機器、ウェブサービス、及び、ウェブサービスのユーザが、正当であることを検証でき、かつ、暗号化通信を行うことができることを指す。
[証明書発行システムの構成の例]
図1は第1実施形態の証明書発行システム100の構成の例を示す図である。第1実施形態の証明書発行システム100は、サーバ装置10、機器20、端末30及び中継装置40を備える。
サーバ装置10は、第1ネットワーク501に接続されている。第1ネットワークは、インターネット等のWAN(Wide Area Network)である。第1実施形態では、サーバ装置10と端末30間の通信、及び、サーバ装置10と機器20間の通信は、第1ネットワーク501を介して行われる。第1実施形態では、第1ネットワーク501が、インターネットである場合を例にして説明する。
機器20及び端末30は、第2ネットワーク502に接続されている。第2ネットワーク502は、宅内、オフィスまたは工場などのローカルネットワークである。ローカルネットワークの媒体は、例えば上位プロトコルでIP通信を実現できるイーサネット(登録商標)、及び、無線LAN等である。なお、イーサネット(登録商標)、及び、無線LAN等と同等の機能を実現できるネットワークであれば、具体的な媒体や上位通信プロトコルは問わない。第1実施形態では、第2ネットワーク502が、無線LANで構築されたローカルネットワーク(ホームネットワーク)である場合を例にして説明する。
第1実施形態のサーバ装置10は、機器20のドメインの正当性を証明する証明書を発行する認証局である。第1実施形態では、サーバ装置10は、機器20のメーカが運用しているインターネット上のウェブサービスの機能の一部として、機器20の証明書を発行する機能を実現する。なお、サーバ装置10は、機器20のメーカとは異なる第三者により運用される認証局でもよい。
第1実施形態の機器20は、第1ネットワーク501のウェブサービスから、端末30の実行部301(第1実施形態では、ウェブブラウザ)を介してアクセスされる第2ネットワーク502上の機器である。機器20は、HTTP(HyperText Transfer Protocol)サーバ機能を備える。第1実施形態では、機器20は、デジタルテレビである。機器20がデジタルテレビの場合、第1ネットワーク501のウェブサービスは、例えば宅内のデジタルテレビを発見し、テレビリモコン機能を提供するテレビリモコンサービス(テレビ用クラウドサービス)である。第1実施形態では、テレビリモコンサービスが、サーバ装置10により提供されるウェブサービスの機能の一部として実現されている場合を例にして説明する。
第1実施形態の端末30は、ユーザにより操作される端末である。ここで、ユーザは、機器20及び端末30の所有者であり、機器20のメーカにより提供されるウェブサービスのユーザでもある。第1実施形態では、端末30はスマートフォン及びタブレット端末等のスマートデバイスである。なお端末30はパーソナルコンピュータ等でもよい。
端末30は実行部301を備える。実行部301は、サーバ装置10が端末30に機能を提供するためのインタフェース107を実行する。第1実施形態のインタフェース107は、サーバ装置10から端末30へ送信されるウェブページであり、第1実施形態の実行部301は、当該ウェブページを実行するウェブブラウザである。インタフェース107は、基本的に、HTML(HyperText Markup Language)、CSS(Cascading Style Sheets)、及び、JavaScript(登録商標)コードにより構成されており、機器20のドメインの存在を確認する機能(ドメイン確認部108)を実現する。なお実行部301は、ウェブブラウザに限られず、例えば端末30で動作するアプリケーションでもよい。ユーザは、機器20(第1実施形態では、デジタルテレビ)を、端末30(第1実施形態では、スマートデバイス)の実行部301(第1実施形態では、ウェブブラウザ)で、テレビリモコンサービスのウェブ画面を表示及び操作する。
中継装置40は、第1ネットワーク501に接続されたサーバ装置10と、第2ネットワーク502に接続された機器20及び端末30との間の通信を中継する装置である。
次に、第1実施形態のサーバ装置10の機能構成について説明する。第1実施形態のサーバ装置10は、機器登録部101、機器認証部102、発行要求応答部103、確認方式応答部104、確認要求応答部105、インタフェース提供部106、インタフェース107、ドメイン確認部108、機器URL応答部109、確認結果受付部110及び発行部111を備える。インタフェース提供部106は、インタフェース107を端末30に提供する。インタフェース107は、ドメイン確認部108を備える。
機器登録部101は、機器20により生成された鍵ペア(公開鍵及び秘密鍵)の公開鍵の登録要求を、機器20から受け付けることにより、当該機器20の機器登録を行う。
なお、機器登録の具体的な方法は任意でよい。例えば、機器登録部101は、機器メーカに対してMAC(Message Authentication Code)鍵を予め発行する。次に、機器メーカは出荷前にMAC鍵を機器20に埋め込む。次に、機器20は、このMAC鍵で公開鍵に署名を付与し、署名付きの公開鍵を含む登録要求を機器登録部101に送信する。機器登録部101は、機器20から登録要求を受け付けた場合、署名を検証することにより、MAC鍵を発行した機器20からの登録要求であるか否かを判定する。機器登録部101は、MAC鍵を発行した機器20からの登録要求である場合、当該登録要求に含まれる公開鍵を登録する。
機器認証部102は、機器登録部101により登録された機器20から送信された通信データに含まれるパラメータ(公開鍵及び署名)を参照して、機器20を認証する。具体的には、機器認証部102は、通信データに含まれる公開鍵が登録済みであり、かつ、通信データに含まれる署名が正しい場合、機器20を認証する。なお、機器認証部102は、リプレイ攻撃を防止するための乱数及びランダム文字列(nonce)を、機器20に発行する機能を備える。
発行要求応答部103は、機器登録部101により登録された機器20から証明書の発行要求を受け付ける。具体的には、発行要求応答部103は、上記機器認証部102による機器認証が通った場合に、機器20からCSR(Certificate Signing Request)を、発行要求のパラメータとして受け付ける。なお、このCSRは、ローカルネットワーク上で用いるドメイン名(digital_tv.local及びdigital_tv.home.arpha等、以降、「ローカルドメイン」と呼ぶ)に対する証明書署名要求である。
確認方式応答部104は、証明書の発行要求を送信した機器20から、ドメインの確認方式(非特許文献1のACMEでは、「チャレンジ」と呼ばれる)取得要求を受け付け、CSRがローカルドメインの証明書署名要求であった場合、確認方式情報を応答する。確認方式情報は、種別情報、識別情報及びトークンを含む。種別情報は、ローカルドメインに対する確認方法であることを示す情報(“http−local−01”等)を示す。識別情報は、チャレンジIDを示す。トークンは、ドメイン確認時に用いられる乱数などの数値列データ、及び、ランダム文字列データなどを含む。
確認要求応答部105は、機器20から、チャレンジID、トークン、及び、登録時に用いた署名付きの公開鍵(以降、この公開鍵を「キー認可情報」とよぶ)を含むドメイン確認要求を受け付け、インタフェースのアドレスを示す検証URLを応答する。検証URLには、サーバ装置10内で、機器20からの証明書発行要求及びドメイン確認要求を一意に特定するための検証コード(特定情報)が含まれる。検証URLの例は、例えば、https://device−ca.example.com/comfirm_local_domain.html#code=xxxxxxxxなどである。この例では、device−ca.example.comがサーバ装置10のドメインであり、xxxxxxxxが検証コードに相当する。
インタフェース提供部106は、機器20のドメインをローカルネット上で確認するためのインタフェース107を提供する。第1実施形態では、インタフェース提供部106は、ウェブサーバである。インタフェース提供部106は、ユーザ認証機能を備える。インタフェース提供部106は、ユーザ登録済みのログインユーザからの要求にのみ応答する。ログイン認証は、ウェブで広く用いられるCookieベースのユーザセッション認証か、アクセストークン認証を用いるのが一般的であるが、これらに限定しない。インタフェース提供部106は、ログインしていないユーザからのアクセスには、ログイン画面を応答し、ユーザ認証を求める。
インタフェース107は、端末30上で実現されるサーバ装置10のフロントエンドである。第1実施形態では、インタフェース107はウェブページである。
ドメイン確認部108は、インタフェース107により実現される機能である。第1実施形態では、ドメイン確認部108は、ウェブページ内のJavaScript(登録商標)コードとして実現される。ドメイン確認部108は、上述の検証URLに含まれる検証コードを、サーバ装置10に送信する。次に、ドメイン確認部108は、機器20によりサーバ装置10に送信されたCSR情報及びトークン情報(より具体的には、機器のHTTPサーバ上のドメイン確認用の機器URL(http(s)://digital−tv.local/.well−known/acme−challenge/{トークン}など)を、サーバ装置10から取得する。そして、ドメイン確認部108は、機器URLにアクセスし、トークン及びキー認可情報を機器20から取得する。
機器URL応答部109は、第2ネットワーク502に接続された端末30上で、サーバ装置10のフロントエンドとして実現されるドメイン確認部108から、検証URL(サーバURL)を介して接続を受け付け、端末30から、検証コード(特定情報)が指定された機器URL取得要求を受信すると、特定情報からドメインとトークンとを特定し、ドメインとトークンとを含む機器URLを、端末30に送信する。
確認結果受付部110は、機器URLにアクセスしたドメイン確認部108から、トークン及びキー認可情報を含むパラメータを受け付ける。
発行部111は、確認結果受付部110により受け付けられたパラメータを使用して、チャレンジとして発行されたトークンが、チャレンジを発行した機器20のドメインから取得出来たか否かを検証する。発行部111は、チャレンジとして発行されたトークンが、チャレンジを発行した機器20のドメインから取得出来た場合、当該機器20のCSRを自身のもつサーバ証明書の秘密鍵で署名して、機器20のドメインの証明書を生成する。発行部111は、機器20から証明書の取得要求を受信すると、ドメイン確認が完了し、かつ、証明書の発行が完了していれば、当該取得要求の応答として、機器20に証明書を送信する。
次に、第1実施形態の機器20の機能構成について説明する。第1実施形態の機器20は、入力制御部201、登録要求部202、ドメイン生成部203、CSR生成部204、発行要求送信部205、確認方式取得要求部206、サーバ処理部207、確認要求送信部208、表示制御部209及び取得部210を備える。
入力制御部201は、ユーザによる入力操作を受け付ける。入力制御部201は、例えば端末30の実行部301(第1実施形態では、ウェブブラウザ)からのアクセスを有効化する設定をONにする入力操作を受け付ける。
登録要求部202は、機器20で生成された公開鍵を含む機器登録用データを生成し、当該機器登録用データにより、サーバ装置10の機器登録部101に登録要求を行う。機器登録用データの生成方法の説明は、図2Aを用いて後述する。
ドメイン生成部203は、機器20のドメインの名称であるドメイン名(domain_name)を生成する。
CSR生成部204は、ドメイン生成部203により生成されたドメイン名(domain_name)の正当性を証明する証明書の署名要求(CSR)を生成する。
発行要求送信部205は、機器20のドメインの証明書の発行要求をサーバ装置10に送信する。
確認方式取得要求部206は、確認方式取得要求(チャレンジ取得)をサーバ装置10に送信し、ドメイン確認方式(チャレンジ)情報を取得する。確認方式取得要求及びドメイン確認方式(チャレンジ)情報の説明は、図2Aを用いて後述する。
サーバ処理部207は、機器20で動作させるHTTPサーバの処理を実行する。HTTPサーバのアドレスは、ドメイン生成部203により生成されたドメイン名を含む。
確認要求送信部208は、機器20のドメインの確認要求(チャレンジ選択)をサーバ装置10に送信する。
表示制御部209は、ドメインの確認要求の応答として、サーバ装置10から検証URLを受信すると、この検証URLをQRコード(登録商標)などのコード情報にして、表示部に表示する。
取得部210は、端末30のインタフェース107からドメイン確認のためのアクセスを受けた契機で、証明書発行の可否をサーバ装置10に定期的に問い合わせる。そして、取得部210は、サーバ装置10の発行部111から証明書を取得すると、当該証明書を機器20にインストールする。
[証明書発行システムの動作例]
次に、第1実施形態の証明書発行システム100の動作例について説明する。
図2A及び2Bは、第1実施形態の証明書発行システム100の動作例を示すシーケンス図である。
はじめに、事前条件について説明する。
[事前条件1]サーバ装置10(を運用する組織)は、事前に機器20に対してMAC鍵(product_id,product_secret)を払い出している。機器20のメーカは、このMAC鍵を製造時に機器20に埋め込んでいる。なお、このサーバ装置10を運用する組織は、第1実施形態では、機器20のメーカである。なお、MAC鍵は、第1実施形態では、共通鍵としているが、例えばクライアント証明書のような非対称鍵であってもよい。
[事前条件2]ユーザは、機器20(第1実施形態では、デジタルテレビ)の所有者であり、ウェブサービス(第1実施形態では、テレビリモコン機能等の遠隔制御などを実現するテレビ用クラウドサービス)に、例えばemailアドレス及びパスワードによるユーザ登録を行っている。
はじめに、機器20の入力制御部201が、端末30の実行部301(第1実施形態では、ウェブブラウザ)からのアクセスを有効化する設定をONにする入力操作を受け付ける(ステップS1)。この際、入力制御部201は、サーバ装置10に登録済みのemailアドレスを指定する入力操作を更に受け付けるようにしてもよい。また、入力制御部201は、認証局として動作するサーバ装置10が複数ある場合、複数のサーバ装置10の候補から、サーバ装置10を選択する入力操作を更に受け付けてもよい。
次に、機器20の登録要求部202が、機器登録用の鍵ペア(公開鍵(client_pub)及び秘密鍵(client_secret))を生成する(ステップS2)。
次に、機器20の登録要求部202は、機器登録のためのnonceの発行をサーバ装置10に要求する(ステップS3)。サーバ装置10の機器認証部102は、登録要求部202からnonceの発行要求を受信すると、nonceを生成し、当該nonceを発行要求の応答として機器20に送信する(ステップS3)。
次に、機器20の登録要求部202は、機器登録用データを生成する。機器登録用データは、client_pub及びnonceを少なくとも含む(ステップS4)。このとき、サーバ装置10の機器登録部101が、事前にMAC鍵を払い出している製品(機器20)からの登録のみを受け付けるようにする場合、機器20の登録要求部202が、機器登録用データにproduct_idを含め、これにproduct_secretで署名をつける。
次に、機器20の登録要求部220は、ステップS4の処理により生成された機器登録用データで、サーバ装置10の機器登録部101に登録要求を行う(ステップS5)。サーバ装置10の機器登録部101は、MAC、client_pub及びnonceに対するclient_secretによる署名を検証し、正しければ機器20を登録する。
なお、上述のステップS2〜ステップS5の処理は、サーバ装置10への機器登録が既に実行されている場合は省略される。
次に、機器20のドメイン生成部203が、ドメイン名(domain_name)を生成する(ステップS6)。このとき、ドメイン生成部203は、mDNSを有効化し、ドメイン名(domain_name)が第2ネットワーク502上で衝突せずに使えることを確認する。例えば、1つの実現例として、ドメイン生成部203は、domain_nameを、<UUID>.<機器メーカが運用するサーバ装置のドメイン名>.localとする。ここで、UUIDは、MAC(Media Access Control)アドレスなどから生成されるグローバルユニークな値である。サーバ装置10のドメインが、dtv.example.comだった場合には、例えば、2fac1234−31f8−11b4−a222−08002b34c003.dtv.example.com.localなどになる。この例はあくまで一例であり、第2ネットワーク502で衝突しない限りは、ドメイン名の生成方法は任意でよい。
次に、機器20のCSR生成部204が、ステップS6の処理により生成されたdomain_nameの正当性を証明する証明書の署名要求(CSR)を生成する(ステップS7)。なお、CSR生成部204は、指定したユーザのemailアドレスを、CSRのコンタクト情報に加えてもよい。
次に、機器20の発行要求送信部205が、機器20のドメインの証明書の発行要求をサーバ装置10に送信する(ステップS8)。証明書の発行要求は、ステップS7の処理により生成されたCSRを含む。サーバ装置10の発行要求応答部103は、機器認証部102により機器20が認証された場合、CSRを受け付け、応答として、識別情報(authz_id)、及び、パス情報(cert_uri)を機器20に送信する。識別情報(authz_id)は、証明書の発行要求を識別する情報である。パス情報(cert_uri)は、証明書が発行された場合に、当該証明書が置かれる場所を示す情報である。このとき発行要求応答部103は、CSRに含まれるドメイン名がローカル用のドメインであることを示す情報を、CSRと合わせて記憶しておく。なお、CSR内の情報を用いず、証明書の発行要求に、ローカルネットワーク向け証明書の発行であることを明示的に示すパラメータを含めるようにしてもよい。
次に、機器20の確認方式取得要求部206が、識別情報(authz_id)が指定された確認方式取得要求(チャレンジ取得)をサーバ装置10に送信し、ドメイン確認方式(チャレンジ)情報を取得する(ステップS9)。サーバ装置10の発行要求応答部103は、機器認証部102により機器20が認証された場合、ローカルドメイン向けチャレンジ情報を応答する。ローカルドメイン向けチャレンジ情報は、チャレンジ識別情報、種別情報(“http−local−01”など)、及び、トークンを含む。
次に、機器20のサーバ処理部207が、トークン、及び、署名データ(キー認可情報(key_authorization))を、機器20で動作させるHTTPサーバの特定パス(.well−known/acme−challenge/{token}等)に設置する(ステップS10)。署名データは、公開鍵(client_pub)をハッシュ関数にかけて秘密鍵(client_secret)で暗号化したデータである。
次に、機器20の確認要求送信部208が、サーバ処理部207によりHTTPサーバの準備ができた後、機器20のドメインの確認要求(チャレンジ選択)をサーバ装置10に送信する(ステップS11)。サーバ装置10の確認要求応答部105は、機器認証部102により機器20が認証された場合、当該ドメイン確認要求を特定する一時的に有効な検証コード(code)を特定情報として含む検証URL(verification_uri)を応答する。この検証URLは、サーバ装置10により提供されるインタフェース(ウェブ画面)のパスである。検証URLは、例えば、前述したように、https://dtv.example.com/confirm_local_domain.html#code=xxxxxxxxなどになっていて、インタフェースのJavaScript(登録商標)コードから、検証コード(code)が参照できる形になっている。
次に、機器20の表示制御部209が、ステップS11の応答として、サーバ装置10から検証URLを受信すると、この検証URLをQRコード(登録商標)などのコード情報にして、表示部に表示する(ステップS12)。なお表示制御部209は、そのまま検証URLの文字列を表示してもよいが、ユーザがインタフェース107のパスを予め知っているなどの場合は、検証コードのみを表示してもよい。
次に、端末30の実行部301が、ステップS12の処理により表示されたコード情報を読み込むことにより取得された検証URLにアクセスし、インタフェース107(ドメイン確認ウェブ画面)に遷移する(ステップS13)。
次に、端末30のインタフェース107は、ユーザがログインしていなければ、ログイン操作を受け付ける(ステップS14)。
次に、インタフェース107上のドメイン確認部108は、検証URLに含まれる検証コード(code)を、ドメイン確認要求を特定する特定情報として取得し、当該検証コードをパラメータとして含む機器URL取得要求をサーバ装置10に送信する(ステップS15)。サーバ装置10の機器URL応答部109は、機器20のHTTPサーバのドメイン確認用URL情報である機器URL(device_uri)を、機器URL取得要求の応答として、端末30に送信する。
機器URL(device_uri)は、機器のドメイン(ドメイン名)及びトークンを含む。device_uriは、例えばhttp(s)://{domain_name}/.well−known/acme−challenge/{token}などである。
次に、端末30のインタフェース107(ドメイン確認部108)は、機器20によりトークンが設置されているパスを示す機器URL(device_uri)を含むパラメータを実行部301に渡すことにより、実行部301に機器20のドメインの存在確認を依頼する(ステップS16)。
次に、端末30の実行部301は、機器URLにアクセスし、トークン及びキー認可情報を取得し、トークン及びキー認可情報をインタフェース107(ドメイン確認部108)に応答する(ステップS17)。
次に、機器20の取得部210が、端末30のインタフェース107からのアクセスを契機に、証明書発行の可否をサーバ装置10に定期的に問い合わせる(ステップS18)。
次に、端末30のインタフェース107(ドメイン確認部108)は、トークン及びキー認可情報を含むドメイン確認登録要求をサーバ装置10の確認結果受付部110に送付する(ステップS19)。
次に、サーバ装置10の確認結果受付部110が、ステップS19の処理により送信されたトークン及びキー認可情報を受け付けると、発行部111が、トークン及びキー認可情報を検証する(ステップS20)。具体的には、確認結果受付部110は、ステップS11の処理によりドメインの確認要求を送信した機器20、及び、当該ドメイン確認要求に含まれていたトークンと、ステップS19の処理により端末30から受け付けたトークン及びキー認可情報(ステップS17の処理により機器20のHTTPサーバから取得されたトークン及びキー認可情報)とが一致するか否かを検証する。
次に、サーバ装置10の発行部111は、ステップS20の検証処理が成功した場合、ステップS8の処理により送信された証明書の発行要求により、機器20から送信されたCSRを、サーバ装置10の秘密鍵で署名して証明書を発行する(ステップS21)。
この際、発行部111は、ステップS19の処理により送信されたドメイン確認登録要求への応答として、証明書を返してもよい(optional)。この場合、端末30のインタフェース107は、サーバ装置10から受信した証明書を実行部301(第1実施形態では、ウェブブラウザ)に信頼できる証明書として登録するよう要求する(ステップS22)。次に、実行部301は、ステップS22の処理により登録の要求をされた証明書を、信頼できる証明書として登録する(ステップS23)。この際、実行部301は、ステップS23の処理により登録された証明書を信頼できる証明書として扱うドメインを合わせて登録し、他のドメインからは信頼できる証明書として見えないようにしてもよい。
一方、機器20の取得部210は、定期的に送信する証明書発行要求への応答に含まれる状態情報が「発行済」になっていることを確認する(ステップS24)。次に、取得部210は、サーバ装置10の発行部111から証明書を取得すると(ステップS25)、当該証明書を機器20にインストールする(ステップS26)。
以上説明した第1実施形態の証明書発行システム100によれば、第1ネットワーク501(インターネット)上のウェブサービスからアクセス可能なサーバ証明書が、第2ネットワーク502(ローカルネットワーク)上の機器20のHTTPサーバに発行できている。
なお第1実施形態では、機器20がデジタルテレビである場合を例にして説明したが、機器20はデジタルテレビに限られない。機器20は、例えば、デジタルテレビ以外の家電機器、住宅設備機器、工場の設備機器、及び、ビルの設備機器などであってもよい。第1実施形態の証明書発行システム100は、インターネット上のウェブページからローカルネットワーク上の機器へ安全にアクセスする方法として、幅広い適用範囲が想定される。
(第2実施形態)
次に第2実施形態について説明する。第2実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。
第1実施形態は、機器20が、QRコード(登録商標)などのコード情報を表示可能な相応の情報表示能力を持っていることを前提とした方式であった。第2実施形態では、コード情報などを用いて、上述の検証URL(verification_uri)を端末30に伝えられない機器20を対象にした実施形態について述べる。第2実施形態では、機器20がエアコンである場合を例にして説明する。
[証明書発行システムの構成の例]
図3は第2実施形態の証明書発行システム100の構成の例を示す図である。第2実施形態の証明書発行システム100は、サーバ装置10、機器20、端末30及び中継装置40を備える。
第2実施形態では、第3ネットワーク503が追加されている。また、機器20には、第3ネットワーク503を介して端末30と通信する通信制御部211が追加されている。
第3ネットワーク503は、機器20及び端末30が安全に(情報漏洩せずに)通信できるネットワークである。具体的には、第3ネットワーク503の通信方式は、有線方式であっても無線方式であってもよい。有線方式の場合は、例えばUSB(Universal Serial Bus)、HDMI(登録商標)(High−Definition Multimedia Interface)、及び、SDIO(Secure Digital Input/Output)などである。無線方式の場合は、NFC(Near Field Communication)などの近接無線、及び、BLE(Bluetooth(登録商標) Low Energy)などの安全性の高い近距離無線通信である。第2実施形態では、第3ネットワーク503の通信方式がBLEである場合を例にして説明する。
機器20の通信制御部211は、第3ネットワーク503を介して端末30と通信する。第2実施形態では、通信制御部211は、端末30との間のBLE通信を制御する。
[証明書発行システムの動作例]
次に、第2実施形態の証明書発行システム100の動作例について説明する。
図4A乃至4Cは、第2実施形態の証明書発行システム100の動作例を示すシーケンス図である。第1実施形態では、機器20側から証明書の発行処理を開始したが、第2実施形態では、端末30側から証明書の発行処理を開始する。
事前条件の説明は、第1実施形態と同じなので省略する。
はじめに、端末30のユーザが、エアコン操作ウェブサービス(例えば、https://aircon.example.com)の画面をロードする(ステップS1)。
次に、サーバ装置10が、ステップS1の処理によりロードされた画面を介して、ユーザのログインを受け付ける(ステップS2)。サーバ装置10は、ログインを受け付けると、インタフェース107(第2実施形態では、機器20のドメイン確認用ウェブ画面)を端末30に送信する。
次に、端末30のインタフェース107が、機器20の証明書発行確認画面の表示要求を実行部301(ウェブブラウザ)に入力する(ステップS3)。このとき、ステップS2の処理によりログインしたユーザのユーザ情報(emailアドレスなど)や、サーバ装置情報(機器20が証明書の発行要求などを送信するサーバ装置10のURLドメイン名など)を、実行部301に渡すようにしてもよい。
次に、端末30の実行部301が、証明書発行確認画面を表示する(ステップS4)。証明書発行確認画面は、例えば「ホームネットワークにあるエアコンを見つけて、このページから制御できるようにしますか?[OK],[キャンセル]」などのメッセージを表示する。
次に、端末30の実行部301は、ステップS4の処理により表示された証明書発行確認画面のOKボタンの押下を受け付ける(ステップS5)。
次に、端末30の実行部301は、機器30のBLE通信機能を利用して、HTTPサーバ機能を持つ機器20を探索する(ステップS6)。なお、検索の粒度は任意でよい。探索の粒度は、例えばエアコンを示す機器種別、特定機種、または、サーバ装置10から機器20に払い出されているMAC鍵ID(product_id)などである。
次に、端末30の実行部301は、HTTPサーバ機能を持つ機器20からステップS6の検索処理の応答を受信すると、MAC鍵のID(product_id)、及び、機器名などの機器情報の取得要求を当該機器20に送信する(ステップS7)。
次に、端末30の実行部301は、機器20が複数みつかることもあるため、機器の選択画面を表示する(ステップS8)。
次に、端末30の実行部301は、ステップS8の処理により表示された選択画面を介して、機器の選択を受け付ける(ステップS9)。
次に、端末30の実行部301は、端末30のBLE通信機能を利用して、機器20の証明書の発行要求を機器20に送信する(ステップS10)。この際、実行部301は、証明書の発行要求のパラメータに、上述のユーザ情報、及び、上述のサーバ装置情報を設定する。
次に、機器20の登録要求部202が、機器登録のためのnonceの発行をサーバ装置10に要求する(ステップS11)。この際、登録要求部202は、HTTPS通信を用いることで、サーバ装置10のサーバ証明書を検証することができる。
次に、機器20は、LED(Light Emitting Diode)を光らせることにより、ステップS10の処理により送信された発行要求の受信を知らせる(ステップS12)。
次に、機器20は、機器20のボタンの押下等により、証明書の発行を許諾する操作を受け付ける(ステップS13)。ユーザは、端末30の実行部301で選択した機器20と、実際の機器20が一致していることを確認のうえ、機器20のボタンを押下することにより、証明書の発行を改めて許諾する。
ステップS14〜ステップS22の処理の説明は、第1実施形態のステップS2、及び、ステップS4〜ステップS11の説明と同様のため省略する。
次に、端末30の実行部301は、ステップS10の処理により送信された発行要求の応答(ok)を受信すると、サーバ装置10の検証URL(verification_uri)を、BLE機能を利用して取得し、当該検証URLをインタフェース107に返す(ステップS23)。
ステップS24〜ステップS35の処理の説明は、第1実施形態のステップS15〜ステップS26の説明と同様のため省略する。
以上説明した第2実施形態の証明書発行システム100によれば、機器20が表示機能を持たない場合であっても、セキュアな近距離通信(例えばBLE)を利用することにより、第1実施形態と同様の効果が得られる。
(第3実施形態)
次に第3実施形態について説明する。第3実施形態の説明では、第1及び第2実施形態と同様の説明については省略し、第1及び第2実施形態と異なる箇所について説明する。
第1及び第2実施形態では、機器20が中継装置40を介してサーバ装置10と通信できることを前提としていた。第3実施形態では、インターネットなどの第1ネットワーク501への接続ができない機器20を対象にした実施形態について説明する。
第3実施形態の証明書発行システム100の構成は、第1実施形態の証明書発行システム100(図1参照)と同じである。
[証明書発行システムの動作例]
次に、第3実施形態の証明書発行システム100の動作例について説明する。
図5A乃至5Cは、第3実施形態の証明書発行システム100の動作例を示すシーケンス図である。第3実施形態は、第2実施形態と同様に、端末30側から機器20の証明書の発行処理を開始する。
事前条件の説明は、第1実施形態と同じなので省略する。
ステップS1及びステップS2の処理の説明は、第2実施形態のステップS1〜ステップS2の説明と同様のため省略する。
次に、端末30のインタフェース107が、nonceの発行をサーバ装置10に要求する(ステップS3)。
次に、端末30のインタフェース107は、機器20の証明書の発行要求を実行部301(第3実施形態では、ウェブブラウザ)に依頼する(ステップS4)。証明書の発行要求は、ユーザ情報(user_info)、サーバ装置10のサーバ証明書(device_ca_info)、及び、ステップS3の処理により取得されたnonceを含む。
ステップS5〜ステップS10の処理の説明は、第2実施形態のステップS4〜ステップS9の説明と同様のため省略する。
次に、端末30の実行部301が、CSR生成要求を機器20に送信する(ステップS11)。CSR生成要求は、ユーザ情報(user_info)、サーバ装置10のサーバ証明書(device_ca_info)、及び、ステップS3の処理により取得されたnonceを含む。
次に、機器20は、ステップS11の処理により送信されたCSR生成要求に含まれるサーバ証明書(device_ca_info)を検証する(ステップS12)。具体的には、機器20は、予め機器の中にインストールされている信頼できる認証局の証明書を示す情報に基づいて、サーバ証明書(device_ca_info)を検証する。
ステップS13の処理の説明は、第2実施形態のステップS13の説明と同様のため省略する。ステップS14及びステップS15の説明は、第2実施形態のステップS17及びステップS18の説明と同様のため省略する。
次に、機器20のCSR生成部204が、CSR及びnonceをproduct_secretにより署名(MAC)を生成する(ステップS16)。機器20のCSR生成部204は、署名(MAC)が生成できた時点で、ステップS11の処理により送信されたCSR生成要求の応答(ok)を端末30に送信する。
次に、端末30の実行部301は、CSR生成要求の応答(ok)を受信すると、CSR取得要求を機器20に送信する(ステップS17)。機器20のCSR生成部204は、CSR取得要求の応答として、CSR、MAC及びproduct_idを端末30に送信する。端末30の実行部301は、CSR、MAC及びproduct_idを、ステップS4の処理により送信された証明書の発行要求の応答として、インタフェース107に返す。
次に、端末30のインタフェース107が、証明書の発行要求をサーバ装置10に送信する(ステップS18)。証明書の発行要求は、CSR、MAC、及びproduct_idをパラメータとして含む。
次に、サーバ装置10の発行要求応答部103が、ステップS18の処理により送信された発行要求に含まれるMACを検証し、product_secretを持っている機器20による署名であることを確認したら(ステップS19)、成功応答を返す。応答内容は、第1実施形態のステップ8の発行要求の応答と同様である。
ステップS20の説明は、機器20からではなく、インタフェース107からの要求である点を除いて、第1実施形態のステップS9の説明と同様である。
次に、端末30のインタフェース107は、ステップS20の処理により送信された確認方式取得要求(チャレンジ取得)の応答として返されるチャレンジを選択して、機器20のドメインの確認要求をサーバ装置10に送信する(ステップS21)。サーバ装置10の確認要求応答部105は、確認方式取得要求に含まれる識別情報(authz_id)から、ステップS18の処理により送信された証明書の発行要求により端末30から受信したCSRを特定する。確認要求応答部105は、特定されたCSRに含まれる機器20のドメイン名(device_domain)、トークン及びnonceを、確認要求の応答として端末30に送信する。
次に、端末30のインタフェース107が、機器20のドメインの確認要求を実行部301に送信する(ステップS22)。ドメインの確認要求は、ステップS21の処理により送信された確認方式取得要求の応答に含まれるドメイン名、トークン及びnonceを含む。
次に、端末30の実行部301は、端末30のBLE機能を利用して、トークン及びnonceを含むチャレンジ設置要求を機器20に送信することにより、機器20にHTTPサーバの起動を要求する(ステップS23)。
次に、機器20のサーバ処理部207は、トークン、並びに、サーバ装置10により提供されたnonce及びproduct_idをあわせたデータのMAC(以降、「キー認可情報」と呼ぶ)を自身のHTTPサーバ経由でアクセス可能なディレクトリ(ドメイン確認用の機器URL)に保存し、必要であればHTTPサーバを起動ないし再起動して、端末30の実行部301に応答を返す(ステップS24)。機器URLは、例えばhttp(s)://digital−tv.local/.well−known/acme−challenge/{トークン}などである。
次に、端末30の実行部301が、ステップS23の処理により送信されたチャレンジ設置要求の応答を受信すると、機器URLにアクセスし、当該機器URLから、ステップS23の処理により機器20により保存されたトークン及びキー認可情報を取得する(ステップS25)。実行部301は、機器20から取得されたトークン及びキー認可情報をインタフェース107に返す。
次に、端末30のインタフェース107は、証明書の取得要求をサーバ装置10に送信する(ステップS26)。証明書の取得要求は、トークン及びキー認可情報を含む。
次に、サーバ装置10の発行部111が、ステップS26の処理により送信された取得要求に含まれるトークン及びキー認可情報を検証する(ステップS27)。
次に、サーバ装置10の発行部111は、ステップS27の検証処理の結果、product_secretで署名したデータであることが確認できれば、機器20の証明書を生成し、ステップS26の処理により送信された取得要求の応答として、当該証明書を端末30に送信する(ステップS28)。
次に、端末30のインタフェース107が、ステップS28の処理により生成された証明書を、機器20に渡すように実行部301に指示する(ステップS29)。
次に、端末30の実行部301が、ステップS28の処理により生成された証明書のインストール要求を機器20に送信する(ステップS30)。
次に、機器20の取得部210が、ステップS30の処理により送信されたインストール要求に含まれる証明書をインストールする(ステップS31)。この際、取得部210は、署名を検証するなどして、意図した認証局により証明書を署名されていることを確認してもよい。
次に、端末30の実行部301は、このインストール要求のシーケンス(ステップS29〜ステップS31)の後に、ステップS28の処理により生成された証明書を信頼できる証明書として、自身にもインストールしてもよい(ステップS32)。
以上説明した第3実施形態の証明書発行システム100によれば、機器20が第1ネットワーク501に接続する通信(第3実施形態では、インターネット通信)をしなくても、第1実施形態と同様の効果が得られる。
(第4実施形態)
次に第4実施形態について説明する。第4実施形態の説明では、第2及び第3実施形態と同様の説明については省略し、第2及び第3実施形態と異なる箇所について説明する。
第1〜第3実施形態では、端末30が、サーバ装置10により生成されたウェブページ(インタフェース107)を利用して、機器20のHTTPサーバにアクセスする場合について説明した。第4実施形態では、第3者サービスにより提供される第2インタフェース122(図6参照)が、機器20のHTTPサーバにアクセスする場合について説明する。第4実施形態の具体例は、例えば機器20がデジタルテレビであり、サーバ装置10により提供される認証局サービスの提供事業者がデジタルテレビメーカであり、デジタルテレビメーカとは異なる事業者(第3者)が、テレビ用クラウドサービスを提供する場合である。
[証明書発行システムの構成の例]
図6は第4実施形態の証明書発行システム100の構成の例を示す図である。第4実施形態の証明書発行システム100は、サーバ装置10、第2サーバ装置12、機器20、端末30及び中継装置40を備える。第4実施形態では、第2実施形態の構成に加えて、第2サーバ装置12が追加されている。また、サーバ装置10には、第2サーバ装置12の登録及び認証を行う機能(クライアント登録部112及びクライアント認証部113)が追加されている。
第2サーバ装置12は、機器20にサーバ証明書を発行するサーバ装置10とは異なる事業者が運営するウェブサービスを提供する。第2サーバ装置12は、第2インタフェース122を端末30に提供する第2インタフェース提供部121を備える。
第2インタフェース122は、第2サーバ装置12が、端末30を介して、機器20のHTTPサーバにアクセスするためのインタフェースである。第4実施形態では、第2インタフェース122はウェブページである。
サーバ装置10のクライアント登録部112は、クライアント(第2サーバ装置12)からの登録要求を受信すると、クライアントクレデンシャル(クライアントID及びクライアントシークレット)を生成し、当該クライアントクレデンシャルを応答する。なお、上述の機器登録部101のように、クライアントから公開鍵を受信し、当該公開鍵をクライアントIDとみなす実現形態も考えられる。また、第2サーバ装置12の運用者が、サーバ装置10が提供するウェブページを介して、ユーザ登録のうえクレデンシャルを発行するような実現形態も考えられる。
サーバ装置10のクライアント認証部113は、クライアントクレデンシャルを用いてクライアント(第2サーバ装置12)からの通信を認証する。
[証明書発行システムの動作例]
次に、第4実施形態の証明書発行システム100の動作例について説明する。
図7A及び7Bは、第4実施形態の証明書発行システム100の動作例を示すシーケンス図である。
事前条件は、第2及び第3実施形態の事前条件1及び2のほかに、以下の事前条件3及び4を更に追加する。
[事前条件3]ユーザは、第2サーバ装置12にもユーザ登録を行っている。
[事前条件4]第2サーバ装置12(を運用する組織)は、サーバ装置10にクライアント登録を行い、上述のクライアントクレデンシャルを予め取得している。
はじめに、端末30のユーザが、第2サーバ装置12にアクセスし、第2インタフェース122を実行部301にロードする(ステップS1)。
次に、端末30のユーザは、第2サーバ装置12に第2インタフェース122を介してログインする(ステップS2)。
次に、端末30の第2インタフェース122は、第2実施形態のステップS3〜ステップS23と同様の処理を行い、検証URL(verification_uri)を得る(図7A、ステップS3)。または、端末30の第2インタフェース122は、第3実施形態のステップS4〜ステップS17と同様の処理を行い、product_id、CSR及びMACを得る(図7B、ステップS3)。いずれの場合も、インタフェース部122は、実行部301に、ユーザ情報(user_info)、及び、サーバ装置10のサーバ証明書(device_ca_info)だけでなく、第2サーバ装置12の情報(ドメイン名(オリジン)など)(以降、「web_app_info」と呼ぶ)を渡してもよい。
次に、端末30の第2インタフェース122は、第2実施形態にならう場合、verification_uriに、証明書発行後に戻る画面のURI情報(リダイレクトURI)を渡して、画面をリダイレクトする(図7A、ステップS4)。また、第3実施形態にならう場合は、第2サーバ装置12は、第2インタフェース122からproduct_id,CSR及びMACを取得すると、product_id,CSR及びMACをサーバ装置10に渡し、verification_uriを応答として得て、その後、リダイレクトURIを渡して、画面をリダイレクトする(図7B、ステップS4)。
次に、サーバ装置10の発行部111は、第2実施形態にならう場合、第2実施形態のステップS24〜ステップS32と同様の処理を行うことにより、証明書を発行する(図7A、ステップS5)。また、第3実施形態にならう場合は、サーバ装置10の発行部111は、第3実施形態のステップS18〜ステップS32と同様の処理を行うことにより、証明書を発行する(図7B、ステップS5)。このとき、機器20は、web_app_infoを使って、自身のドメイン名を生成したり、HTTPサーバへのアクセスを第2インタフェース122から受け付けるように設定(CORS(Cross Origin Resource Sharing)設定)したりしてもよい。
次に、サーバ装置10及びインタフェース107は、証明書発行後、上述のリダイレクトURLに画面を遷移する(ステップS6)。
以上説明した第4実施形態の証明書発行システム100によれば、第2サーバ装置12の第2インタフェース122を起点にした機器20への証明書発行が可能になる。
最後に、第1乃至第4実施形態のサーバ装置10、機器20及び端末30の主要部のハードウェア構成の例について説明する。なお第4実施形態の第2サーバ装置12の主要部のハードウェア構成は、サーバ装置10の主要部のハードウェア構成と同様である。
[ハードウェア構成の例]
図8は第1乃至第4実施形態のサーバ装置10、機器20及び端末30の主要部のハードウェア構成の例を示す図である。第1乃至第4実施形態のサーバ装置10、機器20及び端末30は、制御装置401、主記憶装置402、補助記憶装置403、表示装置404、入力装置405及び通信装置406を備える。制御装置401、主記憶装置402、補助記憶装置403、表示装置404、入力装置405及び通信装置406は、バス410を介して接続されている。
制御装置401は補助記憶装置403から主記憶装置402に読み出されたプログラムを実行する。制御装置401は、例えばCPU(Central Processing Unit)等の汎用のプロセッサである。主記憶装置402はROM(Read Only Memory)、及び、RAM(Random Access Memory)等のメモリである。補助記憶装置403はメモリカード、及び、HDD(Hard Disk Drive)等である。
表示装置404は情報を表示する。表示装置404は、例えば液晶ディスプレイである。なお、第2実施形態の機器20(例えばエアコンなど)は、表示装置404を備えていなくてもよい。入力装置405は、情報の入力を受け付ける。入力装置405は、例えばハードウェアキー、キーボード及びマウス等である。なお表示装置404及び入力装置405は、表示機能と入力機能とを兼ねる液晶タッチパネル等でもよい。通信装置406は他の装置と通信する。
第1乃至第4実施形態のサーバ装置10、機器20及び端末30で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、メモリカード、CD−R、及び、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータ・プログラム・プロダクトとして提供される。
また第1乃至第4実施形態のサーバ装置10、機器20及び端末30で実行されるプログラムを、インターネット等の第1ネットワーク501に接続されたコンピュータ上に格納し、第1ネットワーク501経由でダウンロードさせることにより提供するように構成してもよい。また第1乃至第4実施形態のサーバ装置10、機器20及び端末30が実行するプログラムを、ダウンロードさせずにインターネット等の第1ネットワーク501経由で提供するように構成してもよい。
また第1乃至第4実施形態のサーバ装置10、機器20及び端末30で実行されるプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
第1乃至第4実施形態のサーバ装置10、機器20及び端末30で実行されるプログラムは、実施形態のサーバ装置10、機器20及び端末30の機能構成のうち、プログラムにより実現可能な機能を含むモジュール構成となっている。
プログラムにより実現される機能は、制御装置401が補助記憶装置403等の記憶媒体からプログラムを読み出して実行することにより主記憶装置402にロードされる。すなわちプログラムにより実現される機能は、主記憶装置402上に生成される。
なお第1乃至第4実施形態のサーバ装置10、機器20及び端末30の機能の一部を、IC(Integrated Circuit)等のハードウェアにより実現してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。