-----課外知識1-----
之前提過ECC既private key係random揀個數出黎
簽名時候用既k, 即係暫時性既private key同樣係隨機揀個數出黎
但係呢個k要揀得好小心:用過一次既k唔可以再用
如果你真係咁環保
文件1同文件2都用左同一個k黎簽名
咁就大檸樂喇:hacker可以根據簽名1同簽名2 計番你條private key出黎
即係玩撚猿
點解咁特別提起呢個k?
因為歷史上真係有人試過用左同一個k而奶野:Sony
PS3一直以黎係唔玩得翻版碟
當中就係用左ECC digital signature
每隻正版碟都有Sony既簽名,文件就係隻game
而且部console就有Sony既public key, 可以驗證 Sony既簽名
如果你自己寫左game,擺落PS3度行,因為你無Sony 既簽名,通過唔到認證,就行唔到隻game
PS3就係用左ECC digital signature
2010年George Hotz唔知點樣發現,Sony generate PS3 Game既簽名果陣無用到隨機暫時性private key (即係k)
反而,所有簽名都用左同一個k
咁只要你肯比錢買多幾隻正版碟
就可以有好多
文件1, Sony 簽名1
文件2, Sony 簽名2
文件3, Sony 簽名3
就可以搵到Sony簽名用既private key
然後用Sony既private key黎幫你自己寫既game簽名
Digital Signature scheme係唔會知邊人用private key黎簽
verify果陣淨係認數字,所以一但公開左條key,就全世界都可以冒認Sony簽名
即係可以繞過Sony既認證檢查
簡單黎講:Jailbroken,可以玩翻版碟
George Hotz公開左條key之後,Sony嬲到爆炸
決定從法律途徑告George告到甩褲
呢個行為辣著左Anonymous, 因為Anonymous覺得而家係Sony柒左
有人免費幫你搵個loophole出黎你唔多謝佢不突止,仲要告佢?
Apple iOS都成日比人jailbreak啦,你有無見過Apple告人?
所以2011年4月Anonymous大規模攻擊Sony
傳說話佢地就係用private key 簽左一個自己寫既programme,所以登入到dev-PSN network...
繼而拎到曬所有PSN所有user既資料...
之後既事大家都應該知啦,PSN down左成個月咁濟...
Sorry 呀 追到呢part 未追晒成個post 但有啲野想問
如果我當Sony 係用左random private key k
咁佢console 個private 咪要不斷跟住咁變?
因為以我睇完既理解 private key and public key shall be a pair
但如果係咁 部console 點認邊條public key 對應邊條private key ?
會變既係文中既"暫時"public/private key, 但其實唔係key而係randomness黎
public/private key係可以長用而randomness係次次都唔同
'private' randomness只會係sign時用, 而'public' randomness係signature既一部分, verify時會用到
sony個例子係2個signature用左同一個randomness, 導致2個signature既randomness可以互相抵消, 從而得到private key
舉個簡單既例子
假設比g^a mod p搵唔返a
以下省略mod p
private key = sk = s
public key = pk = g^s
(private) randomness = r, r'
signature of m = (a1, a2) = (g^r, sm+r)
verfy: check (pk^m)(a