序列加密體制
1. 密碼分為哪三種
密碼分為核心密碼、普通密碼和商用密碼。
《中華人民共和國密碼法》
第七條 核心密碼、普通密碼用於保護國家秘密信息,核心密碼保護信息的最高密級為絕密級,普通密碼保護信息的最高密級為機密級。
核心密碼、普通密碼屬於國家秘密。密碼管理部門依照本法和有關法律、行政法規、國家有關規定對核心密碼、普通密碼實行嚴格統一管理。
第八條 商用密碼用於保護不屬於國家秘密的信息。公民、法人和其他組織可以依法使用商用密碼保護網路與信息安全。

《中華人民共和國密碼法》
第十三條 國家加強核心密碼、普通密碼的科學規劃、管理和使用,加強制度建設,完善管理措施,增強密碼安全保障能力。
第十四條 在有線、無線通信中傳遞的國家秘密信息,以及存儲、處理國家秘密信息的信息系統,應當依照法律、行政法規和國家有關規定使用核心密碼、普通密碼進行加密保護、安全認證。
以上內容參考:網路——中華人民共和國密碼法
2. 序列密碼加密和一次一密加密有什麼相同和不同
序列加密是分組,或者說排序。下一個序列的密鑰有上一個序列得出。所以只有能夠正確排序密文且獲得最開始的序列密文才能獲取後續序列的密鑰。
一次一密演算法是使用和消息等長的密鑰,密鑰和明文的二進制位數相同,按位異或,即每加密一位都使用一個密鑰
3. 請簡述什麼是序列密碼與分組密碼,它們的區別是什麼
序列密碼(Stream Cipher):
又稱流密碼,將明文消息按字元逐位進行加密。
分組密碼(Block Cipher):
在分組密碼中將明文消息分組(每組有多個字元),逐組進行加密。
4. des是什麼密碼體制
對稱密碼體制是從傳統的簡單換位發展而來的。其主要特點是:加解密雙方在加解密過程中要使用完全相同的一個密鑰。使用最廣泛的是DES(Data Encryption Standard)密碼演算法。
從1977年美國頒布DES密碼演算法作為美國數據加密標准以來,對稱密鑰密碼體製得到了廣泛的應用。對稱密鑰密碼體制從加密模式上可分為序列密碼和分組密碼兩大類。
1.序列密碼
序列密碼一直是作為軍事和外交場合使用的主要密碼技術之一。它的主要原理是:通過有限狀態機產生性能優良的偽隨機序列,使用該序列加密信息流,得到密文序列。所以,序列密碼演算法的安全強度完全決定於它所產生的偽隨機序列的好壞。產生好的序列密碼的主要途徑之一是利用移位寄存器產生偽隨機序列。目前要求寄存器的階數大於100階,才能保證必要的安全。序列密碼的優點是錯誤擴展小、速度快、利於同步、安全程度高。
2.分組密碼
分組密碼的工作方式是將明文分成固定長度的組,如64比特一組,用同一密鑰和演算法對每一塊加密,輸出也是固定長度的密文。
對稱密鑰密碼體制存在的最主要問題是:由於加/解密雙方都要使用相同的密鑰,因此在發送、接收數據之前,必須完成密鑰的分發。所以,密鑰的分發便成了該加密體系中的最薄弱,也是風險最大的環節,所使用的手段均很難保障安全地完成此項工作。這樣,密鑰更新的周期加長,給他人破譯密鑰提供了機會。在歷史上,破獲他國情報不外乎兩種方式:一種是在敵方更換「密碼本」的過程中截獲對方密碼本;另一種是敵人密鑰變動周期太長,被長期跟蹤,找出規律從而被破解。在對稱演算法中,盡管由於密鑰強度增強,跟蹤找出規律破解密鑰的機會大大減小了,但密鑰分發的困難問題幾乎無法解決。例如,設有n方參與通信,若n方都採用同一個對稱密鑰,一旦密鑰被破解,整個體系就會崩潰;若採用不同的對稱密鑰則需n(n-1)個密鑰,密鑰數與參與通信人數的平方數成正比,可見,大系統密鑰的管理幾乎成為不可能。
然而,由於對稱密鑰密碼系統具有加解密速度快和安全強度高的優點,目前被越來越多地應用在軍事、外交以及商業等領域。
非對稱密鑰密碼體制
非對稱密鑰密碼體制,即公開密鑰密碼體制,是現代密碼學最重要的發明和進展。一般理解密碼學就是保護信息傳遞的機密性,但這僅僅是當今密碼學的一個方面。對信息發送與接收人的真實身份的驗證,對所發出/接收信息在事後的不可抵賴以及保障數據的完整性也是現代密碼學研究的另一個重要方面。公開密鑰密碼體制對這兩方面的問題都給出了出色的解答,並正在繼續產生許多新的思想和方案。
1976年,Diffie和Hellman為解決密鑰的分發與管理問題,在他們奠基性的工作「密碼學的新方向」一文中,提出一種密鑰交換協議,允許在不安全的媒體上通過通訊雙方交換信息,安全地傳送秘密密鑰。在此新思想的基礎上,很快出現了公開密鑰密碼體制。在該體制中,密鑰成對出現,一個為加密密鑰(即PK公開密鑰),另一個為解密密鑰(SK秘密密鑰),且不可能從其中一個推導出另一個。加密密鑰和解密密鑰不同,可將加密密鑰公之於眾,誰都可以使用;而解密密鑰只有解密人自己知道,用公共密鑰加密的信息只能用專用密鑰解密。由於公開密鑰演算法不需要聯機密鑰伺服器,密鑰分配協議簡單,所以極大地簡化了密鑰管理。除加密功能外,公鑰系統還可以提供數字簽名。目前,公開密鑰加密演算法主要有RSA、Fertezza、EIGama等。
迄今為止的所有公鑰密碼體系中,RSA系統是最著名、使用最廣泛的一種。RSA公開密鑰密碼系統是由R.Rivest、A.Shamir和L.Adleman三位教授於1977年提出的,RSA的取名就是來自於這三位發明者姓氏的第一個字母。
RSA演算法研製的最初目標是解決利用公開信道傳輸分發 DES 演算法的秘密密鑰的難題。而實際結果不但很好地解決了這個難題,還可利用 RSA 來完成對電文的數字簽名,以防止對電文的否認與抵賴,同時還可以利用數字簽名較容易地發現攻擊者對電文的非法篡改,從而保護數據信息的完整性。
公用密鑰的優點就在於:也許使用者並不認識某一實體,但只要其伺服器認為該實體的CA(即認證中心Certification Authority的縮寫)是可靠的,就可以進行安全通信,而這正是Web商務這樣的業務所要求的。例如使用信用卡購物,服務方對自己的資源可根據客戶 CA的發行機構的可靠程度來授權。目前國內外尚沒有可以被廣泛信賴的CA,而由外國公司充當CA在我國是非常危險的。
公開密鑰密碼體制較秘密密鑰密碼體制處理速度慢,因此,通常把這兩種技術
5. 密碼體制分類及典型演算法描述
密碼體制分為三類:1、換位與代替密碼體質 2、序列與分組密碼體制 3、對稱與非對稱密鑰密碼體制。
6. 序列號保護加密的原理和驗證方法
(1)序列號保護機制
數學演算法一項都是密碼加密的核心,但在一般的軟體加密中,它似乎並不太為人們關心,因為大多數時候軟體加密本身實現的都是一種編程的技巧。但近幾年來隨著序列號加密程序的普及,數學演算法在軟體加密中的比重似乎是越來越大了。
我們先來看看在網路上大行其道的序列號加密的工作原理。當用戶從網路上下載某個shareware——共享軟體後,一般都有使用時間上的限制,當過了共享軟體的試用期後,你必須到這個軟體的公司去注冊後方能繼續使用。注冊過程一般是用戶把自己的私人信息(一般主要指名字)連同信用卡號碼告訴給軟體公司,軟體公司會根據用戶的信息計算出一個序列碼,在用戶得到這個序列碼後,按照注冊需要的步驟在軟體中輸入注冊信息和注冊碼,其注冊信息的合法性由軟體驗證通過後,軟體就會取消掉本身的各種限制,這種加密實現起來比較簡單,不需要額外的成本,用戶購買也非常方便,在互聯網上的軟體80%都是以這種方式來保護的。
我們注意到軟體驗證序列號的合法性過程,其實就是驗證用戶名和序列號之間的換算關系是否正確的過程。其驗證最基本的有兩種,一種是按用戶輸入的姓名來生成注冊碼,再同用戶輸入的注冊碼比較,公式表示如下:
序列號 = F(用戶名)
但這種方法等於在用戶軟體中再現了軟體公司生成注冊碼的過程,實際上是非常不安全的,不論其換算過程多麼復雜,解密者只需把你的換算過程從程序中提取出來就可以編制一個通用的注冊程序。
另外一種是通過注冊碼來驗證用戶名的正確性,公式表示如下:
用戶名稱 = F逆(序列號) (如ACDSEE,小樓注)
這其實是軟體公司注冊碼計算過程的反演算法,如果正向演算法與反向演算法不是對稱演算法的話,對於解密者來說,的確有些困難,但這種演算法相當不好設計。
於是有人考慮到一下的演算法:
F1(用戶名稱) = F2(序列號)
F1、F2是兩種完全不同的的演算法,但用戶名通過F1演算法的計算出的特徵字等於序列號通過F2演算法計算出的特徵字,這種演算法在設計上比較簡單,保密性相對以上兩種演算法也要好的多。如果能夠把F1、F2演算法設計成不可逆演算法的話,保密性相當的好;可一旦解密者找到其中之一的反演算法的話,這種演算法就不安全了。一元演算法的設計看來再如何努力也很難有太大的突破,那麼二元呢?
特定值 = F(用戶名,序列號)
這個演算法看上去相當不錯,用戶名稱與序列號之間的關系不再那麼清晰了,但同時也失去了用戶名於序列號的一一對應關系,軟體開發者必須自己維護用戶名稱與序列號之間的唯一性,但這似乎不是難以辦到的事,建個資料庫就好了。當然你也可以根據這一思路把用戶名稱和序列號分為幾個部分來構造多元的演算法。
特定值 = F(用戶名1,用戶名2,...序列號1,序列號2...)
現有的序列號加密演算法大多是軟體開發者自行設計的,大部分相當簡單。而且有些演算法作者雖然下了很大的功夫,效果卻往往得不到它所希望的結果。其實現在有很多現成的加密演算法可以用,如RSADES,MD4,MD5,只不過這些演算法是為了加密密文或密碼用的,於序列號加密多少有些不同。我在這里試舉一例,希望有拋磚引玉的作用:
1、在軟體程序中有一段加密過的密文S
2、密鑰 = F(用戶名、序列號) 用上面的二元演算法得到密鑰
3、明文D = F-DES(密文S、密鑰) 用得到的密鑰來解密密文得到明文D
4、CRC = F-CRC(明文D) 對得到的明文應用各種CRC統計
5、檢查CRC是否正確。最好多設計幾種CRC演算法,檢查多個CRC結果是否都正確
用這種方法,在沒有一個已知正確的序列號情況下是永遠推算不出正確的序列號的。
(2)如何攻擊序列號保護
要找到序列號,或者修改掉判斷序列號之後的跳轉指令,最重要的是要利用各種工具定位判斷序列號的代碼段。這些常用的API包括GetDlgItemInt, GetDlgItemTextA, GetTabbedTextExtentA, GetWindowTextA, Hmemcpy (僅僅Windows 9x), lstrcmp, lstrlen, memcpy (限於NT/2000)。
1)數據約束性的秘訣
這個概念是+ORC提出的,只限於用明文比較注冊碼的那種保護方式。在大多數序列號保護的程序中,那個真正的、正確的注冊碼或密碼(Password)會於某個時刻出現在內存中,當然它出現的位置是不定的,但多數情況下它會在一個范圍之內,即存放用戶輸入序列號的內存地址±0X90位元組的地方。這是由於加密者所用工具內部的一個Windows數據傳輸的約束條件決定的。
2)Hmemcpy函數(俗稱萬能斷點)
函數Hmemcpy是Windows9x系統的內部函數,位於KERNEL32.DLL中,它的作用是將內存中的一塊數據拷貝到另一個地方。由於Windows9x系統頻繁使用該函數處理各種字串,因此用它作為斷點很實用,它是Windows9x平台最常用的斷點。在Windows NT/2K中沒有這個斷點,因為其內核和Windows9x完全不同。
3)S命令
由於S命令忽略不在內存中的頁面,因此你可以使用32位平面地址數據段描述符30h在整個4GB(0~FFFFFFFFh )空間查找,一般用在Windows9x下面。具體步驟為:先輸入姓名或假的序列號(如: 78787878),按Ctrl+D切換到SoftICE下,下搜索命令:
s 30:0 L ffffffff '78787878'
會搜索出地址:ss:ssssssss(這些地址可能不止一個),然後用bpm斷點監視搜索到的假注冊碼,跟蹤一下程序如何處理輸入的序列號,就有可能找到正確的序列號。
4)利用消息斷點
在處理字串方面可以利用消息斷點WM_GETTEXT和WM_COMMAND。前者用來讀取某個控制項中的文本,比如拷貝編輯窗口中的序列號到程序提供的一個緩沖區里;後者則是用來通知某個控制項的父窗口的,比如當輸入序列號之後點擊OK按鈕,則該按鈕的父窗口將收到一個WM_COMMAND消息,以表明該按鈕被點擊。
BMSG xxxx WM_GETTEXT (攔截序列號)
BMSG xxxx WM_COMMAND (攔截OK按鈕)
可以用SoftICE提供的HWND命令獲得窗口句柄的信息,也可以利用Visual Studio中的Spy++實用工具得到相應窗口的句柄值,然後用BMSG設斷點攔截。例:
BMSG 0129 WM_COMMAND
7. 密碼分為哪三種
密碼大體上分為三類,涉及的知識點主要是資訊理論和數論
第一類:公開密鑰演算法:RSA
第二類:對稱演算法:AES,DES。Hitag2
第三類:單項序列演算法:MD5
而對稱演算法又可以分為分組加密和序列加密兩種
分組加密:AES,DES
序列加密:Hitag2,Keeloq
序列加密通常是硬體實現,因為每次加密1bit,對於硬體來說用移位寄存器來實現是很容易的,但對於最小存儲單位是1Byte(8bit)的上位機來說,頻繁的位操作並不方便。
加密演算法的理論基礎基本上來自於數論,數論主要是討論整形,基本上就是關於素數的研究,RSA的加密難度依據就是,兩個大素數的因式分解,但目前無法證明是否有方法能快速的因式分解兩個超大素數,所以也無法證明此演算法絕對安全,但同理無法證明它不安全。目前2048位的RSA公認是安全的。
資訊理論在本質上基本和密碼學等價,信息熵也影響一組加密數據其安全性,和其被攻破的難度。所以如何降低冗餘,隱藏明文也是密碼學必須考慮的問題。
8. 簡述序列密碼演算法和分組密碼演算法的不同
分組密碼是把明文分成相對比較大的快,對於每一塊使用相同的加密函數進行處理,因此,分組密碼是無記憶的,相反,序列密碼處理的明文長度可以小到1bit,而且序列密碼是有記憶的,另外分組密碼演算法的實際關鍵在於加解密演算法,使之盡可能復雜,而序列密碼演算法的實際關鍵在於密鑰序列產生器,使之盡可能的不可預測性。
9. 什麼是分組密碼和序列密碼
分組密碼是將明文消息編碼表示後的數字(簡稱明文數字)序列,劃分成長度為n的組(可看成長度為n的矢量),每組分別在密鑰的控制下變換成等長的輸出數字(簡稱密文數字)序列。
序列密碼也稱為流密碼(Stream Cipher),它是對稱密碼演算法的一種。序列密碼具有實現簡單、便於硬體實施、加解密處理速度快、沒有或只有有限的錯誤傳播等特點,因此在實際應用中,特別是專用或機密機構中保持著優勢,典型的應用領域包括無線通信、外交通信。 1949年Shannon證明了只有一次一密的密碼體制是絕對安全的,這給序列密碼技術的研究以強大的支持,序列密碼方案的發展是模仿一次一密系統的嘗試,或者說「一次一密」的密碼方案是序列密碼的雛形。如果序列密碼所使用的是真正隨機方式的、與消息流長度相同的密鑰流,則此時的序列密碼就是一次一密的密碼體制。若能以一種方式產生一隨機序列(密鑰流),這一序列由密鑰所確定,則利用這樣的序列就可以進行加密,即將密鑰、明文表示成連續的符號或二進制,對應地進行加密,加解密時一次處理明文中的一個或幾個比特。
