天天看點

談談加密、軟體資料保護

覺得這篇文章還可以,講清楚了加密的基本概念。轉一下。

資料加密的基本過程就是對原來為明文的檔案或資料按某種算法進行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其隻能在輸入相應的密鑰之後才能顯示出本來内容,通過這樣的途徑來達到保護資料不被非法人竊取、閱讀的目的。

  該過程的逆過程為解密,即将該編碼資訊轉化為其原來資料的過程。

  加密技術通常分為兩大類:“對稱式”和“非對稱式”。

  對稱式加密就是加密和解密使用同一個密鑰,通常稱之為“Session Key ”這種加密技術目前被廣泛采用,如美國政府所采用的DES加密标準就是一種典型的“對稱式”加密法,它的Session Key長度為56Bits。

  非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密檔案。這裡的“公鑰”是指可以對外公布的,“私鑰”則不能,隻能由持有人一個人知道。它的優越性就在這裡,因為對稱式的加密方法如果是在網絡上傳輸加密檔案就很難把密鑰告訴對方,不管用什麼方法都有可能被别竊聽到。而非對稱式的加密方法有兩個密鑰,且其中的“公鑰”是可以公開的,也就不怕别人知道,收件人解密時隻要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。

  加密算法

  一個加密系統S可以用數學符号描述如下:

  S={P, C, K, E, D}

  其中

  P——明文空間,表示全體可能出現的明文集合,

  C——密文空間,表示全體可能出現的密文集合,

  K——密鑰空間,密鑰是加密算法中的可變參數,

  E——加密算法,由一些公式、法則或程式構成,

  D——解密算法,它是E的逆。

  當給定密鑰kÎK時,各符号之間有如下關系:

  C = Ek(P), 對明文P加密後得到密文C

  P = Dk(C) = Dk(Ek(P)), 對密文C解密後得明文P

  如用E-1 表示E的逆,D-1表示D的逆,則有:

  Ek = Dk-1且Dk = Ek-1

  是以,加密設計主要是确定E,D,K。

  RSA是Rivest、Shamir和Adleman提出來的基于數論非對稱性(公開鑰)加密算法。大整數的素因子難分解是RSA算法的基礎。

  RSA在國外早已進入實用階段,已研制出多種高速的RSA的專用晶片。盡管RSA的許多特性并不十分理想,但迫于資訊安全的實際需要,許多重要的資訊系統還是采用RSA作為基礎加密機制。從RSA提出不久,我國有關部門就一直對它進行研究。從應用的角度看,軟體實作的RSA已經開始用于計算機網絡加密,用來完成密鑰配置設定、數字簽名等功能。

  除了RSA之外,還有DES(資料加密标準)。盡管DES公開了其加密算法并曾被美國列為“标準”,但很快被廢棄。加密技術又回歸到“算法保密”的傳統上。

  常見加密算法

  MD5:嚴格來說不算加密算法,隻能說是摘要算法

  對MD5算法簡要的叙述可以為:MD5以512位分組來處理輸入的資訊,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,算法的輸出由四個32位分組組成,将這四個32位分組級聯後将生成一個128位散列值。

  在MD5算法中,首先需要對資訊進行填充,使其位元組長度對512求餘的結果等于448。是以,資訊的位元組長度(Bits Length)将被擴充至N*512+448,即N*64+56個位元組(Bytes),N為一個正整數。填充的方法如下,在資訊的後面填充一個1和無數個0,直到滿足上面的條件時才停止用0對資訊的填充。然後,在在這個結果後面附加一個以64位二進制表示的填充前資訊長度。經過這兩步的處理,現在的資訊位元組長度=N*512+448+64=(N+1)*512,即長度恰好是512的整數倍。這樣做的原因是為滿足後面進行中對資訊長度的要求。(可參見MD5算法詞條)

  SSF33,SSF28,SCB2(SM1):國家密碼局的隐蔽不公開的商用算法,在國内民用和商用的,除這些外,都不容許使用其他的;

  其它算法,如ElGamal、Deffie-Hellman、新型橢圓曲線算法ECC等。

繼續閱讀