Re: [討論] 序號保護機制

看板CodeJob (BBS架站)作者 (秋)時間16年前 (2009/02/23 21:53), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串6/6 (看更多)
※ 引述《jlovet (Want 2 see u no more)》之銘言: : 謝謝那個lib, : 您說的都沒有錯, : codeproject那的文件就把RSA用來作activation : 我不用signature的原因是 : 雖然他可以保留住private key : 但是他只是比對簽章對不對,那些pediy的人還是可以很容易改掉一個指令 : 讓簽章就算不對也可以繼續執行軟體 可以考慮這樣的做法: 先將一段重要的機械碼以AES加密,設對稱金鑰為K, RSA以公鑰檢驗簽章(解密)後,正確的序號可以得到正確的K, 再使用K將機械碼解密,該段機械碼執行完畢後再加密回來(要做一些防止dump的處理)。 如果使用了不正確的序號,會解出不正確的K'!=K,就無法解密並執行該段機械碼。 如此可以使得破解者想籍由改掉指令而破解軟體的困難度大增, 我除了這樣做之外,還會做一些Anti-Debug及檢驗機械碼是否有被竄改的動作。 其實這樣仍然有可能被破解,只是增加破解者破解的困難度而已。 一套軟體要做到完全不被破解不太可能, 但是我們可以做到短時間內不被破解, 讓軟體賣出後維持一段壽命,讓公司賺錢,然後跟老闆交差了事,呵呵呵。 : 如果用來sign軟體本身當序號的話 : 那我就覺得有疑問了 : 對同一個文件不是應該會生出同樣的signature嗎? 這部份我是用RSA簽章做,可以加一些參數,讓它產生不同的簽章, 然後再搭配前文的方式(用ECDSA就無法做到前文的方法了)。 我的做法是sign使用者名稱時,再加上一些參數一起sign, 使得同樣的使用者名稱可以產生不同序號。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.103.110

02/23 22:06, , 1F
是,我是這麼做的,只是我是用ECIES.然後想辦法讓private
02/23 22:06, 1F

02/23 22:06, , 2F
不能生出public,這樣就可以放心把private放出去了
02/23 22:06, 2F

02/23 22:07, , 3F
其實我搞不太懂RSA是怎麼樣,EC就點跟數字簡單多了...
02/23 22:07, 3F
文章代碼(AID): #19egfQZd (CodeJob)
討論串 (同標題文章)
文章代碼(AID): #19egfQZd (CodeJob)