こんにちは、カブロビテス! 控えめなニーズのために暗号化を行って、適切なレベルのデータセキュリティを維持しようとしているため(
ここで ecryptセクションにリストされているレベルに焦点を当てています)、RSA暗号化アルゴリズムを使用するときにパフォーマンスの低下を心配し始めました。
残念ながら、このアルゴリズムは、非対称暗号アルゴリズムを使用して小さなデータブロックの暗号化/復号化を可能にするopensslの唯一のアルゴリズムであることが判明しました(記事の意味-対称暗号化アルゴリズムのキー)。
インターネットを歩いてみると、次のことがわかりました。
1. El-Gamalは正常に暗号化/復号化できますが、これらの操作はopensslには実装されていません(libgcryptには実装があります)。 速度に関しては、El-GamalはRSAの3倍高速です。
キーの長さが同じで、キーの1ビットあたりの暗号強度が同じです。
2. Elliptic Curve cryptosystem(ECC)は、1ビットキーの速度と暗号強度に喜んで驚いていましたが、ECCに基づく暗号化/復号化操作はopensslに実装されていません。
libgcryptでのECC暗号化の実装は、非常に具体的です。 要するに、暗号化されたメッセージmは楕円曲線mGの点にマッピングされ、ECCをハッキングするか、mのすべての可能な値を列挙しない限り、そこから元のメッセージmを取得することはできません。
3.文献[1]はMenezes-Vanstone ECCについて説明していますが、その「脆弱性」の通知があります[2]
この質問をさらに詳しく調べてみましょう。
ちょっとした数学:
簡単にするために、楕円曲線についてのみ説明します。楕円曲線の形式は、ワイエルシュトラス方程式で記述されます
Zpとして定義された整数のフィールド上で、Zpは、ある素数pより小さく、ゼロより大きい整数のセットです。
E(p、a、b)-a、bはZpに属します-は素数pと数a、bで定義される体Zp上の楕円曲線です。 次に、抽象ゼロ要素Oを決定する必要があります(ワイエルシュトラス方程式bの係数が0に等しくない場合、条件点Oについては、この点が方程式の解でなくてもx = 0、y = 0の座標を取得できます)および曲線の要素(点)を追加する操作これにより、同じ曲線に属する新しいポイントが得られます。
当然、P + Q = Q + P、(P + Q)+ R = P +(Q + R)、P + O = O + P = Pであり、P(x、y)がある場合、つまり-P =(x、-y)およびP +(-P)= PP = O
これらはすべて、楕円曲線の点のグループに対して定義される数学的操作です。
文献[1]では、これらの操作がどのように決定されるかの数学的な詳細を見つけることができます。
異なるポイント(P = G + Q)を追加するか、ポイントを追加できます(P = Q + Q)。 「乗算」について説明するのは、レコードを短くする方法であり、P = Q + Q + Q + Q + ... + Q m回ではなく、P = mQと書くだけです。 実際、「乗算」や「除算」という操作はなく、「累乗」や「対数を取る」という操作はありません。
この用語はよく使用されますが、楕円曲線の場合、これが通常理解することを意味するものではありません。 楕円曲線上の点をそれ自体でm回加算することは、「mによる乗算」または「mの累乗」とも呼ばれます。 これの本質は変わらず、「除算」または「対数を取る」逆操作がないため、点m * Gからmを取得することは不可能であり、Gを知っていても、「楕円曲線上の離散対数の問題」と言います。 これが確立された用語です。
この曲線では、ポイントのグループのジェネレーターである(任意の)ポイントG(Gx、Gy)が選択されます。つまり、異なるmを設定することにより、乗算の結果mGが得られ、これがポイントの循環グループを形成します(有限体Zpにいるため)。 この循環グループのサイズは、生成元Gの点の順序と呼ばれます。
したがって、楕円グループは、曲線E(p、a、b)のパラメーター、生成元Gの点(Gx、Gy)、およびord * G = Oのグループordの順序によって完全に記述されます。 これはすべて楕円曲線パラメーターと呼ばれ、通常よく知られており、secp192k1やprime256v1などの名前で識別されます。
ユーザーの秘密鍵は(秘密、ランダム)番号1 <d <ord-1
ユーザーの公開キーはポイントQです。これは秘密キーdとグループGのジェネレーターの積です。Q= dG。
楕円曲線Menezes-Vanstone暗号システム[1](MVC)は何を提供しますか?
送信者側:
1.暗号化されたメッセージmは2つの部分x1とx2に分割され、それぞれがフィールドZpの要素である必要があります。このため、それらの長さをチェックし、曲線pのパラメーターの長さと比較すれば十分です。
2.送信者は、数字1 <ks <ord-1を(秘密、ランダム)選択します。
3.送信者は、ジェネレータポイントGに数値ksを乗算します。y0= ks * G
4.送信者は、ポイントZ(Zx、Zy)を計算し、受信者Qの公開鍵に数値ksを乗算します。Z= ks * Q
5.送信者はy1 = x1 * Zx(mod p)、y2 = x2 * Zy(mod p)を計算します
送信者のコストの計算:必要な長さの乱数の生成、ポイントに数値を乗算する2つの演算、pを法とする乗算の2つの演算。
暗号文は、ポイントy0、番号y1、番号y2です。 ポイントには2つの数値(x、y座標)が含まれます。 暗号文の合計量は約4 * pです;長さが192ビット(24バイト)のECCキーの場合、約24 * 4 = 96バイトです。
受取人:
1.受信者は、ポイントy0がパラメーターE(p、a、b)、G、またはordで指定された曲線に属していることを確認します。
2.受信者はポイントZを計算し、暗号テキストy0に自分の秘密鍵dを掛けます。Z= d * y0 = d * ks * G = ks * d * G = ks * Q
3.受信者は、成分Z(Zx、Zy)の乗法反転を計算します。e1= inv(Zx)(mod p)、e2 = inv(Zy)(mod p)。
4.受信者はx1、x2を回復します。x1= y1 * e1(mod p)、x2 = y2 * e2(mod p)。
受信者の計算コスト:ポイントのチェックは曲線に属し、ポイントに数値を乗算する1つの操作、pを法とする乗法反転を計算する2つの操作、
pを法とする乗算の2つの演算。
MVCの脆弱性または脆弱性
1997年、Klaus Kiefer [2]は、MVCはその設計に反して、確率的暗号化を使用するシステムではないことを示しました。 暗号文を知って、曲線のパラメータを知って、「既知の平文攻撃」(平文を推測する攻撃)を実行することができます。
それはどのように見えますか:
曲線E(p、a、b)、G、またはordのパラメーターは既知です。 暗号文y0、y1、y2は既知です。 平文はx1、x2と仮定します。
点F(f1、f2)f1 = y1 *(inv(x1))(mod p)、f2 = y2 *(inv(x2))(mod p)が曲線E(p、a、b)に属している場合、エラー確率1 / p x1、x2は実際に必要なプレーンテキストです。
これは実際にはどういう意味ですか?
すべての値x1、x2を計算コストで整理することができます.p 2を法とする乗法の逆算を計算する2つの操作、各バリアントx1、x2を法pに乗算する2つの操作、および暗号化されたテキストに対応するプレーンテキストを見つけるためのエラー1 / pの確率。 否定的なテスト結果は常に真であり、肯定的なテスト結果は1 / pの確率で誤認識を含む場合があります。 検索操作x1、x2は十分に並列化されており、多くのプロセスは重複しない範囲の値x1、x2を個別に反復処理できます。
参照用:192または256ビットのすべての可能なキー値の列挙(計算なしの列挙のみ)を参照したいと思います。 はい、128-168ビットですら。
無効化できるのは、最大48〜64ビットの暗号化されたデータの断片のみであることが明らかです。 また、この列挙はMVCなしで配置できます。すべての可能な値を列挙してキーを見つけるタスクでは、MVCを使用する必要はありません。これは不要なエンティティです。
最後に何がありますか?
十分な大きさ(128ビット以上)のテキストを暗号化して、妥当な時間と妥当なコスト内でブルートフォースによってそれらを見つける可能性を排除する場合、この「脆弱性」は何の役割も果たしません。
現在までの最小推奨ECCキー長は192ビット(24バイト)です。 この場合の暗号化されたMVCデータの長さは2 * 24 = 48バイトを超えてはならず、最も強力なAESまたはGOSTキーの長さは256ビット(32バイト)です。
しかし、暗号化と十分な速さを得る(私の推定によれば、ECC-224はRSA-2048の5倍、ElGamal-2048の3倍)非対称暗号化アルゴリズムです。
楕円曲線メネゼス-ヴァンストーン暗号システムは、まったく不当に忘れられていると思います。
このギャップを埋めようとして、openssl APIを使用してCソースを広めました。
参照:
1.コンピュータセキュリティと暗号、ALAN G. KONHEIM、John Wiley&Sons、Inc.、ホーボーケン、ニュージャージー、2007年。ISBN-13:978-0-471-94783-7 ISBN-10:0-471- 94783-0
2.
「メネゼス-ヴァンストーン暗号システムの弱点」 、Klaus Kiefer、教授の研究グループのメンバー。 J.ブーフマン1997
ご清聴ありがとうございました!