(57)【要約】【課題】サービスを提供しているサーバを改変せずに導入可能な、安全性の高いユーザ認証の技術を提供する。【解決手段】情報処理装置２０００は、サービス識別子取得部２０２０、変換部２０４０、及び送信部２０６０を有する。サービス識別子取得部２０２０はサービス識別子を取得する。サービス識別子は、それぞれ異なるサービスの内の１つを特定する任意の識別子である。変換部２０４０は、サービス識別子取得部２０２０によって取得されたサービス識別子に対応づけられている変換規則を取得する。この変換規則は、対象サービスを提供する装置を介さずに取得される。ここで、変換規則はサービスごとに定められている。さらに変換部２０４０は、取得した変換規則に基づいて、第１文字列を第２文字列に変換する。送信部２０６０は、変換部２０４０によって生成された第２文字列を、対象サービスを提供する装置へ送信する。【選択図】図１
2017182396.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ異なるサービスの内の１つが特定されるサービス識別子を取得するサービス識別子取得手段と、
前記サービス識別子によって特定されるサービスに対応づけられている変換規則を、そのサービスを提供する装置を介さずに取得し、前記取得された変換規則に基づいて、第１の文字列を第２の文字列に変換する変換手段と、
前記取得されたサービス識別子によって特定されるサービスを提供する装置へ、前記第２の文字列を送信する送信手段と、を有し、
前記変換規則はサービスごとに定められている、情報処理装置。
【請求項２】
前記サービス識別子によって特定されるサービスに対応づけられている変換規則は、そのサービスを提供する装置を介さずにアクセス可能な記憶装置に記憶されている、請求項１に記載の情報処理装置。
【請求項３】
前記変換規則は、第１の文字列を第２の文字列に変換する所定のアルゴリズムで利用されるパラメタである、請求項１又は２に記載の情報処理装置。
【請求項４】
前記変換規則は、所定のキーボードレイアウト上における、変換前後の文字に対応するキーの位置関係を示しており、
前記変換手段は、前記第１の文字列を表す各文字を、前記取得された変換規則に基づいて別の文字に置換することで、前記第１の文字列を前記第２の文字列へ変換する、請求項１乃至３いずれか一項に記載の情報処理装置。
【請求項５】
前記サービス識別子取得手段は、ユーザによって入力された文字列から前記サービス識別子を取得し、
前記変換手段は、前記サービス識別子に続けて入力される文字列から、前記第１の文字列を取得する、請求項１乃至４いずれか一項に記載の情報処理装置。
【請求項６】
コンピュータによって実行される制御方法であって、
それぞれ異なるサービスの内の１つが特定されるサービス識別子を取得するサービス識別子取得ステップと、
前記サービス識別子によって特定されるサービスに対応づけられている変換規則を、そのサービスを提供する装置を介さずに取得し、前記取得された変換規則に基づいて、第１の文字列を第２の文字列に変換する変換ステップと、
前記取得されたサービス識別子によって特定されるサービスを提供する装置へ、前記第２の文字列を送信する送信ステップと、を有し、
前記変換規則はサービスごとに定められている、制御方法。
【請求項７】
請求項６に記載の制御方法が有する各ステップをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は文字列処理に関する。
【背景技術】
【０００２】
Web サービスなどのサービスにおいてユーザ認証を行う手段の１つとして、パスワードを用いた認証がある。パスワードを用いた認証を行う場合、ユーザは事前に、サービスごとにパスワードを登録する。そしてサービスを利用する際、ユーザは、そのサービスに登録しておいたパスワードを入力して、ユーザ認証の要求を行う。
【０００３】
複数のサービスで同一のパスワードを用いると、パスワードが漏洩する蓋然性、及びパスワードが漏洩した際の被害が大きくなる恐れがある。そのため、サービスごとに異なるパスワードを用いることが好ましい。しかし、複数のパスワードを覚えることはユーザにとって労力が大きいため、複数のサービスで同一のパスワードを利用するユーザが多いと言われている。
【０００４】
パスワードの管理に関する技術を開示している先行技術文献として、特許文献１がある。特許文献１は、サービスを提供するサーバとクライアント端末で協調することにより、同一のパスワードを複数のサービスで利用しつつ、セキュリティを確保する技術を開示している。まずユーザは、サーバに対し、ユーザＩＤを指定した認証要求を行う。この認証要求を受信したサーバは、サーバ固有のシードを含む情報をクライアント端末へ返信する。クライアント端末は、ユーザによって入力されたパスワードに対し、サーバ固有のシードを用いたハッシュ処理などを施す。そしてクライアント端末は、ハッシュ化されたパスワードをサーバへ送信する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−２０３１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１では、サービスを提供するサーバが、サーバ固有のシードを管理している。そして、ユーザから認証要求を受けた際に、サービスを提供するサーバが、サーバ固有のシードをクライアント端末へ送信する。そのため、特許文献１の技術を既存のサービスに導入するためには、サービスを提供しているサーバを改変する必要がある。
【０００７】
本発明は、上記の課題に鑑みてなされたものであり、サービスを提供しているサーバを改変せずに導入可能な、安全性の高いユーザ認証の技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、（１）それぞれ異なるサービスの内の１つが特定されるサービス識別子を取得するサービス識別子取得手段と、（２）前記サービス識別子によって特定されるサービスに対応づけられている変換規則を、そのサービスを提供する装置を介さずに取得し、前記取得された変換規則に基づいて、第１の文字列を第２の文字列に変換する変換手段と、（３）前記取得されたサービス識別子によって特定されるサービスを提供する装置へ、前記第２の文字列を送信する送信手段と、を有する。前記変換規則はサービスごとに定められている。
【０００９】
本発明の制御方法は、コンピュータによって実行される。当該制御方法は、（１）それぞれ異なるサービスの内の１つが特定されるサービス識別子を取得するサービス識別子取得ステップと、（２）前記サービス識別子によって特定されるサービスに対応づけられている変換規則を、そのサービスを提供する装置を介さずに取得し、前記取得された変換規則に基づいて、第１の文字列を第２の文字列に変換する変換ステップと、（３）前記取得されたサービス識別子によって特定されるサービスを提供する装置へ、前記第２の文字列を送信する送信ステップと、を有する。前記変換規則はサービスごとに定められている。
【００１０】
本発明のプログラムは、本発明の制御方法が有する各ステップをコンピュータに実行させる。
【発明の効果】
【００１１】
本発明によれば、サービスを提供しているサーバを改変せずに導入可能な、安全性の高いユーザ認証の技術が提供される。
【図面の簡単な説明】
【００１２】
【図１】実施形態１に係る情報処理装置を例示するブロック図である。
【図２】情報処理装置を実現するための計算機を例示する図である。
【図３】実施形態１の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図４】ネットワークを介して情報処理装置がサービスの提供を受ける様子を例示する第１の図である。
【図５】ネットワークを介して情報処理装置がサービスの提供を受ける様子を例示する第２の図である。
【図６】文字を置換する規則を例示する第１の図である。
【図７】文字を置換する規則を例示する第２の図である。
【図８】文字列の付加による変換を例示する図である。
【図９】変換規則を記憶する記憶装置と他の装置との関係を例示する図である。
【図１０】パスワードの入力エリアを例示する図である。
【図１１】実施例の情報処理装置の利用環境を例示する図である。
【図１２】事前登録の画面を例示している。
【図１３】ユーザアカウントの登録画面である。
【図１４】実施例の情報処理装置における処理の流れを概念的に例示する図である。
【図１５】変換に用いるキーボードレイアウトを例示する図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１４】
［実施形態１］
図１は、実施形態１に係る情報処理装置２０００を例示するブロック図である。図１において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００１５】
情報処理装置２０００は、サービス識別子取得部２０２０、変換部２０４０、及び送信部２０６０を有する。サービス識別子取得部２０２０はサービス識別子を取得する。サービス識別子は、それぞれ異なるサービスの内の１つを特定する任意の識別子である。例えばサービス識別子は、サービスの名称やサービスのドメイン名などである。ここで、サービス識別子取得部２０２０によって取得されたサービス識別子によって特定されるサービスを、対象サービスと表記する。
【００１６】
変換部２０４０は、サービス識別子取得部２０２０によって取得されたサービス識別子に対応づけられている変換規則を取得する。この変換規則は、対象サービスを提供する装置を介さずに取得される。ここで、変換規則はサービスごとに定められている。以下、サービスを提供する装置を、サービス提供装置とも表記する。サービス提供装置は、例えばサーバマシンである。
【００１７】
さらに変換部２０４０は、取得した変換規則に基づいて、第１文字列を第２文字列に変換する。
【００１８】
送信部２０６０は、変換部２０４０によって生成された第２文字列を、対象サービスのサービス提供装置へ送信する。
【００１９】
なお第１文字列は、対象サービスのユーザ認証におけるパスワードとして用いられることを意図して、ユーザによって入力されるものである。そのため第２文字列は、対象サービスのユーザ認証におけるパスワードとして、対象サービスのサービス提供装置へ送信される。
【００２０】
＜作用・効果＞
本実施形態の情報処理装置２０００によれば、対象サービスのユーザ認証におけるパスワードとして入力された第１文字列が第２文字列に変換され、その第２文字列が対象サービスのサービス提供装置へ送信される。こうすることで、ユーザが入力する第１文字列の代わりに、第２文字列が、対象サービスのユーザ認証におけるパスワードとして利用される。
【００２１】
さらに第１文字列を第２文字列へ変換する規則は、サービスごとに異なる。よって、たとえユーザが複数のサービスそれぞれに利用するパスワードとして同一の第１文字列を入力したとしても、その第１文字列は、変換部２０４０によって、サービスごとに異なる第２文字列に変換される。その結果、複数のサービスで同一のパスワードが利用されることを防ぐことができ、ひいてはユーザ認証の安全性を高めることができる。
【００２２】
また、情報処理装置２０００が利用する変換規則は、対象サービスのサービス提供装置を介さずに取得される。仮に対象サービスのサービス提供装置を介さなければ変換規則を取得できないと、情報処理装置２０００を導入する際に、対象サービスのサービス提供装置を改変する必要がある。具体的には、「情報処理装置２０００から変換規則の送信を要求するリクエストを受け付け、そのリクエストに対する返答として、変換規則を送信する」といった機能を、対象サービスのサービス提供装置へ導入する必要がある。
【００２３】
情報処理装置２０００によれば、対象サービスのサービス提供装置を介さずに変換規則が取得されるため、情報処理装置２０００を導入する際に対象サービスのサービス提供装置を改変する必要がない。よって、本実施形態の情報処理装置２０００によれば、対象サービスのサービス提供装置を改変することなく、ユーザ認証の安全性を高めることができる。
【００２４】
ここで、複数のサービスで同一のパスワードを用いることに起因する問題（パスワードが漏洩する蓋然性や、パスワードが漏洩した際の被害の増加）を解決する別の手段として、（１）シングルサインオンを利用する方法、及び（２）パスワードの自動入力機能を利用する方法なども考えられる。シングルサインオンとは、或るひとつの管理組織で管理されているユーザＩＤとパスワードの組を、複数のサービスのユーザ認証で共通して利用できるようにする技術である。しかし、シングルサインオンを利用するためには、シングルサインオンを利用したユーザ認証にサービスを対応させる必要がある。つまり、シングルサインオンを利用するためには、サービス提供装置の改変が必要となる。これに対し、本実施形態の情報処理装置２０００を導入する際には、サービス提供装置の改変が不要である。
【００２５】
パスワードの自動入力機能とは、ユーザが或るサービスを利用する際に入力したパスワードを記憶しておき、その後にユーザが同一のサービスを利用しようとした場合に、そのパスワードを自動的に入力する機能である。例えばこの機能は、Web ブラウザによって提供される。しかし、この機能を利用するためには、ユーザによって入力されたパスワードが記憶装置に記憶されている必要がある。そのため、ユーザが利用する計算機がマルウェアなどによって攻撃を受けた場合に、記憶装置に記憶されているパスワードが漏洩してしまう危険性がある。
【００２６】
これに対し、本実施形態の情報処理装置２０００の場合、パスワードとして利用される第２文字列、及び第２文字列を生成する元となる第１文字列のいずれについても、記憶装置に記憶されている必要がない。そのため、パスワードの自動入力機能を利用する場合とは異なり、記憶装置に記憶されているパスワードが漏洩するという危険性がない。
【００２７】
以下、本実施形態についてさらに詳細に説明する。
【００２８】
＜情報処理装置２０００のハードウエア構成例＞
情報処理装置２０００の各機能構成部は、各機能構成部を実現するハードウエア（例：ハードワイヤードされた電子回路など）で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ（例：電子回路とそれを制御するプログラムの組み合わせなど）で実現されてもよい。以下、情報処理装置２０００の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
【００２９】
図２は、情報処理装置２０００を実現するための計算機１０００を例示する図である。計算機１０００は任意の計算機である。例えば計算機１０００は、Personal Computer（PC）、サーバマシン、タブレット端末、又はスマートフォンなどである。計算機１０００は、情報処理装置２０００を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
【００３０】
計算機１０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージメディア１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０を有する。バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージメディア１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ１０４０などを互いに接続する方法は、バス接続に限定されない。プロセッサ１０４０は、CPU (Central Processing Unit) や GPU (Graphics Processing Unit) などの演算処理装置である。メモリ１０６０は、RAM (Random Access Memory) や ROM (Read Only Memory) などのメモリである。ストレージメディア１０８０は、ハードディスク、SSD (Solid State Drive)、又はメモリカードなどの記憶装置である。また、ストレージメディア１０８０は、RAM や ROM などのメモリであってもよい。
【００３１】
入出力インタフェース１１００は、計算機１０００と入出力デバイスとを接続するためのインタフェースである。図２では、計算機１０００に対して入力デバイス３０が接続されている。入力デバイス３０は、例えばキーボードやタッチパネルである。
【００３２】
ネットワークインタフェース１１２０は、計算機１０００を外部の装置と通信可能に接続するためのインタフェースである。計算機１０００は、ネットワークインタフェース１１２０を介して、各サービスのサービス提供装置と接続される。なお、ネットワークインタフェース１１２０は、有線回線と接続するためのネットワークインタフェースでもよいし、無線回線と接続するためのネットワークインタフェースでもよい。
【００３３】
ストレージメディア１０８０は、情報処理装置２０００の各機能構成部を実現するプログラムモジュールを記憶している。プロセッサ１０４０は、これら各プログラムモジュールをメモリ１０６０に読み出して実行することで、そのプログラムモジュールに対応する各機能を実現する。
【００３４】
計算機１０００のハードウエア構成は図２に示した構成に限定されない。例えば、各プログラムモジュールはメモリ１０６０に格納されてもよい。この場合、計算機１０００は、ストレージメディア１０８０を備えていなくてもよい。
【００３５】
＜処理の流れ＞
図３は、実施形態１の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。サービス識別子取得部２０２０はサービス識別子を取得する（Ｓ１０２）。変換部２０４０は、対象サービスのサービス提供装置を介さずに、対象サービスに対応する変換規則を取得する。変換部２０４０は第１文字列を取得する（Ｓ１０６）。変換部２０４０は、取得した変換規則に基づいて第１文字列を第２文字列に変換する（Ｓ１０８）。送信部２０６０は、対象サービスのサービス提供装置へ、第２文字列を送信する（Ｓ１１０）。
【００３６】
＜情報処理装置２０００の利用環境＞
前提となる情報処理装置２０００の利用環境について説明する。情報処理装置２０００は、複数のサービスの提供を受けることができる。各サービスは、ネットワークを介して提供することができる任意のサービスである。このネットワークは、Wide Area Network（WAN）であってもよいし、Local Area Network（LAN）であってもよい。
【００３７】
ただし、各サービスは他のサービスとは独立してユーザ認証を行う。つまりユーザは、利用するサービスごとに、ユーザＩＤやパスワードを入力してユーザ認証を受ける必要がある。
【００３８】
図４は、ネットワークを介して情報処理装置２０００がサービスの提供を受ける様子を例示する第１の図である。サービス提供装置１０−１、サービス提供装置１０−２、及び情報処理装置２０００は、同じネットワーク２０に所属している。そのため、情報処理装置２０００は、サービス提供装置１０−１とサービス提供装置１０−２の双方からサービスの提供を受けることができる。
【００３９】
ユーザは、各サービスを利用する際に、それぞれのサービスでユーザ認証を受ける。具体的には、サービス提供装置１０−１によって提供されるサービスを利用する際には、ユーザは、サービス提供装置１０−１に対してユーザＩＤやパスワードを送信することで、ユーザ認証を受ける。一方、サービス提供装置１０−２によって提供されるサービスを利用する際には、ユーザは、サービス提供装置１０−２に対してユーザＩＤやパスワードを送信することで、ユーザ認証を受ける。
【００４０】
なお、サービスを提供する装置とユーザ認証を行う装置とは、別の装置でもよい。この場合、情報処理装置２０００は、ユーザ認証を行う装置と通信を行ってユーザ認証を受けた後、サービス提供装置と通信を行ってサービスの提供を受ける。
【００４１】
ここで情報処理装置２０００は、複数のサービスを同時に利用できる必要はない。例えば、或る時点において情報処理装置２０００が利用できるサービスは１つであってもよい。
【００４２】
例えば複数のサービスがそれぞれ異なる LAN 内で提供されているとする。この場合、或る時点における情報処理装置２０００は、その時点において情報処理装置２０００が所属している LAN において提供されているサービスを受けることができる。
【００４３】
図５は、ネットワークを介して情報処理装置２０００がサービスの提供を受ける様子を例示する第２の図である。図５において、ネットワーク２０−１とネットワーク２０−２とはそれぞれ異なる LAN である。サービス提供装置１０−１は、ネットワーク２０−１に所属しており、サービス提供装置１０−２はネットワーク２０−２に所属している。この場合、情報処理装置２０００は、ネットワーク２０−１に所属しているときには、サービス提供装置１０−１によって提供されるサービスを受けることができる。一方、情報処理装置２０００は、ネットワーク２０−２に所属しているときには、サービス提供装置１０−２によって提供されるサービスを受けることができる。
【００４４】
＜サービス識別子の取得：Ｓ１０２＞
サービス識別子取得部２０２０はサービス識別子を取得する（Ｓ１０２）。ここで、サービス識別子取得部２０２０が取得するサービス識別子は、情報処理装置２０００が利用しようとしているサービス（情報処理装置２０００が接続しようとしているサービス）を特定するサービス識別子である。例えば情報処理装置２０００がサービス提供装置１０−１によって提供されているサービスを利用しようとしている場合、サービス識別子取得部２０２０は、サービス提供装置１０−１によって提供されているサービスのサービス識別子を取得する。
【００４５】
サービス識別子取得部２０２０がサービス識別子を取得する方法は任意である。以下、サービス識別子を取得する代表的な方法を例示する。
【００４６】
＜＜方法１＞＞
サービス識別子取得部２０２０は、サービスを利用するために用いられるアプリケーションに対して入力された文字列を、サービス識別子として取得する。より具体的には、サービス識別子取得部２０２０は、例えば Web ブラウザに対して入力された URL を取得し、その URL に含まれるドメイン名をサービス識別子として取得する。ここで、Web ブラウザに対して入力される URL からドメイン名を取得する方法には、既知の技術を利用できる。例えばサービス識別子取得部２０２０は、「Web ブラウザに対して入力される URL を取得し、その URL からドメイン名を抽出する」という機能を持つ、Web ブラウザのプラグインとして実装することができる。
【００４７】
＜＜方法２＞＞
サービス識別子取得部２０２０は、ユーザによる文字入力を監視し、所定のフォーマットで文字列が入力された場合に、その文字列からサービス識別子を取得する。例えば、情報処理装置２０００に対し、「::サービス名:第１文字列:」というフォーマットで、サービス識別子と第１文字列の組み合わせが入力されるものとする。この場合、サービス識別子取得部２０２０は、２回続けて「:」が入力された直後から、次に「:」が入力される直前までの文字列を、サービス識別子として取得する。なおこの場合、サービス識別子には「:」が含まれないものとする。
【００４８】
例えばサービス識別子取得部２０２０は、キー入力をフックするデバイスドライバとして実装される。サービス識別子取得部２０２０は、キー入力をフックすることで得た文字列が所定のフォーマットに合致するか否かを判定する。その文字列が所定のフォーマットに合致する場合、サービス識別子取得部２０２０は、そのフォーマットに基づいて、その文字列からサービス識別子を抽出する。なお、キー入力をフックするデバイスドライバの実装方法や、文字列が所定のフォーマットに合致するか否かの判定方法には、既知の技術を利用することができる。
【００４９】
ここで、ユーザによる文字入力の監視は、常に行われてもよいし、一定の条件が満たされている場合のみ行われてもよい。一定の条件は、例えば、「サービスの利用に用いるアプリケーション（例えば Web ブラウザ）が、文字入力の対象となっている」という条件である。この条件は、例えばそのアプリケーションのウインドウにフォーカスがある時に満たされる。
【００５０】
＜＜方法３＞＞
サービス識別子取得部２０２０は、サービスを利用するために用いられるアプリケーションからサービス識別子を取得する。このアプリケーションは、例えば Web ブラウザである。例えば情報処理装置２０００のユーザが、或る Web ページ上のリンクを選択することで、そのリンク先で提供されているサービスを利用するとする。この場合、例えばサービス識別子取得部２０２０は、このリンクの URL に含まれるドメイン名を、サービス識別子として取得する。
【００５１】
リンクの URL からサービス識別子を取得する場合、サービス識別子取得部２０２０は、任意のリンクの URL からサービス識別子を取得してもよいし、一定の条件を満たす URL からのみサービス識別子を取得してもよい。後者の場合において、一定の条件は、例えば「その URL で取得される Web ページがログインページである」という条件である。
【００５２】
一般に、ログインページにはパスワードの入力エリアが含まれる。そこでサービス識別子取得部２０２０は、選択されたリンクの URL で取得される Web ページにパスワードの入力エリアが含まれていれば、その Web ページがログインページであると判定し、その URL のドメイン名をサービス識別子として取得する。
【００５３】
なお、Web ページに含まれる入力エリアがパスワードの入力エリアであるか否かは、その入力エリアの名称から推測することができる。例えばサービス識別子取得部２０２０は、Web ページのソースファイル（HTML ファイルなど）を解析し、その中に「passwd」や「password」などの所定の名称の入力エリアが含まれる場合に、その Web ページがログインページであると判定する。
【００５４】
＜変換規則について＞
変換部２０４０が取得する変換規則は、或る文字列を別の文字列へ変換できる任意の規則である。以下、代表的な変換規則を例示する。
【００５５】
＜＜文字の置換＞＞
変換規則の一例は、第１文字列に含まれる各文字を別の文字に置換する規則である。文字を置換する規則は、例えば元の文字を所定個（例えば１つ）前又は後ろの順位の文字に置換する規則である。ここでいう順位とは、例えば数字、アルファベット又はカナ文字をそれぞれ昇順に並べた際の順位である。
【００５６】
図６は、文字を置換する規則を例示する第１の図である。図６（ａ）において、変換規則は「１つ前の順位の文字に置換する」である。変換部２０４０はこの規則に従い、「２」を「１」に変換し、「ｄ」を「ｃ」に変換し、「お」を「え」に変換している。
【００５７】
図６（ｂ）において、変換規則は「３つ後ろの順位の文字に置換する」である。変換部２０４０はこの規則に従い、「２」を「５」に変換し、「ｄ」を「ｇ」に変換し、「お」を「く」に変換している。
【００５８】
なお、文字の置換の規則を表す方法は、上述した順位によって表す方法に限定されない。例えば文字の置換を表す規則は、変換前後の文字のキーボードレイアウト上における位置関係で表されてもよい。
【００５９】
図７は、文字を置換する規則を例示する第２の図である。図７において、変換規則は「一つ右のキーの文字に置換する」である。また、前提とするキーボードレイアウトは、レイアウト４０である。この規則は、レイアウト４０において、変換後の文字に対応するキーは、変換前の文字に対応するキーから見て一つ右に位置することを表す。
【００６０】
図７において、変換前の文字は「Ｇ」である。ここで、レイアウト４０において、「Ｇ」のキーの一つ右のキーは「Ｈ」である。そこで変換部２０４０は、「Ｇ」を「Ｈ」に変換する。なお、置換に利用するレイアウト４０は予め定めておく。
【００６１】
＜＜文字列の付加＞＞
変換規則の別の例は、第１文字列に対して別の文字列を付加する規則である。図８は、文字列の付加による変換を例示する図である。図８において、第１文字列は「ａｂｃｄ」であり、変換規則が「１２３４を付加する」である。そのため、変換部２０４０は、第１文字列［ａｂｃｄ」を、第２文字列「ａｂｃｄ１２３４」に変換する。
【００６２】
＜変換規則の取得：Ｓ１０４＞
変換部２０４０は、対象サービスのサービス提供装置を介さずに、対象サービスに対応する変換規則を取得する（Ｓ１０４）。このように、対象サービスのサービス提供装置を介さずに変換規則を取得することにより、対象サービスのサービス提供装置は、変換規則を取り扱う必要がない。そのため、情報処理装置２０００を導入するに当たり、対象サービスのサービス提供装置に手を加える必要がない。
【００６３】
変換規則は、サービス識別子と対応づけて記憶装置に記憶されている。この記憶装置は、対象サービスのサービス提供装置を介さずにアクセス可能なものである。図９は、変換規則を記憶する記憶装置と他の装置との関係を例示する図である。図９（ａ）において、変換規則を記憶する記憶装置５０は、情報処理装置２０００の内部に設けられている。例えば記憶装置５０は、情報処理装置２０００を実現する計算機１０００の内部にあるストレージメディア１０８０である。記憶装置５０が情報処理装置２０００の内部にあるため、変換部２０４０は、サービス提供装置１０を経由せずに記憶装置５０にアクセスすることができる。
【００６４】
一方図９（ｂ）において、記憶装置５０は、サービス提供装置１０を介さずに情報処理装置２０００からアクセス可能なデータベースサーバ６０に接続されている。変換部２０４０は、対象サービスのサービス識別子を検索キーとしてデータベースサーバ６０へ検索処理を依頼することで、記憶装置５０に記憶されている変換規則を取得することができる。
【００６５】
なお前述したように、変換規則はサービスごとに異なる。例えば各サービスに対応づけられている変換規則は、アルゴリズムが共通しており、そのアルゴリズムに与えるパラメタが異なる。例えば各サービスについて、「各文字を別のキーの文字に置換する」という共通のアルゴリズムが変換規則として用いられるとする。この場合、変換前後の文字のキーボードレイアウト上における位置関係を表すパラメタが、サービスごとに異なっている。例えばサービスＡに対応する変換規則を「一つ右のキーの文字に置換する」とし、サービスＢに対応する変換規則を「１つ左のキーの文字に置換する」とする。
【００６６】
この場合、サービス識別子に対応づけて記憶されているのは、「一つ右」や「一つ左」のように、所定のアルゴリズムに与えられるパラメタのみであってもよい。なお、所定のアルゴリズムは、予め変換部２０４０に設定されていてもよいし、変換部２０４０からアクセス可能な記憶装置に記憶されていてもよい。
【００６７】
＜第１文字列の取得：Ｓ１０６＞
変換部２０４０は第１文字列を取得する（Ｓ１０６）。第１文字列の入力は、例えば上記計算機に接続されている入力デバイス３０を用いて行われる。前述したように、入力デバイス３０は、例えばキーボードやタッチパネルである。
【００６８】
ここで第１文字列は、対象サービスのユーザ認証におけるパスワードとして用いられることを意図して、ユーザによって入力されるものである。情報処理装置２０００は、このような第１文字列を第２文字列に変換し、対象サービスのユーザ認証におけるパスワードとして、第２文字列を送信する。そのため、実際に対象サービスのユーザ認証で用いられるパスワードは、ユーザによって入力された第１文字列そのものではなく、情報処理装置２０００によって第１文字列から生成された第２文字列となる。
【００６９】
そこで変換部２０４０は、対象サービスのユーザ認証におけるパスワードとして用いられることが意図されている文字列を、第１文字列として取得する。ここで、ユーザによって入力される様々な文字列の中から、第１文字列（対象サービスのユーザ認証におけるパスワードとして用いられることが意図されている文字列）を取得する方法は様々である。以下、代表的な方法を例示する。
【００７０】
＜＜入力された場所に基づく特定＞＞
変換部２０４０は、特定の入力エリアに入力された文字列を、第１文字列として取得する。特定の入力エリアは、対象サービスのユーザ認証におけるパスワードが入力されると推測される入力エリアである。より具体的には、例えば特定の入力エリアは、対象サービスのログインページに含まれるパスワードの入力エリアである。
【００７１】
図１０は、パスワードの入力エリアを例示する図である。図１０には、対象サービスのログインページが表示されている Web ブラウザが図示されている。例えば変換部２０４０は、「passwd」や「password」などの所定の名称を持つ入力エリアを、対象サービスのユーザ認証におけるパスワードの入力が予定されている入力エリアとして扱う。そこで変換部２０４０は、対象サービスのログインページにおいてこのような所定の名称を持つ入力エリアに入力された文字列を、第１文字列として取得する。
【００７２】
＜＜文字列のフォーマットに基づく特定＞＞
変換部２０４０は、所定のフォーマットに合致する文字列が入力された場合に、その文字列の中から第１文字列を取得する。例えば所定のフォーマットは、前述した「::サービス名:第１文字列:」というフォーマットである。この場合、第１文字列は、（１）２回続けて「:」が入力され、（２）続いて何らかの文字列が入力され、（３）さらに「:」が入力されるという一連の入力が行われた直後から始まる文字列である。そして第１文字列の末尾は、次に入力される「:」の直前までの文字である。なおこの場合、第１文字列には「:」が含まれないものとする。
【００７３】
なおこの場合、変換部２０４０は、サービス識別子取得部２０２０と共に、キー入力をフックするデバイスドライバとして実装される。
【００７４】
＜第２文字列への変換：Ｓ１０８＞
変換部２０４０は、取得した変換規則に基づいて第１文字列を第２文字列に変換する（Ｓ１０８）。ここで、変換規則に従って第１文字列を第２文字列に変換する方法は、変換規則についての説明で述べた通りである。
【００７５】
なお第１文字列を一部分ずつ第２文字列に変換する場合、変換部２０４０は、第１文字列を構成する文字を全て取得してから第２文字列への変換を行ってもよいし、変換に必要な文字を取得するごとに第２文字列への変換を行ってもよい。
【００７６】
例えば後者の場合において、第１文字列の各文字を変換規則に従って置換するとする。この場合、変換部２０４０は、第１文字列を構成する文字を１文字ずつ取得し、各文字を取得したタイミングでその文字の置換を行う。より具体的には、「ａｓｄｆ」という第１文字列を「１つ後ろの順位の文字に置換する」という変換規則で置換する場合、変換部２０４０は、「ａ」を取得したタイミングでそれを「ｂ」に置換し、「ｓ」を取得したタイミングでそれを「ｔ」に置換し、「ｄ」を取得したタイミングでそれを「ｅ］に置換し、「ｆ」を取得したタイミングでそれを「ｇ」に置換する。その結果、「ｂｔｅｇ」という第２文字列が生成される。
【００７７】
＜第２文字列の送信：Ｓ１１０＞
送信部２０６０は、第２文字列を、対象サービスのサービス提供装置へ送信する（Ｓ１１０）。ここで、送信部２０６０は、第１文字列に代えて第２文字列を、対象サービスのサービス提供装置へ送信する。その送信方法は、対象サービスのサービス提供装置へ第１文字列を送信する方法と同様である。
【００７８】
なお前述した通り、第１文字列は、対象サービスのユーザ認証におけるパスワードとして用いられることを意図して、ユーザによって入力されるものである。そのため送信部２０６０は、対象サービスのサービス提供装置へ対象サービスのユーザ認証におけるパスワードを送信する既存の方法を利用して、対象サービスのサービス提供装置へ第２文字列を送信する。
【００７９】
例えば、対象サービスのサービス提供装置に対し、HTTP プロトコルの POST リクエストのパラメタとしてパスワードが送信されるとする。この場合、送信部２０６０は、パスワードのパラメタに第２文字列を設定した POST リクエストを、対象サービスのサービス提供装置へ送信する。
【００８０】
［実施例］
情報処理装置２０００の利用方法をより具体化した実施例について説明する。なお、下記で説明する実施例は、あくまで情報処理装置２０００の利用方法の一例であり、情報処理装置２０００の実現方法を限定するものではない。
【００８１】
図１１は、実施例の情報処理装置２０００の利用環境を例示する図である。情報処理装置２０００は、ネットワーク２０を介してサービス提供装置１０−１、サービス提供装置１０−２、及びデータベースサーバ６０と接続されている。
【００８２】
情報処理装置２０００は、ユーザの所有しているスマートフォンである。情報処理装置２０００を利用したいユーザはまず、サービス識別子取得部２０２０、変換部２０４０、及び送信部２０６０それぞれを実現するプログラムモジュールの組み合わせで構成されたプログラムを、汎用のスマートフォンにインストールする。こうすることで、そのスマートフォンが、情報処理装置２０００として動作するようになる。
【００８３】
サービス識別子は、サービスのドメイン名で表される。サービス提供装置１０−１によって提供されるサービスのドメイン名は「service_1.co.jp」であり、サービス提供装置１０−２によって提供されるサービスのドメイン名は「service_2.co.jp」であるとする。
【００８４】
データベースサーバ６０は、サービス識別子と変換規則とを対応づけて記憶している記憶装置５０を管理している。
【００８５】
ユーザはまず、情報処理装置２０００を操作して事前登録を行う。事前登録は、サービス識別子に対応づける変換規則を生成し、生成した変換規則とサービス識別子とを対応づけた情報を記憶装置５０に記憶するための処理である。
【００８６】
図１２は、事前登録の画面を例示している。ユーザは、サービス識別子を入力エリア８０に入力する。情報処理装置２０００は、入力エリア８０に入力されたサービス識別子を、データベースサーバ６０へ送信する。
【００８７】
データベースサーバ６０は、取得したサービス名に対応する変換規則を生成する。本実施例では、キーボードレイアウト上の位置関係に基づく文字の置換という変換規則が、全てのサービスで共通して利用される。ただし、変換前後のキーの位置関係を示すパラメタ（「一つ右」など）は、サービス識別子ごとに定められる。
【００８８】
サービス識別子を取得したデータベースサーバ６０は、そのサービス識別子に対応づける変換規則のパラメタを生成し、このパラメタをサービス識別子に対応づけて記憶する。例えばこのパラメタは、ランダムに生成される。
【００８９】
例えばユーザが、サービス提供装置１０−１によって提供されるサービスについて事前登録を行うとする。この場合、ユーザは、図１２の入力エリア８０に「service_1.co.jp」を入力する。すると、このサービス識別子がデータベースサーバ６０へ送信される。例えばデータベースサーバ６０は、このサービス識別子と、「一つ右」という変換規則のパラメタとを対応づけた情報を、記憶装置５０に記憶する。
【００９０】
同様にユーザが、サービス提供装置１０−２によって提供されるサービスについても事前登録を行ったとする。本実施例では、データベースサーバ６０が、「service_2.co.jp」というサービス識別子と、「１つ下」という変換規則のパラメタとを対応づけた情報を、記憶装置５０に記憶したとする。
【００９１】
事前登録を終えたユーザは、利用するサービスで、ユーザアカウントの登録を行う。図１３は、ユーザアカウントの登録画面である。まずユーザは、ユーザＩＤを入力するエリアである入力エリア８２に、「user1」というユーザＩＤを入力する。さらにユーザは、パスワードを入力するエリアである入力エリア８４に、「::サービス識別子:パスワード:」というフォーマットで文字列を入力する。例えばユーザが、サービス提供装置１０−１によって提供されるサービスを利用するとする。またユーザが、パスワードとして「password」という文字列を利用するとする。この場合、ユーザは、入力エリア８４に「::service_1.co.jp:password:」を入力する。なお、入力エリア８４に入力された文字列は伏せ字になっている。
【００９２】
以下、入力エリア８４に「::service_1.co.jp:password:」という文字列が入力された際の情報処理装置２０００における処理の流れを説明する。図１４は、実施例の情報処理装置２０００における処理の流れを概念的に例示する図である。
【００９３】
本実施例では、情報処理装置２０００上で動作するＯＳ（Operating System）１１０内において、サービス識別子取得部２０２０及び変換部２０４０を実現するためのデバイスドライバ９０が動作する。デバイスドライバ９０は、「::サービス識別子:パスワード:」というフォーマットに合致する文字列から、サービス識別子と第１文字列（パスワード）をそれぞれ抽出する。
【００９４】
ユーザは、タッチパネル１００を用いて、前述した「::service_1.co.jp:password:」という文字列を入力する。デバイスドライバ９０は、１つのキーがタッチされるごとに動作する。デバイスドライバ９０は、「:」が２回続けて入力されたことを認識した後から、次に「:」が１つ入力されたことを認識するまでの間に認識した各文字からなる文字列（service_1.co.jp）を、サービス識別子として扱う。そこでデバイスドライバ９０は、「service_1.co.jp」というサービス識別子に対応する「一つ右」という変換規則のパラメタを、データベースサーバ６０から取得する。
【００９５】
さらにデバイスドライバ９０は、サービス識別子を取得した後から、次に「:」が入力されるまでに認識する各文字を、「一つ右のキーの文字に置換する」という変換規則で、順に変換していく。図１５は、変換に用いるキーボードレイアウトを例示する図である。具体的には、デバイスドライバ９０は、「p」から「[」への変換、「a」から「s」への変換、「s」から「d」への変換、「s」から「d」への変換、「w」から「e」への変換、「o」から「p」への変換、「r」から「t」への変換、「d」から「f」への変換を順に行う。そのため、入力エリア８４に入力された文字列として Web ブラウザ１２０が認識する文字列は、ユーザによって入力された「::service_1.co.jp:password:」ではなく、「::service_1.co.jp: [sddeptf:」となる。
【００９６】
タッチパネル１００を用いて入力された各文字は、デバイスドライバ９０による処理、及び Web ブラウザ１２０によるレンダリング処理を経て、タッチパネル１００に表示される。
【００９７】
ユーザが送信ボタン８６を押下すると、情報処理装置２０００は、ユーザＩＤとパスワードをサービス提供装置１０−１へ送信する処理を行う。ここで送信部２０６０は、Web ブラウザ１２０内部で動作するプラグインである。
【００９８】
Web ブラウザ１２０は、ユーザＩＤとパスワードの組を送信するための POST リクエストを生成する。この POST リクエストにおけるパスワードは、入力エリア８４に入力されている「::service_1.co.jp:[sddeptf:」となる。そこで送信部２０６０は、この POST リクエストにおけるパスワードを「[sddeptf」に置き換える。こうすることで、サービス提供装置１０−１へ送信されるパスワードが、変換規則に基づいて生成された第２文字列となる。
【００９９】
上述の POST リクエストは、プロトコルスタック９２によってパケットに分割された後、ネットワークインタフェース１１２０を介してサービス提供装置１０−１へ送信される。その結果、サービス提供装置１０−１では、「user1」というユーザＩＤと「[sddeptf」というパスワードとが対応づけられたユーザアカウントが生成される。なお、POST リクエストをパケットに分割して送信する処理には、既知の技術を利用できる。
【０１００】
さらにユーザが、サービス提供装置１０−２によって提供されるサービスについても、同じユーザＩＤとパスワードを使ってユーザアカウントの生成を行ったとする。この際、変換部２０４０は、「service_2.co.jp」に対応づけられた「１つ下」というパラメタを用いて変換を行う。つまり、「一つ下のキーの文字に置換する」という変換規則に従って、「password」という第１文字列が、「;zxxslfc」という第２文字列に変換される。よって、サービス提供装置１０−２では、「user1」というユーザＩＤと、「;zxxslfc」というパスワードとが対応づけられたユーザアカウントが生成される。
【０１０１】
このように、情報処理装置２０００によれば、同一のユーザアカウントが複数のサービスで利用された場合であっても、実際にサービスに登録されるパスワードがサービスごとに異なるものとなる。ユーザは、このようにサービスごとに異なるパスワードが登録されたことを意識する必要がない。変換規則に基づく変換は、情報処理装置２０００によって自動で行われるためである。よって、情報処理装置２０００によれば、サービスごとに異なるパスワードを覚えるという負担をユーザにかけることなく、パスワードの安全性を高めることができる。
【０１０２】
また、データベースサーバ６０をサービス提供装置１０の外部に設けることで、サービス提供装置１０を改変する必要もない。なお、データベースサーバ６０は情報処理装置２０００の内部に設けられてもよい。この場合、情報処理装置２０００を実現するためのプログラムには、サービス識別子と変換規則との対応付けの生成及び管理を行うためのプログラムモジュールも含まれる。
【０１０３】
なお上述の例では、事前登録を行った後にユーザアカウントが新たに生成されているが、事前登録を行う前にユーザアカウントが生成されていてもよい。この場合、ユーザは、利用するサービスにおいてパスワードの変更を行う。その際ユーザは、新たなパスワードを入力する入力エリアに「::サービス識別子:パスワード:」というフォーマットでサービス識別子及びパスワードを入力する。こうすることで、このパスワードから第２文字列が生成され、その第２文字列が新たなパスワードとしてサービス提供装置１０に送信される。その結果、第２文字列が新たなパスワートとして登録される。
【０１０４】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【０１０５】
以下、参考形態の例を付記する。
１．  それぞれ異なるサービスの内の１つが特定されるサービス識別子を取得するサービス識別子取得手段と、
前記サービス識別子によって特定されるサービスに対応づけられている変換規則を、そのサービスを提供する装置を介さずに取得し、前記取得された変換規則に基づいて、第１の文字列を第２の文字列に変換する変換手段と、
前記取得されたサービス識別子によって特定されるサービスを提供する装置へ、前記第２の文字列を送信する送信手段と、を有し、
前記変換規則はサービスごとに定められている、情報処理装置。
２．  前記サービス識別子によって特定されるサービスに対応づけられている変換規則は、そのサービスを提供する装置を介さずにアクセス可能な記憶装置に記憶されている、１．に記載の情報処理装置。
３．  前記変換規則は、第１の文字列を第２の文字列に変換する所定のアルゴリズムで利用されるパラメタである、１．又は２．に記載の情報処理装置。
４．  前記変換規則は、所定のキーボードレイアウト上における、変換前後の文字に対応するキーの位置関係を示しており、
前記変換手段は、前記第１の文字列を表す各文字を、前記取得された変換規則に基づいて別の文字に置換することで、前記第１の文字列を前記第２の文字列へ変換する、１．乃至３．いずれか一つに記載の情報処理装置。
５．  前記サービス識別子取得手段は、ユーザによって入力された文字列から前記サービス識別子を取得し、
前記変換手段は、前記サービス識別子に続けて入力される文字列から、前記第１の文字列を取得する、１．乃至４．いずれか一つに記載の情報処理装置。
６．  コンピュータによって実行される制御方法であって、
それぞれ異なるサービスの内の１つが特定されるサービス識別子を取得するサービス識別子取得ステップと、
前記サービス識別子によって特定されるサービスに対応づけられている変換規則を、そのサービスを提供する装置を介さずに取得し、前記取得された変換規則に基づいて、第１の文字列を第２の文字列に変換する変換ステップと、
前記取得されたサービス識別子によって特定されるサービスを提供する装置へ、前記第２の文字列を送信する送信ステップと、を有し、
前記変換規則はサービスごとに定められている、制御方法。
７．  前記サービス識別子によって特定されるサービスに対応づけられている変換規則は、そのサービスを提供する装置を介さずにアクセス可能な記憶装置に記憶されている、６．に記載の制御方法。
８．  前記変換規則は、第１の文字列を第２の文字列に変換する所定のアルゴリズムで利用されるパラメタである、６．又は７．に記載の制御方法。
９．  前記変換規則は、所定のキーボードレイアウト上における、変換前後の文字に対応するキーの位置関係を示しており、
前記変換ステップは、前記第１の文字列を表す各文字を、前記取得された変換規則に基づいて別の文字に置換することで、前記第１の文字列を前記第２の文字列へ変換する、６．乃至８．いずれか一つに記載の制御方法。
１０．  前記サービス識別子取得ステップは、ユーザによって入力された文字列から前記サービス識別子を取得し、
前記変換ステップは、前記サービス識別子に続けて入力される文字列から、前記第１の文字列を取得する、６．乃至９．いずれか一つに記載の制御方法。
１１．  ６．乃至１０．いずれか一つに記載の制御方法が有する各ステップをコンピュータに実行させるプログラム。
【符号の説明】
【０１０６】
１０  サービス提供装置
２０  ネットワーク
３０  入力デバイス
４０  レイアウト
５０  記憶装置
６０  データベースサーバ
８０  入力エリア
８２  入力エリア
８４  入力エリア
１０００  計算機
１０２０  バス
１０４０  プロセッサ
１０６０  メモリ
１０８０  ストレージメディア
１１００  入出力インタフェース
１１２０  ネットワークインタフェース
２０００  情報処理装置
２０２０  サービス識別子取得部
２０４０  変換部
２０６０  送信部
【図１】
2017182396.tif 000003
【図２】
2017182396.tif 000004
【図３】
2017182396.tif 000005
【図４】
2017182396.tif 000006
【図５】
2017182396.tif 000007
【図６】
2017182396.tif 000008
【図７】
2017182396.tif 000009
【図８】
2017182396.tif 000010
【図９】
2017182396.tif 000011
【図１０】
2017182396.tif 000012
【図１１】
2017182396.tif 000013
【図１２】
2017182396.tif 000014
【図１３】
2017182396.tif 000015
【図１４】
2017182396.tif 000016
【図１５】
2017182396.tif 000017