全球唯一ID | 64位(bit) |
超大用戶空間 | 32K |
硬件芯片 | 16位高強度智能卡芯片 |
鎖內硬件可編程 | 可使用成熟的C51語言開發鎖內程序 |
文件存儲 | 可執行文件、密鑰文件等機密文件不可導出,杜絕鎖內算法泄漏 |
安全數據存儲 | 智能卡硬件保證鎖內數據安全存儲 |
非對稱加解密算法 | 硬件內部支持512/1024位RSA非對稱算法 |
對稱加解密算法 | 硬件內部支持DES/3DES對稱算法 |
復雜數學運算 | 硬件內部支持單/雙精度浮點運算 |
遠程升級 | 建立在RSA算法體系上的安全遠程升級 |
全球唯一ID | 每個 ROCKEY3 加密鎖內部都有一個唯一的硬件 ID,這個硬件 ID 是在加密鎖出廠時燒入的,即使是廠家也不能修改這個硬件 ID,而且這個硬件 ID 具有唯一性, 即世界上不可能有兩個相同硬件 ID 的 ROCKEY3 加密鎖,當開發者需要給特定用戶加密時,可以通過檢查這個 ID 來確認加密的唯一有效性。 開發商可以通過RY3_GetHardID接口來獲得硬件序列號。 |
硬件算法 | ROCKEY3硬件實現512、1024、2048位的RSA運算功能,MD5,SHA1散列算法,復雜的單精度和雙精度浮點運算 |
開發商口令 | 開發商口令(24字節)是開發商在進行軟件保護開發時使用到的,其作用主要是對ROCKEY3硬件進行設置,如:創建文件,刪除文件等。該口令為24個字節,初始值為:“123456781234567812345678”,十六進制表示為“0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38”。雖然開發商口令只能向鎖內寫入和刪除文件,而不能獲取鎖內的任何數據,但還是建議開發商在初始化時,將默認的開發商口令更改成自己的設定的獨特值,以防止被非法者獲取 |
開發商ID | 開發商ID為8個字節,初始值為“00000000”。開發商可以通過ROCKEY3加密鎖設置工具或者API接口函數來重新設置開發商ID,并通過開發商ID來判斷是否是自己的ROCKEY3。在設置開發商ID時,為了防止其他人設置相同的開發商ID,ROCKEY3采用了種子的方式來生成開發商ID,即開發商輸入產生開發商ID的種子(種子長度最大為250字節),ROCKEY3會在硬件內部根據該種子產生相應的開發商ID,而且是不可逆的。只有生成者,才知道什么樣的種子能生成自己的開發商ID,這樣其他人即使獲得了開發商ID,但由于不知道產生開發商ID的種子,因此無法設置相同的硬件,大大增加了安全性。 開發商可以通過RY3_SetVendorID接口來設置開發商ID。 |
數據存儲區 | ROCKEY3 加密鎖提供8k的數據存儲區。其中 0-7168 字節為低級數據存儲區,7169-8192字節(共1024字節)為高級數據存儲區。低級存儲區不論是開發商模式還是用戶模式都可以進行讀、寫操作。高級數據存儲區只有在驗證了開發商密碼后(即開發商模式),才能進行寫操作,讀操作不需要驗證開發商密碼。用戶模式只能對高級數據存儲區進行讀操作。 軟件開發商在調用API函數對數據存儲區進行寫操作時,請調用RY3_VendorWrite接口。 |
共享內存區 | ROCKEY3 加密鎖內有32字節的共享內存區。能夠充分保證在鎖內運行的程序享有充足的卡片內存 開發商可以通過RY3_ReadShare、RY3_WriteShare接口來讀寫共享內存區 |
用戶可用空間 | ROCKEY3 加密鎖提供32k的用戶可用空間。在此空間中,用戶可以存放自己的文件 |
文件系統 | ROCKEY3中的文件系統與Windows的文件系統一樣,是文件結構,文件包括:可執行文件,數據文件和密鑰文件。每個文件都有自己的ID,這個ID為2個字節,例如:0x1002,0x100A等,文件的ID不能重復。對文件系統的操作,可以通過調用內部函數(C51語言)和外部API函數來實現 |
可執行文件 | 可執行文件是由C51語言編寫的,在加密鎖內部運行的文件。您的應用程序運行時,調用我們提供的各種語言的API接口,向該文件傳入輸入數據,可執行文件在加密鎖內部運行后,將結果返回給外部的應用程序。可執行文件可以被其他可執行文件改寫,驗證開發商口令后可以創建和寫入。文件中的內容不能被任何人讀取。當需要遠程升級時,可以創建可執行文件,通過程序改寫鎖內的可執行文件 |
內部數據文件 | 存放數據信息的文件。該文件在開發商口令驗證后,可以通過API接口寫入,但不能讀。或者通過鎖內可執行文件來讀取和寫入。即應用程序調用外部的API接口,API接口調用ROCKEY3內部的可執行文件,可執行文件(通過C51語言)讀寫內部數據文件。 |
核心芯片 | 16位高強度智能卡芯片 |
硬件序列號 | 全球唯一硬件序列號 |
存儲空間 | 32K |
硬件內置算法 | 種子碼算法,Float運算,DES,3EDS,RSA算法等 |
時鐘芯片 | 無 |
讀次數 | 無限制 |
寫次數 | 至少10萬次 |
USB通訊 | 無驅高速HID協議,USB通訊硬件級加密,USB1.1標準設備,兼容USB2.0接口 |
操作系統支持 | Windows 98SE、Windows Me、Windows 2000、Windows 2003、Windows XP、Windows Vista、Windows 2008、Windows7 |
接口類型 | USB A型插頭 |
處理器 | 16位智能卡芯片 |
內置安全算法 | 512/1024/2048位RSA、3DES、MD5、SHA1等算法 |
加密方式 | API調用、外殼加密、通訊加密 |
外觀尺寸 | 63*20*9mm(G6外殼) |
外殼材質 | ABS(樹脂) |
總重量 | 11g |
工作溫度 | 0℃~60℃ |
存放溫度 | -25℃~+85℃ |
濕度 | 20%-80% |
供電方式 | USB口取電 |
工作功率 | 0.5w(最大) |
工作電流 | 100mA (最大) |
數據保存年限 | 至少 10 年 |
虛擬機開發環境 | 支持C51編譯器——KEIL集成開發環境 |
加密方案設計原則 | 軟件加密方法是每個軟件開發商結合自己軟件特點所設計出來的具有獨特性的方案,每個開發商應該有自己特別的方案,不要雷同,更要做好保密工作,防止破解者根據經驗進行破解 |
有迷惑性的代碼 | 通常來說,編程人員和解密者都具有很好的邏輯思維能力,他們都會認為如果某段程序存在,那么就應該有這段程序存在的意義。編程人員為了代碼的效率和空間會不斷的剔除無用的代碼,解密者也是這么理解開發人員的,他通過分析程序中保護代碼的每一段指令來追索編程人員的保護思路。如果反其道而行之,故意添加大量的無用的代碼,把程序復雜化,畢竟開發者是在拿高級語言編寫程序,而解密者是在看匯編代碼,想搞清楚哪些代碼是有用的,哪些代碼是無用的,并不是一件簡單的事。 |
虛假的檢查 | 故意去把返回結果和一些錯誤的答案進行比較,比較結果一定應該是錯誤的,如果比較結果發現是正確的,說明有人正在試圖破解您的軟件。反擊的手段可以有多種選擇。 |
驗證時機的選擇 | ![]() 軟件在運行時,驗證時機可以是沒有規律的,是散亂的,那么要查找到所有的加密點則不是一件容易的事情。 |
ROCKEY3軟件加密新理念 | 傳統的軟件加密方法很多只是把加密鎖當作存儲設備,將簡單的信息存儲在里面,然后在軟件運行時進行判斷,也有許多開發商只是檢測硬件是否存在,這些加密手段在現在的破解中十分容易,根本就沒有任何加密價值,軟件非常容易被盜版。后來有的加密鎖中加入了自定義算法,但由于硬件的限制,算法也只有簡單的加,減,左移,右移等,算法再怎么變化也就是這幾種之間的組合,最主要的是這樣的算法根本不能完成軟件需要的功能。 智能卡技術的介入,使加密鎖可以完成以前只有在PC中才可以實現的功能,軟件開發商可以通過這樣的步驟來實現軟件加密。 (1)使用高級語言開發軟件 (2)將核心算法轉換成C51語言,進行編譯。轉換成ROCKEY3的可執行文件的方式存儲在加密鎖中。 (3)應用程序運行過程中,遇到關鍵算法時,將需要運行的數據傳給ROCKEY3,ROCKEY3在加密鎖內調用可執行文件內完功能,將結果傳給應用程序,程序繼續執行。 ![]() 很多商業軟件,如CAD設計軟件,工程預算軟件,財務軟件等里面包括很多數學計算的公式,對這樣的軟件進行高強度的加密是非常容易的。由于ROCKEY3具有復雜的雙精度浮點運算的能力,可以運算復雜的三角函數,因此能夠滿足這些軟件的計算要求。那么原來在計算機內存中完成的運算完全可以植入到加密鎖中運行,這樣破解者只能跟蹤到程序中的輸入和輸出,而不清楚加密鎖中的算法是什么,在沒有加密鎖的情況下,程序中就沒有計算的結果或結果不正確,從而軟件不能運行。例如:我們可以將身份證15位升級到18位的算法放入ROCKEY3中運行,沒有加密鎖就沒有正確的結果,軟件必須靠加密鎖來完成,從而不可破解。這種加密方法需要注意: (1)算法要夠復雜。算法如太簡單,如只是一個加法,那么破解者完全可以通過輸入和輸出猜測到鎖內的算法,使用軟算法模擬,則程序被破解。 (2)ROCKEY3采用的是16位的智能卡芯片,浮點運算能力非常快。能滿足多數運算要求。如某些應用軟件要求運算速度,可以將復雜公式中的部分放到加密鎖內運行。 (3)加密鎖內的公式不能是已經公開的或者是泄漏的公式,這些不安全的公式可以被破解者軟件模擬。 (4)計算的結果一定要是軟件使用到的,而不是在軟件中比較。如加密過程是比較的話,破解者很容易找到比較的邏輯判斷點,進行屏蔽等修改,這樣即使鎖內的運算是多么復雜都是無效的。 上述的方法是軟件保護中切實有效的方法,ROCKEY3就是一個黑盒子,那么只要注意上面的四點說明,使用這樣的方法進行保護的軟件是不可能被破解的。 |
ROCKEY3內進行邏輯判斷 | 在對軟件進行加密時,可以使用外部的API函數接口或者在鎖內使用C51的接口來獲得硬件信息,如硬件ID號,開發商ID等。由于這些硬件信息是唯一的,因此可以在ROCKEY3加密鎖內部針對這些信息進行處理和判斷,邏輯處理在加密鎖內部,破解者是無法修改的,從而達到軟件不能被破解。在這種加密方法中加入隨機數的成份會大大增加加密強度。如:(1)軟件運行時得到一個隨機數和硬件ID,將隨機數與這個ID進行處理,傳入到鎖內的可執行文件中。(2)在鎖內進行反向處理,得到硬件ID,這個ID與使用C51語言得到的硬件ID進行比較,進行邏輯判斷。這樣破解者每次跟蹤到的是隨機內容,而邏輯的過程又是在加密鎖內進行,軟件不能被破解。 |
設置輸入和輸出迷宮 | 有的破解者使用USB協議分析儀,對PC與加密鎖之間傳輸的數據進行分析。ROCKEY3在USB接口傳輸的數據是密文。但為了更加安全,建議軟件開發商在傳輸數據時做一些處理,即加解密的算法由每個軟件開發商自己掌握,各不相同。除了ROCKEY3的通訊算法外,再加上每個開發商自己的算法,一家的算法泄漏也不會影響其他的軟件。加解密算法可以開發商自己設計,也可以使用3DES等流行的對稱算法。其過程如下:(1)在外部API函數進行調用時,對要傳輸的數據進行處理。(2)在鎖內的程序進行反向處理,得到真正的輸入,再進行下面的程序。 |
計時功能 | 開發商可以在第一次運行時,將系統時間記錄下來,在鎖內創建一個起始時間的內部數據文件,然后把這個起始時間在加上一個時間(如30天,或使用分鐘數等),再創建一個結束時間的內部數據文件,那么就可以解決如何設定開始時間的問題。 程序第一次運行時,鎖內沒有這2個數據文件,返回打開失敗,開始創建,后面在運行時,這2個文件打開成功,可以向開始時間文件寫新讀到的系統時間,這時要比較新的時間是否比開始時間文件中的時間要早,防止用戶修改系統時間,然后再與結束時間比較,看是否在范圍內。這樣就可以完全實現外部時鐘的功能,即節省了成本,又可以防止外部時鐘失效的問題。 |
計次功能 | 開發商可以在ROCKEY3內創建一個內部數據文件用來記錄軟件的使用次數,軟件每使用一次,就將這個文件的次數改寫一次,當文件不存在或者記錄的次數為0時,軟件使用到期。可以在ROCKEY3的可執行文件中進行邏輯處理,使用到期后核心的可執行文件無法運行。 |
3DES,RSA與應用程序的綜合運用 | ROCKEY3加密鎖采用的是16位的智能卡芯片,具備高性能的3DES和RSA運算能力。3DES,RSA這些對稱和非對稱的加解密算法可以使用在單機版軟件,C/S結構和B/S結構中的軟件中。下面就對C/S結構的軟件舉例說明: ![]() <1>為插在服務器上運行的加密鎖,鎖內存儲有RSA運算的私鑰,以及開發商自己編寫的關聯算法。 <2>服務器端程序,該程序主要是將客戶端傳來的數據進行處理,傳輸給加密鎖,或者將加密鎖處理的數據傳給客戶端。 <3>客戶端程序,客戶端需要有與服務器端加密鎖中私鑰對應的公鑰。 應用程序運行時,客戶端的程序產生隨機數作為3DES加解密的密鑰,使用程序中存在的公鑰對隨機數進行加密傳給服務器端,服務器端在ROCKEY3在鎖內使用私鑰進行解密,并將對稱密鑰存儲成內部數據文件。這樣程序運行時在網絡上傳輸的數據都是使用3DES算法加密過的數據,保證了傳輸數據的保密性,被跟蹤到沒有關系。 為了防止解密者篡改客戶端程序,即購買一把ROCKEY3加密鎖,然后使用破解者自己的RSA密鑰對,將客戶端的公鑰替換進行解密,開發商還應該在ROCKEY3中加入自己設計的關聯算法,這些算法以C51程序的形式在加密鎖中,任何人無法得知其中的過程,那么即使公私鑰被替換,但開發商這些獨特的算法破解者是不知道的,軟件也無法被破解。例如:如果要限制客戶端的數目,當一個用戶發出登錄請求時,客戶端將客戶端的信息經過軟件的3DES加密傳給服務器端,服務器端軟件將這些信息傳入給ROCKEY3,加密鎖在鎖內進行:(1)將信息解密,與關聯算法得到的信息進行比對,如一致則認為該客戶端有效。(2)同時在鎖內判斷登陸數量是否已滿。如這兩點都滿足,則表明客戶端是一個合法用戶,將登陸加密的信息發給客戶端,客戶端使用軟件的3DES解密出客戶端需要的正確結果,完成連接。如條件不滿足,返回錯誤的加密信息,雖然表面看起來,與正確的數據差不多,但這時使用客戶端的對稱密鑰解密后的數據是一堆無用亂碼,連接失敗。在這個示例中需要注意的就是:(1)一定要有關聯算法,否則很容易被重新生成RSA密鑰對,而被破解。(2)各種檢查和判斷一定要在鎖內進行,服務器端的程序只是起到一個傳輸的作用。 |
遠程升級 | 軟件開發商將加密后的軟件賣給最終用戶后,在軟件進行升級時可以利用遠程升級功能而不必回收加密鎖。遠程升級時,在用戶模式下就可更改加密鎖中的資源:8192字節的數據存儲區,1-8號的RSA公私鑰對,1-8號的3DES密鑰。但是不能升級32k用戶空間中的內容,用戶空間中的內容如果要升級,需要用戶自行處理。 |
升級過程 | (1)在軟件發行時,ROCKEY3內部存有可執行文件和內部數據文件,另外還要有一個用于升級的可執行文件,這里稱為UP文件。升級時要保證傳輸的是密文,您可以使用RSA非對稱加解密或者使用3DES對稱加解密。這里我們使用RSA非對稱加解密,就需要ROCKEY3中已經存在一個私鑰。例如ROCKEY3內存在:A(可執行文件)、B(內部數據文件)、PRI(私鑰文件)和UP(可執行文件)。br />(2)當軟件進行升級時,開發商需要將新的A’和B’使用與已經存在的ROCKEY3中私鑰文件(PRI)對應的公鑰文件(PUB)進行加密,將加密后的結果傳輸給最終用戶。注意,公鑰文件最好不要存放在鎖內。雖然即使寫入也沒有辦法讀出來,但是我們建議公鑰文件最好不要存放在鎖內。因為公鑰泄漏可能會導致其他人產生非法的升級包,不過即使這樣也只能破壞鎖內數據,不會造成加密的安全問題。br />(3)在最終用戶處的ROCKEY3內部的UP可執行文件接收到A’和B’的密文,使用鎖內的私鑰文件(PRI)將A’和B’解密,然后使用C51語言的文件操作接口(見6.3.1-6.3.6節中的說明),將鎖內的A和B替換為A’和B’,升級完成。產生升級包時可以指定允許被升級的硬件ID,這樣就能對指定ROCKEY3進行升級。 |
![]() | |
外觀尺寸 | 74*23*10(mm) (默認G6外殼) |
外殼材質 | ABS(樹脂) |
總重量 | 約14.6g(默認G6外殼) |
標簽 | 有標簽位(默認不貼標簽) |
開發套件(SDK,Software Development Kit)是為開發人員提供的開發包,包括:USB Key硬件、開發工具和示例。您可以在線申請免費試用的開發套件!
飛天誠信科技股份有限公司 ? 1998-2022。
網站備案號:京ICP備05039625號 京公網安備號:110108008029