回答:
同じ平文にマッピングされる暗号文が複数存在する場合があります。数学的には、暗号化アルゴリズムは単射でなければならず、暗号文の平文を復元できますが、これは、暗号文が平文よりも多くの情報をエンコードすることを妨げるものではありません。
具体的な例として、CBC、CTR、OFBなどのブロック暗号操作のモードを考えます。これらすべてのモードには、平文、ブロック暗号化アルゴリズム、およびその鍵に加えて、IV(初期化ベクトル)が含まれます。(CTRの場合、IVはnonceと呼ばれますが、同様の役割を果たします。)暗号化機能は、特定のIVに対して確定的です。一方、IVはランダムに選択できます(CTRの場合、ランダムに選択する必要があります)。したがって、プロトコルがIV(合意された定数など)を選択する決定論的な方法を指定しない限り、IVは暗号文と一緒に送信されます。実際、暗号化ソフトウェアの出力は、多くの場合IVとそれに続く暗号文stricto sensuで構成されています。IV自体はプレーンテキストで送信されます。機密情報は含まれていません(含まれていない必要があります)。
別の例として、RSAのPKCS1.5モード(「パディング方式」)を検討してください(PKCS#1バージョン1.5で定義されています。PKCS #1 v2.1の p.22–25を参照)。ビットを単純化するこのモードは、ランダムな文字列をメッセージに連結し、次にべき乗演算を適用することで構成されます。暗号文はで、は連結、はメッセージ、はほとんどのビットがランダムなパディング文字列です。暗号文からメッセージを復元するには、生の復号化操作を適用し、をパディング(破棄されます)とメッセージに分割します。
だけでなく、缶暗号化方式は、ランダム性を持っていますが、いくつかのケース(例えば、中に公開鍵暗号化)、それらをしなければならない、ランダム化すること。暗号化スキームを正しくする必要があるため、これは問題ではありません。つまり、メッセージとキーが ランダムにわたって。
公開鍵スキームがランダムでなければならない理由は、セキュリティの定義方法に由来します。暗号文が暗号化されたメッセージに関する情報を漏らしたくない場合。古典的な例は次のとおりです。仮定する、それぞれ、公開鍵と秘密鍵であり、敵対者が暗号化されたメッセージを傍受することをフィールドにいくつかのユニットに送られます。攻撃者はメッセージが「攻撃」または「リトリート」であることを知っていますが、どちらかは知りません。攻撃者ができることの1つは、パブリックを使用して両方のメッセージを暗号化することです。せと。場合が確定的である場合、者はをおよびと比較することにより、メッセージを確実に見つけることができます。
この概念が正式に定義される方法は、セマンティックセキュリティと呼ばれます。
暗号化スキームは、敵のが次のゲームによりも著しく高い確率で勝てない場合、意味的に安全です。
- チャレンジャーはキーを生成し、公開キーを敵に送信します。
- は、長さが等しいと 2つのメッセージを選択し、両方を渡します 。
- は、ビットを均一に選択し、ます。
- は、暗号化されたメッセージ(または)を必要があります。つまり、ビットを出力する必要があります。
(セキュリティパラメータは省略します。これは、「無視できる」または「気になる」を定義するために重要です。キーの生成はに依存し、は上記の利点があると想定する必要があります。はでは無視できます。つまり、未満です)
私たちが議論している暗号化のタイプを述べていませんが、カートグラフィックプロトコルのセキュリティに本当に必要なものを指摘しておきます(他の回答で述べられているものに加えて)。
私たちが本当に必要としているのはこれです:キーはランダムに生成する必要があります(これは、RSAのような公開キー暗号化のように共同で、または秘密キー暗号化のように1つのエンティティによって行うことができます)。キーのランダム性は、攻撃者がキーを予測できない(そしてそれらを使用してプロトコルを破ることができない)ことを保証します。キーが敵にランダムに見える限り、プロトコルは安全です。多くの場合、暗号化アルゴリズムと復号化アルゴリズムはランダム化されていませんが、決定論的である一方で、キーはランダム化されたアルゴリズムによって生成されてからパーティーに与えられます。
また、ランダム化されているからといって、プロセスが反転可能ではないという意味ではありません。簡単な例は次のとおりです、ランダムに生成し、出力します。反転の場合、ペアの最初の部分を出力できます。
暗号化と復号化の両方のアルゴリズムは、暗号化とそれに続く復号化によってほとんどの場合元のメッセージが得られるという定理を証明できる限り、ランダム化できます。
なぜ誰もがそのような暗号化スキームを望んでいるのでしょうか?理由:1)常に正しいことを望まないが、100000000ごとに99999999回しかない状況が存在し、2)このような小さなエラーを許可すると、他の何か(効率など)が不相応に改善されることがよくあります。
例をあげると、RSA暗号化では、2つの素数とと、公開鍵と秘密鍵の作成に使用される整数を生成する必要があります。
これらの値のいずれかを確定的な方法で生成すると、それらの生成が再現され、暗号化が損なわれる可能性があります。これらの数値がランダムな方法で生成されている場合、これは問題ではありません。
更新
Ran G.の回答のより具体的な例として、メッセージを暗号化および復号化するためにアルゴリズムがランダムパラメーター(通常は、またはと呼ばれる)を必要とするElliptic Curve暗号法を見ることができます。同じ「ランダム」パラメーターが複数回使用される場合、それらの鍵は2つの暗号化されたメッセージから計算できます。これが昨年のPlayStation 3ハックの問題/前提でした。