2012-07-25 117 views
2

我正在嘗試爲自定義Microsoft P160 PlayReady曲線創建正確的DER編碼的ECC參數,以便饋入HSM。我發現了一些指定P160曲線定義的來源,因爲它是非標準和自定義的。以下是一個來源的鏈接。特別是,PlayReady曲線值是由William Stein編寫的基本數論,計算方法一書的discussed in Section 6.4.2
Microsoft PlayReady DRM P160橢圓曲線參數

以下是關於P160 PlayReady曲線參數的從another source的作用。

對於ECC,Microsoft在Zp上使用橢圓曲線,其中p是160位素數(以下給出)。該曲線由位於曲線上的點 組成,其中操作在 上完成,場Zp和a和b是下面給出的係數。 所有值均表示爲壓縮二進制值:換句話說,Zp上的單個值僅編碼爲20個字節,以小數點排序存儲在 中。因此橢圓曲線上的一個點是一個40字節的 塊,它包含兩個20字節的小端點值(x座標後面跟着y座標,即 座標)。下面是 在MS-DRM中使用的橢圓曲線的參數:

P(彈性模量): 89abcdeff7
係數: 37a5abccd277bce87632ff3d4780c009ebe41497
係數b:0dd8dabf725e2f3228e85f1ad78fdedf9328239e
發生器X:8723947fd6a3a1e53510c07dba38daf0109fa120
*發電機y:445744911075522d8c3c5856d 4ed7acda379936f
曲線順序:89abcdefb26eec14904428c2a675

這些常數是固定的,並通過在MS-DRM 系統各方使用。當你看到這個十六進制的 數字時,模數的「書呆子吸引力」很高:它包括以十六進制計數,如 以及基本常數e,pi和sqrt(2)的數字。

根據這些信息,我使用BouncyCastle作爲基礎ASN.1庫,爲P160曲線創建了DER編碼曲線參數的十六進制編碼。請注意,這些曲線參數中沒有指定種子值。

308195020101302006072a8648ce3d010102150089abcdeff7302c041437a5abccd277bce87632ff3d4780c009ebe4149704140dd8dabf725e2f3228e85f1ad78fdedf9328239e0429048723947fd6a3a1e53510c07dba38daf0109fa120445744911075522d8c3c5856d4ed7acda379936f02150089abcdefb26eec14904428c2a675

雖然數學上這些曲線參數由HSM和OpenSSL接受,所生產的P160曲線點不接受的PlayReady。我可以使用相同的過程來生成PlayReady可接受的有效P256曲線點,所以我不相信我的方法有缺陷。有沒有人有PlayReady P160曲線參數的使用經驗?

回答

2

經過微軟研究發現該解決方案。顯然,必須將公鑰x/y點和私鑰交換爲私鑰才能讓PlayReady工具包接受僅用於P160曲線的EC密鑰對。 P256 EC密鑰對不需要此奇數字節交換。

+0

答案(交換公鑰和私鑰)對我來說沒有任何意義,希望它對別人有意義。 – 2013-05-09 11:08:28