2011-07-03 28 views
5

RSAまたはElGamalのような他のアルゴリズムではなく、非対称楕円曲線暗号を使用して«私自身のハイブリッド暗号エンジン»を実装したいと思います。CでのECCの実装

セキュリティを強化するカーブを使用したいと考えていますが、どのカーネルを使用する必要がありますか?私が読んだことに基づいて、おそらく521ビットのカーブが理想的だと思います。より安全な体制がありますか?

サイドチャネル攻撃などのC/C++(C++ STLを使用しない)で最も安全な実装は何ですか? «separate»モジュールとして実装したいので、きれいなソースコードや参考にしていただければ幸いです。

+11

独自の「ハイブリッド」エンジン? **注意。**暗号の第一のルールは、「あなたは専門家よりも優れた仕事をすることができません」。既存のアルゴリズムを変更すると、暗号化の背景を理解し、暗号化方式がどのように機能するかを完全に理解していない限り、暗号化を弱める可能性があります。 –

+0

あなたはその521ビットの楕円曲線暗号で国家の核兵器コードを保護しようとしていますか?単純に256ビットの素数を持つFIPS 186-3の標準的な実装、あるいは単純にカーブ25519のすべてが秘密を持っている可能性があるのではないでしょうか。それらは容易に入手可能で、より速いオーダーであり、あなたの生涯中にこれらのいずれかが壊れたり、ECをファクタリングすることが第一にエントリーのポイントになるという合理的なチャンスがあるようにはなりません(それがはるかに実装の悪用やソーシャルエンジニアリングを見つける可能性が高い)。 – Damon

+0

"最初のルール"はゼロで失敗します。 –

答えて

1

標準曲線が十分に安全でないかもしれないと考える前に、私はちょうど暗号化モードが本当に平凡な古い選択された暗号文攻撃に対して安全であることを確認します。 CramerとShoupの論文「Adaptive Chosen Ciphertext Attackに対して安全な実用公開鍵暗号化方式の設計と分析」(2003年)は、ハイブリッド暗号化方式を分析するための良い出発点です。

タイミング攻撃について:OpenSSLには、一定時間内に実行されるように実装された少数の選択された数のカーブの実装が含まれています。