
デジタル署名は、デジタルメッセージや文書の真正性を検証するための数学的な仕組みです。メッセージに有効なデジタル署名が付いていると、受信者はそのメッセージが既知の送信者から送られてきたことを確信できます。[ 1 ] [ 2 ]
デジタル署名は公開鍵暗号の一種であり、ソフトウェア配布[ 3 ] [ 4 ] [ 5 ] 、 金融取引、契約管理ソフトウェア、および偽造や改ざんを検出することが重要なその他のケースで一般的に使用されています。
メッセージや文書のデジタル署名は、紙に手書きした署名に似ていますが、紙のような物理的な媒体に限定されません。任意のビット列にデジタル署名できます。また、紙に手書きした署名は偽造のために他の紙にコピーできますが、メッセージのデジタル署名はメッセージの内容に数学的に結び付けられているため、他のメッセージに有効なデジタル署名を偽造することは不可能です。[ 6 ]
デジタル署名は、署名の意図を伝えるあらゆる電子データを含む電子署名を実装するためによく使用されますが、 [ 7 ]すべての電子署名がデジタル署名を使用するわけではありません。[ 8 ] [ 9 ]
デジタル署名方式は、3つのアルゴリズムで構成されています。[ 6 ] [ 10 ]
主に2つの特性が求められます。
正式には、デジタル署名方式は、以下の条件を満たす確率的多項式時間アルゴリズムの3つ組(G、S、V)である。
ここで 1 n は計算複雑性理論の形式における単項数を指します。
正当性のためには、SとVは以下を満たす必要がある。
デジタル署名方式は、非一様確率的多項式時間攻撃者Aに対して、
ここで、A S ( sk , · )は、A がオラクルS ( sk , · )にアクセスできることを示しており、 Q は、公開鍵pkとセキュリティ パラメータnを知っているAがSに対して行ったクエリの集合を示し、x ∉ Q は、攻撃者がS上の文字列xを直接クエリできないことを示しています。[ 11 ] [ 12 ]
1976年、Whitfield DiffieとMartin Hellmanは、トラップドア一方向順列である関数に基づいてそのようなスキームが存在すると推測しただけであったが、デジタル署名スキームの概念を初めて説明した。[ 13 ] [ 14 ] その後まもなく、Ronald Rivest、Adi Shamir、Len Adlemanは、原始的なデジタル署名を生成するために使用できるRSAアルゴリズムを発明した[ 15 ](ただし、概念実証としてのみであり、「プレーン」RSA署名は安全ではない[ 16 ])。デジタル署名を提供する最初の広く販売されたソフトウェアパッケージは、1989年にリリースされたLotus Notes 1.0で、RSAアルゴリズムを使用していた。[ 17 ]
RSAの後、すぐに他のデジタル署名方式が開発され、最も初期のものとしては、ランポート署名[ 18 ] 、マークル署名(「マークルツリー」または単に「ハッシュツリー」とも呼ばれる)[ 19 ] 、ラビン署名[ 20 ]などがある。
1988年、Shafi Goldwasser、Silvio Micali、およびRonald Rivestは、デジタル署名スキームのセキュリティ要件を厳密に定義した最初の人物となった。[ 21 ] 彼らは署名スキームの攻撃モデルの階層構造を説明し、また、現在署名スキームのセキュリティ定義として受け入れられている選択メッセージ攻撃に対する存在偽造さえも防ぐことが証明できる最初のGMR署名スキームを発表した。 [ 21 ] トラップドア関数ではなく、一方向置換というはるかに弱い必要特性を持つ関数のファミリーに基づいて構築された最初のスキームは、Moni NaorとMoti Yungによって発表された。[ 22 ]
デジタル署名方式の1つ(多数存在する方式のうち)はRSAに基づいています。署名キーを作成するには、2つのランダムな秘密の異なる大きな素数の積である法Nと、 e d ≡ 1 (mod φ ( N ))となる整数eとdを含むRSAキーペアを生成します。ここで、φはオイラーのトーシェント関数です。署名者の公開キーはNとeで構成され、署名者の秘密キーはdで構成されます。
直接使用すると、このタイプの署名方式は鍵のみの存在偽造攻撃に対して脆弱になります。偽造を作成するには、攻撃者はランダムな署名 σ を選択し、検証手順を使用してその署名に対応するメッセージmを決定します。[ 23 ]しかし実際には、このタイプの署名は直接使用されず、署名対象のメッセージはまずハッシュ化されて短いダイジェストが生成され、次にNと同程度の幅にパディングされ、その後逆トラップドア関数で署名されます。[ 24 ]したがって、この偽造攻撃では、σ に対応するパディングされたハッシュ関数の出力のみが生成され、その値につながるメッセージは生成されないため、攻撃にはつながりません。ランダムオラクルモデル、ハッシュしてから署名(ハッシュとパディングを組み合わせた結果、Nに近い出力が得られる理想化されたバージョン)では、この形式の署名は選択平文攻撃に対しても存在的に偽造不可能です。[ 14 ] [ 25 ]
文書全体ではなく、ハッシュ値(またはメッセージダイジェスト)に署名する理由はいくつかあります。
組織がインク署名や認証スタンプ付きの紙文書から離れるにつれて、デジタル署名は、署名者によるインフォームドコンセントと承認を認めるだけでなく、電子文書の出所、身元、ステータスの証拠に対する追加の保証を提供することができます。 米国政府印刷局(GPO)は、予算、公法および私法、議会法案の電子版をデジタル署名付きで発行しています。[ 26 ]ペンシルベニア州立大学、シカゴ大学、スタンフォード大学 などの大学は、学生の電子成績証明書をデジタル署名付きで発行しています。
以下に、通信にデジタル署名を適用する一般的な理由をいくつか示します。
メッセージには送信者を特定するレターヘッドや手書きの署名が付いている場合があるが、レターヘッドや手書きの署名は偽造メッセージにコピー&ペーストされる可能性がある。正規のメッセージでさえ、送信中に改ざんされる可能性がある。[ 6 ]
銀行の中央事務局が、支店を名乗る人物から口座残高の変更指示書を受け取った場合、中央銀行員は、その指示を実行する前に、それが実際に支店の銀行員によって送られたものであり、偽造されたものではないことを確認する必要がある。偽造者が手紙全体を捏造したのか、あるいは輸送中の既存の手紙に数字をいくつか追加しただけなのか、どちらであっても確認する必要がある。
デジタル署名方式では、中央局は事前に公開鍵を保管し、その秘密鍵は支局のみが知っているように手配できます。支局は後でメッセージに署名し、中央局は公開鍵を使用して、署名されたメッセージが偽造されていないことを確認してから、それに基づいて行動することができます。送信者の秘密鍵を知らない偽造者は、別のメッセージに署名したり、既存のメッセージの1桁の数字を変更したりしても、受信者の署名検証が失敗してしまいます。[ 6 ] [ 1 ] [ 2 ]
暗号化によってメッセージの内容を盗聴者から隠すことはできますが、暗号化だけでは受信者がメッセージの真正性を検証したり、数字の変更などの選択的な変更を検出したりすることはできません。銀行のオフィスが単にやり取りするメッセージを暗号化しただけでは、偽造に対して脆弱なままです。ソフトウェアのアップデートなどの他のアプリケーションでは、メッセージは秘密ではありません。ソフトウェアの作者が既存のすべてのインストールに適用するパッチを公開する場合、パッチ自体は秘密ではありませんが、ソフトウェアを実行しているコンピュータは、マルウェアの被害に遭わないように、パッチを適用する前にその真正性を検証する必要があります。[ 2 ]
リプレイ攻撃。 デジタル署名方式だけでは、有効な署名付きメッセージが記録され、悪意を持ってリプレイ攻撃で再利用されることを防ぐことはできません。たとえば、支店が署名付きメッセージで銀行振込を一度だけ正当に要求する場合があります。銀行がメッセージ内でトランザクションIDシステムを使用してどの振込が既に行われたかを検出しない場合、誰かが同じ署名付きメッセージを何度も不正に再利用して口座から資金を抜き取ることができます。[ 6 ]
署名の一意性と柔軟性。 署名自体は、署名対象のメッセージを一意に識別するために使用することはできません。一部の署名方式では、すべてのメッセージに対して同じ署名者による有効な署名が多数存在し、秘密鍵を知らなくても、有効な署名を別の有効な署名に変換することは容易です。[ 27 ]ビットコイン取引所 などの銀行のようなシステムがリプレイを検出するために署名をトランザクションIDとして悪用した場合、これはトランザクションのリプレイに悪用される可能性があります。[ 28 ]
公開鍵の認証。公開鍵 に関する事前知識は、署名付きメッセージの真正性を検証するために使用できますが、その逆はできません。つまり、署名付きメッセージの事前知識は、公開鍵の真正性を検証するために使用できません。一部の署名方式では、署名付きメッセージが与えられた場合、署名付きメッセージを作成するために最初に使用された秘密鍵を知らなくても、署名付きメッセージが検証を通過するような公開鍵を簡単に構築できます。[ 29 ]
否認防止、より具体的には署名の出所に関する否認防止は、デジタル署名の重要な側面です。この特性により、ある情報に署名した主体は、後になって署名したことを否定することはできません。同様に、公開鍵のみへのアクセスは、不正な当事者が有効な署名を偽造することを不可能にします。
これらの認証、否認防止などの特性は、秘密鍵が使用前に失効されていないことを前提としていることに注意してください。鍵ペアの公開失効は必須の機能であり、そうでなければ、漏洩した秘密鍵によって、鍵ペアの所有者とされる人物が引き続き関与することになります。失効状態を確認するには、「オンライン」チェックが必要です。たとえば、証明書失効リストを確認するか、オンライン証明書ステータスプロトコルを使用します。[ 30 ] これは、クレジットカードを受け取ったベンダーが、特定のカードが紛失または盗難として報告されていないかどうかを、まずクレジットカード発行会社にオンラインで確認するのと大まかに似ています。もちろん、盗まれた鍵ペアの場合、盗難は多くの場合、秘密鍵が使用された後、たとえばスパイ目的で偽の証明書に署名した後に初めて発覚します。
Goldwasser、Micali、Rivestは、彼らの基礎論文の中で、デジタル署名に対する攻撃モデルの階層構造を提示している。[ 21 ]
また、攻撃結果の階層についても説明しています。[ 21 ]
したがって、最も強力なセキュリティの概念は、適応型選択メッセージ攻撃による存在偽造に対するセキュリティである。
公開鍵暗号方式と秘密鍵暗号方式はすべて、秘密鍵を秘密に保つことに完全に依存しています。秘密鍵はユーザーのコンピュータに保存し、ローカルパスワードで保護することができますが、これには2つの欠点があります。
より安全な代替手段として、秘密鍵をスマートカードに保存する方法があります。多くのスマートカードは改ざん防止設計になっています(ただし、ロス・アンダーソン氏とその学生らによって破られた設計もあります[ 31 ])。一般的なデジタル署名の実装では、文書から計算されたハッシュがスマートカードに送信され、スマートカードのCPUがユーザーの保存された秘密鍵を使用してハッシュに署名し、署名済みのハッシュを返します。通常、ユーザーは個人識別番号またはPINコードを入力してスマートカードを有効化する必要があります(これにより2要素認証が提供されます)。秘密鍵がスマートカードから決して出ないように設定することもできますが、必ずしも実装されているわけではありません。スマートカードが盗まれた場合、犯人はデジタル署名を生成するためにPINコードが必要になります。これにより、この方式のセキュリティはPINシステムと同程度に低下しますが、それでも攻撃者はカードを所有している必要があります。緩和要因として、秘密鍵はスマートカードで生成および保存される場合、通常は複製が困難であると考えられ、正確に1つのコピーが存在すると想定されています。したがって、スマートカードの紛失は所有者によって検知され、対応する証明書を直ちに失効させることができる。ソフトウェアのみで保護された秘密鍵は複製されやすく、そのような侵害ははるかに検知しにくい。
スマートカードを有効化するためにPINコードを入力するには、通常、テンキーが必要です。カードリーダーの中には、独自のテンキーを備えているものもあります。これは、PCに内蔵されたカードリーダーを使用し、そのコンピューターのキーボードでPINコードを入力するよりも安全です。テンキー付きのリーダーは、コンピューターがキーストロークロガーを実行してPINコードを漏洩させる可能性のある盗聴の脅威を回避することを目的としています。また、専用のカードリーダーは、ソフトウェアやハードウェアの改ざんに対して脆弱性が低く、多くの場合EAL3認証を取得しています。
スマートカードの設計は活発な研究分野であり、これまでのところセキュリティ上の証明はほとんどないものの、これらの特定の問題を回避することを目的としたスマートカード方式が存在する。
デジタル署名と手書き署名の主な違いの一つは、ユーザーが署名する内容を「見る」ことができない点です。ユーザーアプリケーションは、秘密鍵を使用してデジタル署名アルゴリズムによって署名されるハッシュコードを提示します。ユーザーのPCを乗っ取った攻撃者は、ユーザーアプリケーションを別のアプリケーションに置き換えることができ、事実上、ユーザー自身の通信を攻撃者の通信に置き換えることが可能です。これにより、悪意のあるアプリケーションは、画面上にユーザーのオリジナル文書を表示させながら、署名アプリケーションには攻撃者自身の文書を提示することで、ユーザーを騙して任意の文書に署名させることができます。
このような事態を防ぐため、ユーザーアプリケーション(ワープロソフト、メールクライアントなど)と署名アプリケーションの間に認証システムを構築することができます。基本的な考え方は、ユーザーアプリケーションと署名アプリケーションの両方が互いの整合性を検証できる手段を提供することです。例えば、署名アプリケーションは、すべてのリクエストがデジタル署名されたバイナリから送信されることを要求することができます。
クラウドベースのデジタル署名サービスとローカルで提供されるサービスの主な違いの一つは、リスクです。政府機関、金融機関、医療機関、決済処理業者など、リスク回避を重視する多くの企業は、署名の妥当性と安全性を確保するために、 FIPS 140-2レベル3やFIPS 201認証といった、より高度なセキュリティ基準を求めています。
技術的に言えば、デジタル署名はビット列に適用されますが、人間やアプリケーションは、それらのビットの意味的解釈に署名していると「信じて」います。意味的に解釈されるためには、ビット列を人間やアプリケーションにとって意味のある形式に変換する必要があり、これはコンピュータシステム上のハードウェアとソフトウェアベースのプロセスの組み合わせによって行われます。問題は、ビットの意味的解釈が、ビットを意味的コンテンツに変換するために使用されるプロセスに応じて変化する可能性があることです。文書が処理されているコンピュータシステムに変更を加えることで、デジタル文書の解釈を変更することは比較的容易です。意味論的な観点から見ると、これは署名されたものが正確には何であるかについて不確実性を生み出します。WYSIWYS ( What You See Is What You Sign)[ 32 ]は、署名されたメッセージの意味的解釈は変更できないことを意味します。特に、これは、署名者が認識していない、署名が適用された後に明らかになる可能性のある隠された情報がメッセージに含まれてはならないことも意味します。 WYSIWYSはデジタル署名の有効性の要件ですが、現代のコンピュータシステムの複雑化に伴い、この要件を保証することは困難になっています。WYSIWYSという用語は、Peter LandrockとTorben Pedersenによって、汎ヨーロッパプロジェクト向けに安全で法的拘束力のあるデジタル署名を提供するための原則を説明するために造語されました。[ 32 ]
インクによる署名は、手作業またはデジタルで画像をコピーすることで、ある文書から別の文書に複製することは可能ですが、ある程度の精査に耐えうる信頼できる署名のコピーを作成するには、高度な手作業または技術スキルが必要であり、専門家の精査に耐えうるインクによる署名のコピーを作成することは非常に困難です。
デジタル署名は、電子文書に電子的な身元情報を暗号的に紐付けるものであり、デジタル署名を他の文書にコピーすることはできません。紙の契約書では、最終ページに署名欄が設けられている場合があり、署名後に前のページが差し替えられることがあります。デジタル署名は文書全体に適用できるため、最終ページのデジタル署名によって、いずれかのページのデータが改ざんされた場合に改ざんがあったことを示すことができます。ただし、これはインクで署名し、契約書のすべてのページに番号を振ることでも実現できます。
ほとんどのデジタル署名方式は、暗号理論や法的規定に関わらず、以下の目標を共有している。
これらの条件がすべて満たされた場合にのみ、デジタル署名は実際にメッセージの送信者、ひいてはその内容への同意の証拠となる。既存の技術的可能性という現実を、法律制定によって変えることはできない。もっとも、一部の法律はこの現実を反映していない。
PKIの運用で利益を得ようとする企業や、古い問題に対する新しい解決策を提唱する技術の先駆者たちの働きかけにより、多くの法域で、デジタル署名を認可、支持、奨励、または許可し、その法的効力を規定(または制限)する法令や規則が制定されてきた。最初の例は米国のユタ州で、マサチューセッツ州とカリフォルニア州がそれに続いたようだ。他の国々もこの分野で法令を制定したり規則を発行したりしており、国連は以前からモデル法プロジェクトを積極的に進めている。これらの法令(または提案された法令)は地域によって異なり、一般的に、基盤となる暗号技術の現状とは(楽観的または悲観的に)異なる期待を内包しており、結果として、暗号技術に精通していない潜在的な利用者や仕様策定者を混乱させる結果となっている。
デジタル署名に関する技術標準の採用は、多くの法整備に比べて遅れており、相互運用性、アルゴリズムの選択、鍵長など、技術が提供しようとしているものに関して、多かれ少なかれ統一された技術的立場を確立することを遅らせている。
一部の業界では、業界関係者間および規制当局との間でデジタル署名を使用するための共通の相互運用性標準を確立している。これには、自動車業界のAutomotive Network Exchangeや、医療業界のSAFE-BioPharma Associationなどが含まれる。
いくつかの国では、デジタル署名は、 1999 年の EU デジタル署名指令や2014 年の EU 後続法のように、従来のペンと紙の署名とほぼ同じ地位を持っています。[ 35 ]一般的に、これらの規定は、デジタル署名されたものはすべて、文書の署名者をその文書の条項に法的に拘束することを意味します。そのため、暗号化と署名には別々の鍵ペアを使用するのが最善だと考えられることがよくあります。暗号化鍵ペアを使用すると、暗号化された会話(たとえば、不動産取引に関するもの)を行うことができますが、暗号化によって送信するすべてのメッセージが法的に署名されるわけではありません。両当事者が合意に達したときにのみ、署名鍵を使用して契約に署名し、その時点で初めて特定の文書の条項に法的に拘束されます。署名後、文書は暗号化されたリンクを介して送信できます。署名鍵が紛失または侵害された場合は、将来の取引を軽減するために鍵を失効させることができます。暗号化鍵が紛失した場合は、暗号化されたコンテンツを表示し続けるためにバックアップまたは鍵エスクローを使用する必要があります。署名鍵は、バックアップ先が安全に暗号化されていない限り、決してバックアップしたりエスクローに預けたりしてはならない。