暗号化にはどのようにランダム性を含めることができますか?


8

暗号化アルゴリズムが文字列を別の文字列に変換することを意図していて、その文字列を復号化して元の文字列に戻すことができる場合、このプロセスはどのようにランダム性を伴うのでしょうか?

確かにそれは決定論的である必要があります。そうでなければ、暗号化された文字列の作成に関与した要因を復号化関数がどのようにして知ることができるでしょうか?


3
Crypto.SEのように、複数のStack Exchangeサイトで同じ質問をしないでください。
–PaŭloEbermann、2012

回答:


5

同じ平文にマッピングされる暗号文が複数存在する場合があります。数学的には、暗号化アルゴリズムは単射でなければならず、暗号文の平文を復元できますが、これは、暗号文が平文よりも多くの情報をエンコードすることを妨げるものではありません。

具体的な例として、CBCCTROFBなどのブロック暗号操作のモードを考えます。これらすべてのモードには、平文、ブロック暗号化アルゴリズム、およびその鍵に加えて、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を参照)。ビットを単純化するこのモードは、ランダムな文字列をメッセージに連結し、次にべき乗演算を適用することで構成されます。暗号文はで、は連結、はメッセージ、はほとんどのビットがランダムなパディング文字列です。暗号文からメッセージを復元するには、生の復号化操作を適用し、をパディング(破棄されます)とメッセージに分割します。(PM)emodnMPCCdmodnC


4

だけでなく、暗号化方式は、ランダム性を持っていますが、いくつかのケース(例えば、中に公開鍵暗号化)、それらをしなければならない、ランダム化すること。暗号化スキームを正しくする必要があるため、これは問題ではありません。つまり、メッセージとキーが ランダムにわたって。mk

Pr[ DEC( ENC(k,m,R) )=m]=1
R

公開鍵スキームがランダムでなければならない理由は、セキュリティの定義方法に由来します。暗号文が暗号化されたメッセージに関する情報を漏らしたくない場合。古典的な例は次のとおりです。仮定する、それぞれ、公開鍵と秘密鍵であり、敵対者が暗号化されたメッセージを傍受することをフィールドにいくつかのユニットに送られます。攻撃者はメッセージが「攻撃」または「リトリート」であることを知っていますが、どちらかは知りません。攻撃者ができることの1つは、パブリックを使用して両方のメッセージを暗号化することです。せと。場合(pk,sk)cpkcA=ENCpk("ATTACK ")cR=ENCpk("RETREAT")ENCが確定的である場合、者はをおよびと比較することにより、メッセージを確実に見つけることができます。ccAcR

この概念が正式に定義される方法は、セマンティックセキュリティと呼ばれます

暗号化スキームは、敵のが次のゲームによりも著しく高い確率で勝てない場合、意味的に安全です。A1/2

  1. チャレンジャーはキーを生成し、公開キーを敵に送信します。C(pk,sk)pk
  2. Aは、長さが等しいと 2つのメッセージを選択し、両方を渡します 。m0m1C
  3. Cは、ビットを均一に選択し、ます。b{0,1}ENC(mb)
  4. Aは、暗号化されたメッセージ(または)を必要があります。つまり、ビットを出力する必要があります。m0m1b

(セキュリティパラメータは省略します。これは、「無視できる」または「気になる」を定義するために重要です。キーの生成はに依存し、は上記の利点があると想定する必要があります。はでは無視できます。つまり、未満です) κκA1/2κκω(1)


問題を回避するために暗号化を実行する前に、入力の最後にランダムな文字列を追加し、常ににすることができます。つまり、条件は、上で述べたものよりも強くすることができます。DEC(ENC(k,m,R))=m
カヴェ

3

私たちが議論している暗号化のタイプを述べていませんが、カートグラフィックプロトコルのセキュリティに本当に必要なものを指摘しておきます(他の回答で述べられているものに加えて)。

私たちが本当に必要としているのはこれです:キーはランダムに生成する必要があります(これは、RSAのような公開キー暗号化のように共同で、または秘密キー暗号化のように1つのエンティティによって行うことができます)。キーのランダム性は、攻撃者がキーを予測できない(そしてそれらを使用してプロトコルを破ることができない)ことを保証します。キーが敵にランダムに見える限り、プロトコルは安全です。多くの場合、暗号化アルゴリズムと復号化アルゴリズムはランダム化されていませんが、決定論的である一方で、キーはランダム化されたアルゴリズムによって生成されてからパーティーに与えられます。

また、ランダム化されているからといって、プロセスが反転可能ではないという意味ではありません。簡単な例は次のとおりです、ランダムに生成し、出力します。反転の場合、ペアの最初の部分を出力できます。xrx,r


あなたの例は重要です:ランダムなパディングなしでは、バニラRSAは安全ではありません。ランダムパディングを使用すると、ランダムオラクルモデルでRSAが優れたセキュリティプロパティを備えていることが証明されます
Sasho Nikolov 2012

1

暗号化と復号化の両方のアルゴリズムは、暗号化とそれに続く復号化によってほとんどの場合元のメッセージが得られるという定理を証明できる限り、ランダム化できます。

なぜ誰もがそのような暗号化スキームを望んでいるのでしょうか?理由:1)常に正しいことを望まないが、100000000ごとに99999999回しかない状況が存在し、2)このような小さなエラーを許可すると、他の何か(効率など)が不相応に改善されることがよくあります。


3
確率的暗号化は存在しますが、どちらかというとエキゾチックな側面にあります。日常の暗号化アルゴリズムの多くは、確率論的ではなくランダム性を伴います。
Gilles「SO-邪悪なことをやめ

@ギレス:重要な区別をする。
ラファエル

0

例をあげると、RSA暗号化では、2つの素数とと、公開鍵と秘密鍵の作成に使用される整数を生成する必要があります。pqe

これらの値のいずれかを確定的な方法で生成すると、それらの生成が再現され、暗号化が損なわれる可能性があります。これらの数値がランダムな方法で生成されている場合、これは問題ではありません。

更新

Ran G.の回答のより具体的な例として、メッセージを暗号化および復号化するためにアルゴリズムがランダムパラメーター(通常は、またはと呼ばれる)を必要とするElliptic Curve暗号法を見ることができます。同じ「ランダム」パラメーターが複数回使用される場合、それらの鍵は2つの暗号化されたメッセージから計算できます。これが昨年のPlayStation 3ハックの問題/前提でした。dkr


1
:これは私が疑問である疑っている、キー生成におけるランダム性である任意のキー生成は、ランダム性を伴う必要があり、そうでない場合は、キーが予測(または派生して生成されていない)です。
Gilles「SO-悪をやめる」

私はそれがOPが考えているランダム化の場所ではないと思います。(en | de)暗号化用のキーが与えられ、静的です。どのようにあなたが選ぶあなたのキーと、そのとは無関係です。
ラファエル

@ギレス:私はそれがその明確なカットとは思わないでしょう。値、、およびは通常、ユーザーが選択したパスワードを使用して、暗号化された形式で格納されます。厳密に言えば、これらはキーですが、ユーザーの観点からは、キーボードで意味不明な文字を入力することによって生成されるランダムな値であり、慎重に選択したパスワードとは何の関係もありません。pqe
ペドロ

@Pedro最近のコメントが質問とどのように関連しているかわかりません。キーファイル(質問には表示されません)の観点から見ても、キーはランダムに生成されるのではなく、キーファイルとパスワードから生成されます。
Gilles 'SO-悪をやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.