IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ プラネットウェイ コーポレイションの特許一覧

特表2023-519082信頼できるサーバを用いるデジタル署名システム
<>
  • 特表-信頼できるサーバを用いるデジタル署名システム 図1
  • 特表-信頼できるサーバを用いるデジタル署名システム 図2
  • 特表-信頼できるサーバを用いるデジタル署名システム 図3
  • 特表-信頼できるサーバを用いるデジタル署名システム 図4
  • 特表-信頼できるサーバを用いるデジタル署名システム 図5
  • 特表-信頼できるサーバを用いるデジタル署名システム 図6A
  • 特表-信頼できるサーバを用いるデジタル署名システム 図6B
  • 特表-信頼できるサーバを用いるデジタル署名システム 図7
  • 特表-信頼できるサーバを用いるデジタル署名システム 図8
  • 特表-信頼できるサーバを用いるデジタル署名システム 図9
  • 特表-信頼できるサーバを用いるデジタル署名システム 図10
  • 特表-信頼できるサーバを用いるデジタル署名システム 図11
  • 特表-信頼できるサーバを用いるデジタル署名システム 図12
  • 特表-信頼できるサーバを用いるデジタル署名システム 図13
  • 特表-信頼できるサーバを用いるデジタル署名システム 図14
  • 特表-信頼できるサーバを用いるデジタル署名システム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-05-10
(54)【発明の名称】信頼できるサーバを用いるデジタル署名システム
(51)【国際特許分類】
   H04L 9/32 20060101AFI20230428BHJP
   H04L 9/14 20060101ALI20230428BHJP
【FI】
H04L9/32 200B
H04L9/14
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022543431
(86)(22)【出願日】2020-01-17
(85)【翻訳文提出日】2022-08-18
(86)【国際出願番号】 US2020014144
(87)【国際公開番号】W WO2021145894
(87)【国際公開日】2021-07-22
(81)【指定国・地域】
(71)【出願人】
【識別番号】520127764
【氏名又は名称】プラネットウェイ コーポレイション
(74)【代理人】
【識別番号】100087642
【弁理士】
【氏名又は名称】古谷 聡
(74)【代理人】
【識別番号】100082946
【弁理士】
【氏名又は名称】大西 昭広
(74)【代理人】
【識別番号】100195693
【弁理士】
【氏名又は名称】細井 玲
(72)【発明者】
【氏名】プリッサル,ヤーン
(72)【発明者】
【氏名】ブルダス,アート
(72)【発明者】
【氏名】サアレペラ,マート
(57)【要約】
拡張可能で信頼できるサーバを用いるデジタル署名システム用の方法とシステムが開示される。システムは、複数のバックエンドサーバとそれぞれ通信する複数のフロントエンドサーバを含む。遠隔のアプリケーションサーバは、署名要求をフロントエンドサーバの1つに送る。署名要求は、少なくとも2つの公開鍵を含み、当該公開鍵はそれぞれ、それらに埋め込まれた異なるサーバ識別子を有する。バックエンドサーバは、サーバ識別子の1つを抽出し、対応するバックエンドサーバで署名生成プロセスを試してみる。そのバックエンドサーバが応答しない場合、フロントエンドサーバは、別の公開鍵からサーバ識別子を抽出し、そのバックエンドサーバで署名生成プロセスを開始する。幾つかのシステムにおいて、遠隔のアプリケーションサーバは、1つのフロントエンドサーバがダウンしている場合に、アプリケーションサーバがバックアップのフロントエンドサーバと通信することができるように、複数のフロントエンドサーバとの所定の関係を有する。
【選択図】図1
【特許請求の範囲】
【請求項1】
デジタル署名を生成するためのシステムであって、
第1のバックエンドサーバと、
第2のバックエンドサーバと、
フロントエンドサーバとを含み、前記フロントエンドサーバは、
遠隔のアプリケーションサーバから署名要求を受け取り、その署名要求は暗号学的に埋め込まれた第1のサーバ識別子を備える第1の総合的公開鍵、及び暗号学的に埋め込まれた第2のサーバ識別子を備える第2の総合的公開鍵を含み、
前記第1の総合的公開鍵から前記暗号学的に埋め込まれた第1のサーバ識別子を抽出し、
前記第1のサーバ識別子に対応する前記第1のバックエンドサーバに前記署名要求を転送し、
前記第1のバックエンドサーバが利用可能でないという判断に応答して、前記第2の総合的公開鍵から前記暗号学的に埋め込まれた第2のサーバ識別子を抽出し、前記第2のサーバ識別子に対応する前記第2のバックエンドサーバに前記署名要求を転送し、
第2の署名を前記アプリケーションサーバに転送するように構成され、
前記第1のバックエンドサーバ及び前記第2のバックエンドサーバはそれぞれ、
総合的公開鍵と関連付けられた複数の遠隔のセキュリティデバイスに前記署名要求を転送し、
前記複数の遠隔のセキュリティデバイスのそれぞれから第1の署名を受け取り、
前記第1の署名に基づいて、結合署名を生成し、
前記結合署名および最終決定鍵に基づいて前記第2の署名を生成し、前記最終決定鍵は、バックエンドサーバのサーバ識別子に基づいて暗号学的に生成されており、
前記第2の署名を前記フロントエンドサーバに転送するように構成されている、システム。
【請求項2】
前記結合署名は、複合鍵署名方式を用いて生成される、請求項1に記載のシステム。
【請求項3】
前記結合署名は、結合鍵署名方式を用いて生成される、請求項1に記載のシステム。
【請求項4】
前記フロントエンドサーバは、前記署名要求を転送することに応じて、前記フロントエンドサーバが前記第1のバックエンドサーバから肯定応答を受け取ることができない際に、前記第1のバックエンドサーバが利用可能でないと判断する、請求項1に記載のシステム。
【請求項5】
前記フロントエンドサーバは、前記フロントエンドサーバが時間の閾値期間内に前記第2の署名を受け取ることができない際に、前記第1のバックエンドサーバが利用可能でないと判断する、請求項1に記載のシステム。
【請求項6】
デジタル署名を生成するためのシステムであって、
第1のバックエンドサーバと、
第2のバックエンドサーバと、
第1のフロントエンドサーバと、
第2のフロントエンドサーバと、
証明書オーソリティとを含み、
前記証明書オーソリティは、アプリケーションサーバからユーザ識別子を含む証明書要求を受け取ることに応じて、第1の公開鍵を備える第1の証明書および第2の公開鍵を備える第2の証明書を前記アプリケーションサーバに転送するように構成され、前記第1の証明書および前記第2の証明書が前記ユーザ識別子と関連付けられており、
前記第1のフロントエンドサーバ及び前記第2のフロントエンドサーバはそれぞれ、
前記アプリケーションサーバから署名要求を受け取り、前記署名要求は、暗号学的に埋め込まれた第1のサーバ識別子を備える前記第1の公開鍵および暗号学的に埋め込まれた第2のサーバ識別子を備える前記第2の公開鍵を含み、
前記第1の公開鍵から前記暗号学的に埋め込まれた第1のサーバ識別子を抽出し、
前記第1のサーバ識別子に対応する前記第1のバックエンドサーバに前記署名要求を転送し、
前記第1のバックエンドサーバが利用可能でないという判断に応答して、前記第2の公開鍵から前記暗号学的に埋め込まれた第2のサーバ識別子を抽出し、前記第2のサーバ識別子に対応する前記第2のバックエンドサーバに前記署名要求を転送し、
第2の署名を前記アプリケーションサーバに転送するように構成され、
前記第1のバックエンドサーバ及び前記第2のバックエンドサーバはそれぞれ、
総合的公開鍵と関連付けられた複数の遠隔のセキュリティデバイスに前記署名要求を転送し、
前記複数の遠隔のセキュリティデバイスのそれぞれから第1の署名を受け取り、
前記第1の署名に基づいて結合署名を生成し、
前記結合署名および最終決定鍵に基づいて前記第2の署名を生成し、前記最終決定鍵は、バックエンドサーバのサーバ識別子に基づいて暗号学的に生成されており、
前記第2の署名をフロントエンドサーバに転送するように構成されている、システム。
【請求項7】
前記結合署名は、複合鍵署名方式を用いて生成される、請求項6に記載のシステム。
【請求項8】
前記結合署名は、結合鍵署名方式を用いて生成される、請求項6に記載のシステム。
【請求項9】
前記フロントエンドサーバは、前記署名要求を転送することに応じて、前記フロントエンドサーバが前記第1のバックエンドサーバから肯定応答を受け取ることができない際に、前記第1のバックエンドサーバが利用可能でないと判断する、請求項6に記載のシステム。
【請求項10】
前記フロントエンドサーバは、前記フロントエンドサーバが時間の閾値期間内に前記第2の署名を受け取ることができない際に、前記第1のバックエンドサーバが利用可能でないと判断する、請求項6に記載のシステム。
【請求項11】
前記証明書オーソリティは、前記第1又は第2のバックエンドサーバの一方が利用可能でないという判断に応じて、前記第1の証明書および前記第2の証明書に基づいて第3のバックエンドサーバと関連付けられた第3の証明書を生成するように更に構成されている、請求項6に記載のシステム。
【請求項12】
デジタル署名を生成するための方法であって、
フロントエンドサーバにおいて、遠隔のアプリケーションサーバから署名要求を受け取り、前記署名要求は、暗号学的に埋め込まれた第1のサーバ識別子を備える第1の総合的公開鍵、及び暗号学的に埋め込まれた第2のサーバ識別子を備える第2の総合的公開鍵を含み、
前記フロントエンドサーバにより、前記第1の総合的公開鍵から前記暗号学的に埋め込まれた第1のサーバ識別子を抽出し、
前記フロントエンドサーバにより、前記第1のサーバ識別子に対応する第1のバックエンドサーバに前記署名要求を転送し、
前記第1のバックエンドサーバが利用可能でないという判断に応答して、前記フロントエンドサーバにより、前記第2の総合的公開鍵から前記暗号学的に埋め込まれた第2のサーバ識別子を抽出し、前記第2のサーバ識別子に対応する第2のバックエンドサーバに前記署名要求を転送し、
前記第1のバックエンドサーバ又は前記第2のバックエンドサーバにより、総合的公開鍵と関連付けられた複数の遠隔のセキュリティデバイスに前記署名要求を転送し、
前記第1のバックエンドサーバ又は前記第2のバックエンドサーバにより、前記複数の遠隔のセキュリティデバイスのそれぞれから第1の署名を受け取り、
前記第1のバックエンドサーバ又は前記第2のバックエンドサーバにより、前記第1の署名に基づいて、結合署名を生成し、
前記第1のバックエンドサーバ又は前記第2のバックエンドサーバにより、前記結合署名および最終決定鍵に基づいて第2の署名を生成し、前記最終決定鍵は、バックエンドサーバのサーバ識別子に基づいて暗号学的に生成されており、
前記第1のバックエンドサーバ又は前記第2のバックエンドサーバにより、前記第2の署名を前記フロントエンドサーバに転送し、
前記フロントエンドサーバにより、前記第2の署名を前記アプリケーションサーバに転送することを含む、方法。
【請求項13】
前記結合署名は、複合鍵署名方式を用いて生成される、請求項12に記載の方法。
【請求項14】
前記結合署名は、結合鍵署名方式を用いて生成される、請求項12に記載の方法。
【請求項15】
前記第1のバックエンドサーバが利用可能でないという判断は、前記署名要求を転送することに応じて、前記フロントエンドサーバが前記第1のバックエンドサーバから肯定応答を受け取ることができない際に判断することを含む、請求項12に記載の方法。
【請求項16】
前記フロントエンドサーバは、前記フロントエンドサーバが時間の閾値期間内に前記第2の署名を受け取ることができない際に、前記第1のバックエンドサーバが利用可能でないと判断する、請求項12に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は概して、安全(セキュア)な電子通信および電子商取引に関し、より具体的には、信頼できるサーバを用いるデジタル署名システムに関する。
【背景技術】
【0002】
ますます、ドキュメント(文書、書類)はデジタル的に署名されている。デジタル署名は、(a)ドキュメントに署名する人が、署名する際に申告した本人であることを認証し、(b)署名されたドキュメントが認証されていることを法的に有効にするシステムを利用する。このように、当該ドキュメントを信頼する人は、ドキュメントが認証されたものであり且つ当該ドキュメントに署名した人がそれを署名したことを否認することができないことを確信することができる。これらデジタル署名システムは、秘密鍵および個人と関連付けられた公開鍵に依存する非対称暗号を使用することが多い。署名を偽造するために、悪意のある当事者は、秘密鍵を取得する又は(可能なら)署名方式を破壊する(即ち、秘密鍵を持たずにメッセージに署名する)計算コストをかける必要がある。デジタル署名システムの耐攻撃性(攻撃耐性)は、数学的耐性(例えば、署名を数学的に破壊することによりデジタル署名を偽造する能力)、又は物理的耐性(例えば、署名を偽造するために物理的デバイスを改ざんするなど)に分類され得る。デジタル署名の成長は、追跡される必要がある公開鍵および処理される必要がある署名要求の成長に付随して起こる。数学的耐性および物理的耐性が向上するにつれて、信頼性があり且つ拡張可能なデジタル署名インフラストラクチャーの必要性が増加している。
【0003】
概要
添付の特許請求の範囲は、本出願を定義する。本開示は、実施形態の態様を要約し、特許請求の範囲を制限するために使用されるべきではない。以下の図面および詳細な説明を検討する際に当業者には明らかになるように、本明細書で説明される技術に従って、他の具現化形態が企図され、これら具現化形態は、本出願の範囲内にあることが意図される。
【0004】
デジタル署名を生成するための例示的なシステムは、第1のバックエンドサーバ、第2のバックエンドサーバ、及びフロントエンドサーバを含む。フロントエンドサーバは、遠隔のアプリケーションサーバから署名要求を受け取る。その署名要求は暗号学的に埋め込まれた第1のサーバ識別子を備える第1の総合的公開鍵、及び暗号学的に埋め込まれた第2のサーバ識別子を備える第2の総合的公開鍵を含む。フロントエンドサーバは、第1の総合的公開鍵から暗号学的に埋め込まれた第1のサーバ識別子を抽出する。次いで、フロントエンドサーバは、第1のサーバ識別子に対応する第1のバックエンドサーバに署名要求を転送する。第1のバックエンドサーバが利用可能でないという判断に応答して、フロントエンドサーバは、第2の総合的公開鍵から暗号学的に埋め込まれた第2のサーバ識別子を抽出し、第2のサーバ識別子に対応する第2のバックエンドサーバに署名要求を転送する。バックエンドサーバに応答することは、総合的公開鍵と関連付けられた複数の遠隔のセキュリティデバイスに署名要求を転送する。次いで、バックエンドサーバは、前記複数の遠隔のセキュリティデバイスのそれぞれから第1の署名を受け取り、第1の署名に基づいて、結合署名を生成する。次いで、バックエンドサーバは、結合署名および最終決定鍵に基づいて第2の署名を生成する。最終決定鍵は、バックエンドサーバのサーバ識別子に基づいて暗号学的に生成される。バックエンドサーバは、第2の署名をフロントエンドサーバに転送する。次いで、フロントエンドサーバは、第2の署名を遠隔のアプリケーションサーバに転送する。
【0005】
本発明のより良い理解のために、以下の図面に示された実施形態を参照することができる。図面の構成要素は、必ずしも一律の縮尺に従っておらず、関連した要素が省略される場合があり、又は場合によっては、本明細書で説明される新規な特徴要素を強調する及び明確に示すように、一部は誇張され得る。更に、システムの構成要素は、当該技術で知られるように、様々に構成され得る。更に、図面において、同様の参照符号は、幾つかの図面の全体にわたって、対応する部品を示す。
【図面の簡単な説明】
【0006】
図1】本開示の技術による、信頼できるサーバを用いるデジタル署名システムを具現化するためのシステムを示す。
【0007】
図2】単一の秘密鍵を用いる従来の非対称暗号を利用するシステムを示す。
【0008】
図3】単一の秘密鍵に依存する複数の秘密鍵シェアを使用する分割鍵非対称暗号を利用するシステムを示す。
【0009】
図4】互いに無関係である複数の秘密鍵を使用する複合鍵非対称暗号を利用するシステムを示す。
【0010】
図5】特定のサーバ情報を用いて総合的公開鍵および最終決定された署名(最終決定署名と称する)を生成するシステムを示す。
【0011】
図6A】署名オーソリティと協働して、ユーザと関連付けられることになる証明書を生成する証明書オーソリティのブロック図である。
図6B】署名オーソリティと協働して、ユーザと関連付けられることになる証明書を生成する証明書オーソリティのブロック図である。
【0012】
図7】ユーザと関連付けられた複数の証明書を生成するためのシステムのブロック図である。
【0013】
図8】デジタル署名により署名されたドキュメントを生成するためにユーザと関連付けられた冗長な証明書を使用するシステムのブロック図である。
【0014】
図9図7図8の非対称暗号のデバイス側部分を具現化するセキュリティデバイスを示す。
【0015】
図10図9のセキュリティデバイスの電子的構成要素のブロック図である。
【0016】
図11図1図8のアプリケーションサーバにより具現化され得る、デジタル署名により署名されたドキュメントを生成するためにユーザと関連付けられた冗長な証明書を使用するための方法の流れ図である。
【0017】
図12図8のフロントエンドサーバ(単数または複数)により具現化され得る、デジタル署名により署名されたドキュメントを生成するためにユーザと関連付けられた冗長な証明書を使用するための方法の流れ図である。
【0018】
図13図1図8のシステムにより具現化され得るデジタルドキュメントの署名を生成するための方法の流れ図である。
図14図1図8のシステムにより具現化され得るデジタルドキュメントの署名を生成するための方法の流れ図である。
【0019】
図15】証明書を再発行するための方法の流れ図である。
【0020】
例示的な実施形態の詳細な説明
本発明は様々な形態で具現化され得るが、本開示が本発明の例示であると考えられるべきであり且つ本発明を図示された特定の実施形態に制限することを意図されていないという理解の下に、幾つかの例示的で制限しない実施形態が図面に示され、以下で説明される。
【0021】
デジタル署名の台頭と共に、コンピュータインフラストラクチャーは、多数の署名を毎日生成するタスクを確実に処理する必要がある。署名は、サードパーティのアプリケーションサーバにより要求される場合が多い。例えば、署名は、顧客がウエブサイトのプライバシーポリシー及び個人データポリシーを読んだことを承認するために必要とされる場合があり、又は署名は、顧客が税務書類または商事契約(例えば、住宅ローンの申し込みなど)のような政府文書に署名する際に必要とされる場合がある。しかしながら、サードパーティのアプリケーションサーバは、デジタル署名方式に無関係であり、実際の署名プロセスを処理するために配備されていない。署名生成プロセスは、1つ又は複数の物理的なセキュリティデバイスが署名生成プロセスで使用される場合に、より複雑になる。サードパーティのアプリケーションサーバが物理的なセキュリティデバイスに如何にして連絡するかを知ることは実用的ではない。更に、デジタル署名の役割が至る所に存在するにつれて、インフラストラクチャー機構は、信頼できる方法でセキュリティデバイスを追加する及び署名の生成を処理することが必要とされる。更に、信頼できるシステムは、(a)秘密鍵が作成されているデバイスから絶対に転送されない、及び(b)システムの1つのサーバがオフラインである際に、デジタル署名が途絶せずに依然として作成され得るように、構成されるべきである。
【0022】
後述されるように、署名オーソリティ(Signature Authority:SA)は、バックエンドサーバ及びフロントエンドサーバを含む。バックエンドサーバは、署名機能を実行し、特定のセキュリティデバイス及び/又はセキュリティトークンと通信する。各バックエンドサーバは、一意の識別子(「BESID」)を有する。フロントエンドサーバは、署名要求を処理するためにサードパーティのアプリケーションサーバと通信する。顧客は署名オーソリティに登録する。登録プロセス中、顧客は、それら自体を1つ又は複数の物理的なセキュリティデバイス及び/又は物理的なセキュリティトークンと関連付ける。セキュリティデバイス(単数または複数)及び/又はセキュリティトークン(単数または複数)は、2つ以上のバックエンドサーバに割り当てられ、これらの特定のバックエンドサーバが特定のセキュリティデバイス及び/又はセキュリティトークンと通信するのに必要な情報を有するようになっている。更に、これらバックエンドサーバはそれぞれ、特定のバックエンドサーバを確認(識別、認証)する証明書オーソリティ(Certificate Authority:CA)でもって証明書を生成するためにセキュリティデバイス及び/又はセキュリティトークンの一意の情報を使用する。
【0023】
複合鍵方式が使用される場合、(a)セキュリティデバイスが秘密鍵および公開鍵を生成して、指定されたバックエンドサーバに公開鍵を供給し、及び/又は(b)セキュリティトークンが使用される場合、割り当てられたバックエンドサーバが秘密鍵および顧客と関連付けられた公開鍵を生成する。2つ以上の独立した公開鍵を用いて、バックエンドサーバはそれぞれ、複合公開鍵を作成する。次いで、バックエンドサーバはそれぞれ、複合公開鍵およびBESIDに基づいて、総合的公開鍵を作成する。バックエンドサーバはそれぞれ、別個に総合的公開鍵、そのBESID及び一意のクライアント識別子(「CID」)を、証明書オーソリティ(CA)に送信する。証明書オーソリティは、CIDと関連した別個の証明書を生成する。幾つかの例において、証明書オーソリティ(CA)は、証明書の1つを「一次証明書」として指定し、他の証明書を「二次証明書」として指定する。証明書オーソリティ(CA)は、CIDが添付してある要求を受け取ることに応じて証明書を供給する、これら証明書の公開リポジトリである。
【0024】
分割鍵方式が使用される場合、各バックエンドサーバは、2つ以上の鍵シェア及び公開鍵を生成する。各バックエンドサーバは、鍵シェアの1つをセキュリティデバイスと共有(共用)し、鍵シェアの1つを保持する。セキュリティデバイスは、鍵シェアを生成したバックエンドサーバのBESIDと関連した鍵シェアのそれぞれを格納する。次いで、バックエンドサーバはそれぞれ、公開鍵およびそれらのBESIDに基づいて総合的公開鍵を作成する。バックエンドサーバはそれぞれ、総合的公開鍵、そのBESID及び一意のクライアント識別子(「CID」)を証明書オーソリティ(CA)に別個に送信する。
【0025】
セキュリティデバイスは、(a)別個に生成された秘密鍵を安全に格納する、(b)署名者からの入力を受け取る、(c)その入力に基づいて署名者の身元を信頼できるように認証する、(d)署名を生成するためにメッセージを受け取る、(e)別個に生成された秘密鍵およびメッセージでもって署名を生成する、及び(f)署名を要求するコンピューティングデバイス(例えば、サーバなど)に署名を送信することができる任意の携帯用電子デバイスであることができる。幾つかの例において、セキュリティデバイスは、スマートフォン、スマートウォッチ、タブレット型コンピュータ、電子機器が埋め込まれた宝石類(例えば、ブレスレット、指輪、ブローチなど)、スマートカード(例えば、クレジットカード、IDカードなど)、及び/又は電子印鑑などであることができる。幾つかの例において、各セキュリティデバイスは、任意の他のセキュリティデバイスから別個に署名者から入力(例えば、指紋のような生体識別子、パスワードなど)を物理的に受け取るように構成される。幾つかの例において、各セキュリティデバイスは、コンピューティングデバイスと通信する(例えば、インターネットに対する無線接続を介してなど)。代案として、幾つかの例において、セキュリティデバイスの1つは、コンピューティングデバイスと通信する(例えば、インターネットに対する無線接続を介してなど)一次デバイスとしての役割を果たす一方で、他のセキュリティデバイスは、コンピューティングデバイスと通信するためにローカルエリアネットワーク(例えば、無線ローカルエリアネットワーク、ブルートゥース(登録商標)ローエナジー接続など)を介して一次デバイスと通信する。
【0026】
セキュリティトークンは、バックエンドサーバがデジタル署名を生成している際に、顧客の身元を認証するためにバックエンドサーバと直接的に又は間接的に(例えば、モバイルデバイスを介して)通信する。セキュリティトークンは、任意のモバイルデバイスであることができ、当該モバイルデバイスは、バックエンドサーバと通信する且つユーザが当該モバイルデバイスに認証を提供する際にユーザに信用証明物(認証情報)を安全に提供することができる。例えば、当該デバイスは、生体認証センサ及び/又は生体認証入力(例えば、虹彩スキャナ、指紋スキャナなど)を有することができる。別の例として、当該デバイスは、GPSを有する場合があり、ユーザを認証するためにジオフェンシング又は別のデバイス(例えば、セキュリティデバイス)に対するその近接性に依存する場合がある。幾つかの例において、セキュリティトークンは、現在の署名生成に関与していない別のセキュリティデバイスであることができる。幾つかの例において、セキュリティトークンは、電子機器が埋め込まれた宝石類(例えば、ブレスレット、指輪、ブローチなど)又はスマートカード(例えば、クレジットカード、IDカードなど)である。
【0027】
デジタル署名が作成されるべきである場合、顧客は、信用証明物および/または顧客のCIDをアプリケーションサーバ(例えば、顧客を確認するためにアプリケーションサーバにより管理された信用証明物)に提供する。アプリケーションサーバは、証明書オーソリティ(CA)から複数の証明書を検索して取り出すために、顧客の身元を使用する。アプリケーションサーバは、署名オーソリティの少なくとも2つのフロントエンドサーバと確立された関係(例えば、アプリケーションサーバが署名オーソリティに登録する際に確立されたなど)を有する。幾つかの例において、フロントエンドサーバの一方は、「一次サーバ」として指定されることができ、フロントエンドサーバの他方は、「二次サーバ」として指定され得る。2つより多いフロントエンドサーバがアプリケーションサーバと関連付けられる場合、署名オーソリティ(SA)は、バックエンドサーバの順序または優先順位を指定することができる。アプリケーションサーバは、一次(又は第1の)フロントエンドサーバに署名要求を送信する。署名要求は、証明書オーソリティ(CA)から検索して取り出された複数の証明書およびメッセージを含む。当該メッセージは、原初のメッセージ(例えば、署名されるべきデジタルドキュメント)、又は当該原初のメッセージに暗号学的ハッシュ関数(例えば、SHA-256など)を適用することにより当該原初のメッセージから算出されたメッセージダイジェストであることができる。アプリケーションサーバが時間の閾値期間(例えば、500ミリ秒、1秒など)内に一次フロントエンドサーバからその要求の肯定応答を受け取らない場合、アプリケーションサーバは、署名要求を二次フロントエンドサーバに再送する。2つより多い指定されたフロントエンドサーバが存在する場合、このプロセスは、アプリケーションサーバがその要求の肯定応答を受け取るまで繰り返される。肯定応答が受け取られない場合、アプリケーションサーバは、ユーザにエラーメッセージを生成する。
【0028】
フロントエンドサーバは、一次(又は第1の)証明書からBESIDを抽出して(取り出して)、当該BESIDと関連したバックエンドサーバに署名要求を転送する。フロントエンドサーバが時間の閾値期間(例えば、500ミリ秒、1秒など)内に一次バックエンドサーバからその要求の肯定応答を受け取らない場合、フロントエンドサーバは二次証明書からBESIDを取り出して、そのバックエンドサーバに署名要求を転送する。署名要求を添付する2つより多い証明書が存在する場合、このプロセスは、フロントエンドサーバがその要求の肯定応答を受け取るまで、繰り返される。肯定応答が受け取られない場合、フロントエンドサーバは、エラーメッセージを生成して、署名要求を送信したアプリケーションサーバにそれを送る。
【0029】
バックエンドサーバは、セキュリティデバイス及び/又はセキュリティトークンと連係して、メッセージで署名を生成する。次いで、バックエンドサーバは、最終決定署名を生成するために最終決定鍵を使用する。バックエンドサーバは、署名要求を送信したフロントエンドサーバに最終決定署名を送る。次いで、フロントエンドサーバは、署名を要求したアプリケーションサーバに、最終決定署名を転送する。次いで、アプリケーションサーバは、最終決定署名をデジタルドキュメントに付加する。その後、必要な場合に、デジタル署名は、証明書を用いて検証され得る。
【0030】
図1は、本開示の教示による、信頼できるサーバを用いてデジタル署名システムを具現化するためのシステム100を示す。システム100は、安全かつ信頼できるデジタル署名を生成する。図示された例において、システム100は、署名オーソリティ102、証明書オーソリティ104、及び1つ又は複数のアプリケーションサーバ106を含む。
【0031】
署名オーソリティ102は、アプリケーションサーバ106とアプリケーションサーバ106のユーザ110により処理される1つ又は複数のセキュリティデバイス108との間の仲介装置としての役割を果たす。セキュリティデバイス108が署名オーソリティ102に登録される場合、署名オーソリティ102は、セキュリティデバイス(単数または複数)108と関連した複数の証明書を生成するために、証明書オーソリティ104に関する情報を収集および/または生成する。署名オーソリティ102は、セキュリティデバイス(単数または複数)108と連係して、アプリケーションサーバ106の1つにより送信される証明書を含む署名要求に応答して、デジタル署名を生成する。
【0032】
証明書オーソリティ104は、証明書を生成および格納する。証明書オーソリティ104は、署名オーソリティ102からの入力に基づいて、証明書を生成する。当該入力は、公開鍵およびクライアント識別子(CID)を含む。証明書オーソリティ104は、生成された証明書をデータベース(場合によっては、「証明書リポジトリ」又は「公開鍵リポジトリ」と呼ばれる)に格納する。証明書オーソリティ104は、証明書と関連したCIDを受け取ることに応じて、格納された証明書をアプリケーションサーバ106に供給する(例えば、証明書は、CIDを用いてそれらを要求するエンティティが自由に利用できる)。
【0033】
顧客110は、アプリケーションサーバ106が署名要求を生成するように、アプリケーションサーバ106と対話することができる。例えば、顧客110は、ドキュメントに署名している、又はウェブサイト上でプライバシーポリシー及びデータ使用ポリシーを受諾している場合がある。アプリケーションサーバ106が、デジタル署名を要求する場合、アプリケーションサーバ106は、直接的または間接的に顧客110により供給されるCIDに関連した証明書を証明書オーソリティ104から取得する。署名オーソリティ104は、アプリケーションサーバ106が顧客110のセキュリティデバイス(単数または複数)108との直接的関係を必要としないように、署名プロセスを管理する。アプリケーションサーバ106は、予め確立された関係を介して、署名オーソリティ102に通信可能に結合される。例えば、アプリケーションサーバ106の所有者が署名オーソリティ102からのデジタル署名を受け入れることを望む場合、署名オーソリティ102は、如何にして署名要求を送るべきかに関する設定を提供することができる。
【0034】
図2は、単一の秘密鍵を用いる従来の非対称暗号を利用するシステム、及び概して、署名を検証するためのシステムを示す。デジタル署名に使用される一般的な非対称暗号システム(場合によっては、「公開鍵暗号システム」と呼ばれる)は、リベスト-シャミア-エーデルマン(RSA)である。図2に示されるように、RSA暗号システムは、4つの関数を使用する。第1の関数は、2つの異なる素数p及びqに基づいて秘密鍵202を生成する秘密鍵生成関数(f)である。整数p及びqは、ランダムに選択されて秘密に保たれる。第2の関数は、2つの素数p及びqに基づいて、公開鍵204を生成する公開鍵生成関数(f)である。公開鍵204は、公開モジュラス(n)及び公開指数(e)からなる。公開モジュラス(n)は、以下の式1に従って計算される。公開指数(e)は、以下の式2が真であるように選択される。即ち、
n=pq (式1)
gcd(p-1,e)=gcd(q-1,e)=1 (式2)
上記の式2において、gcdは、入力のそれぞれを除算する最大の正の整数を返す最大公約数関数である。RSA暗号システムは、秘密鍵202でメッセージ(m)206に署名するために署名関数(f)を使用する。ここで、

RSA暗号システムは、メッセージ(m)206の署名208を計算するために秘密指数(d)を使用する。秘密指数(d)は、以下の式3に従って計算される。即ち、
【数1】

メッセージ(m)206の署名208は、σ(m)であり、それは以下の式4に従って計算される。即ち、
σ(m)=mmodn (式4)
受け取った署名(σ)108及び添付のメッセージ(m)206を検証するために、RSA暗号システムは、公開モジュラス(n)及び公開指数(e)に基づいて第4の関数(f)を使用する。署名(σ)208は、以下の式5が真である際に立証される。即ち
σmodn=m (式5)。
【0035】
RSAに基づいた署名方式の安全(セキュア)な具現化形態は、署名者(例えば、人、又は人のグループ)が関数、即ち、秘密鍵生成関数(f)、公開鍵生成関数(f)、及びセキュリティ境界内の署名関数(f)の唯一の制御を有することを必要とする。一般に、RSA署名方式を具現化するデバイスは、(a)デバイスの存続期間中に一度だけ秘密鍵生成関数(f)及び公開鍵生成関数(f)を実行し、(b)認可された署名者だけが署名関数(f)を実行することができることを保証する。秘密鍵(例えば、秘密鍵202)は、当該デバイスから決して離れてはいけない。当該デバイスは常に、署名関数(f)を実行する前に署名者を確実に認証することができなければいけない。かくして、セキュリティデバイスは、セキュリティ境界内で、(a)当該関数を計算するための計算能力、(b)当該鍵を格納するためのメモリ、(c)入力/出力(I/O)デバイス、及び(d)認証解法を要求する。セキュリティ境界は、それぞれが部分的な機能を具現化する別個の電子装置からなることができる。例えば、鍵生成関数、秘密鍵生成関数(f)及び公開鍵生成関数(f)は、一組の電子装置により具現化されることができ、署名関数(f)は、電子装置の別個の組として具現化され得る。
【0036】
(上述されたRSA暗号システムのような)署名方式の暗号攻撃耐性は、計算の複雑性理論の観点から定義され、数学的および物理的成分を有する。数学的攻撃耐性の尺度は、当該方式を破壊する(即ち、秘密鍵にアクセスせずにメッセージに署名する)のに必要である計算資源(ステップの数、ビットのメモリ、プログラムサイズなど)を考慮する。当該方式を破壊する計算コストは、セキュリティレベルとして表現される。セキュリティレベルは通常、「ビット」で表される。「Nビットセキュリティ」は、悪意のある当事者が当該方式を破壊するために2演算を実行する必要があることを意味する。例えば、署名方式は、128ビットセキュリティ又は256ビットセキュリティを有することができる。当該方式を破壊する金銭的コストは、計算コストに比例すると考えられる。セキュリティデバイスの物理的攻撃耐性は、署名方式を数学的に破壊せずに署名を偽造するコストを意味する(例えば、セキュリティデバイスを改ざんする)。
【0037】
署名方式に必要な数学的および物理的攻撃耐性は、リスク分析から導出され、署名解法が使用されているアプリケーションを考慮に入れる。多くの場合、セキュリティデバイスの物理的設計は、RSAベースの署名方式において弱点である。物理的攻撃耐性を向上させるための一手法は、複数のデバイス間の協働を必要とすることになる。係る手法において、署名鍵(例えば、マスター秘密鍵)は、幾つかのセキュリティデバイス間で共用される。そのため、署名は、セキュリティデバイスが協働する際にだけ作成され得る。1つのデバイスを攻撃すること(例えば、1つのデバイスを物理的に改ざんして、1つのデバイス上のマスター秘密鍵の一部を暴露する)は、署名を偽造するのには不十分である。これらの問題に対処するための暗号方式は、以下で図3及び図4に関連して説明される。
【0038】
図3において、マスター秘密鍵302は、2つの秘密鍵シェア304及び306に分割される(時として、分割鍵署名方式と呼ばれる)。マスター秘密鍵302は、第1の秘密鍵シェア(d’)304及び第2の秘密鍵シェア(d”)306を作成するためにマスター秘密鍵302を鍵分割関数(f10)で分割する、信頼されているディーラー308により生成される。信頼されているディーラー308は、加法的分散(シェアリング)又は乗法分散のために、マスター秘密鍵302を分割することができる。図3は、加法的分散のためにマスター秘密鍵302を分割する、信頼されているディーラー308を示す。加法的分散のために分割する際、信頼されているディーラー308は、以下の式6に従って、マスター秘密鍵302の秘密指数(d)に基づいて、第1の秘密鍵シェア(d’)304及び第2の秘密鍵シェア(d”)306を導出するために、鍵分割関数(f10)を使用する。即ち、
d≡d’+d”(modψ(n)) (式6)
乗算分散のために分割する際、信頼されているディーラー308は、以下の式7に従って、第1の秘密鍵シェア(d’)304及び第2の秘密鍵シェア(d”)306を導出するために、鍵分割関数(f10)を使用する。即ち、
d≡d’d”(modψ(n)) (式7)
信頼されているディーラー308は、第1の秘密鍵シェア(d’)304を第1のセキュリティデバイス310に送り、第2の秘密鍵シェア(d”)を第2のセキュリティデバイス312に送る。署名を生成する際、セキュリティデバイス310及び312は、第1の署名シェア(σ’)314及び第2の署名シェア(σ”)316を生成するためにそれらの個々の秘密鍵シェアと共に、署名関数(f)を実行する。署名(σ)308は、第1の署名シェア(σ’)314及び第2の署名シェア(σ”)316と共に、分割鍵結合関数(f11)を用いて、生成される。加法的分散の場合、分割鍵結合関数(f11)は、以下の式8に従って計算される。即ち、
【数2】

乗法分散の場合、分割鍵結合関数(f11)は、以下の式9に従って計算される。即ち、
【数3】

生成された署名208は、従来のRSA署名方式と共に、上述されたように使用される。
【0039】
幾つかの例において、秘密鍵シェアの1つは、セキュリティデバイスにより保持され、他の秘密鍵シェアは、バックエンドサーバ(例えば、以下の図7のバックエンドサーバ702)により保持される。分割鍵署名方式は、マスター秘密鍵302を秘密鍵シェア304及び306へ分割し、次いで署名シェア314及び316をセキュリティデバイスに安全に送るために、信頼されているディーラー308を必要とする場合が多い。幾つかの例において、信頼されているディーラー308は、使用されるシェアの分散された生成を使用し、この場合、第1の署名シェア(σ’)314及び第2の署名シェア(σ”)316及び共通の公開鍵204は、マスター秘密鍵302が決して全体として存在しないマルチパーティ暗号プロトコル(例えば、マルチパーティ暗号プロトコルII)の結果として生成される。
【0040】
図4は、互いと無関係である複数の秘密鍵を使用する複合鍵の鍵非対称暗号を利用するシステムを示す。図4は、第1のセキュリティデバイス402及び第2のセキュリティデバイス404を使用する複合鍵署名方式を示す。幾つかの例において、第1又は第2のセキュリティデバイス402及び404の1つは、バックエンドサーバ(例えば、以下の図7のバックエンドサーバ702)である。セキュリティデバイス402及び404はそれぞれ、(上述されたような)秘密鍵生成関数(f)を用いて、秘密鍵406及び408を別個に生成する。更に、セキュリティデバイス402及び404はそれぞれ、公開モジュラス(n)(例えば、上記の式1に従って計算された)及び公開指数(e)(例えば、上記の式2に従って求められた)を用いて、公開鍵410及び412を生成する。公開鍵410及び412は、バックエンドサーバに送られる。セキュリティデバイス402及び404が署名を生成するために使用するためのメッセージ414を受け取る場合、セキュリティデバイスがそれぞれ別個に署名者を認証した後、セキュリティデバイス402及び404は、(上述されたような)署名関数(f)を用いて、署名416及び418をそれぞれ別個に生成する。
【0041】
デジタルドキュメントを署名するために、複合署名420が、第1の署名(σ)416及び第2の署名(σ)418から生成される。図示された例において、複合署名(σ)420は、以下の式10に従って複合署名関数(f)を用いて生成される。即ち、
σ=(bnσ+anσ)mod(n) (式10)
上記の式10において、nは、第1の公開鍵410の公開モジュラスであり、nは、第2の公開鍵412の公開モジュラスである。更に、係数a及びbは、an+bn=1を満たす。複合署名(σ)420は更に、バックエンドサーバにより変更され、次いでデジタルドキュメントを添付するために使用される。
【0042】
署名されたドキュメントを検証するために、複合公開鍵422の複合公開モジュラス(n)が、以下の式11に従って、複合公開鍵関数(f)を用いて計算される。即ち、
=n (式11)
複合公開鍵422の複合公開モジュラス(n)は、第1の公開鍵410の公開モジュラス(n)及び第2の公開鍵412の第2の公開モジュラス(n)に基づく。
【0043】
複合公開鍵422(<n、e>)及びメッセージ414を用いて、署名されたデジタルドキュメントと関連した署名(σ)が、(上述されたような)関数fを用いて検証される。
【0044】
図5は、一意のバックエンドサーバ識別子(BESID)506を用いて、総合的公開鍵502及び最終決定鍵504を生成するシステムを示す。システムは、BESID506を総合的公開鍵502及び最終決定鍵504へ埋め込む。以下の説明は、複合鍵方式を使用するが、分割鍵方式も使用され得る。
【0045】
システムは、身元埋込み関数(f20)を用いて、総合的公開鍵502及び最終決定署名508を生成する。身元埋込み関数(f20)は、総合的公開鍵502及び最終決定署名508を生成するために、複合公開鍵422(又は任意の他の適用可能な公開鍵)及びBESID506を使用する。図示された例において、身元埋込み関数(f20)は、以下の式12~式17に従って計算される。第1に、システムは、以下の式12に従ってLバウンドを計算する。即ち、
【数4】

システムは、以下の式13に従ってRバウンドを計算する。即ち、
【数5】

上記の式12及び式13において、cはmビット長のBESIDであり、kは信頼性パラメータであり、n’は、RSAモジュラス(この場合、
)(複合公開鍵422のモジュラス(n)などのような)である。次いで、システムは、素数(p)を求め、この場合、以下の式14が真である。即ち、
L≦p≦R、及びgcd(p-1,e)=1 (式14)
上記の式14において、eは公開指数であり、gcdは、入力のそれぞれを除算する最も大きい正の整数を返す最大公約数関数である。
【0046】
システムは、以下の式15に従って、総合的公開鍵502のモジュラス(nTP)を計算する。即ち、
TP=n’・p (式15)
結果として、身元埋込み関数(f20)は、総合的公開鍵502を<nTP,e>として出力する。
【0047】
システムは、以下の式16に従って最終決定指数(d)を計算する。即ち、
【数6】

次いで、システムは、以下の式17が満たされるように、ベズー係数a’及びb’を求める。即ち、
a’・p+b’・n’=1 (式17)
結果として、身元埋込み関数(f20)は、最終決定鍵504を(n、a’、b’、p、d)として出力する。
【0048】
バックエンドサーバが複合署名420を生成した後、システムは、要求しているアプリケーションサーバに転送されるようにフロントエンドサーバに送るために最終決定署名(σ)508を生成する。最終決定署名(σ)508は、最終決定関数(f30)を用いてそれに埋め込まれるバックエンドサーバのBESID506を有する。最終決定関数(f30)は、RSA署名(σ’)(複合署名(σ)420などのような)、パディングされたメッセージP、及び最終決定署名(σ)を生成するための最終決定鍵504(例えば、(n,a’,b’,p,d)など)を使用する。図示された例において、最終決定関数(f30)は、以下の式18~式20に従って計算される。最初に、システムは、以下の式18に従って、パディングされたメッセージPを切り詰める。即ち、
=Pmodp (式18)
上記の式18において、Pは切り詰められたメッセージである。次いで、システムは、以下の式19に従って、部分的な最終署名(σ)を計算する。即ち、
【数7】

次いで、システムは、以下の式20に従って、最終決定署名(σ)508を計算する。即ち、
【数8】

次いで、システムは、最終決定署名(σ)をフロントエンドサーバに転送する。
【0049】
図6A及び図6Bは、署名オーソリティ102と協働して、ユーザと関連付けられるべき証明書602を生成する、証明書オーソリティ104のブロック図である。図6Aは、証明書オーソリティ104が署名オーソリティ102の内部情報(BESID506などのような)にアクセスできる際の例を示す。例えば、証明書オーソリティ104は、署名オーソリティ102(例えば、同じエンティティにより動作されるなど)に密接に関連付けられ得る、又は署名オーソリティ102へ組み込まれ得る。図6Bは、証明書オーソリティ104が署名オーソリティ102の内部情報にアクセスできない際の例を示す。例えば、証明書オーソリティ104は、署名オーソリティ102として別個のエンティティにより動作され得る。図6A及び図6Bの図示された例において、証明書オーソリティ104は、証明書オーソリティ(CA)秘密鍵604及び証明書生成器606を含む。CA秘密鍵604は、任意の適切な手段(例えば、上述されたような秘密鍵生成関数(f))によって、証明書オーソリティ104により生成され得る。証明書生成器606は、署名オーソリティ102から入力を受け取って、証明書602を生成する。
【0050】
図6Aにおいて、証明書生成器606は、公開鍵(例えば、上記の図4の複合公開鍵422)、BESID506及びクライアント識別子(CID)610を用いて、証明ステートメント608を生成する組合わせ関数(f50)を含む。公開鍵、BESID506及びCID610は、署名オーソリティ102から受け取られる。組合わせ関数(f50)は、公開鍵、BESID506及びCID610のリスト又は連鎖(コンカチネーション)である証明ステートメント608を生成する。
【0051】
図6Bにおいて、証明書生成器606は、総合的公開鍵(例えば、上記の図5の総合的公開鍵502)及びCID610を用いて、証明ステートメント608を生成する組合わせ関数(f70)を含む。総合的公開鍵およびCID610は、署名オーソリティ102から受け取られる。組合わせ関数(f70)は、総合的公開鍵、及びCID610のリスト又は連鎖(コンカチネーション)である証明ステートメント608を生成する。
【0052】
証明書生成器606は、CA秘密鍵604を用いて、証明ステートメント608に署名関数(f)を適用することにより、証明書602を生成する。次いで、証明書生成器606は、CID610と関連付けられた証明書602をデータベースに格納する。
【0053】
証明書602が署名要求に含まれる場合(例えば、以下の図8の署名要求804)、署名オーソリティ102は、身元抽出関数(f60)を用いて、BESID506を証明書602から抽出する。身元抽出関数(f60)は、CA秘密鍵604に対応する証明書オーソリティ104の公開鍵を用いて証明書を解読することにより、証明書602からBESID506を抽出し、BESID506を証明ステートメント608から抽出する。
【0054】
図7は、顧客110と関連付けられた複数の証明書602を生成するためのシステムのブロック図である。セキュリティデバイス108が最初に活性化される際、それは秘密鍵(例えば、上記の図2の秘密鍵202)及び公開鍵204を生成する。セキュリティデバイス108は、公開鍵204を署名オーソリティ102に送り、署名オーソリティ102は公開鍵204を少なくとも2つのバックエンドサーバ702に経路指定する。これらバックエンドサーバ702は、セキュリティデバイス108と通信するために必要な情報(例えば、IPアドレス、認証情報(信用証明物)など)を有するサーバになる。また、バックエンドサーバ702は、セキュリティデバイス108と関連付けられたCID610(例えば、活性化プロセスを介して取得されるなど)も受け取る、又は別の方法で検索して取り出す。
【0055】
図示された例において、バックエンドサーバ702a及び702bは独立して、公開鍵を生成し、その生成された公開鍵を、複合公開鍵関数(f)を用いて、セキュリティデバイス108から受け取った公開鍵と組合わせる。代案として、顧客110は、2つ以上のセキュリティデバイス108を登録し、バックエンドサーバ702は、複合公開鍵関数(f)を用いて、受け取った公開鍵を組合わせる。図示された例において、一次バックエンドサーバ702aは、一次複合公開鍵422aを生成する。一次バックエンドサーバ702aは、複合公開鍵422a、そのBESID506a及びCID610をフロントエンドサーバ704に転送する。フロントエンドサーバ704は、複合公開鍵422a、CID610及びBESID506aを証明書オーソリティ104に送る。証明書オーソリティ104は、証明書生成器606を用いて、一次証明書706aを、複合公開鍵422a、CID610及びBESID506aを用いて生成する。
【0056】
二次バックエンドサーバ702bは、二次複合公開鍵422bを生成する。二次バックエンドサーバ702bにより生成された公開鍵が一次バックエンドサーバ702aにより生成された公開鍵と異なるので、二次複合公開鍵422bは、一次複合公開鍵422aと異なる。二次バックエンドサーバ702bは、複合公開鍵422b、そのBESID506b及びCID610をフロントエンドサーバ704に転送する。フロントエンドサーバ704は、複合公開鍵422b、CID610及びBESID506bを証明書オーソリティ104に送る。証明書オーソリティ104は、証明書生成器606を用いて、二次証明書706bを、複合公開鍵422b、CID610及びBESID506bを用いて生成する。
【0057】
図8は、ドキュメントを署名するためにデジタル署名(例えば、最終決定署名508)を生成するように顧客110と関連付けられた冗長な証明書(例えば、一次証明書706a及び二次証明書706b)を使用するシステムのブロック図である。図示された例において、顧客110は、アプリケーションサーバ106が署名されたドキュメントを生成する必要があるように、アプリケーションサーバ106と対話する。アプリケーションサーバ106は、CID610を受け取る及び/又は別な方法で検索して取り出す(例えば、顧客110を介して)。CID610を用いて、アプリケーションサーバは、CID610と関連付けられた証明書を要求する(例えば、一次証明書706a及び二次証明書706bなど)。アプリケーションサーバ106は、(i)証明書706a及び706b、及び(ii)メッセージ414を含む署名要求804を生成する。メッセージは、原初のメッセージ(例えば、署名されるべきデジタルドキュメント)又は原初のメッセージに暗号学的ハッシュ関数(例えば、SHA-256など)を適用することにより、原初のメッセージから計算されたメッセージダイジェストであることができる。
【0058】
アプリケーションサーバ106は、署名オーソリティ102(例えば、アプリケーションサーバ106が署名オーソリティ102に登録する際に確立されたなど)の少なくとも2つのフロントエンドサーバ(例えば、一次フロントエンドサーバ704a及び二次フロントエンドサーバ704b)との確立された関係を有する。複数のフロントエンドサーバとの関係は、フロントエンドサーバの1つが利用できない際のための冗長性を提供する。署名オーソリティ102は、トラフィック管理原理に基づいて、どの特定のフロントエンドサーバがアプリケーションサーバ106に割り当てられるかを選択することができる。例えば、同じ一次フロントエンドサーバ704aに割り当てられたアプリケーションサーバ106は、一次フロントエンドサーバ704aの利用できないことが二次フロントエンドサーバ704bのどれにもストレスを加えないように、異なる二次フロントエンドサーバ704bに割り当てられ得る。1つのアプリケーションサーバ106の一次フロントエンドサーバ704aとしての役割を果たすフロントエンドサーバは、別のアプリケーションサーバ106の二次フロントエンドサーバ704bであることができる。
【0059】
アプリケーションサーバ106は、署名要求804を一次フロントエンドサーバ704aに送る。アプリケーションサーバ106が署名要求804の肯定応答を獲得しない及び/又は一次フロントエンドサーバ704aが利用できないという任意の他のしるしを受け取る場合、アプリケーションサーバ106は、署名要求804を二次フロントエンドサーバ704bに送る。アプリケーションサーバ106が2つより多いフロントエンドサーバと関連付けられる例において、これは、関連付けられているフロントエンドサーバの全てを、アプリケーションサーバ106が試みるまで、続けることができる。フロントエンドサーバが利用可能でない場合、アプリケーションサーバ106はエラーを生成する。
【0060】
署名要求804を受け取るフロントエンドサーバ(例えば、一次フロントエンドサーバ704a又は二次フロントエンドサーバ704b)は、身元抽出関数(f60)を用いて、一次証明書706aから一次バックエンドサーバ702aのBESID506aを抽出する。次いで、フロントエンドサーバは、署名要求804を一次バックエンドサーバ702aに転送する。フロントエンドサーバが署名要求804の肯定応答を獲得しない及び/又は一次バックエンドサーバ702aが利用できないという任意の他のしるしを受け取る場合、フロントエンドサーバは(i)身元抽出関数(f60)を用いて、二次証明書706bから二次バックエンドサーバ702bのBESID506bを抽出し、(ii)署名要求804を二次バックエンドサーバ702bに送る。署名要求804が2つより多い証明書を含む例において、これは、フロントエンドサーバが証明書の全てを用いて署名要求804を転送することを試みるまで、続けることができる。バックエンドサーバが利用可能でない場合、フロントエンドサーバはエラーメッセージをアプリケーションサーバ106に送る。
【0061】
バックエンドサーバ(例えば、二次バックエンドサーバ702b)は顧客110の身元を確認する。図示された例において、バックエンドサーバは、顧客110と関連付けられた秘密鍵(例えば、複合鍵方式の別個の秘密鍵または分割鍵方式の鍵シェアなど)を含む。バックエンドサーバは、顧客110の身元を認証することを試みる(例えば、セキュリティトークン806を介して)。バックエンドサーバが顧客110の身元を首尾よく認証する場合、それは、メッセージ414及び顧客110と関連付けられた秘密鍵を用いて第1の署名(又は第1の署名シェア)を生成するために、署名関数(f)を使用する。また、バックエンドサーバは、署名要求(又はその一部)を、顧客110と関連付けられたセキュリティデバイス108にも送る。セキュリティデバイス108が顧客110の身元を認証した後、セキュリティデバイス108は、第2の署名(又は第2の署名シェア)808を生成し、署名要求804を送信したバックエンドサーバにそれを送る。複合鍵の実施形態において、バックエンドサーバは、複合署名関数(f)を用いて複合署名420を生成する。分割鍵の実施形態において、バックエンドサーバは、分割鍵結合関数(f11)を用いて署名を生成する。最終決定鍵504を用いて、バックエンドサーバは、最終決定関数(f30)を用いて、最終決定署名508を生成する。
【0062】
バックエンドサーバは、署名要求804を送信したフロントエンドサーバに最終決定署名508を送る。フロントエンドサーバは、署名要求804を送信したアプリケーションサーバ106に最終決定署名508を送る。アプリケーションサーバ106は、署名されるべきデジタルドキュメントに最終決定署名508を添付する。
【0063】
フロントエンドサーバ及びバックエンドサーバは、バーチャルマシン又はコンテナなどのような、仮想計算資源を用いて、同じ物理的マシン又は物理的マシンの組で動作することができる。幾つかの例において、フロントエンドサーバ及びバックエンドサーバは、一方が破壊された場合に、他方が全然影響を受けないように、互いから分離される。例えば、1つのフロントエンドサーバが破壊された場合、他のフロントエンドサーバ及びバックエンドサーバは影響を受けない。
【0064】
図9は、図2図3図5図7及び図8の署名方式のデバイス側の部分を具現化するセキュリティデバイス108を示す。セキュリティデバイス108は、関数、即ち秘密鍵生成関数(f)、公開鍵生成関数(f)及び署名関数(f)を具現化する。セキュリティデバイス108は、制御インターフェース902及び入力/出力(I/O)インターフェース904を含む。制御インターフェース902は、セキュリティデバイス108が署名(例えば、署名416及び418)を生成する前に、署名者の身元を認証するために署名者(例えば、顧客110など)からの入力を受け取る。I/Oインターフェース904は、署名および公開鍵を送る、及び署名を生成するために使用されるメッセージを受け取るために、署名オーソリティ102と直接的または間接的に通信する。
【0065】
図10は、図9のセキュリティデバイス108の電子構成要素1000のブロック図である。図示された例において、電子構成要素1000は、制御インターフェース902、I/Oインターフェース904、プロセッサ又はコントローラ1002、及びメモリ1004、並びに他の電子構成要素を接続するデータバス1006を含む。
【0066】
制御インターフェース902は、セキュリティデバイス108と署名者との間に物理的なインターフェースを提供する。制御インターフェース902は、デジタルカメラ(例えば、イメージキャプチャ、視覚による指示の認識、顔認識、虹彩認識などのために)、タッチスクリーン及び/又はキーボード(例えば、認証情報の入力のために)、音声入力デバイス(例えば、音声認識用のマイクロフォンなど)、生体認証入力デバイス(例えば、指紋スキャナなど)、及び/又は生体認証センサ(例えば、血中酸素濃度計、脈拍センサなど)を含むことができる。例えば、制御インターフェース902は、スマートフォンのタッチスクリーン及び指紋同定センサを含むことができる。署名者から制御インターフェース902への入力は、署名者の身元を認証するために使用される。幾つかの例において、署名者を識別および認証する2つ以上の方法が含まれる。例えば、署名者は、指紋とパスワードの双方を提供する必要がある場合がある。幾つかの例において、制御インターフェース902は、2つの協働するセキュリティデバイス108間で異なる場合がある。例えば、一方のセキュリティデバイス108は顔認識を行うためにカメラを有することができ、他方のセキュリティデバイス108は指紋スキャナを有することができる。
【0067】
I/Oインターフェース904は、公開鍵および署名を送る且つメッセージを受け取るために他のデバイスと通信するためのインターフェースを提供する。I/Oインターフェース904は、通信コントローラ、及び1つ又は複数の標準ベースのネットワーク(例えば、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM)、ユニバーサル・モバイル・テレコミュニケーション・システム(UMTS)、ロング・ターム・エボリューション(LTE)、符号分割多元接続(CDMA)、WiMAX(IEEE 802.16m);近距離無線通信(NFC);無線LAN(IEEE 802.11 a/b/g/n/ac又は他を含む)、ブルートゥース(登録商標)及びブルートゥース(登録商標)ローエナジー、及びワイヤレスギガビット(IEEE 802.11ad)など)用のアンテナを含む。I/Oインターフェース904は、外部ネットワークと直接的または間接的に(例えば、別のセキュリティデバイス108を介して)通信する。外部ネットワークは、インターネットのような公共ネットワーク、イントラネットのような私的ネットワーク、又はそれらの組合わせであることができ、以下に限定されないが、TCP/IPベースのネットワークプロトコルを含む現在利用可能な又は後に開発される様々なネットワークプロトコルを利用することができる。
【0068】
プロセッサ又はコントローラ1002は、以下に限定されないが、マイクロプロセッサ、マイクロコントローラベースのプラットフォーム、適切な集積回路、1つ又は複数のフィールド・プログラマブル・ゲート・アレイ(FPGA)、及び/又は1つ又は複数の特定用途向け集積回路(ASIC)のような、任意の適切な処理デバイス又は処理デバイスの組であることができる。メモリ1004は、揮発性メモリ、不揮発性メモリ、不変メモリ、読み出し専用メモリ、及び/又は大容量記憶デバイス(例えば、ハードドライブ、半導体ドライブなど)であることができる。幾つかの例において、メモリ1004は、複数種類のメモリ、特に揮発性メモリ及び不揮発性メモリを含む。更に、メモリ1004は、情報を安全に格納するためにそれ自体の認証鍵を備える埋め込まれたハードウェア暗号化エンジンを含むセキュアメモリ(時として、「クリプトメモリ(CryptoMemory)(登録商標)」と呼ばれる)を含むことができる。
【0069】
図11は、図1及び図8のアプリケーションサーバ106により具現化され得る、デジタル署名により署名されるドキュメントを生成するために顧客110と関連付けられた冗長な証明書602を使用するための方法の流れ図である。最初に、ブロック1102において、アプリケーションサーバ106は、署名するためのデジタルドキュメントという結果になる入力を顧客110から受け取る。例えば、顧客110は、アプリケーションサーバ106と関連付けられたウェブサイトのプライバシーポリシーの承諾を示すために承諾ボタンをクリックすることができる。ブロック1104において、アプリケーションサーバ106は、顧客110と関連付けられた2つ以上の証明書602を証明書オーソリティ104から検索して取り出す。ブロック1106において、アプリケーションサーバ106は、署名要求804を一次フロントエンドサーバ704aに送る。アプリケーションサーバ106は、少なくとも2つのフロントエンドサーバに通信可能に結合するように構成される。幾つかの例において、フロントエンドサーバの順序(例えば、どのフロントエンドサーバが一次フロントエンドサーバ704aになり、どのフロントエンドサーバが二次フロントエンドサーバ704bになるかなど)は、アプリケーションサーバ106が署名オーソリティ102に登録する際に、署名オーソリティ102により指定される。代案として、幾つかの例において、アプリケーションサーバ106は、署名要求804を最初に送るためのフロントエンドサーバの1つを選択する。
【0070】
ブロック1108において、アプリケーションサーバ106は、フロントエンドサーバが利用可能でないしるしを受け取ったか否かを判断する。例えば、アプリケーションサーバ106は、(a)フロントエンドサーバから署名を受け取るために時間の閾値期間だけ待つ、(b)フロントエンドサーバが利用可能でないというメッセージを受け取る、及び/又は(c)署名要求804に応答してフロントエンドサーバからの肯定応答を受信できない場合がある。フロントエンドサーバが利用可能である場合、方法はブロック1110で継続する。それ以外では、フロントエンドサーバが利用可能でない場合、方法はブロック1114で継続する。
【0071】
ブロック1110において、アプリケーションサーバ106は、フロントエンドサーバから最終決定署名508を受け取る。ブロック1112において、アプリケーションサーバ106は、最終決定署名をデジタルドキュメントに添付する。
【0072】
ブロック1114において、アプリケーションサーバ106は、署名要求を送信するための別のフロントエンドサーバが存在するか否かを判断する。別のフロントエンドサーバが存在する場合、方法はブロック1116に進む。それ以外では、別のフロントエンドサーバが存在しない場合、方法はブロック1118に進む。
【0073】
ブロック1116において、アプリケーションサーバ106は、署名要求804を次のフロントエンドサーバ(例えば、二次フロントエンドサーバ704bなど)に送る。次いで、方法は、ブロック1108に戻る。
【0074】
ブロック1118において、アプリケーションサーバ106は、エラーメッセージを生成する。
【0075】
図12は、図1及び図8のフロントエンドサーバ(単数または複数)704により具現化され得る、デジタル署名により署名されるドキュメントを生成するために顧客110と関連付けられた冗長な証明書を使用するための方法の流れ図である。最初に、ブロック1202において、フロントエンドサーバ704は、複数の証明書(例えば、一次証明書706a及び二次証明書706bなど)を含む署名要求804を、アプリケーションサーバ106から受け取る。ブロック1204において、フロントエンドサーバ704は、身元抽出関数(f60)を用いて一次証明書706aからBESID506を抽出する。ブロック1206において、フロントエンドサーバ704は、ブロック1204で抽出されたBESID506に対応するバックエンドサーバに署名要求804を送る。
【0076】
ブロック1208において、フロントエンドサーバ704は、バックエンドサーバ702が利用可能でないというしるしを受け取ったか否かを判断する。例えば、フロントエンドサーバは、(a)バックエンドサーバ702から署名を受け取るために時間の閾値期間だけ待つ、(b)バックエンドサーバ702が利用可能でないというメッセージを受け取る、及び/又は(c)署名要求804に応答してバックエンドサーバ702からの肯定応答を受信できない場合がある。バックエンドサーバ702が利用可能である場合、方法はブロック1210で継続する。それ以外では、バックエンドサーバ702が利用可能でない場合、方法はブロック1214で継続する。
【0077】
ブロック1210において、フロントエンドサーバ704は、バックエンドサーバ702から最終決定署名508を受け取る。ブロック1212において、フロントエンドサーバ704は、最終決定署名508をアプリケーションサーバ106に送る。
【0078】
ブロック1214において、フロントエンドサーバ704は、別の証明書(例えば、二次証明書706b)が存在するか否かを判断する。別の証明書が存在する場合、方法はブロック1216に進む。それ以外では、別の証明書が存在しない場合、方法はブロック1220に進む。ブロック1216において、フロントエンドサーバ704は、身元抽出関数(f60)を用いて、二次証明書706bからBESID506を抽出する。ブロック1218において、フロントエンドサーバ704は、ブロック1216で抽出されたBESID506に対応するバックエンドサーバ702に署名要求804を送る。次いで、方法はブロック1208に戻る。
【0079】
ブロック1220において、フロントエンドサーバ704はエラーメッセージをアプリケーションサーバ106に送る。
【0080】
図13は、図1及び図8のシステムにより具現化され得る、デジタルドキュメント用の署名を生成するための方法の流れ図である。図13において、バックエンドサーバ702は、顧客110用の秘密鍵を格納する。ブロック1302において、バックエンドサーバ702は、署名要求804に含まれる対応する証明書602と関連付けられたセキュリティデバイス108に署名要求804を送る。ブロック1304において、セキュリティデバイス108は、顧客110を認証する。例えば、セキュリティデバイス108は、指紋および/または一組の認証情報を受け取ることに応じて、顧客110を認証することができる。ブロック1306において、セキュリティデバイス108は、署名関数(f)を用いて、その格納された秘密鍵でもって第1の署名を生成する。ブロック1308において、セキュリティデバイス108は、第1の署名をバックエンドサーバ702に送る。
【0081】
ブロック1310において、バックエンドサーバ702は、顧客110を認証する。幾つかの例において、バックエンドサーバ702は、認証情報または他の認証トークンを受け取るためにセキュリティトークンと通信することができる。例えば、セキュリティトークンは、顧客110からの入力を受け取るための指紋スキャナ、及びセキュリティトークンがセキュリティデバイス108の閾値距離内にあるか否かを(例えば、RSSI測定値などを用いて)判断するための無線トランシーバを有することができる。ブロック1312において、バックエンドサーバ702は、署名関数(f)を用いて第2の署名を生成する。ブロック1314において、バックエンドサーバ702は、結合署名(例えば、複合署名関数(f)を用いた複合署名、又は分割鍵結合関数(f11)を用いた分割鍵署名など)を生成する。ブロック1216において、バックエンドサーバ702は、結合署名、及び顧客110と関連付けられた最終決定鍵504に基づいて、最終決定関数(f30)を用いて、最終決定署名を生成する。ブロック1318において、バックエンドサーバ702は、最終決定署名をフロントエンドサーバ704に送る。
【0082】
図14は、図1及び図8のシステムにより具現化され得るデジタルドキュメント用の署名を生成するための方法の流れ図である。図14において、バックエンドサーバ702は、顧客110用の秘密鍵を格納しない。ブロック1402において、バックエンドサーバ702は、署名要求804に含まれる対応する証明書602と関連付けられたセキュリティデバイス108に署名要求804を送る。
【0083】
ブロック1404において、第1のセキュリティデバイス108は、顧客110を認証する。例えば、第1のセキュリティデバイス108は、指紋および/または一組の認証情報を受け取ることに応じて、顧客110を認証することができる。ブロック1406において、第1のセキュリティデバイス108は、署名関数(f)を用いて、その格納された秘密鍵でもって第1の署名を生成する。ブロック1408において、第1のセキュリティデバイス108は、第1の署名をバックエンドサーバ702に送る。
【0084】
ブロック1410において、第2のセキュリティデバイス108は、顧客110を認証する。ブロック1412において、第2のセキュリティデバイス108は、署名関数(f)を用いて、その格納された秘密鍵でもって第2の署名を生成する。ブロック1414において、第2のセキュリティデバイス108は、第2の署名をバックエンドサーバ702に送る。
【0085】
ブロック1416において、バックエンドサーバ702は、結合署名(例えば、複合署名関数(f)を用いた複合署名、又は分割鍵結合関数(f11)を用いた分割鍵署名など)を生成する。ブロック1418において、バックエンドサーバ702は、結合署名、及び顧客110と関連付けられた最終決定鍵404に基づいて、最終決定関数(f30)を用いて、最終決定署名を生成する。ブロック1420において、バックエンドサーバ702は、最終決定署名508をフロントエンドサーバ704に送る。
【0086】
図15は、証明書602を再発行するための方法の流れ図である。証明書は、例えばバックエンドサーバ702の1つが機能しなくなる際に、再発行され得る。新たなバックエンドサーバが設置されることができ、新たな証明書が既存の証明書に基づいて発行され得る。後述されるように、このプロセスは、自動であり、幾つかの例において、証明書オーソリティ104に特定の要求を送る必要がない。2つの異なるバックエンドサーバ702が使用されており、それらの1つが機能していない場合、この自動的な証明書発行手順は、何らかのダウンタイムなしでシステムの回復を可能にする。最初に、証明書オーソリティ104は、BESID506及び新たなバックエンドサーバ702の公開鍵を受け取る。
【0087】
ブロック1502において、証明書オーソリティ104は、一次および二次バックエンドサーバ702a及び702bと関連付けられた一次および二次証明書706a及び706bを検証する。ブロック1504において、証明書オーソリティ104は、CID610、一次証明書706aの公開鍵、及び二次証明書706bの公開鍵を抽出する。ブロック1506において、証明書オーソリティ104は、一次証明書706aの公開鍵、及び二次証明書706bの公開鍵を用いて、顧客のセキュリティデバイス108に対する公開鍵を計算する。ブロック1508において、証明書オーソリティ104は、顧客のセキュリティデバイス108に対する公開鍵、及び新たなバックエンドサーバ702の公開鍵を用いて(例えば、複合公開鍵関数(f)などを用いて)新たな公開鍵を作成する。ブロック1510において、証明書オーソリティ104は、新たなバックエンドサーバ702のBESID506、新たな公開鍵、及び一次及び二次証明書706aと706bに関連付けられたCID610に基づいて、新たなバックエンドサーバ702用の新たな証明書602を作成する。ブロック1506において、証明書オーソリティ104は、機能していないバックエンドサーバ702と関連付けられた証明書を新たな証明書と置き換える。
【0088】
本明細書において、離接語の使用は、接続語を含むことが意図されている。定冠詞または不定冠詞の使用は、個数を示すことが意図されていない。特に、「the」物体または「a」物体および「an」物体に対する言及は、考えられる複数の係る物体の1つも意味することが意図されている。更に、接続詞「又は」は、相互に排他的な二者択一の代わりに同時に存在している特徴要素を伝えるために使用され得る。言い換えれば、接続詞「又は」は、「及び/又は」を含むと理解されるべきである。本明細書で使用される限り、用語「モジュール」及び「ユニット」は、多くの場合、センサと連係して、通信能力、制御能力および/または監視能力を提供するための回路を備えるハードウェアを意味する。「モジュール」及び「ユニット」は、回路上で実行するファームウェアも含むことができる。用語「遠隔(リモート)」は、地理的に離れており且つイントラネット又はインターネットのような、内部ネットワーク又は外部ネットワークを介して通信可能に結合されていることを意味する。用語「含む」及び「含んでいる」は、包括的であり、「備える」、及び「備えている」とそれぞれ同じ範囲を有する。
【0089】
上述された実施形態、及び特に任意の「好適な」実施形態は、具現化形態の考えられる例であり、本発明の原理を明確に理解するために単に記載されている。本明細書で説明された技術の思想および原理から実質的に逸脱せずに、多くの変形および変更が、上述された実施形態(単数または複数)になされ得る。全ての変更は、本開示の範囲内に本明細書に含まれることが意図されており、以下の特許請求の範囲により保護される。
図1
図2
図3
図4
図5
図6A
図6B
図7
図8
図9
図10
図11
図12
図13
図14
図15
【国際調査報告】