「Blind signature」の版間の差分

提供: tezos-wiki
移動先: 案内検索
(1版 をインポートしました)
 
1行目: 1行目:
In [[cryptography]] a '''blind signature''' as introduced by [[David Chaum]] is a form of [[digital signature]] in which the content of a message is disguised ([[blinding (cryptography)|blinded]]) before it is signed. The resulting blind signature can be publicly verified against the original, unblinded message in the manner of a regular digital signature. Blind signatures are typically employed in privacy-related protocols where the signer and message author are different parties. Examples include cryptographic election systems and [[digital cash]] schemes.
+
[[cryptography]]では、[[David Chaum]]によって導入された「盲目の署名」は、メッセージの内容が偽装されている[[盲目的な(暗号化された) | blinded]])に署名します。結果として得られるブラインド署名は、通常のデジタル署名と同様に、元の盲目的でないメッセージに対して公的に検証することができる。ブラインド署名は、通常、署名者とメッセージの作成者が異なる当事者であるプライバシー関連のプロトコルに採用されています。例には、暗号の選挙システムと[[現金]]スキームが含まれます。
  
An often-used analogy to the cryptographic blind signature is the physical act of a voter enclosing a completed anonymous ballot in a special [[carbon paper]] lined envelope that has the voter's credentials pre-printed on the outside. An official verifies the credentials and signs the envelope, thereby transferring his signature to the ballot inside via the carbon paper. Once signed, the package is given back to the voter, who transfers the now signed ballot to a new unmarked normal envelope. Thus, the signer does not view the message content, but a third party can later verify the signature and know that the signature is valid within the limitations of the underlying signature scheme.
+
よく使われている暗号の盲目のアナロジーは、完成した匿名の投票用紙を封筒に入れて、外部にあらかじめ印刷された有権者の資格を持つ有権者の物理的行為です。公式は資格証明を確認し、封筒に署名し、それによって彼の署名をカーボン紙を介して投票用紙に転送する。署名されると、パッケージは投票者に返され、投票者は今署名された投票用紙を新しいマークされていない通常の封筒に移します。したがって、署名者はメッセージの内容を見ることはできませんが、後で第三者が署名を検証し、その署名が基礎となる署名方式の制限内で有効であることを知ることができます。
  
Blind signatures can also be used to provide ''unlinkability'', which prevents the signer from linking the blinded message it signs to a later un-blinded version that it may be called upon to verify. In this case, the signer's response is first "un-blinded" prior to verification in such a way that the signature remains valid for the un-blinded message. This can be useful in schemes where [[anonymity]] is required.
+
ブラインド署名は、署名者が盲目的なメッセージにそれが署名することができる後の盲目的でないバージョンに署名するのを防ぐ「リンク不能性」を提供するためにも使用することができる。この場合、署名者の応答は、署名が非盲検メッセージに対して有効なままであるように、確認の前に最初に「盲目にされない」。これは、[[匿名性]]が必要なスキームで役に立ちます。
  
Blind signature schemes can be implemented using a number of common [[public key cryptography|public key]] signing schemes, for instance [[RSA (algorithm)|RSA]] and [[Digital Signature Algorithm|DSA]]. To perform such a signature, the message is first "blinded", typically by combining it in some way with a random "blinding factor". The blinded message is passed to a signer, who then signs it using a standard signing algorithm. The resulting message, along with the blinding factor, can be later verified against the signer's public key. In some blind signature schemes, such as RSA, it is even possible to remove the blinding factor from the signature before it is verified. In these schemes, the final output (message/signature) of the blind signature scheme is identical to that of the normal signing protocol.
+
ブラインド署名方式は、[[RSA(アルゴリズム)| RSA]][[デジタル署名アルゴリズム| DSA]など、いくつかの一般的な[公開鍵暗号|公開鍵]署名方式を使用して実装できます。そのような署名を実行するために、メッセージは、最初に「ブラインド」され、通常は何らかの方法でランダムな「盲目的要因」と組み合わせられます。ブラインドされたメッセージは署名者に渡され、署名者は標準の署名アルゴリズムを使用して署名します。結果として得られるメッセージは、盲目的要因とともに、後で署名者の公開鍵と照合することができます。 RSAなどの一部のブラインド署名スキームでは、署名が検証される前に署名からブラインディング係数を削除することも可能です。これらのスキームでは、ブラインド署名方式の最終出力(メッセージ/署名)は、通常の署名方式と同じです。
  
==Uses==
+
==用途==
  
Blind signature schemes see a great deal of use in applications where sender privacy is important. This includes various "[[ecash|digital cash]]" schemes and [[end-to-end auditable voting systems|voting protocols]].
+
盲目の署名スキームは、送信者のプライバシーが重要なアプリケーションで多くの用途が見られます。これにはさまざまな "[ecash | digital cash]"スキームと[エンドツーエンド監査可能な投票システム|投票プロトコル]が含まれます。
  
For example, the integrity of some electronic voting system may require that each ballot be certified by an election authority before it can be accepted for counting; this allows the authority to check the credentials of the voter to ensure that they are allowed to vote, and that they are not submitting more than one ballot. Simultaneously, it is important that this authority does not learn the voter's selections. An unlinkable blind signature provides this guarantee, as the authority will not see the contents of any ballot it signs, and will be unable to link the blinded ballots it signs back to the un-blinded ballots it receives for counting.
+
例えば、いくつかの電子投票システムの完全性は、計数のために受け入れられる前に、各投票が選挙当局によって認定されることを要求することがある。これにより、当局は、有権者の信任状をチェックして、投票が許可されていること、および複数の投票を提出していないことを確認することができます。同時に、この権限が有権者の選択を学ばないことが重要です。リンクできない盲目の署名は、それが署名した任意の投票の内容を見ることができず、盲目的な投票にリンクすることができないため、この保証を提供する。
  
==Blind signature schemes==
 
  
Blind signature schemes exist for many public key signing protocols. Some examples are provided below. In each example, the message to be signed is contained in the value ''m''. ''m'' is considered to be some legitimate input to the signature function. As an analogy, consider that Alice has a letter which should be signed by an authority (say Bob), but Alice does not want to reveal the content of the letter to Bob. She can place the letter in an envelope lined with [[carbon paper]] and send it to Bob. Bob will sign the outside of the carbon envelope without opening it and then send it back to Alice. Alice can then open it to find the letter signed by Bob, but without Bob having seen its contents.
+
3049/5000
 +
==ブラインド署名方式==
  
More formally a blind signature scheme is a [[cryptographic protocol]] that involves two parties, a user Alice that wants to obtain signatures on her messages, and a signer Bob that is in possession of his secret signing key. At the end of the protocol Alice obtains a signature on ''m'' without Bob learning anything about the message. This intuition of not learning anything is hard to capture in mathematical terms. The usual approach is to show that for every (adversarial) signer, there exists a simulator that can output the same information as the signer. This is similar to the way zero-knowledge is defined in [[zero-knowledge proof]] systems.
+
多くの公開鍵署名プロトコルでは、ブラインド署名方式が存在します。いくつかの例を以下に示します。各例では、署名されるメッセージは値 '' m ''に含まれています。 '' m ''は、署名関数への正当な入力とみなされます。同様に、Aliceには、権限(Bobと言う)が署名する必要のある手紙がありますが、Aliceはその手紙の内容をBobに知らせたくありません。彼女は[[カーボンペーパー]]の入った封筒に手紙を置き、それをボブに送ることができます。ボブはカーボン・エンベロープの外にそれを開かずに署名し、それをアリスに送り返す。アリスはそれを開いてボブが署名した文字を見つけることができますが、ボブはその内容を見ていません。
  
===Blind RSA signatures===
+
より正式には、ブラインド署名方式は、メッセージの署名を取得したいユーザAliceと、秘密の署名鍵を所有している署名者Bobという2つの関係者を含む[[暗号プロトコル]]です。プロトコルの終わりに、アリスはボブがメッセージについて何も学ばずに「m」の署名を得る。何も学んでいないというこの直感は、数学的な言葉で取り込むのは難しいです。通常のアプローチは、すべての(敵対的な)署名者に対して、署名者と同じ情報を出力できるシミュレータが存在することを示すことです。これは、zero-knowledgeが[[zero-knowledge proof]]システムで定義される方法に似ています。
  
One of the simplest blind signature schemes is based on RSA signing. A traditional RSA signature is computed by raising the message ''m'' to the secret exponent ''d'' modulo the public modulus ''N''. The blind version uses a random value ''r'', such that ''r'' is [[relatively prime]] to ''N'' (i.e. ''gcd''(''r'', ''N'') = 1). ''r'' is raised to the public exponent ''e'' modulo ''N'', and the resulting value <math>r^e\bmod N</math> is used as a blinding factor. The author of the message computes the product of the message and blinding factor, i.e.
+
===ブラインドRSA署名===
  
: <math> m' \equiv m r^e\ (\mathrm{mod}\ N) </math>
+
最も単純なブラインド署名スキームの1つは、RSA署名に基づいています。伝統的なRSA署名は、メッセージ「m」を公開係数「N」を法とする秘密指数「d」に上げることによって計算される。ブラインド版では、 '' r ''が '[N]'(すなわち '' gcd ''( '' r ''、 '' N ' '')= 1)。 「r」は公開指数「e」modulo「N」に上げられ、結果値は次のようになる。ブラインドファクターとして使用されます。メッセージの作成者は、メッセージとブラインドファクタとの積、すなわち、
  
and sends the resulting value <math>m'</math> to the signing authority. Because ''r'' is a random value and the mapping <math>r\mapsto r^e\bmod N</math> is a permutation it follows that <math>r^e \bmod N</math> is random too. This implies that <math>m'</math> does not leak any information about ''m''. The signing authority then calculates the blinded signature ''s' '' as:
+
:<数学> m '\ equiv m r ^ e \(\ mathrm {mod} \ N)< / math>
  
: <math> s' \equiv (m')^d\ (\mathrm{mod}\ N). </math>
+
その結果得られた値m 'm' 'を計算する。署名する当局に。 「r」はランダムな値であり、マッピングは以下の通りである。は、以下のような順列である:【数1】は、【数2】である。ランダムでもあります。これは、<math> m '</ math> '' m ''に関する情報は漏れません。次に、署名機関は、盲検の署名 '' '' 'を次のように計算します。
  
''s' '' is sent back to the author of the message, who can then remove the blinding factor to reveal ''s'', the valid RSA signature of ''m'':
+
:&lt;数学&gt; s '\ equiv(m')^ d \(\ mathrm {mod} \ N)である。 &lt; / math&gt;
  
: &lt;math&gt; s \equiv s' \cdot r^{-1}\ (\mathrm{mod}\ N) &lt;/math&gt;
+
メッセージの作成者に返信されます。メッセージの作成者は、 '' m ''の有効なRSA署名である '' s ''を明らかにするために、
  
This works because RSA keys satisfy the equation &lt;math&gt;r^{ed}\equiv r\pmod{N}&lt;/math&gt; and thus
+
:&lt;数学&gt; s \ equiv s '\ cdot r ^ { - 1} \\ mathrm {mod} \ N)&lt; / math&gt;
  
: &lt;math&gt; s \equiv s' \cdot r^{-1} \equiv (m')^d r^{-1} \equiv m^d r^{ed} r^{-1} \equiv m^d r r^{-1} \equiv m^d\pmod{N},&lt;/math&gt;
+
これは、RSA鍵が以下の方程式を満たすために働く。【数1】【数2】【数3】【数4】したがって
  
hence ''s'' is indeed the signature of ''m''.
+
:&lt;数学&gt; s ^ \ equiv s '\ cdot r ^ { - 1} \ equiv(m')^ dr ^ { - 1} \ equiv m ^ dr ^ {ed} r ^ { - 1} \ equiv m ^ drr ^ { - 1 } \ equiv m ^ d \ pmod {N}、&lt; / math&gt;
  
In practice, the property that signing one blinded message produces at most one valid signed messages is usually desired. This means one vote per signed ballot in elections, for example. This property does not hold for the simple scheme described above: the original message and the unblinded signature is valid, but so is the blinded message and the blind signature, and possibly other combinations given a clever attacker. A solution to this is to blind sign a cryptographic hash of the message, not the message itself.
+
したがって、 '' s ''は実際に '' m ''の署名です。
  
==Dangers of blind signing==
+
実際には、1つのブラインドメッセージに署名するプロパティは、多くの場合、有効な署名付きメッセージを1つしか生成しません。これは、例えば選挙で署名された投票あたり1票を意味する。このプロパティは、上記の単純なスキームでは保持されません。元のメッセージとアンブラインドされていないシグネチャは有効ですが、盲目のメッセージと盲目のシグネチャがあります。これに対する解決策は、メッセージ自体ではなく、メッセージの暗号化ハッシュにブラインド署名することです。
  
[[RSA (algorithm)|RSA]] is subject to the RSA blinding attack through which it is possible to be tricked into decrypting a message by blind signing another message. Since the signing process is equivalent to decrypting with the signer's secret key, an attacker can provide a blinded version of a message &lt;math&gt;m&lt;/math&gt; encrypted with the signer's public key, &lt;math&gt;m'&lt;/math&gt; for them to sign. The encrypted message would usually be some secret information which the attacker observed being sent encrypted under the signer's public key which the attacker wants to learn more about. When the attacker remove the blindness the signed version they will have the clear text:
+
==ブラインド署名の危険性==
  
: &lt;math&gt;
+
[[RSA(アルゴリズム)| RSA]]は、RSAブラインド攻撃の対象となり、別のメッセージに盲目的に署名することでメッセージを解読することができます。署名プロセスは、署名者の秘密鍵を用いた復号化と同等であるので、攻撃者は、メッセージ<math> m </ math>の盲検バージョンを提供することができる。署名者の公開鍵で暗号化された<math> m '</ math>彼らが署名するために。暗号化されたメッセージは通常、攻撃者がより多くのことを知りたい署名者の公開鍵の下で暗号化されて送信されたことを監視した何らかの秘密情報です。攻撃者が署名されたバージョンの失明を取り除くと、クリアテキストが表示されます。
\begin{align}
 
m'' & = m' r^e\pmod n \\
 
& = (m^e\pmod n \cdot r^e)\pmod n \\
 
& = (mr)^e \pmod n \\
 
\end{align}
 
&lt;/math&gt;
 
  
where &lt;math&gt;m'&lt;/math&gt; is the encrypted version of the message. When the message is signed, the cleartext &lt;math&gt;m&lt;/math&gt; is easily extracted:
+
:&lt;数学&gt;
 +
\ begin {align}
 +
m ''&= m 'r ^ e \ pmod n \\
 +
 &=(m ^ e \ pmod \ cdot r ^ e)\ pmod n \\
 +
 &=(mr)^ e \ pmod n \\
 +
\ end {align}
 +
&lt; / math&gt;
  
: &lt;math&gt;
+
ここで、<math> m '</ math>メッセージの暗号化されたバージョンです。メッセージが署名されている場合、クリアテキスト<math> m </ math>簡単に抽出されます:
\begin{align}
 
s' & = m''^d\pmod n \\
 
& = ((mr)^e\pmod n)^d\pmod n \\
 
& = (mr)^{ed} \pmod n \\
 
& = m \cdot r \pmod n \mbox{, since } ed \equiv 1 \pmod{\phi(n)}\\
 
\end{align}
 
&lt;/math&gt;
 
  
Note that &lt;math&gt;\phi(n)&lt;/math&gt; refers to [[Euler's totient function]]. The message is now easily obtained.
+
:&lt;数学&gt;
 +
\ begin {align}
 +
s '&= m' '^ d \ pmod n \\
 +
 &=((mr)^ e \ pmod)^ d \ pmod n \\
 +
 &=(mr)^ {ed} \ pmod n \\
 +
 &= m \ cdot r \ pmod n \ mbox {、以降} \ equiv 1 \ pmod {\ phi(n)} \\
 +
\ end {align}
 +
&lt; / math&gt;
  
: &lt;math&gt;
+
なお、&lt; math&gt; \ phi(n)&lt; / math&gt; [[オイラーのトータル関数]]を参照してください。メッセージはすぐに得られます。
\begin{align}
 
m = s' \cdot r^{-1} \pmod{n}
 
\end{align}
 
&lt;/math&gt;
 
  
This attack works because in this blind signature scheme the signer signs the message directly. By contrast, in an unblinded signature scheme the signer would typically use a padding scheme (e.g. by instead signing the result of a [[cryptographic hash function]] applied to the message, instead of signing the message itself), however since the signer does not know the actual message, any padding scheme would produce an incorrect value when unblinded. Due to this multiplicative property of RSA, the same key should never be used for both encryption and signing purposes.
+
:&lt;数学&gt;
 +
\ begin {align}
 +
m = s '\ cdot r ^ { - 1} \ pmod {n}
 +
\ end {align}
 +
&lt; / math&gt;
  
==See also==
+
この盲目の署名方式では、署名者はメッセージに直接署名するため、この攻撃は機能します。対照的に、非ブラインド署名方式では、署名者は通常、パディングスキームを使用します(たとえば、メッセージ自体に署名するのではなく、メッセージに適用された[[暗号ハッシュ関数]]の結果に署名する)。実際のメッセージが分からない場合、パディング・スキームはアンブラインドされていないと間違った値を生成します。 RSAのこのような乗法特性により、暗号化と署名の両方の目的で同じ鍵を決して使用するべきではありません。
*[[Dining cryptographers protocol]]
 
*[[Anonymous Internet banking]]
 
*[[Electronic money]]
 
  
==Source==
+
==関連項目==
 +
* [[ダイニング暗号化プロトコル]]
 +
* [[匿名インターネットバンキング]]
 +
* [[電子マネー]]
 +
 
 +
==ソース==
  
 
[http://wikipedia.org/ http://wikipedia.org/]
 
[http://wikipedia.org/ http://wikipedia.org/]

2018年4月13日 (金) 02:12時点における最新版

cryptographyでは、David Chaumによって導入された「盲目の署名」は、メッセージの内容が偽装されている blinded)に署名します。結果として得られるブラインド署名は、通常のデジタル署名と同様に、元の盲目的でないメッセージに対して公的に検証することができる。ブラインド署名は、通常、署名者とメッセージの作成者が異なる当事者であるプライバシー関連のプロトコルに採用されています。例には、暗号の選挙システムと現金スキームが含まれます。

よく使われている暗号の盲目のアナロジーは、完成した匿名の投票用紙を封筒に入れて、外部にあらかじめ印刷された有権者の資格を持つ有権者の物理的行為です。公式は資格証明を確認し、封筒に署名し、それによって彼の署名をカーボン紙を介して投票用紙に転送する。署名されると、パッケージは投票者に返され、投票者は今署名された投票用紙を新しいマークされていない通常の封筒に移します。したがって、署名者はメッセージの内容を見ることはできませんが、後で第三者が署名を検証し、その署名が基礎となる署名方式の制限内で有効であることを知ることができます。

ブラインド署名は、署名者が盲目的なメッセージにそれが署名することができる後の盲目的でないバージョンに署名するのを防ぐ「リンク不能性」を提供するためにも使用することができる。この場合、署名者の応答は、署名が非盲検メッセージに対して有効なままであるように、確認の前に最初に「盲目にされない」。これは、匿名性が必要なスキームで役に立ちます。

ブラインド署名方式は、 RSAや[[デジタル署名アルゴリズム| DSA]など、いくつかの一般的な[公開鍵暗号|公開鍵]署名方式を使用して実装できます。そのような署名を実行するために、メッセージは、最初に「ブラインド」され、通常は何らかの方法でランダムな「盲目的要因」と組み合わせられます。ブラインドされたメッセージは署名者に渡され、署名者は標準の署名アルゴリズムを使用して署名します。結果として得られるメッセージは、盲目的要因とともに、後で署名者の公開鍵と照合することができます。 RSAなどの一部のブラインド署名スキームでは、署名が検証される前に署名からブラインディング係数を削除することも可能です。これらのスキームでは、ブラインド署名方式の最終出力(メッセージ/署名)は、通常の署名方式と同じです。

用途[編集]

盲目の署名スキームは、送信者のプライバシーが重要なアプリケーションで多くの用途が見られます。これにはさまざまな "[ecash | digital cash]"スキームと[エンドツーエンド監査可能な投票システム|投票プロトコル]が含まれます。

例えば、いくつかの電子投票システムの完全性は、計数のために受け入れられる前に、各投票が選挙当局によって認定されることを要求することがある。これにより、当局は、有権者の信任状をチェックして、投票が許可されていること、および複数の投票を提出していないことを確認することができます。同時に、この権限が有権者の選択を学ばないことが重要です。リンクできない盲目の署名は、それが署名した任意の投票の内容を見ることができず、盲目的な投票にリンクすることができないため、この保証を提供する。


3049/5000

ブラインド署名方式[編集]

多くの公開鍵署名プロトコルでは、ブラインド署名方式が存在します。いくつかの例を以下に示します。各例では、署名されるメッセージは値 m に含まれています。 m は、署名関数への正当な入力とみなされます。同様に、Aliceには、権限(Bobと言う)が署名する必要のある手紙がありますが、Aliceはその手紙の内容をBobに知らせたくありません。彼女はカーボンペーパーの入った封筒に手紙を置き、それをボブに送ることができます。ボブはカーボン・エンベロープの外にそれを開かずに署名し、それをアリスに送り返す。アリスはそれを開いてボブが署名した文字を見つけることができますが、ボブはその内容を見ていません。

より正式には、ブラインド署名方式は、メッセージの署名を取得したいユーザAliceと、秘密の署名鍵を所有している署名者Bobという2つの関係者を含む暗号プロトコルです。プロトコルの終わりに、アリスはボブがメッセージについて何も学ばずに「m」の署名を得る。何も学んでいないというこの直感は、数学的な言葉で取り込むのは難しいです。通常のアプローチは、すべての(敵対的な)署名者に対して、署名者と同じ情報を出力できるシミュレータが存在することを示すことです。これは、zero-knowledgeがzero-knowledge proofシステムで定義される方法に似ています。

ブラインドRSA署名[編集]

最も単純なブラインド署名スキームの1つは、RSA署名に基づいています。伝統的なRSA署名は、メッセージ「m」を公開係数「N」を法とする秘密指数「d」に上げることによって計算される。ブラインド版では、 r が '[N]'(すなわち gcd r N ' )= 1)。 「r」は公開指数「e」modulo「N」に上げられ、結果値は次のようになる。ブラインドファクターとして使用されます。メッセージの作成者は、メッセージとブラインドファクタとの積、すなわち、

:&lt;数学&gt; m '\ equiv m r ^ e \(\ mathrm {mod} \ N)&lt; / math&gt;

その結果得られた値m 'm' 'を計算する。署名する当局に。 「r」はランダムな値であり、マッピングは以下の通りである。は、以下のような順列である:【数1】は、【数2】である。ランダムでもあります。これは、<math> m '</ math> m に関する情報は漏れません。次に、署名機関は、盲検の署名 'を次のように計算します。

:&lt;数学&gt; s '\ equiv(m')^ d \(\ mathrm {mod} \ N)である。 &lt; / math&gt;

メッセージの作成者に返信されます。メッセージの作成者は、 m の有効なRSA署名である s を明らかにするために、

:&lt;数学&gt; s \ equiv s '\ cdot r ^ { - 1} \(\ mathrm {mod} \ N)&lt; / math&gt;

これは、RSA鍵が以下の方程式を満たすために働く。【数1】【数2】【数3】【数4】したがって

:&lt;数学&gt; s ^ \ equiv s '\ cdot r ^ { - 1} \ equiv(m')^ dr ^ { - 1} \ equiv m ^ dr ^ {ed} r ^ { - 1} \ equiv m ^ drr ^ { - 1 } \ equiv m ^ d \ pmod {N}、&lt; / math&gt;

したがって、 s は実際に m の署名です。

実際には、1つのブラインドメッセージに署名するプロパティは、多くの場合、有効な署名付きメッセージを1つしか生成しません。これは、例えば選挙で署名された投票あたり1票を意味する。このプロパティは、上記の単純なスキームでは保持されません。元のメッセージとアンブラインドされていないシグネチャは有効ですが、盲目のメッセージと盲目のシグネチャがあります。これに対する解決策は、メッセージ自体ではなく、メッセージの暗号化ハッシュにブラインド署名することです。

ブラインド署名の危険性[編集]

RSAは、RSAブラインド攻撃の対象となり、別のメッセージに盲目的に署名することでメッセージを解読することができます。署名プロセスは、署名者の秘密鍵を用いた復号化と同等であるので、攻撃者は、メッセージ<math> m </ math>の盲検バージョンを提供することができる。署名者の公開鍵で暗号化された<math> m '</ math>彼らが署名するために。暗号化されたメッセージは通常、攻撃者がより多くのことを知りたい署名者の公開鍵の下で暗号化されて送信されたことを監視した何らかの秘密情報です。攻撃者が署名されたバージョンの失明を取り除くと、クリアテキストが表示されます。

:&lt;数学&gt; \ begin {align} m &= m 'r ^ e \ pmod n \\  &=(m ^ e \ pmod \ cdot r ^ e)\ pmod n \\  &=(mr)^ e \ pmod n \\ \ end {align} &lt; / math&gt;

ここで、<math> m '</ math>メッセージの暗号化されたバージョンです。メッセージが署名されている場合、クリアテキスト<math> m </ math>簡単に抽出されます:

:&lt;数学&gt; \ begin {align} s '&= m' '^ d \ pmod n \\  &=((mr)^ e \ pmod)^ d \ pmod n \\  &=(mr)^ {ed} \ pmod n \\  &= m \ cdot r \ pmod n \ mbox {、以降} \ equiv 1 \ pmod {\ phi(n)} \\ \ end {align} &lt; / math&gt;

なお、&lt; math&gt; \ phi(n)&lt; / math&gt; オイラーのトータル関数を参照してください。メッセージはすぐに得られます。

:&lt;数学&gt; \ begin {align} m = s '\ cdot r ^ { - 1} \ pmod {n} \ end {align} &lt; / math&gt;

この盲目の署名方式では、署名者はメッセージに直接署名するため、この攻撃は機能します。対照的に、非ブラインド署名方式では、署名者は通常、パディングスキームを使用します(たとえば、メッセージ自体に署名するのではなく、メッセージに適用された暗号ハッシュ関数の結果に署名する)。実際のメッセージが分からない場合、パディング・スキームはアンブラインドされていないと間違った値を生成します。 RSAのこのような乗法特性により、暗号化と署名の両方の目的で同じ鍵を決して使用するべきではありません。

関連項目[編集]

ソース[編集]

http://wikipedia.org/