2

カスタム Microsoft P160 PlayReady 曲線が HSM にフィードされるように、適切に DER でエンコードされた ECC パラメーターを作成しようとしています。P160 曲線は非標準でカスタムであるため、P160 曲線の定義を指定するソースをいくつか見つけました。以下は、1 つのソースへのリンクです。特に、PlayReady 曲線の値については、ウィリアム スタイン著『Elementary Number Theory,A Computational Approach』のセクション 6.4.2 で説明されています。

以下は、P160 PlayReady 曲線パラメーターに関する別の情報源からの影響です。

ECC の場合、Microsoft は Zp 上の楕円曲線を使用しています。ここで、p は 160 ビットの素数です (以下を参照)。曲線は、曲線 y^2=x^3+ax+b 上の点で構成されます。ここで、操作はフィールド Zp に対して行われ、a と b は以下に示す係数です。すべての値は、パックされたバイナリ値として表されます。つまり、Zp を超える単一の値は、単純に 20 バイトとしてエンコードされ、リトル エンディアン順に格納されます。したがって、楕円曲線上の点は 40 バイトのブロックであり、2 つの 20 バイトのリトルエンディアン値 (x 座標の後に y 座標が続く) で構成されます。MS-DRM で使用される楕円曲線のパラメーターは 次

とおり です。

coefficient b : 0dd8dabf725e2f3228e85f1ad78fdedf9328239e
generator x : 8723947fd6a3a1e53510c07dba38daf0109fa120
*generator y : 445744911075522d8c3c5856d4ed7acda379936f
Order of curve : 89abcdef012345672716b26eec14904428c2a675

These constants are fixed, and used by all parties in the MS-DRM system. この数値を 16 進数で表示すると、モジュラスの「オタクの魅力」が高まります。基本定数 e、pi、および sqrt(2) の数字だけでなく、16 進数でのカウントも含まれます。

この情報に基づいて、基本 ASN.1 ライブラリとして BouncyCastle を使用して、P160 曲線の DER エンコード曲線パラメーターの次の 16 進エンコードを作成しました。これらの曲線パラメータにはシード値が指定されていないことに注意してください。

308195020101302006072a8648ce3d010102150089abcdef012345672718281831415926141424f7302c041437a5abccd277bce87632ff3d4780c009ebe4149704140dd8dabf725e2f3228e85f1ad78fdedf9328239e0429048723947fd6a3a1e53510c07dba38daf0109fa120445744911075522d8c3c5856d4ed7acda379936f02150089abcdef012345672716b26eec14904428c2a675

数学的には、これらの曲線パラメーターは HSM と OpenSSL によって受け入れられますが、生成された P160 曲線ポイントは PlayReady には受け入れられません。同じプロセスを使用して、PlayReady に受け入れられる有効な P256 カーブ ポイントを生成できるので、私の方法に欠陥があるとは思いません。PlayReady P160 の曲線パラメーターを使用した経験のある人はいますか?

4

1 に答える 1

2

マイクロソフトで調査した後、解決策が見つかりました。どうやら、公開鍵のx / yポイントと秘密鍵をバイト交換して、PlayReadyツールキットがP160曲線に対してのみEC鍵ペアを受け入れるようにする必要があるようです。この奇数バイトのスワッピングは、P256ECキーペアには必要ありませんでした。

于 2012-08-16T18:15:52.730 に答える