В
まず、情報システムでさまざまな目的で広く使用されている、よく知られた電子署名アルゴリズムについて説明します。 電子署名は、暗号化非対称暗号化アルゴリズムに基づいています。 非対称暗号化は 2 つのキーを使用した暗号化です。XNUMX つは暗号化に使用され、もう XNUMX つは復号化に使用されます。 それらは、公開鍵 (公開鍵) および秘密鍵と呼ばれます。 公開鍵は他人に知られており、秘密鍵は電子署名の所有者だけが知っており、他人がアクセスできない場所に保管されます。
署名時には、次のことが行われます。まず、数学的変換を使用して、電子文書が特定のサイズの文字列に縮小されます。これはハッシュ関数と呼ばれます。
結果として得られる文字シーケンス (ドキュメントからのハッシュ) は、ドキュメントの送信者によって秘密キーを使用して暗号化され、公開キーとともに受信者に送信されます。 受信者は公開鍵を使用して文字列を復号し、まったく同じハッシュ関数を文書に適用し、変換結果と復号結果を比較します。 すべてが一致する場合は、送信者による署名後に文書に変更が加えられていないことになります。
ここで説明したアクションを使用すると、文書が変更されていないことを確認できますが、送信者が本当に本人であるかどうかを確認することはできません。 したがって、送信者と受信者の両方から信頼される第三者が必要です。 これを行うには、送信者は文書を送信する前に第三者に連絡し、電子署名で公開鍵に署名するよう依頼します。 送信者は受信者に文書、公開鍵、および鍵の第三者署名を送信します。 受信者は、公開鍵に対する第三者の署名を検証し、結果として得られる文書の署名を信頼します。
次に、「ブラインド署名」とは何なのか、そしてそれが匿名化にどのように役立つのかに移りましょう。
上で説明した例で、送信者が有権者、文書が投票用紙、受信者が選挙管理委員会、つまり「開票コンポーネント」であると想像してみましょう。 サードパーティ (バリデータ) として「有権者リスト」コンポーネントを用意します。 この場合、プロセスは次のように発生します。
投票者は自分のデバイス上で秘密鍵と公開鍵のペアを生成します。 これらのキーは彼の個人デバイスのブラウザで作成されるため、彼だけが知っています。
これらのキーを使用して、投票用紙に署名し、その完全性を制御します。 彼は署名済みの投票用紙と公開鍵を選挙管理委員会に送ります。 投票用紙が分散投票保管および集計コンポーネントによって受け入れられるには、公開鍵が検証者によって署名されていることを検証する必要があります。
バリデーター (投票者リストコンポーネント) は、投票者が投票者リストに載っていることを確認した後にのみ公開鍵に署名します。
投票の秘密を保持するという問題を解決するには、投票者のデバイス上で作成された公開キーが誰にも知られるべきではありません。 検証者は未知のものに署名する必要があることがわかりました。 この作業は不可能に思えますが、ここで暗号アルゴリズムが役に立ちます。この場合は「ブラインド署名」アルゴリズムです。
まず、投票者のデバイス上で公開鍵をマスクする必要があります。 マスキングは、ユーザーのデバイス上で個々の数学的演算を実行することです。 1 から 100 までの乱数を考え、次に 1 から 10 までの 10 番目の乱数を考え、50 から XNUMX までの XNUMX 番目の乱数を考え、最初に考えた数値を XNUMX 番目の数値で乗って、それをなしで割ったと想像してください。 XNUMX番目までに残り。 結果は他の人にも報告されました。 アクションの順序と頭の中にある数字を知っているので、元の数字を復元するのは難しくありません。 しかし、あなたの周りの人たちはそれができないでしょう。
公開キーのマスキング (ブラインド化) は、特別な暗号化アルゴリズムに従って実行されます。 その結果、バリデーターは元の鍵を知ることなく、マスクされた公開鍵に署名します。 しかし、このアルゴリズムの特徴は、マスクされたキーの署名を受け取ったユーザー (投票者) が逆変換を行って、元のマスクされていないキーに対して有効な署名を取得できることです。
説明されているアルゴリズムは、秘密投票プロトコルで広く使用されています。 リモート電子投票システムは現在、ブラインド署名に鍵長 4096 ビットの RSA アルゴリズムを使用しています。
一般に、匿名化の手順は次のとおりです。
- 投票が作成されると、別の「バリデータ」キー ペアが作成され、公開キーがブロックチェーンに記録されます。 投票ごとに一意のキー ペアが作成されます。
- ユーザーは識別システム (この場合は ESIA) で識別され、識別データを識別システムから DEG PTC に転送する許可を与えます。
- DEG PTC の「投票者リスト」コンポーネントは、投票者リスト内のユーザーの存在をチェックします。
- ユーザーのデバイス上で、ユーザーのみが知っている秘密キーと公開キーの個人キーが作成されます。
- 公開鍵はユーザーのデバイス上でマスクされます
- ユーザーは、識別データとマスクされた公開鍵を使用して、「有権者リスト」コンポーネントにアクセスします。
- コンポーネントは、リスト内のユーザーの存在と、そのユーザーが以前に署名を受け取っていないかどうかを再度確認します。
- すべてのチェックが成功すると、キーは署名されます
- キーに署名したという事実はブロックチェーンに記録されます
- ユーザーは自分のデバイスで公開キーからマスクを削除し、秘密キー、公開キー、および公開キーの署名を受け取ります。すべてのキーはユーザーだけが知っています。
- この後、ユーザーは匿名ゾーン、つまり別の Web サイト edg2020.gov.ru に転送されます。そこではユーザーを識別することはできません (たとえば、移行前にユーザーは VPN に接続したり、インターネット プロバイダーを変更したりして、完全に変更することができます) IPアドレス)
- 投票用紙が受理されるかどうかは、「検証者」の署名が検証されたかどうか、およびそのようなキーが以前に使用されていないかどうかによってのみ決まります。
次に、暗号化の観点からアルゴリズムを説明します。
署名と指定のオプション:
M – 署名用の FDN パディング形式。
出所: habr.com