(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023163173
(43)【公開日】2023-11-09
(54)【発明の名称】秘密鍵の安全な回復
(51)【国際特許分類】
H04L 9/08 20060101AFI20231101BHJP
【FI】
H04L9/08 C
【審査請求】有
【請求項の数】18
【出願形態】OL
(21)【出願番号】P 2023072915
(22)【出願日】2023-04-27
(31)【優先権主張番号】10 2022 110 139.8
(32)【優先日】2022-04-27
(33)【優先権主張国・地域又は機関】DE
(71)【出願人】
【識別番号】523159557
【氏名又は名称】ディー ウンターネーメンスゲフィアテン ゲーエムベーハー
【氏名又は名称原語表記】DIE UNTERNEHMENSGEFAEHRTEN GMBH
(74)【代理人】
【識別番号】100073184
【弁理士】
【氏名又は名称】柳田 征史
(74)【代理人】
【識別番号】100175042
【弁理士】
【氏名又は名称】高橋 秀明
(72)【発明者】
【氏名】ニック ロンドン
(72)【発明者】
【氏名】パトリック ロンドン
(57)【要約】
【課題】 秘密鍵を暗号化せずに保管することは、根本的なリスクを伴う。他方では、同じ秘密鍵でも、パスワード保護によるパックアップが、紛失のリスクを背景に、同じく大きなリスクを伴う。
【解決手段】 第1のクライアントによって、第1のサーバの公開鍵を要求する(110)。第1のクライアントによって、第1のクライアントの秘密鍵と第1のサーバの公開鍵とから対称鍵を生成し(130)、第1のクライアントの秘密鍵を対称鍵で暗号化し(140)、第1のクライアントの暗号化された秘密鍵を第2のサーバに伝送する。第2のサーバによって、第1のクライアントの暗号化された秘密鍵を保存する(150)。このようにして、第1のクライアントの秘密鍵を保護する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1のクライアントの秘密鍵を保護する方法であって、
前記第1のクライアントによって、第1のサーバの公開鍵を要求するステップ(110)と、
前記第1のクライアントによって、前記第1のクライアントの前記秘密鍵と前記第1のサーバの前記公開鍵とから対称鍵を生成し(130)、前記対称鍵を用いて前記第1のクライアントの前記秘密鍵を暗号化し(140)、前記第1のクライアントの暗号化された前記秘密鍵を第2のサーバに伝送するステップと、
前記第2のサーバによって、前記第1のクライアントの暗号化された前記秘密鍵を保存する(150)ステップと
を含む、方法。
【請求項2】
前記第1のクライアントによって、前記対称鍵を前記第1のサーバから、前記第1のクライアントの暗号化された前記秘密鍵を前記第2のサーバから検索する(210,230)ステップと、
前記第1のサーバによって、前記第1のサーバの秘密鍵と前記第1のクライアントの公開鍵とから前記対称鍵を生成し(240)、前記対称鍵を前記第1のクライアントに伝送するステップであって、ここで、前記第1のサーバの前記秘密鍵が前記第1のサーバの前記公開鍵に属し、前記第1のクライアントの前記公開鍵が前記第1のクライアントの前記秘密鍵に属する、ステップと、
前記第1のクライアントによって、前記第1のクライアントの暗号化された前記秘密鍵を前記対称鍵によって解読する(250)ステップと
をさらに含む、方法。
【請求項3】
前記第1のクライアントの暗号化された前記秘密鍵および/または前記対称鍵の前記検索(210,230)を、1回用いられたパスワードに基づいて実行する、請求項2記載の方法。
【請求項4】
前記第1のクライアントの暗号化された前記秘密鍵を更新するステップをさらに含み、ここで、前記更新は、
前記第1のクライアントによって、前記第1のクライアントの新たな秘密鍵および前記公開鍵を前記第1のサーバから作成し(310)、前記第1のサーバの新たな公開鍵を前記第1のサーバに要求するステップと、
前記第1のクライアントによって、前記第1のクライアントの前記新たな秘密鍵と前記第1のサーバの前記新たな公開鍵とから新たな対称鍵を生成し(350)、前記第1のクライアントの前記新たな秘密鍵を前記新たな対称鍵で暗号化し(360)、前記第1のクライアントの前記新たな暗号化された秘密鍵を前記第2のサーバに伝送するステップと、
前記第2のサーバによって、前記第1のクライアントの前記新たな暗号化された秘密鍵を記憶し(370)、前記第1のクライアントの以前に記憶された暗号化された前記秘密鍵を削除する(380)ステップと
を含む、請求項1から3までのいずれか1項記載の方法。
【請求項5】
前記第1のクライアントの前記暗号化された秘密鍵の前記更新を、ユーザ要求に対する応答として実行するステップをさらに含む、請求項4記載の方法。
【請求項6】
前記第1のクライアントの前記暗号化された秘密鍵の前記更新を、規則的な間隔で自動的に実行する、請求項4記載の方法。
【請求項7】
前記第1のクライアントによって、パスワードを用いて前記第1のクライアントの前記秘密鍵を暗号化し(410)、前記パスワードで暗号化された前記第1のクライアントの前記秘密鍵と、前記パスワードから生成されたハッシュ値(415)とを前記第2のサーバに伝送するステップと、
前記第2のサーバによって、前記第1のクライアントの前記パスワードで暗号化された前記秘密鍵と、伝送された前記ハッシュ値を保存するステップと
をさらに含む、請求項1から6までのいずれか1項記載の方法。
【請求項8】
前記第1のクライアントによって、前記パスワードの前記ハッシュ値を前記第2のサーバに伝送する(430)ステップと、
前記第2のサーバによって、伝送された前記ハッシュ値を、前記第1のクライアントの保存された前記ハッシュ値と比較し(440)、前記パスワードで暗号化された前記第1のクライアントの前記秘密鍵を前記第1のクライアントに伝送する(460)ステップと、
前記第1のクライアントによって、前記第1のクライアントの伝送された秘密鍵を前記パスワードで解読する(460)ステップと
をさらに含む、請求項7記載の方法。
【請求項9】
前記第1のクライアントによって、前記第2のサーバに前記パスワードを置き換えるための要求を伝送する(470)ステップと、
前記第2のサーバによって、前記第1のサーバに前記パスワードを置き換えるための要求を伝送する(480)ステップと、
前記第1のサーバによって、前記第1のサーバの秘密鍵と前記第1のクライアントの前記公開鍵とから前記対称鍵を生成し(490)、ワンタイムパスワードを生成し(490)、前記ワンタイムパスワードで前記対称鍵を暗号化し(492)、前記ワンタイムパスワードのハッシュ値を作成し(492)、前記暗号化された対称鍵および前記ワンタイムパスワードの前記ハッシュ値の1つのハッシュ値を前記第2のサーバに伝送し、前記ワンタイムパスワードを前記1のクライアントに伝送するステップと、
前記第1のクライアントによって、前記第2のサーバに前記第1のクライアントを認証する要求を伝送するステップであって、ここで、前記要求は、前記ワンタイムパスワードのハッシュ値を含む、ステップと、
前記第2のサーバによって、前記第1のサーバのハッシュ値と、前記第1のクライアントによって伝送された前記ワンタイムパスワードの前記ハッシュ値とを比較し(495)、前記第1のクライアントの前記対称鍵で暗号化された前記秘密鍵および前記ワンタイムパスワードで暗号化された前記対称鍵を前記第1のクライアントに伝送する(496)ステップと、
前記第1のクライアントによって、前記暗号化された対称鍵を前記ワンタイムパスワードで復号化(497)し、前記第1のクライアントの前記暗号化された秘密鍵を前記対称鍵で復号化(497)し、前記第1のクライアントの前記秘密鍵を新たなパスワードで暗号化(498)し、前記新たなパスワードで暗号化された前記第1のクライアントの前記秘密鍵および前記新たなパスワードのハッシュ値を前記第2のサーバに伝送する(498)ステップと
をさらに含む、請求項7または8記載の方法。
【請求項10】
前記第1のクライアントによって、第3のサーバに認証要求を伝送する(510)ステップと、
前記第3のサーバによって、前記第1のクライアントにチャレンジを伝送する(520)ステップと、
前記第1のクライアントによって、前記第3のサーバに前記チャレンジに対するレスポンスを伝送する(530)ステップと、
前記第3のサーバによって、前記レスポンスを検証し(540)、前記第1のクライアントにアクセストークンを伝送する(550)ステップと、
前記第1のクライアントによって、前記第2のサーバにアクセス要求を伝送する(560)ステップであって、前記アクセス要求は前記アクセストークンを含む、ステップと、
前記第2のサーバによって、前記アクセストークンをチェックするステップと
をさらに含む、請求項1から9までのいずれか1項記載の方法。
【請求項11】
前記第1のクライアントによって、前記第2のサーバにアクセス要求を伝送する(610)ステップと、
前記第2のサーバによって、前記第1のクライアントにチャレンジを伝送する(620)ステップと、
前記第1のクライアントによって、前記第2のサーバに前記チャレンジに対するレスポンスを伝送する(630)ステップと、
前記第2のサーバによって、前記チャレンジに基づいて前記レスポンスを検証する(640)ステップと
をさらに含む、請求項1から9までのいずれか1項記載の方法。
【請求項12】
前記第2のサーバによって、前記第2のサーバの前記秘密鍵で前記第1のクライアントの権限証明に署名し、前記署名された権限証明および前記対称鍵で暗号化された前記クライアントの前記秘密鍵を前記第1のクライアントに伝送する(720)ステップと、
前記第1のクライアントによって、前記署名された権限証明を前記第1のサーバに伝送するステップと、
前記第1のサーバによって、前記第2のサーバの前記認証された公開鍵を用いて前記第1のクライアントの前記署名された権限証明を検証し(740)、前記第1のサーバの前記秘密鍵と前記第1のクライアントの前記公開鍵とから前記対称鍵を生成し(750)、前記第1のクライアントに前記対称鍵を伝送する(750)ステップと、
前記第1のクライアントによって、前記暗号化された前記第1のクライアントの秘密鍵を前記対称鍵で解読する(760)ステップと
をさらに含む、請求項10または11記載の方法。
【請求項13】
前記第1のクライアントの前記権限証明の署名(710)が、1つ以上のタイムスタンプで前記権限証明を署名するステップを含み、ここで、前記タイムスタンプによって定義される期間が経過すると、前記署名された権限証明の前記検証(740)が中断される、請求項12記載の方法。
【請求項14】
前記第2のサーバによって、前記対称鍵で暗号化された前記第1のクライアントの前記秘密鍵を第2のクライアントに伝送する(810)ステップと、
前記第1のサーバによって、前記第1のサーバの前記秘密鍵と前記第1のクライアントの前記公開鍵とから前記対称鍵を生成し(820)、前記対称鍵を前記第2のクライアントに伝送する(820)ステップと、
前記第2のクライアントによって、前記第1のクライアントの前記秘密鍵を前記対称鍵を用いて解読する(830)ステップと
をさらに含む、請求項1から13までのいずれか1項記載の方法。
【請求項15】
クライアントの秘密鍵を保護するためのシステムであって、
クライアントと、第1のサーバと、第2のサーバと
を含み、
ここで、前記クライアントは、前記第1のサーバの公開鍵を要求する(110)ように構成されており、
前記第1のサーバは、前記第1のサーバの前記公開鍵を前記クライアントに伝送する(120)ように構成されており、
前記クライアントは、さらに、前記クライアントの前記秘密鍵と前記第1のサーバの前記公開鍵とから対称鍵を生成し(130)、前記クライアントの前記秘密鍵を前記対称鍵で暗号化し(140)、前記クライアントの暗号化された前記秘密鍵を第2のサーバに伝送する(140)ように構成されており、ここで、前記第2のサーバは、前記クライアントの暗号化された前記秘密鍵を保存する(150)ように構成されている、
システム。
【請求項16】
前記クライアントはさらに、前記第1のサーバおよび前記クライアントの前記暗号化された秘密鍵から前記対称鍵を検索し(210,230)、前記対称鍵を用いて前記クライアントの前記暗号化された秘密鍵を解読する(250)するように構成されている、請求項15記載のシステム。
【請求項17】
コンピュータ可読媒体であって、前記コンピュータ可読媒体が1つ以上のプロセッサによって実行されるときに、請求項1から14までのいずれか1項記載の方法を実行する命令を保存している、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示された発明は、コンピュータ実装された暗号化技術の分野である。
【背景技術】
【0002】
暗号化は、データの確実な暗号化を取り扱っており、多数の技術分野、特にメッセージ伝送の分野および多数の別のコンピュータ実装機構に適用されている。基本的に、暗号化方法は、デジタルで表現可能なあらゆるデータ形式に適用される。
【0003】
暗号化では、対称鍵と非対称鍵とに区別される。対称型暗号化では、データまたはストリームなどの各種データを暗号化するために同じ鍵が使用され、これに対して非対称型暗号化では、秘密鍵(private key)と公開鍵(public key)とから成る鍵対が使用される。公開鍵は暗号化のためにのみ使用され、秘密鍵は復号化のために用いられる。したがって、公開鍵は、受信者、つまり秘密鍵の所有者に対して他者がデータの暗号化を可能にするために、一般に利用可能にすることができる。秘密鍵は、所有者によって他者のアクセスから保護すべきものである。秘密鍵は、さらに、データの署名にも使用できる。この署名により、これらのデータは暗号化されないが、しかしながら、そのようなデータの受信者は、対応する公開鍵に基づいて、署名が有効であるか否かをチェックすることができ、このデータが署名後に変化した場合に、この署名はもはや有効ではなくなる。
【0004】
一方では暗号化を可能にし、他方では復号化を可能にするために、対称鍵は、通常、通信する当事者間で事前に伝送されなければならない。この伝送は、鍵を第三者に知られないようにする必要があり、伝送時に気付かれずにコピーされる可能性があるため、当事者にリスクが生じる。このような欠点は、非対称鍵の場合には当てはまらない。なぜならば、秘密鍵が共有されず、公開鍵が一般に知られる可能性があるからである。
【0005】
第三者による秘密鍵へのアクセスを防ぐため、秘密鍵そのものは、対称鍵、例えばパスワードまたは別の非対称鍵によって保護することができる。しかしながら、別の鍵が(例えばパスワードの失念によって)失われた場合には、最新の先行技術によれば元の秘密鍵は回復することができず、これによって、例えば、関連する文書へのアクセス、またはユーザの身元確認もしくは文書への署名能力が失効することになる。
【0006】
秘密鍵を権限のないアクセスから保護するために、この秘密鍵を第三者に伝送して保管することができる。鍵が暗号化されずに伝送されると、第三者が鍵所有に代わって文書に署名したり、鍵所有者に暗号化されているデータを復号化したりすることができる。上記のように別のパスワードもしくは鍵によって伝送が行われる場合には、紛失時に鍵を回復できないという問題が引き続き生じる。
【0007】
秘密鍵を暗号化せずに保管することは、特に第三者との間で、根本的なリスクを伴う。他方では、同じ秘密鍵でも、パスワード保護によるパックアップが、紛失のリスクを背景に、同じく大きなリスクを伴う。
【発明の概要】
【発明が解決しようとする課題】
【0008】
本明細書に開示された発明の根底を成す課題は、上述のリスクを回避しながら、非対称型秘密鍵をこうした損失から保護することである。
【課題を解決するための手段】
【0009】
本発明の実行形態は、第1のクライアントの秘密鍵を保護する方法に関し、この方法は、第1のクライアントによって、第1のサーバの公開鍵を要求するステップと、第1のクライアントによって、第1のクライアントの秘密鍵と第1のサーバの公開鍵とから対称鍵を生成し、第1のクライアントの秘密鍵を対称鍵で暗号化し、第1のクライアントの暗号化された秘密鍵を第2のサーバに伝送するステップと、第2のサーバによって、第1のクライアントの暗号化された秘密鍵を保存するステップとを含む。
【0010】
本発明の更なる実行形態は、第1のクライアントの秘密鍵を保護するためのシステムに関し、このシステムは、クライアント、第1のサーバ、および第2のサーバを含み、クライアントは、第1のサーバの公開鍵を要求するように適合されており、第1のサーバは、第1のサーバの公開鍵をクライアントに伝送するように適合されており、クライアントは、クライアントの秘密鍵と第1のサーバの公開鍵とから対称鍵を生成し、クライアントの秘密鍵を対称鍵で暗号化し、クライアントの暗号化された秘密鍵を第2のサーバに伝送するようさらに適合されており、第2のサーバは、クライアントの暗号化された秘密鍵の保存に適合されている。
【0011】
本発明の実行形態はさらに、コンピュータ可読媒体であって、当該コンピュータ可読媒体上に保存された命令を伴い、これらの命令は、1つ以上のプロセッサによって実行されると、上述の方法のうちの1つを実行する、コンピュータ可読媒体に関する。
【0012】
本発明の更なる実行形態は、添付の特許請求の範囲から読み取れる。
【図面の簡単な説明】
【0013】
【
図1】クライアントの秘密鍵を保護するための本発明による方法を示す。
【
図2】クライアントの秘密鍵を回復するための本発明による方法を示す。
【
図3】クライアントの秘密鍵を置き換えるための本発明による方法を示す。
【
図4A】クライアントの秘密鍵にパスワードを適用するための本発明による方法を示す。
【
図4B】パスワードを用いてクライアントの秘密鍵を回復するための本発明による方法を示す。
【
図4C】パスワードを置き換えるための本発明による方法を示す。
【
図5】サーバを用いてクライアントを認証するための本発明による方法を示す。
【
図6】別のサーバを用いてクライアントを認証するための本発明による方法を示す。
【
図7】
図5および
図6に示した方法のうちの1つに基づいてクライアントを認証するための本発明による方法を示す。
【
図8】クライアントの秘密鍵にアクセスするための本発明による方法を示す。
【発明を実施するための形態】
【0014】
本明細書に記載される方法は、好ましくは、1つ以上のクライアントおよび/または1つ以上のサーバによって実行される。クライアントは、スマートフォンやノートブックなどのモバイル機器や、据え置き型のコンピュータでもある。同様に、サーバも移動型コンピュータまたは据え置き型のコンピュータであってよい。しかしながら、選択的に、クライアントおよび/またはサーバを、異なるコンピュータまたは同じコンピュータ上で動作するソフトウェアプロセスとして構成することもできる。しかもクライアントは、本明細書に開示されているクライアントのステップをソフトウェアによって実行するユーザであってもよい。
【0015】
1つ以上のクライアントは、技術的に互いに分離され、互いに通信したり、互いのデータにアクセスしたりすることができない第1のサーバおよび第2のサーバと通信する。このような分離は、例えば、異なるマシン上で動作するサーバプロセスによって実現可能であり、その場合、マシンは互いに物理的な接触を持たず、ネットワーク接続や他の装置によって互いに通信することも不可能である。
【0016】
代替的に、2つのサーバを2つのネットワークで運用し、一方のネットワークからのコンタクトを他方のネットワークで常に拒否する、例えばネットワークファイアウォールを使用することによっても、2つのサーバの分離を実現することができる。
【0017】
更なる代替手段には、サーバを物理的に別のネットワークで運用することで、直接的な情報交換を物理的に排除する方法もある。例えば、第1のサーバはインターネット経由でアクセス可能であるが、第2のサーバはインターネット経由でアクセスできないキャンパスネットワークやローカルネットワークの一部であってもよい。
【0018】
更なる代替手段には、2台のサーバを同じネットワーク内で運用し、システムレベルのファイアウォールやアプリケーションのファイアウォールなどで、もう一方のサーバからの接続を常に拒否するように設定する方法もある。
【0019】
第2のサーバと第1のサーバとの間の直接の接触は、上述のサーバの分離にもかかわらず可能であるが、ここに開示された実行形態を使用する場合、双方とも、その都度他方の当事者が受け取ってはならないデータを有しているので、厳しい制限を受けている。これには、第1のサーバの秘密鍵または対称鍵で暗号化されたクライアントの秘密鍵が含まれる。この制限は、さまざまなアプローチで実現することができる。第1のアプローチには、例えばユーザに直接の有線接続または他のハードウェアインタフェースを構成するように指示することにより、2つのサーバを物理的かつ一時的に互いに接続する必要性が含まれる。第2のアプローチには、2つのサーバ間のあらゆるアクセスが、最大距離、例えば1m以下または設定可能な距離だけ互いに離間している場合にのみ、2つのサーバ間のアクセスを許可するというものが含まれる。第3のアプローチには、2つのサーバ間の接続の持続時間中、他のすべての接続を自動的に遮断するように、すなわち、例えばシリアルポート経由でのみ通信し、それらのネットワークスタックを遮断するように、両サーバを構成することが含まれる。これらのサーバは、サーバ同士の接続または他のアドレスもしくは当事者との接続のみを形成することができるように構成可能である。これらのアプローチは互いに組み合わせることができ、かつ/または別の認証手段によって補完することができる。
【0020】
2つのサーバ間の接触を制限する別の方法として、例えば、いわゆるjumphostのような別のサーバを実装することも可能である。このサーバは、第1のサーバおよび第2のサーバの両方と通信できるように構成されている。このアプローチでは、第1のサーバと第2のサーバとは、別のサーバからの接続を認識して接続するように構成されている。第1のサーバおよび第2のサーバによる別のサーバの検出は、ネットワークアドレスの検出および/または技術的な識別および/または認証方法によって行われてもよい。別のサーバは、第1のサーバと第2のサーバとの間のパケットフィルタとして用いられ、上述の方法において第1のサーバと第2のサーバとの間に設けられている通信だけが可能となることを保証する。パケットのフィルタリングは、例えば、ディープパケットインスペクションによって行うことができる。別のサーバの変形例には、このサーバを分散ゾーンの一部であるいわゆるジャンプホストとして実装することが含まれ、これは、上述した第1のアプローチまたは第2のアプローチと組み合わせることができる。1つ以上のデータダイオードで相互接続された少なくとも2つのサーバを使用する方法も含まれ、これは、説明したすべてのアプローチと組み合わせることができる。
【0021】
サーバ間の通信を制限し、所定の事前措置の下でのみ通信を許容するという上記の可能性は、その都度明示的に言及しなくても、以下に説明するすべての実行形態と組み合わせることができる。
【0022】
図1は、クライアント(クライアント1)の秘密鍵を保護する方法100を示している。この目的のために、クライアントは、第1のサーバ(サーバ1)および第2のサーバ(サーバ2)と別々に通信する。
【0023】
ステップ110において、クライアントは、第1のサーバの公開鍵(公開
s1)を要求する。これは、
図1に示すように、HTTPS/TLS/SSLまたは他のネットワークプロトコルなどの適切なプロトコルを用いて、第1のサーバに直接送信される要求によって行うことができる。代替的にクライアントは、第三者が公開鍵にアクセスおよび/またはチェックできるように公開鍵を管理および認証する公開鍵基盤(PKI)の一部として、認証局(CA)など他のソースから第1のサーバの公開鍵を要求することもできる。ステップ120において、第1のサーバは、要求に応答して、その公開鍵を伝送する。このステップも、代替的に認証局によって実行されることができる。別の選択肢として、要求および応答も、図示のように、第1のサーバ自身が認証局から公開鍵を検索して実行することもできる。別の代替案として、要求に応答して、第1のサーバは、既に公開鍵を有しているかどうかをチェックし、有していない場合には、新たな非対称鍵対を生成し、この鍵対の公開鍵をクライアントに伝送することができる。
【0024】
特定の実行形態では、第1のサーバは、異なるクライアントに対してそれぞれの公開鍵を保持することができる。本実行形態では、クライアントは、ステップ110において、その要求とともに、このクライアントの識別子を伝送する。サーバ側では、この識別子を用いて、対応する公開鍵を参照するか、このクライアントに対して新たな非対称鍵対を生成して、識別子とともに保存する。
【0025】
ステップ130において、クライアントは、第1のサーバの公開鍵(公開s1)とクライアントの秘密鍵(秘密c1)とから対称鍵(対称)を生成する。これには、例えば、鍵導出関数(KDF)の利用が含まれる。このようなKDFは、第1の鍵対の公開鍵および第2の鍵対の秘密鍵から、第1の鍵対の秘密鍵および第2の鍵対の公開鍵からと同じ結果を生成する特性を有することができる。
【0026】
一実行形態では、ステップ130はさらに、紛失擬似ランダム関数(OPRF)により、対称鍵を別のサーバに保存された情報に依存させることを含んでいてもよい。このため、クライアントは一度だけ使用される乱数によって対称鍵のマスキングを行い、その結果を別のサーバに伝送する。別のサーバは、別のサーバに保存されている情報と伝送されたマスク鍵とを用いて処理を行い、その結果をクライアントに送信する。クライアントは、一度だけ使用される乱数によって別のサーバからの応答をアンマスキングする。マスキング処理も、サーバ処理と同様に、どの乱数を使っても必ず同じ結果になるように構成されている。このようなOPRFの一例として、ブラインドRSA署名がある。この方法は、任意の数の別のサーバを用いて繰り返すことができる。別のサーバの1つを第2のサーバとすることができる。本実行形態を用いる場合、OPRFの結果は以下のステップで対称として使用される。本実行形態は、その都度明示的に言及しなくても、以下に説明するすべての実行形態と組み合わせることができる。特に、後述する方法のステップ240、350、497、760および830に適用される。唯一の要件は、クライアントが対称鍵を取得(ステップ240、350、760および830)または復号化(ステップ497)した後に、毎回OPRF関数を実行することである。
【0027】
ステップ140において、クライアントは自身の秘密鍵を対称鍵で暗号化し、この暗号化の結果をここでは対称(秘密c1)と称し、保存の要求(要求)とともに第2のサーバに伝送する。このような要求または要件には、クライアントの識別子、例えば、既に述べたクライアントの識別子を含めることができ、これによって、第2のサーバがクライアントの暗号化された秘密鍵をこの識別子の下に保存し、後でこの識別子を使用してこの秘密鍵を調べることができる。代替的に第2のサーバは、例えば、クライアントが第2のサーバにアクセスする際のアドレスに基づいて、クライアントの識別子を自ら生成することができる。別の選択肢として、このアクセスまたは要求は、識別子およびパスワードの指定を必要とするクライアントの認証を伴う場合があり、この場合、伝送された暗号化された秘密鍵は、第2のサーバのユーザカウントの下に簡単に保存することができる。第2のサーバは、ステップ150において、暗号化された秘密鍵を保存する。
【0028】
最後に、クライアントは対称鍵を削除する。好ましくは、方法100は、クライアントがクライアントの暗号化された秘密鍵も削除する更なるステップを含むことができる。
【0029】
方法100は、クライアントの秘密鍵を保存するための安全なアプローチを表している。方法100を適用した後の第1のサーバは、自身の秘密鍵と公開鍵しか有しておらず、そこからクライアントの暗号化された秘密鍵を復号化するために必要な対称鍵を生成することはできない。さらに、説明したように、第1のサーバがクライアントの暗号化された秘密鍵を第1のサーバから検索する方法はない。また、第2のサーバもクライアントの秘密鍵にアクセスする術を持たない。たしかにこの鍵は暗号化された状態で第2のサーバに保存されている。しかしながら、復号化するためには、後述するように、クライアントの対称鍵または秘密鍵と第1のサーバの公開鍵のいずれかかが必要である。第2のサーバは、クライアントの暗号化された秘密鍵を解読するために必要なデータにアクセスすることはできない。
【0030】
図2は、
図1に関して説明したように、この鍵が第2のサーバに保存された後に、クライアントの秘密鍵を回復するための方法200を示す。
【0031】
ステップ210において、クライアントは、クライアントの暗号化された秘密鍵を取得するための要求を第2のサーバに送信する。この要求の送信には、識別子および/またはパスワードの伝送あるいはその他の認証措置を含めることができる。このようにして、第2のサーバは、クライアントの識別をチェックし、かつ/または複数の暗号化された秘密鍵の中からクライアントの暗号化された秘密鍵を、すなわち、例えば、伝送された識別子に基づいて識別することが可能である。しかしながら、例えばアドレスまたは他の通常の認証機構などを用いて、他の手段でクライアントを識別することもできる。
【0032】
ステップ220において、第2のサーバは、クライアントの要求した暗号化された秘密鍵を伝送することによって応答する。
【0033】
ステップ230において、クライアントは、第1のサーバから対称鍵を要求する。これは、
図2に示された順序で行うことができる。特に、クライアントは、ステップ210および220が成功した場合にのみ、ステップ230を実行することができる。代替的にクライアントは、ステップ210の前に、またはステップ210と220との間に、あるいは一般にステップ210および220とは独立して、ステップ230を実行してもよい。
【0034】
ステップ240において、第1のサーバは、クライアントの要求に応答する。これは、クライアントの公開鍵と第1のサーバの秘密鍵とから対称鍵を生成するステップを含む。第1の鍵対の秘密鍵と第2の鍵対の公開鍵とから、第1の鍵対の公開鍵と第2の鍵対の秘密鍵とから形成される対称鍵と同一である対称鍵を生成するという可能性はKDFによって保証される。対応する実装の例は、Diffie-Hellman鍵交換、Menezes-Qu-Vanstone(MQV)、Hash MQV(HMQV)である。ステップ240の代替として、第1のサーバは、対称鍵を既に予め生成および/または保存しておき、単にそれを検索するだけでもよい。引き続き、第1のサーバは、対称鍵をクライアントに伝送する。特定の実行形態では、クライアントは、第1のサーバが対称鍵を参照または保存するために使用するクライアントの識別子をその要求とともに送信することができる。
【0035】
ステップ250において、クライアントは、暗号化されたクライアントの秘密鍵を対称鍵を用いて復号化する。このプロセスの結果は、
図2に対称鍵
-1(秘密
c1)→秘密
c1として示されている。
【0036】
一実行形態では、ステップ210および230の要求ならびにステップ220および240のそれらの応答は、それぞれのサーバによって生成され、例えばクライアントのユーザのプリセットされた更なるデバイスを介して、事前に手配された経路でクライアントに送信される1つ以上のワンタイムパスワードの使用を条件としてもよい。
【0037】
その結果、方法200では、そもそも使用後に秘密鍵を紛失したり削除したりした場合に、クライアントがその秘密鍵にアクセスすることが可能となる。この場合、第1のサーバと第2のサーバの2つの異なる当事者からそれぞれ秘密鍵を復号化するためのデータが必要となるため、この方法では秘密鍵の安全な回復が可能となる。
【0038】
図3は、クライアントの秘密鍵を交換/更新するための方法300を示す。方法300は、所定の期間にわたって使用される鍵を置き換えるという目的で、先に説明した方法のうちの1つに連続して実行されてもよい。
【0039】
ステップ310において、クライアントは新たな非対称鍵対を生成し、その鍵対の秘密鍵はここでは秘密c1
neu、その鍵対の公開鍵は公開c1
neuと称する。これらの鍵の生成には、新たな公開鍵を第三者が検索および/または検証することができるように、鍵対をPKIに登録することを含み得る。
【0040】
ステップ320において、クライアントは、第1のサーバの公開鍵の要求を第1のサーバに送信する。方法100のステップ110および120に関して既に説明したように、クライアントは代替的に認証局から第1のサーバの公開鍵を取得することができるので、このステップはオプションである。しかしながら、例えば、クライアントが初めて第1のサーバにコンタクトする場合や、第1のサーバの公開鍵もそれらの鍵の長期間の使用(または不使用)により更新する必要があるため、そのクライアントのために新たな鍵対を生成することに、第1のサーバ専用に要求することもできる。
【0041】
ステップ330において、第1のサーバは新たな鍵対を生成し、その鍵対の公開鍵はここでは公開s1
neu、その鍵対の秘密鍵は秘密s1
neuと称する。このステップは、要求320が鍵対を再生成するために第1のサーバを独自に検索する場合にのみ実行される。
【0042】
ステップ340において、第1のサーバは、第1のサーバの新たな公開鍵をクライアントに伝送する。
【0043】
ステップ350において、クライアントは、既に説明したKDFを用いて、クライアントの新たな秘密鍵と第1のサーバの新たな公開鍵とから新たな対称鍵(対称鍵neu)を生成する。
【0044】
ステップ360において、クライアントは新たな秘密鍵を新たな対称鍵で暗号化し、その結果の対称鍵neu(秘密c1
neu)を第2のサーバに送信する。
【0045】
ステップ370において、第2のサーバは、クライアントの暗号化された新たな秘密鍵を保存する。
【0046】
ステップ380において、第2のサーバはクライアントの古い暗号化された秘密鍵を削除する。このステップは、特定の実施形態では、前述のとおり省略することができる。このステップは、ステップ370の後に所定の時間だけ遅延させることができる。こうすることで、古い公開鍵で暗号化されたままのデータを復元することができる。
【0047】
一実施形態では、方法300は、ユーザ入力によってトリガされ得る。代替的に、予め設定された規則的な間隔で実行し、クライアントの暗号化された秘密鍵を繰り返し生成して保存してもよい。有利には、このような間隔の長さは、所与の技術的構成および所与の対称鍵の技術的な特性(その長さ)を考慮して、対称鍵を解読するために理論的に必要となる時間に基づいて設定されてもよく、例えば、この時間の特定の一部分(半分)だけを含む間隔に設定されてもよい。
【0048】
図4Aは、クライアントの秘密鍵にパスワードを適用するための方法400Aを示す。この方法では、ユーザが特定のクライアントに依存せずに自身の秘密鍵にアクセスすることができる。特に、ユーザは自身で決めたパスワードを使って、自身の秘密鍵にアクセスすることができる。「パスワード」による暗号化では、これを対称鍵として使用するか、またはパスワードを初期値として対称鍵を生成する(シード鍵)。
【0049】
一実施形態では、方法400Aは、方法100のステップが既に実行されているため、対称鍵が既に存在し、対称鍵で暗号化されたクライアントの秘密鍵が第2のサーバによって保存されていると仮定している。
【0050】
この実施形態では、方法400Aは、クライアントがパスワードを生成するステップ405を含む。パスワードは、ユーザの入力に基づくものでも、自動作成されるものであってもよい。パスワードは、クライアントのユーザがクライアントへの認証および/またはログインに使用するパスワードと同一であってもよい。
【0051】
ステップ410において、クライアントはパスワードで自身の秘密鍵を暗号化し、パスワードで暗号化された秘密鍵を第2のサーバに伝送する。この伝送は、例えばステップ415を実行する際に、
図4Aに示すよりも後に行うことができる。
【0052】
ステップ415において、クライアントは、ハッシュ関数を用いてパスワードからハッシュ値を生成し、このハッシュ値を第2のサーバに伝送する。一実施形態では、ステップ415は、パスワードで暗号化されたクライアント/ユーザ秘密鍵もパスワードのハッシュ値も第2のサーバに伝送することができる。場合によっては、クライアントはさらに、ユーザまたはクライアントの識別子を伝送することができる。クライアントは同時に、対称鍵で暗号化された自身の秘密鍵を伝送することができる。
【0053】
ステップ420において、第2のサーバはこのデータを保存し、その際、伝送されたハッシュ値の場合、これサーバから順に別のハッシュ値が生成され、このハッシュ値が保存される。有利には、クライアントと第2のサーバとは、同じハッシュ関数を使用する。代替的に、クライアント側でハッシュ関数sha512、第2のサーバ側でbcryptまたはscryptなど、異なるハッシュ関数を実行することも可能である。データは、ステップ410で伝送されたクライアントのパスワード暗号化秘密鍵と、場合によっては、既に方法100で保存されているクライアントの対称鍵で暗号化された秘密鍵とともに保存される。この関連付けは、場合によっては、伝送された識別子に基づいて、あるいはクライアントまたはユーザ(対応する認証またはアドレス)に基づいて実行することができる。
【0054】
図4Bは、パスワードを用いてクライアントまたはユーザの秘密鍵を回復するための方法400Bを示している。この方法は、方法400Aが既に実行され、第2のサーバが対称鍵で暗号化されたクライアントの秘密鍵とパスワードで暗号化されたクライアントの秘密鍵との両方を有すると仮定している。
図4Bに示すクライアント1は、
図4Aに示すクライアントと同じであってもよいし、異なっていてもよい。
【0055】
ステップ430において、クライアントは、方法400Aのステップ410で既に適用されたハッシュ関数を使用して、クライアントまたはクライアントのユーザがこれまで使用していたまたはこの目的のために表示されたパスワードのハッシュ値を生成する。このハッシュ値は、場合によっては、クライアントまたはユーザの識別子とともに、あるいは先に説明した第2のサーバへのアクセスの場合のように、既知の認証手段によって第2のサーバに伝送される。この伝送は、パスワードで暗号化されたクライアントの秘密鍵の伝送を第2のサーバに要求する形で行うことができる。
【0056】
ステップ440において、第2のサーバは、方法400Aのステップ420で既に適用されたハッシュ関数を用いて、ステップ430で伝送されたハッシュ値を生成し、このハッシュ値と方法400Aのステップ420で保存したこのクライアントまたはユーザのハッシュ値とを比較する。場合によっては、第2のサーバは、ステップ430で伝送されたクライアント/ユーザの識別子に基づいて、クライアント/ユーザの保存されたハッシュ値を検索することができる。
【0057】
ステップ450において、第2のサーバは、ステップ430に応答して、パスワードで暗号化されたクライアントの秘密鍵をクライアントに伝送する。
【0058】
ステップ460において、クライアントまたはユーザは、送信されたパスワード暗号化秘密鍵を、自身が既に知っているパスワードで復号化する。
【0059】
図4Cは、パスワードを置き換えるための方法400Cを示す。方法400Cは、方法400Aおよび方法100によって確立された条件が存在すること、つまり、クライアントの秘密鍵が第2のサーバに異なる暗号化で保存されており、すなわち、第1の暗号化は対称鍵に基づき、少なくとも1つの他の暗号化はパスワードに基づいていることを前提としている。先に説明したように、対称鍵は、クライアントと第1のサーバの秘密鍵と公開鍵との組み合わせによって復元することができる。この機構は、パスワードでは実行することができない。なぜなら、パスワードは非対称鍵に由来しないため、クライアントが自身の秘密鍵へのアクセスを失うことなく置き換えることができないからである。方法400Cでは、この問題を解決し、パスワードの回復を可能にする。
【0060】
ステップ470において、クライアントは、第2のサーバに自身のパスワードを置き換えるように要求する。一実施形態では、クライアントは、第2のサーバがそのクライアントのパスワードを検索することができるように、この要求とともにその識別子を伝送することができる。
【0061】
ステップ480において、第2のサーバは、クライアントの要求を第1のサーバに転送し、場合によっては、再びクライアントの識別子を指定する。追加的または代替的に、第2のサーバは、クライアントの公開鍵を伝送することができる。
【0062】
ステップ490において、第1のサーバは、クライアントのために対称鍵を生成するか、またはそのクライアントのために保存されている当該鍵のコピーを検索する。さらに、第1のサーバはワンタイムパスワード(one-time)を生成する。このワンタイムパスワード自体が対称鍵であってもよいし、対称鍵として使用してもよい。
【0063】
ステップ491において、第1のサーバは対称鍵をワンタイムパスワードで暗号化し、その結果をone-time(対称鍵)と呼ぶ。
【0064】
ステップ492において、第1のサーバは、方法400Aのステップ410で既に使用したハッシュ関数を用いて、ワンタイムパスワードで暗号化された対称鍵とワンタイムパスワードのハッシュ値とを第2のサーバに伝送する。このステップは、有利には、暗号化されていない対称鍵が公開されるのを防ぐために、適切な制約を使用して実行される。第2のサーバは、方法400Aのステップ420で既に使用したハッシュ関数を用いて伝送されたハッシュ値のハッシュ値を生成し、さらに使用するためにそれを保存する。
【0065】
ステップ480および492における第1のサーバと第2のサーバとの間の通信は、有利には、2つのサーバの相互の接続間の制約のために記載したアプローチを用いて実行される。
【0066】
ステップ493において、第1のサーバは、ワンタイムパスワードをクライアントに伝送する。
【0067】
ステップ494において、クライアントは、ワンタイムパスワードのハッシュ値に基づいてクライアントを認証するよう第2のサーバに要求する。この目的のために、クライアントはこのハッシュ値と、場合によってはクライアントの識別子とを伝送する。ここでも、方法400Aのステップ410で既に使用したのと同じハッシュ関数が使用される。
【0068】
ステップ495において、第2のサーバは、ステップ493およびステップ494で得られた2重ハッシュ値を比較し、単一のハッシュ値のみが伝送された場合、第2のサーバは、方法400Aのステップ420で既に使用した同じハッシュ関数を用いて2重ハッシュ値自体を生成する。
【0069】
ステップ496において、第2のサーバは、方法100のステップ150で保存された対称鍵で暗号化されたクライアントの秘密鍵と、ステップ492で第1のサーバから第2のサーバに提供されたワンタイムパスワードで暗号化された対称鍵とを伝送することによって、クライアントに応答する。この伝送は、ステップ495において比較された値が同一であることを条件として行われる。
【0070】
ステップ497において、クライアントは、ワンタイムパスワードで暗号化された対称鍵を復号化し、この対称鍵を用いて、対称鍵で暗号化されたクライアントの秘密鍵を復号化する。
【0071】
ステップ498において、クライアントは自身の秘密鍵を新たなパスワードで暗号化する(パスワードneu)。この新たなパスワードは、例えば乱数として生成することができるか、あるいはユーザ入力によって決定することもできる。クライアントはさらに、新たなパスワードのハッシュ値を作成し、暗号化された秘密鍵とハッシュ値とを、両方の値を保存する第2のサーバに伝送する。ハッシュ値の場合、第2のサーバは、有利には、パスワードの2重ハッシュ値を保存する。第2のサーバによるステップ498とそれに続く保存とは、方法400Aのステップ410および420と同様に行われる。古いパスワードの保存されたハッシュ値は、場合によっては、所定時間待った後に削除することができる。
【0072】
図5は、クライアントを認証するための別のサーバ(サーバ3)の使用を含む方法500を示している。この方法によって、ここで説明した実施形態におけるシングルサインオン機構の統合が可能になる。この機構は、例えば、OAuth、Auth0、SAML(Security Assertion Markup Language)などによって実現することができる。第3のサーバは、クライアントを認証するために、例えば、チャレンジ・レスポンス認証を使用することができる。代替的に、パスワードによる認証、PAKE(パスワード認証鍵交換)、例えばWebAuthnなどのパスワード不要の方法など、公知の方法も利用することができる。
【0073】
ステップ510において、クライアントは、第3のサーバにクライアントの認証を要求する。一実施形態では、この要求は、クライアントから第2のサーバへの対応する要求を前提としてもよく、この要求は、クライアントが第3のサーバとの接続を確立することができるようにするために、第3のサーバに関する情報をクライアントに伝送する。
【0074】
ステップ520において、第3のサーバは、例えば
図5に示すチャレンジ・レスポンス認証の範囲内でクライアントを検証する。チャレンジ・レスポンス認証を使用する場合、第3のサーバは、ステップ520において、例えば乱数、有利にはパスワードによって暗号化されたものを含むチャレンジで応答する。一実施形態では、この目的のために第3のサーバが保存し、クライアントが知っているパスワードを使用することができる。
【0075】
ステップ530において、クライアントは、第3のサーバに伝送されるレスポンスで応答する。このレスポンスは、例えば、クライアントが自身パスワードを用いてレスポンスを復号化し、所定の関数(例えば、インクリメント)を用いて変更し、パスワードを鍵として再暗号化することで、乱数から生成することができる。
【0076】
ステップ540において、第3のサーバは、例えば、伝送された暗号化された乱数を復号化し、場合によっては、所定の関数を適用することにより、クライアントのレスポンスを検証する。
【0077】
ステップ550において、第3のサーバは、クライアントの応答に対して、クライアントに伝送されたトークンで応答する。トークンは、クライアントによる識別証明として使用するために設けられているデジタルオブジェクトである。
【0078】
ステップ560において、クライアントは、アクセス要求を第2のサーバに伝送する。アクセス要求には、上記のトークンが含まれる。
【0079】
ステップ570において、第2のサーバは、例えば、第2のサーバに予め保存されていたクライアントに関するデータを用いて、トークンをチェックする。これには、例えばクライアントの識別子が含まれる。
【0080】
プロセス500は、以下でさらに説明するプロセス700に続けて行うことができる。
【0081】
図6は、第3のサーバの関与なしに実行され、方法500に対する代替として提示される方法600を示す。
【0082】
ステップ610において、クライアントは、アクセス要求を第2のサーバに伝送する。場合によっては、この要求はクライアントの識別子を含むことができるか、またはこれまで説明した要求と同様に認証措置をとることができる。
【0083】
ステップ620において、第2のサーバは、クライアントに伝送されるチャレンジで要求に応答する。
【0084】
ステップ630において、クライアントは再びチャレンジに応答し、レスポンスを第2のサーバに伝送する。
【0085】
ステップ640において、第2のサーバは応答を検証する。方法600は、後述する方法700に続けて行うことができる。
【0086】
図7は、対称鍵に関してクライアントの権限の保護を実行する方法700を示している。方法700は、方法500および600のいずれかが準備中に実施されたことを前提とする。
【0087】
ステップ710において、第2のサーバは第2のサーバの秘密鍵を使用してクライアントの権限証明に署名し、その結果を、ここでは署名s2(権限証明c1)と称することにする。権限証明は、データまたはデータ場所を指定し、1人または複数のユーザまたはクライアントを識別することができるデータ構造である。さらに、データ構造には、ユーザ/クライアントが当該データ/データ場所に対して有する、または有するべきアクセス権の定義が含まれていてよい。このようなユーザまたはクライアントを識別する代わりに、データ構造は、証明書チェーンを含むか、または証明書チェーン参照することができる。証明書チェーンはルート証明書を必要とし、ユーザまたはクライアントの識別を検証するために使用することができる。したがって、このような権限証明の署名は、第2のサーバが行うか、認証機関に委任することができる。証明書は、デジタル署名(署名)と特定の当事者または実体との関連付けが可能であることを確認する署名付き文書であり、その当事者または実体は、特定のアクションを実行する権限を与えられている。このようなアクションには、身分証明書または権限証明書の発行、あるいはそのようなアクションの更なる委任が含まれる。このような署名付き証明は、署名の作成に使用した秘密鍵に属する公開鍵を適用することで検証することができる。例えば、第1のサーバは、第2のサーバの公開鍵(公開s2)または証明書チェーンのルート証明書の公開鍵を使用する。
【0088】
一実施形態では、ステップ710は、署名に有効期限を設けることを追加的に含む。例えば、権限証明には、現在のタイムスタンプと期間とを設けることができる。
【0089】
ステップ720において、第2のサーバは、署名された権限証明と、対称鍵で暗号化されたクライアントの秘密鍵とをクライアントに伝送する。
【0090】
ステップ730において、クライアントは、署名された権限証明を第1のサーバに転送し、その過程で対称鍵を要求する。
【0091】
ステップ740において、第1のサーバは、第2のサーバの公開鍵または証明書チェーンを使用して、署名された権限証明を検証する。先に説明したように、この公開鍵は、例えば認証機関から取得してもよいし、ステップ730でクライアントから伝送されたものであってもよい。権限証明が有効期限を持つ実施形態では、この検証は、現在のタイムスタンプと権限証明のタイムスタンプとの差が、権限証明において示されている期間よりも大きいか否かのチェックを含む。この場合、検証および方法700全体が中断される。
【0092】
ステップ750において、第1のサーバは、先に示したように、対称鍵を生成する。代替的に、第1のサーバは、対称鍵をローカルに検索してもよい。この目的のために、クライアントは、ステップ730において、さらに、クライアントの対応する識別子を第1のサーバに伝送してもよい。対称鍵はクライアントに伝送される。
【0093】
ステップ760において、クライアントは、ステップ720で取得された対称鍵で暗号化されたクライアントの秘密鍵を解読する。
【0094】
図8は、第三者に対してクライアントの秘密鍵を発行および解読させる方法800を示している。このようなシナリオは、ユーザがここで説明した方法の1つを自身で実行できない場合、または第1のクライアントはもはや存在せず、新たなクライアントがまだ登録されていないか、またはログインすることができない場合、本発明の実際の用途で必要になり得る。つまり、死亡時または法的な引き渡し命令があった場合にも、ユーザデータへのアクセスが可能となる。
【0095】
方法800の前提条件は、法的または契約的な指示が第2のサーバに提示されることである。この指示は、第2のクライアント(クライアント2)から提示され、第2のサーバでチェックされる。
【0096】
ステップ810において、指示のチェックに成功した後、第2のサーバは、そこに保存されている、対称鍵で暗号化された第1のクライアント(クライアント1)の秘密鍵を第2のクライアントに伝送する。指示の確認は、第2のサーバの管理者が自動で行ってもよいし、手動で行ってもよい。代替的に、この指示は、第2のクライアントの公開鍵を使用して第2のサーバによって自動的に検証される署名付き権限証明を含むこともできる。
【0097】
ステップ820において、第1のサーバは、第1のサーバの秘密鍵と第1のクライアントの公開鍵とから対称鍵を生成するか、または予め保存されていた対称鍵を検索する。対称鍵は、第2のクライアントに伝送される。ステップ820は、権限証明、特に第2のサーバによって署名された権限証明を含む第2のクライアントからの要求に応答して、ステップ810と同じように行われ、第2のサーバによって前述のとおり第1のサーバによってチェックされる。権限証明は、法的または契約的な性質のものであってもよい。第2のクライアントからの要求は、権限証明に加えて、第1のサーバが第1のクライアントまたはそのユーザを識別できるようにするためのクライアントの識別子を含んでもよい。一実施形態では、ステップ820は、第1のクライアントおよび/または第2のサーバにメッセージを伝送することをさらに含んでもよい。このメッセージは、例えば、権限証明および/または対称鍵の発行の要求を出した第2のクライアントに関する情報を含んでもよい。このメッセージは、対称鍵発行の同意についての第1のクライアントへの要求をさらに含んでもよく、そのような実施形態では、第1のサーバは、第1のクライアントからの応答を待機する期間を設定することができ、期間の満了後に第1のサーバにおいて第1のクライアントから応答を受信しない場合、対称鍵の発行を継続または停止することができる。
【0098】
ステップ830において、第2のクライアントは、第1のクライアントの暗号化された秘密鍵を復号化する。
【0099】
本明細書で説明している実施形態は、例えば、上記で説明したクライアントおよびサーバなどの1つ以上のコンピュータによって実行されると、説明した方法を実行する命令を保存するコンピュータ可読媒体によって補完される。同様に、本発明の実施形態は、クライアントおよびサーバ自体ならびにそこから形成されるシステムも含む。
【0100】
機密性を損なうことなく暗号鍵の可用性を確保するための本明細書に開示されている措置は、ほとんどの場合、ユーザの介入を必要とせずに自動的に行われ、これには、秘密鍵および公開鍵の作成、保護、更新および回復が含まれる。同時に、これらの鍵は、転送および/または保存のためにデータの暗号化および/または復号化、データの電子署名および/または個人の電子証明を継続的かつ自動的に行うために使用することができる。したがって、本発明では、データの可用性を保証するために、対象機器でのデータの永続的な保存を平文で暗号化解除する必要がない完全なエンドツーエンドの暗号化を実現することができる。こうした措置は、上述した方法により、特に鍵の定期的な更新によっても、従来のアプローチによって達成されなかった高い安全基準を提供する。本実施形態では、例えば、回復に必要な情報を任意の数のサーバに分散させたり、鍵の回復に特化したプロセスを技術的に強制したりすることで、ユーザまたはシステム管理者のセキュリティ要件およびITインフラに対応した対策が可能である。
【手続補正書】
【提出日】2023-09-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
第1のクライアントの秘密鍵を保護する方法であって、
前記第1のクライアントによって、第1のサーバの公開鍵を要求するステップと、
前記第1のクライアントによって、前記第1のクライアントの前記秘密鍵と前記第1のサーバの前記公開鍵とから対称鍵を生成し、前記対称鍵を用いて前記第1のクライアントの前記秘密鍵を暗号化し、前記第1のクライアントの暗号化された前記秘密鍵を第2のサーバに伝送するステップと、
前記第2のサーバによって、前記第1のクライアントの暗号化された前記秘密鍵を保存するステップと
を含む、方法。
【請求項2】
前記第1のクライアントによって、前記対称鍵を前記第1のサーバから、前記第1のクライアントの暗号化された前記秘密鍵を前記第2のサーバから検索するステップと、
前記第1のサーバによって、前記第1のサーバの秘密鍵と前記第1のクライアントの公開鍵とから前記対称鍵を生成し、前記対称鍵を前記第1のクライアントに伝送するステップであって、ここで、前記第1のサーバの前記秘密鍵が前記第1のサーバの前記公開鍵に属し、前記第1のクライアントの前記公開鍵が前記第1のクライアントの前記秘密鍵に属する、ステップと、
前記第1のクライアントによって、前記第1のクライアントの暗号化された前記秘密鍵を前記対称鍵によって解読するステップと
をさらに含む、請求項1記載の方法。
【請求項3】
前記第1のクライアントの暗号化された前記秘密鍵および/または前記対称鍵の前記検索を、ワンタイムパスワードを用いた暗号化によって実行する、請求項2記載の方法。
【請求項4】
前記第1のクライアントの暗号化された前記秘密鍵を更新するステップをさらに含み、ここで、前記更新は、
前記第1のクライアントによって、前記第1のクライアントの新たな秘密鍵および公開鍵を作成し、前記第1のサーバの新たな公開鍵を前記第1のサーバに要求するステップと、
前記第1のサーバによって、前記第1のサーバの前記新たな公開鍵と新たな秘密鍵を作成し、前記第1のサーバの前記新たな公開鍵を前記第1のクライアントに伝送するステップと、
前記第1のクライアントによって、前記第1のクライアントの前記新たな秘密鍵と前記第1のサーバの前記新たな公開鍵とから新たな対称鍵を生成し、前記第1のクライアントの前記新たな秘密鍵を前記新たな対称鍵で暗号化し、前記第1のクライアントの前記新たな暗号化された秘密鍵を前記第2のサーバに伝送するステップと、
前記第2のサーバによって、前記第1のクライアントの前記新たな暗号化された秘密鍵を記憶し、前記第1のクライアントの以前に記憶された暗号化された前記秘密鍵を削除するステップと
を含む、請求項1記載の方法。
【請求項5】
前記第1のクライアントの前記暗号化された秘密鍵の前記更新を、ユーザ要求に対する応答として実行するステップをさらに含む、請求項4記載の方法。
【請求項6】
前記第1のクライアントの前記暗号化された秘密鍵の前記更新を、規則的な間隔で自動的に実行する、請求項4記載の方法。
【請求項7】
前記第1のクライアントによって、パスワードを用いて前記第1のクライアントの前記秘密鍵を暗号化し、前記パスワードで暗号化された前記第1のクライアントの前記秘密鍵と、前記パスワードから生成されたハッシュ値とを前記第2のサーバに伝送するステップと、
前記第2のサーバによって、前記第1のクライアントの前記パスワードで暗号化された前記秘密鍵と、伝送された前記ハッシュ値のハッシュ値を保存するステップと
をさらに含む、請求項1記載の方法。
【請求項8】
前記第1のクライアントによって、前記パスワードの前記ハッシュ値を前記第2のサーバに伝送するステップと、
前記第2のサーバによって、伝送された前記ハッシュ値のハッシュ値を、前記第1のクライアントの保存された前記ハッシュ値と比較し、前記パスワードで暗号化された前記第1のクライアントの前記秘密鍵を前記第1のクライアントに伝送するステップと、
前記第1のクライアントによって、前記第1のクライアントの伝送された前記秘密鍵を前記パスワードで解読するステップと
をさらに含む、請求項7記載の方法。
【請求項9】
前記第1のクライアントによって、前記第2のサーバに前記パスワードを置き換えるための要求を伝送するステップと、
前記第2のサーバによって、前記第1のサーバに前記パスワードを置き換えるための要求を伝送するステップと、
前記第1のサーバによって、前記第1のサーバの秘密鍵と前記第1のクライアントの前記公開鍵とから前記対称鍵を生成し、ワンタイムパスワードを生成し、前記ワンタイムパスワードで前記対称鍵を暗号化し、前記ワンタイムパスワードのハッシュ値を作成し、前記暗号化された対称鍵および前記ワンタイムパスワードの前記ハッシュ値のハッシュ値を前記第2のサーバに伝送し、前記ワンタイムパスワードを前記1のクライアントに伝送するステップと、
前記第1のクライアントによって、前記第2のサーバに前記第1のクライアントを認証する要求を伝送するステップであって、ここで、前記要求は、前記ワンタイムパスワードのハッシュ値を含む、ステップと、
前記第2のサーバによって、前記第1のサーバの前記ハッシュ値と、前記第1のクライアントによって伝送された前記ワンタイムパスワードの前記ハッシュ値のハッシュ値とを比較し、前記第1のクライアントの前記対称鍵で暗号化された前記秘密鍵および前記ワンタイムパスワードで暗号化された前記対称鍵を前記第1のクライアントに伝送するステップと、
前記第1のクライアントによって、前記暗号化された対称鍵を前記ワンタイムパスワードで復号化し、前記第1のクライアントの前記暗号化された秘密鍵を前記対称鍵で復号化し、前記第1のクライアントの前記秘密鍵を新たなパスワードで暗号化し、前記新たなパスワードで暗号化された前記第1のクライアントの前記秘密鍵および前記新たなパスワードのハッシュ値を前記第2のサーバに伝送するステップと
をさらに含む、請求項7記載の方法。
【請求項10】
前記第1のクライアントによって、第3のサーバに認証要求を伝送するステップと、
前記第3のサーバによって、前記第1のクライアントにチャレンジを伝送するステップと、
前記第1のクライアントによって、前記第3のサーバに前記チャレンジに対するレスポンスを伝送するステップと、
前記第3のサーバによって、前記レスポンスを検証し、前記第1のクライアントにアクセストークンを伝送するステップと、
前記第1のクライアントによって、前記第2のサーバにアクセス要求を伝送するステップであって、前記アクセス要求は前記アクセストークンを含む、ステップと、
前記第2のサーバによって、前記アクセストークンをチェックするステップと
をさらに含む、請求項1記載の方法。
【請求項11】
前記第1のクライアントによって、前記第2のサーバにアクセス要求を伝送するステップと、
前記第2のサーバによって、前記第1のクライアントにチャレンジを伝送するステップと、
前記第1のクライアントによって、前記第2のサーバに前記チャレンジに対するレスポンスを伝送するステップと、
前記第2のサーバによって、前記チャレンジに基づいて前記レスポンスを検証するステップと
をさらに含む、請求項1記載の方法。
【請求項12】
前記第2のサーバによって、前記第2のサーバの前記秘密鍵で前記第1のクライアントの権限証明に署名し、署名された前記権限証明および前記対称鍵で暗号化された前記クライアントの前記秘密鍵を前記第1のクライアントに伝送するステップと、
前記第1のクライアントによって、前記署名された権限証明を前記第1のサーバに伝送するステップと、
前記第1のサーバによって、前記第2のサーバの前記認証された公開鍵を用いて前記第1のクライアントの前記署名された権限証明を検証し、前記第1のサーバの前記秘密鍵と前記第1のクライアントの前記公開鍵とから前記対称鍵を生成し、前記第1のクライアントに前記対称鍵を伝送するステップと、
前記第1のクライアントによって、前記第1のクライアントの前記暗号化された秘密鍵を前記対称鍵で解読するステップと
をさらに含む、請求項10記載の方法。
【請求項13】
前記第1のクライアントの前記権限証明の署名が、1つ以上のタイムスタンプで前記権限証明を署名するステップを含み、ここで、前記タイムスタンプによって定義される期間が経過すると、前記署名された権限証明の前記検証が中断される、請求項12記載の方法。
【請求項14】
前記第2のサーバによって、前記対称鍵で暗号化された前記第1のクライアントの前記秘密鍵を第2のクライアントに伝送するステップと、
前記第1のサーバによって、前記第1のサーバの前記秘密鍵と前記第1のクライアントの前記公開鍵とから前記対称鍵を生成し、前記対称鍵を前記第2のクライアントに伝送するステップと、
前記第2のクライアントによって、前記第1のクライアントの前記秘密鍵を前記対称鍵を用いて解読するステップと
をさらに含む、請求項1記載の方法。
【請求項15】
クライアントの秘密鍵を保護するためのシステムであって、
クライアントと、第1のサーバと、第2のサーバと
を含み、
前記クライアントは、前記第1のサーバの公開鍵を要求するように構成されており、
前記第1のサーバは、前記第1のサーバの前記公開鍵を前記クライアントに伝送するように構成されており、
前記クライアントは、さらに、前記クライアントの前記秘密鍵と前記第1のサーバの前記公開鍵とから対称鍵を生成し、前記クライアントの前記秘密鍵を前記対称鍵で暗号化し、前記クライアントの暗号化された前記秘密鍵を第2のサーバに伝送するように構成されており、
前記第2のサーバは、前記クライアントの暗号化された前記秘密鍵を保存するように構成されている、
システム。
【請求項16】
前記クライアントはさらに、前記対称鍵を前記第1のサーバから、前記クライアントの暗号化された前記秘密鍵を前記第2のサーバから検索し、前記対称鍵を用いて前記クライアントの暗号化された前記秘密鍵を解読するように構成されている、請求項15記載のシステム。
【請求項17】
前記第2のサーバによって、前記第2のサーバの前記秘密鍵で前記第1のクライアントの権限証明に署名し、前記署名された権限証明と前記対称鍵を用いて暗号化された前記クライアントの前記秘密鍵を前記第1のクライアントへ伝送するステップと、
前記第1のクライアントによって、前記署名された権限証明を前記第1のサーバへ伝送するステップと、
前記第1のサーバによって、前記第2のサーバの前記認証された公開鍵によって前記第1のクライアントの前記署名された権限証明を検証し、前記第1のサーバの前記秘密鍵と前記第1のクライアントの前記公開鍵から前記対称鍵を作成し、前記対称鍵を前記第1のクライアントへ伝送するステップと、
前記第1のクライアントによって、前記第1のクライアントの前記暗号化された秘密鍵を前記対称鍵で解読するステップと
をさらに含む、請求項11記載の方法。
【請求項18】
前記第1のクライアントの前記権限証明の署名が、1つ以上のタイムスタンプで前記権限証明を署名するステップを含み、ここで、前記タイムスタンプによって定義される期間が経過すると、前記署名された権限証明の前記検証が中断される、請求項17記載の方法。