專利名稱:計算機軟件的函數加密方法及其裝置的制作方法
技術領域:
本發明涉及計算機軟件的加密方法及其裝置,特別涉及計算機軟件的函數加密方法及其裝置。
對計算機軟件進行加密處理,以防止非法拷貝,是保護軟件版權的有效辦法。目前,軟件加密的基本方法有如下幾種磁盤加密,在磁盤上制作一些特殊標記,如特殊磁道、激光孔,這些標記無法拷貝或很難拷貝;再在軟件中加一段程序判讀這些標記。由于非法拷貝的磁道沒有標記,軟件判讀不成功,就不能正常進行,從而實現加密的目的。這種方法易被解密。解密者并不拷貝標記,而是設法找到判讀標記的那段程序,加以修改使之失去作用;
密碼加密,典型的裝置是加密盒。盒內線路保存一個密碼,盒子不能拆開,拆開即毀壞密碼。軟件中加一段程序判讀密碼。這樣盡管軟件可以任意拷貝,如果沒有含有同樣密碼的加密盒,軟件就不能正常運行。這種方法也可被解密。解密者可以采用分析程序或監視硬件信號等方法獲得密碼,從而可以復制一個加密盒或用一個計算機來模擬加密盒的功能。也可以修改判讀密碼的那段程序;
隱蔽代碼,把一段程序代碼隱蔽在硬件中,需要時調入主機運行。這種方法同密碼加密類似,相當于隱蔽了位數更多的密碼。這種方法同樣可被解密。一種方法是通過分析加密裝置的接口特性,通過對接口的操作,讀出隱蔽的信息,從而復制一個類似的裝置或用計算機仿真;另一種辦法是待軟件讀入隱蔽代碼后截獲它,修改軟件使之不讀加密裝置而直接用此段代碼替換。
以上三種方法都可被解密,因此加密者必須采用種種辦法來反解密。軟件上可以采用反跟蹤、密文變換等技術;硬件上也可采取一些措施。但是,由于軟件的正常功能最終都由主機完成,軟件代碼最終都要進入主機存儲器,從而總有被截獲解密的可能,因為無論采取什么樣的反解密技術,都會有相應的解密手段;由于解密者手段越來越高,反解密措施也被迫變得越來越復雜,由此使加密成本增高、周期長、軟件運行速度受到影響,加密后軟件的結構同加密前差異很大,運行過程復雜,因此調試、維護困難,售后服務麻煩。
本發明的目的是改革現有計算機軟件的加密方法及其裝置,提供一種安全可靠不可被解密、特別能保證加密裝置設計者也解不開密、加密成本低、周期短、軟件運行速度不受影響、加密后軟件結構同加密前差異小、調試、維護、售后服務都方便的計算機軟件的函數加密方法及其裝置。
本發明的方法是按以下技術方案實現的按不加密的情況將被加密的軟件調試好,然后把該軟件正常功能的一部分讓軟件函數加密裝置完成,軟件函數加密裝置內含處理器,完成這些功能的代碼是軟件函數加密裝置處理器的程序,在軟件函數加密裝置內運行,不進入主機;軟件函數加密裝置處理器的程序不可被讀出和被跟蹤分析,為此處理器可以采用具有程序加密功能的單片機,或者在封裝上采用不可拆卸式封裝等技術;只把影響軟件正常運行的某一關鍵或幾個關鍵的一部分讓軟件函數加密裝置完成,這些某一關鍵或幾個關鍵的一部分只做數據處理,不訪問硬件資源,主機給軟件函數加密裝置傳送一批數據,軟件函數加密裝置經過處理后,把處理結果送回主機,軟件函數加密裝置即是一個硬件函數,接收一組輸入數據,產生一組輸出數據;軟件函數加密裝置硬件函數的輸入數據模式(數據組合及順序)不是固定的,同處理的對象有關,每次運行均不同,解密者試圖通過輸入輸出的關系,分析出軟件函數加密裝置硬件函數是不可能的;軟件函數加密裝置可含有很多子功能,并可被多次調用,每次執行一個子功能,這些子功能可用于不同的模塊或不同的軟件;軟件函數加密裝置內可定義內部全局變量,從而使各子功能之間存在相關,并且各子功能的輸出數據不僅同此次調用的輸入數據有關,還同以前的輸入數據有關。軟件函數加密裝置硬件函數可以是被加密軟件中的一組函數或運算,也可以人為地設計加密函數。
計算機軟件函數加密裝置是這樣制成的備好具有程序加密功能的單片機、單片機外圍電路、接口電路、印制板,把單片機,單片機外圍電路、接口電路安裝在印制板上,單片機外圍電路通過印制板布線與單片機相連接,單片機通過印制板布線與接口電路相連接,接口電路與主機相連接,單片機要寫入加密函數及單片機主程序和通信模塊,即構成軟件函數加密裝置。軟件函數加密裝置和被加密軟件相配合完成該軟件的正常功能,沒有軟件函數加密裝置的配合,被加密軟件不能運行;單片機具有程序加密功能,其程序一旦被寫入就不可被讀出和被跟蹤分析;一個軟件函數加密裝置內可含有一個單片機或多個單片機;軟件函數加密裝置的接口電路可以是串行接口或并行接口,接口電路通過電纜與主機相應接口相連接;軟件函數加密裝置的接口電路也可以是總線接口,接口電路同主機的總線相連接;當軟件函數加密裝置的接口電路用串行接口時,可采用RS232C標準串行接口;當軟件函數加密裝置內有多個單片機時,這些單片機可并聯連接到接口電路,每個單片機都有一個唯一的位號,位號不寫死在程序里,而是通過布線把不同的位號接在各個單片機的輸入口上,由單片機讀入后確定;軟件函數加密裝置插入主機的I/O擴展槽,從主機的I/O擴展槽向單片機、單片機外圍電路、接口電路提供電源;軟件函數加密裝置也可以外接電源,向單片機、單片機外圍電路、接口電路供電。
一個單片機可加密一個軟件,當使用多個單片機構成的軟件函數加密裝置時,可加密多個軟件,一次只有一個單片機同主機交換數據,各單片機相互之間不受干擾。軟件函數加密裝置可簡稱加密卡。
本發明改革了計算機軟件的加密方法及其裝置,由于軟件函數加密裝置輸入數據的模式是不固定的,因此解密者無法構造一個輸入輸出映射表,更無法由輸入輸出數據的關系分析出軟件函數加密裝置函數的功能,也無法模擬它;另一方面軟件函數加密裝置處理器的程序不可被讀出和被跟蹤分析,從而可靠地保證了加密軟件不可被解密;軟件函數加密裝置設計者也解不開密,因為他們不知道加密者設計的加密函數,也無法分析或讀出軟件函數加密裝置內的程序;由于軟件函數加密裝置保證了軟件不可被解密,因此不必考慮反跟蹤、反解密、密文變換等技術,從而使軟件運行速度不受影響,加密成本低、周期短,軟件易于調試、維護,售后服務簡單。采用標準接口,可適用于配有這種接口的各種計算機,且一個軟件函數加密裝置可對多個軟件進行加密。
下面將結合附圖和實施例對本發明作進一步詳細說明
圖1為本發明結構框2為本發明電路原理3為利用本發明對軟件進行加密方框圖在圖1中,1為軟件函數加密裝置(簡稱加密卡)、2為單片機外圍電路、3為單片機、4為接口電路、5為主機接口、6為主機、7為電纜、8為印制板布線、9為印制板參照圖1、圖2和圖3,本發明的方法是按以下技術方案實現的按不加密的情況將被加密的軟件調試好,然后把該軟件正常功能的一部分讓軟件函數加密裝置1完成,軟件函數加密裝置1內含有具有程序加密功能的單片機3,完成這些功能的代碼是單片機3的程序,在軟件函數加密裝置1內運行,不進入主機6;單片機3的程序不可被讀出和被跟蹤分析;只把影響軟件正常運行的某一關鍵或幾個關鍵的一部分讓軟件函數加密裝置1完成,這些某一關鍵或幾個關鍵的一部分只做數據處理,不訪問硬件資源,主機6給軟件函數加密裝置1傳送一批數據,軟件函數加密裝置1經過處理后,把處理結果送回主機6,軟件函數加密裝置1即是一個硬件函數,接收一組輸入數據,產生一組輸出數據;軟件函數加密裝置1硬件函數的輸入數據模式(數據組合及順序)不是固定的,同處理的對象有關,每次運行均不同,解密者試圖通過輸入輸出的關系,分析出軟件函數加密裝置1硬件函數是不可能的;軟件函數加密裝置1可含有很多子功能,并可被多次調用,每次執行一個子功能,這些子功能可用于不同的模塊或不同的軟件;軟件函數加密裝置1內可定義內部全局變量,從而使各子功能之間存在相關,并且各子功能的輸出數據不僅同此次調用的輸入數據有關,還同以前的輸入數據有關。軟件函數加密裝置1硬件函數可以是被加密軟件中的一組函數或運算,也可以人為地設計加密函數。
計算機軟件函數加密裝置是這樣制成的備好具有程序加密功能的單片機3、單片機外圍電路2、接口電路4、印制板9,把單片機3,單片機外圍電路2、接口電路4安裝在印制板9上,單片機外圍電路2通過印制板布線8與單片機3相連接,單片機3通過印制板布線8與接口電路4相連接,接口電路4通過電纜7與主機接口5相連接,單片機3要寫入加密函數及單片機3主程序和通信模塊,即構成軟件函數加密裝置1。軟件函數加密裝置1和被加密軟件相配合完成該軟件的正常功能,沒有軟件函數加密裝置1的配合,被加密軟件不能運行;單片機3具有程序加密功能,其程序一旦被寫入就不可被讀出和被跟蹤分析;一個軟件函數加密裝置1內可含有一個或多個單片機3;軟件函數加密裝置的接口電路4采用RS232C標準串行接口;當軟件函數加密裝置1內有多個單片機3時,這些單片機3并聯連接到接口電路4,每個單片機3都有一個唯一的位號,位號不寫死在程序里,而是通過布線把不同的位號接在各個單片機3的輸入口上,由單片機3讀入后確定;軟件函數加密裝置1插入主機6的I/O擴展槽,從主機6的I/O擴展槽向單片機3、單片機外圍電路2、接口電路4提供電源;
一個單片機3可加密一個軟件,當使用多個單片機3構成的軟件函數加密裝置1時,可加密多個軟件,一次只有一個單片機3同主機6交換數據,各單片機3相互之間不受干擾。軟件函數加密裝置1可簡稱加密卡。
參照圖3,利用本發明,軟件加密是這樣完成的,軟件開發者按不加密的情況將軟件調試好,設計加密函數,編寫軟件函數模擬加密函數并調試好軟件,然后用專用的高級語言寫加密函數,用此語言的編譯器編譯加密函數,利用此語言的連接器把加密函數同單片機3主程序及通信模塊連接在一起(也可直接用單片機3的匯編語言編寫加密函數),把最后形成的代碼寫入單片機3,把單片機3安裝到軟件函數加密裝置1;通過連接器把主機6通迅模塊和被加密軟件連接在一起,形成完整的被加密軟件,被加密軟件只有在軟件函數加密裝置1的配合下才能正常運行。另外,被加密軟件安裝時需要運行接口配置程序配置RS232C的有關信息及被加密軟件對應單片機3的位號。
采用本發明,給用戶的軟件無需做其他手腳,用戶可以隨意拷貝備份。用戶安裝的系統一旦被破壞,用戶可自行安裝,不必由銷售者去安裝了。由此可以節省許多費用,另外也不再擔心被人解密了。使用本發明的方法和裝置,許多軟件工作者多年研制的成果可以不再束之高樓,可以向社會推廣了,這將極大地促進我國計算機軟件行業的發展。本發明生產過程簡單,成本低、市場很大,一年若以銷售千只計,年可創利幾十萬圓人民幣。
權利要求
1.一種計算機軟件的函數加密方法,其特征是按不加密的情況將被加密的軟件調試好,然后把該軟件正常功能的一部分讓軟件函數加密裝置完成,軟件函數加密裝置內含處理器,完成這些功能的代碼是軟件函數加密裝置處理器的程序,在軟件函數加密裝置內運行,不進入主機;軟件函數加密裝置處理器的程序不可被讀出和被跟蹤分析;只把影響軟件正常運行的某一關鍵或幾個關鍵的一部分讓軟件函數加密裝置完成,這些某一關鍵或幾個關鍵的一部分只做數據處理,不訪問硬件資源,主機給軟件函數加密裝置傳送一批數據,軟件函數加密裝置經過處理后,把處理結果送回主機,軟件函數加密裝置即是一個硬件函數,接收一組輸入數據,產生一組輸出數據;軟件函數加密裝置硬件函數輸入數據模式不是固定的,同處理的對象有關,每次運行均不同。
2.如權利要求1所述的計算機軟件的函數加密方法,其特征是為了保證軟件函數加密裝置處理器的程序不可被讀出和被跟蹤分析,處理器可以采用具有程序加密功能的單片機。
3.如權利要求1所述的計算機軟件的函數加密方法,其特征是為了保證軟件函數加密裝置處理器的程序不可被讀出和被跟蹤分析,在封裝上可采用不可拆卸式封裝技術。
4.如權利要求1所述的計算機軟件的函數加密方法,其特征是所述的軟件函數加密裝置硬件函數可以含有很多子功能,并可被多次調用,每次執行一個子功能,這些子功能可用于不同模塊或不同的軟件。
5.如權利要求1或4所述的計算機軟件的函數加密方法,其特征是軟件函數加密裝置內可定義內部全局變量,使各子功能之間存在相關,并且各子功能的輸出數據不僅同此次調用的輸入數據有關,還同以前的輸入數據有關。
6.一種計算機軟件函數加密裝置,其特征是所述的軟件函數加密裝置是在印制板上安裝具有程序加密功能的單片機、單片機外圍電路、接口電路;單片機外圍電路通過印制板布線與單片機相連接,單片機通過印制板布線與接口電路相連接,接口電路與主機相連接,單片機要寫入加密函數、單片機主程序和通信模塊,即構成軟件函數加密裝置。
7.如權利要求6所述的軟件函數加密裝置,其特征是所述的具有程序加密功能的單片機可以是一個單片機或多個單片機。
8.如權利要求6所述的軟件函數加密裝置,其特征是所述的接口電路可以是串行接口或并行接口,接口電路通過電纜與主機相應接口相連接。
9.如權利要求6所述的軟件函數加密裝置,其特征是所述的接口電路可以是總線接口,接口電路同主機的總線相連接。
10.如權利要求8所述的軟件函數加密裝置,其特征是所述的串行接口是RS232C標準串行接口。
11.如權利要求6或7所述的軟件函數加密裝置,其特征是所述的軟件函數加密裝置的多個單片機可并聯連接到接口電路,每個單片機都有一個唯一的位號,位號不寫死在程序里,而是通過布線把不同的位號接在各個單片機的輸入口上,由單片機讀入后確定。
12.如權利要求6所述的軟件函數加密裝置,其特征是可以把軟件函數加密裝置插入主機的I/O擴展槽,從主機的I/O擴展槽向單片機、單片機外圍電路、接口電路提供電源。
13.如權利要求6所述的軟件函數加密裝置,其特征是軟件函數加密裝置可以外接電源,向單片機、單片機外圍電路、接口電路供電。
全文摘要
本發明涉及計算機軟件的加密方法及其裝置,特別涉及計算機軟件的函數加密方法及其裝置;本發明的裝置由具有程序加密功能的單片機、單片機外圍電路、接口電路、印刷板等及有關軟件構成,由于軟件加密函數裝置保證了軟件不可被解密,因此不必考慮反跟蹤、反解密、密文變換等問題,從而使軟件運行速度不受影響,使其加密成本低、周期短,軟件易調試、維護。
文檔編號G06F12/14GK1064558SQ9210168
公開日1992年9月16日 申請日期1992年3月23日 優先權日1992年3月23日
發明者邵徽欽, 陳建生, 劉軍, 張京春 申請人:天宇光電技術開發有限公司