信息安全概論———密碼學基礎

密碼學基礎定義

密碼學: 主要針對數據安全的一種信息安全的核心技術。分爲密碼編碼學和密碼分析學。

相關定義:
明文(消息)(M)——加密(E)——>密文(C)——解密(D)——>明文(M)。
發送方——————>信道——————>接收方
密鑰(K)包括對稱密鑰和非對稱密鑰(公開密鑰)兩種,根據加解密密鑰是否相同區分。
有效的加解密的前提是密鑰空間K足夠大,無法窮舉密鑰搜索。

密碼分類:
(1)古典密碼:一般方法爲文字替換,包括單標替換密碼,多表替代密碼,輪轉密碼等。
(2)對稱密鑰(單密鑰):加解密使用相同密鑰。
(3)公開密鑰(非對稱密鑰):加解密密鑰不同,往往其中一個密鑰會公開。

古典密碼:
(1)簡單替換密碼(單表替換密碼)
1.移位密碼(凱撒密碼):
加密E(m)=(m+k)%q;
解密D(c)=(c-k)%q;
2.乘數密碼:
加密E(m)=(m*k)%q;(gcd(k,q)==1,以滿足一一映射)
解密D(c)=(k^(-1)*c)%q,使用的k不是一個,而是加密時k的模q的乘法逆元(擴展歐幾里得算法,可以求得a mod b的乘法逆元,即k^(-1)*k mod q =1,歐幾里得算法求a,b的最大公約數,公式爲gcd(a,b)=gcd(a mod b ,b))
3.仿射密碼(移位與乘數的結合)
加密E(m)=(k1+k2*m) mod q;
解密D(c)=(k2^(-1)*(c-k1))%q

缺點: 基於統計的密碼分析,單表的一一映射關係,會導致密碼分析者如果知道明文的特點規律,如頻次等,就可以利用這個特點,進行匹配,在密文信息足夠長的情況下,是很有效的破解辦法。

(2)多表替代密碼(彌補了單表一一映射的缺點,可以隱藏字母的頻次)
一般使用週期多表替代密碼,即表個數有限,會循環利用。每次加密使用的是不同的表對應的加密方式,使用哪一個表是有順序的。
如維吉尼亞(vigenere)密碼:在移位基礎上,添加了多表機制。
E(m)=C1C2C3C4…..CN,其中Ci=(mi+ki)%q;

對稱加密密鑰:加密的算法是公開的,而關鍵在於密鑰(雖然幾乎所有加密都是這樣。。),密鑰的傳遞一定要是安全信道傳遞。

根據密鑰的作用可以分爲,分組密碼和序列密碼;前者是使用同一密鑰和算法來直接對所有組的明文進行加密。後者是用密鑰來使用僞隨機數發生器來產生密鑰流,而實際用來加解密的是該密鑰流,多用於軍事,外交等要求比較高的場合。

重要的對稱密碼實例:DES(DATA Encryption Standard 數據加密標準)
(1)簡化版(函數相對簡單):
輸入:8位明文,10位密鑰
輸出:8位密文

密鑰的使用:
(1)輸入的10位密鑰首先經過置換函數P10,變換位置順序。
(2)將前5位和後5位分別使用循環左移函數LS,左移一位,得到KL,KR。
(3.1)KL與KR合併後使用P8置換,取前8位產生一個子密鑰K1。
(3.2)KL和KR各自循環左移2位,之後合併,使用P8置換,取前8位產生一個子密鑰K2。

加密過程:
(1)首先是IP置換(初始置換)
(2)之後將8位分爲左右兩部分ml,mr,對mr送入F中進行一系列操作,包括先在擴展函數E/P函數中將4位變成8位mrep,之後使用mrep與K1異或(密鑰在這裏使用),將結果分爲左右兩部分4位數mrl和mrr,將mrl使用s0盒(一個4元矩陣),mrr使用s1盒。
(3)s盒使用的方式爲,將mrl的第1,4位組成一個二進制數,爲i,2,3位組成一個二進制數,爲j。使用(i,j)在矩陣中找到對應的數,矩陣中是從0到3的十進制數,可轉變爲一個兩位的二進制數。對於兩個盒子的輸出合在一起,就構成了一個4位數,再進行P4置換,作爲F函數體的輸出。
(4)該輸出與2中的ml按位異或,再與mr合併成一個8位的數。
(5)之後將該8位數左右4位置換(SW),之後重複(2)(3)(4),得到8位數,注意使用的密鑰變爲了K2。
(6)最後,使用第一步的IP的逆置換IP-1,得到最終的密文。

解密過程:與加密的流程正好相反即可。

(2)實際DES:
使用64位爲一組的分組加密算法,密鑰長度也爲64位,其中8位校驗,56位爲有效位。 進行16輪fk的計算,每輪都會使用一個48位的子祕鑰。所以DES的破解難度主要是一樣靠設計的複雜性和數據長度大來保證的。

公開密鑰密碼:往往公鑰和密鑰同時產生,之後會把公鑰公開。

Diffie-Hellman函數:
(1)原根:素數p的原根a是指a的1到p-1次方mod p是對1到p-1的一個排列。
(2)離散對數:給定一個整數b和一個素數p及其原根a,其滿足b = a^i (mod p)的對數i
(3)DH密鑰交換算法:基於有限域中計算離散對數的困難性。

  • 有公開的大素數p及其原根g
  • A,B各自選取一個< p的數 a,b,使用它計算g^a mod p的結果Y1,Y2
  • 交換自己的結果,利用對方的結果Y2做底數,自己選取的原來的數a做指數,再mod p
  • 這樣得到的餘K就是同一個,相當於都是g^(a*b),而交換的只是Y1,Y2,就算有人得到了,也無法得到K值。這樣就相當於成功形成了兩個人的密鑰,但是仍然是單密鑰。

  • RSA密鑰:
    (1)歐拉函數f(n):小於n且和n互質的數的個數。f(1)=1;
    (2)若n能分解爲兩個質數p,q,f(n)= (p-1)(q-1).
    (3)過程:
    • 使用互異的素數p,q,求得n=pq;求得f(n)=(p-1)(q-1);
    • 選擇於f(n)互質的數e,一般較小,爲加密指數。
    • 計算e在mod f(n)的乘法逆元d,爲解密指數。
    • 加解密使用信息爲底數,對應加解密指數做指數,mod n即可得到對應結果。
    • 這樣e,n是公開的,而d,p,q是祕密的,重點是d使用f(n),f(n)可以用p,q直接計算,也可以用n,p,q間接計算,但是沒有p,q,只有n是無法計算的。雖然n與p,q 直接有關,但是這裏存在一個大整數因子分解難問題,所以只要p,q不公開,就很難得到密鑰。

消息認證(不是身份認證)

目的:
確保消息不會被篡改,保證消息完整性。包括內容,順序,時間的修改和消息的否認。

方法:消息認證符(MAC或直接加密),消息編碼。

認證函數:
(1)加密函數:除了有加密的功能,還有一定認證功能。這是由於相信密鑰只有特定的人有,所以能加密有效消息或者得到有效消息的人就是擁有密鑰的特定人羣。加密成爲簽名,解密稱爲認證。
(2)MAC:使用事先約定的祕密規則,根據消息,生成一個短數據塊兒MAC,之後附加在消息中。接收者得到消息後,對消息同樣進行MAC生成,比對接收到的MAC,就對消息的完整性進行驗證。可以使一種基於加密的,但是隻是對一部分進行加密,或者說只是對特徵信息進行加密。也可以是一種消息摘要,如單向散列計算,即使得到了這個散列值,也無法僞造出另一個散列值相同的消息(散列函數的弱無碰撞性),或者根本就沒有兩個消息有相同的簽名(強無碰撞性)。

消息編碼:
對消息直接進行重新編碼,即制定一個祕密的編碼規則,使得有某些特定序列有特定含義,而另一些看似可用的系列或編碼,使之成爲禁用編碼。篡改者使用了這些禁用編碼,就很容易被檢測。

散列安全長度:對於N位散列值,可能發生一次碰撞的測試次數是2^(n/2),而非2^n.

數字簽名:是用來驗證發送者身份的一種機制,現在大多數的思路都是公鑰加密技術,是在mac的思路上,對mac消息,增加了一種公鑰機制,發送者對使用哈希函數得到的簽名,使用私鑰加密,接收方使用公鑰解密,得到簽名,對信息哈希,比對判斷身份。這主要是用戶發送方面向全體用戶的一種自我證明的方式,和簽字一樣,看到這個簽名就可以判斷,因爲只有有私鑰的人加的密,才能用其公鑰解開。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章