資料加密的相關概念以及與資料加密有關的

2021-04-13 23:26:54 字數 3124 閱讀 9727

考慮到使用者可能試圖旁路系統的情況,如物理地取走資料庫,在通訊線路上竊聽。對這樣的威脅最有效的解決方法就是資料加密,即以加密格式儲存和傳輸敏感資料。

資料加密的術語有:明文,即原始的或未加密的資料。通過加密演算法對其進行加密,加密演算法的輸入資訊為明文和金鑰;密文,明文加密後的格式,是加密演算法的輸出資訊。加密演算法是公開的,而金鑰則是不公開的。密文,不應為無金鑰的使用者理解,用於資料的儲存以及傳輸。

例:明文為字串:

as kingfishers catch fire

(為簡便起見,假定所處理的資料字元僅為大寫字母和空格符)。假定金鑰為字串:

eliot

加密演算法為:

1) 將明文劃分成多個金鑰字串長度大小的塊(空格符以"+"表示)

as+ki ngfis hers+ catch +fire

2) 用00~26範圍的整數取代明文的每個字元,空格符=00,a=01,...,z=26:

0119001109 1407060919 0805181900 0301200308 0006091805

3) 與步驟2一樣對金鑰的每個字元進行取代:

0512091520

4) 對明文的每個塊,將其每個字元用對應的整數編碼與金鑰中相ξ恢玫淖址惱嗦氳暮湍?7後的值取代:

5) 將步驟4的結果中的整數編碼再用其等價字元替換:

fdizb ssoxl mq+gt hmbra errfy

如果給出金鑰,該例的解密過程很簡單。問題是對於乙個惡意攻擊者來說,在不知道金鑰的情況下,利用相匹配的明文和密文獲得金鑰究竟有多困難?對於上面的簡單例子,答案是相當容易的,不是一般的容易,但是,複雜的加密模式同樣很容易設計出。理想的情況是採用的加密模式使得攻擊者為了破解所付出的代價應遠遠超過其所獲得的利益。實際上,該目的適用於所有的安全性措施。這種加密模式的可接受的最終目標是:即使是該模式的發明者也無法通過相匹配的明文和密文獲得金鑰,從而也無法破解密文。

1. 資料加密標準

傳統加密方法有兩種,替換和置換。上面的例子採用的就是替換的方法:使用金鑰將明文中的每乙個字元轉換為密文中的乙個字元。而置換僅將明文的字元按不同的順序重新排列。單獨使用這兩種方法的任意一種都是不夠安全的,但是將這兩種方法結合起來就能提供相當高的安全程度。資料加密標準(data encryption standard,簡稱des)就採用了這種結合演算法,它由ibm制定,並在2023年成為美國官方加密標準。

des的工作原理為:將明文分割成許多64位大小的塊,每個塊用64位金鑰進行加密,實際上,金鑰由56位資料位和8位奇偶校驗位組成,因此只有256個可能的密碼而不是264個。每塊先用初始置換方法進行加密,再連續進行16次複雜的替換,最後再對其施用初始置換的逆。第i步的替換並不是直接利用原始的金鑰k,而是由k與i計算出的金鑰ki。

des具有這樣的特性,其解密演算法與加密演算法相同,除了金鑰ki的施加順序相反以外。

2. 公開金鑰加密

多年來,許多人都認為des並不是真的很安全。事實上,即使不採用智慧型的方法,隨著快速、高度並行的處理器的出現,強制破解des也是可能的。"公開金鑰"加密方法使得des以及類似的傳統加密技術過時了。公開金鑰加密方法中,加密演算法和加密金鑰都是公開的,任何人都可將明文轉換成密文。但是相應的解密金鑰是保密的(公開金鑰方法包括兩個金鑰,分別用於加密和解密),而且無法從加密金鑰推導出,因此,即使是加密者若未被授權也無法執行相應的解密。

公開金鑰加密思想最初是由diffie和hellman提出的,最著名的是rivest、shamir以及adleman提出的,現在通常稱為rsa(以三個發明者的首位字母命名)的方法,該方法基於下面的兩個事實:

1) 已有確定乙個數是不是質數的快速演算法;

2) 尚未找到確定乙個合數的質因子的快速演算法。

rsa方法的工作原理如下:

1) 任意選取兩個不同的大質數p和q,計算乘積r=p*q;

2) 任意選取乙個大整數e,e與(p-1)*(q-1)互質,整數e用做加密金鑰。注意:e的選取是很容易的,例如,所有大於p和q的質數都可用。

3) 確定解密金鑰d:

d * e = 1 modulo(p - 1)*(q - 1)

根據e、p和q可以容易地計算出d。

4) 公開整數r和e,但是不公開d;

5) 將明文p (假設p是乙個小於r的整數)加密為密文c,計算方法為:

c = pe modulo r

6) 將密文c解密為明文p,計算方法為:

p = cd modulo r

然而只根據r和e(不是p和q)要計算出d是不可能的。因此,任何人都可對明文進行加密,但只有授權使用者(知道d)才可對密文解密。

下面舉一簡單的例子對上述過程進行說明,顯然我們只能選取很小的數字。

例:選取p=3, q=5,則r=15,(p-1)*(q-1)=8。選取e=11(大於p和q的質數),通過d * 11 = 1 modulo 8,計算出d =3。

假定明文為整數13。則密文c為

c = pe modulo r

= 1311 modulo 15

= 1,792,160,394,037 modulo 15

= 7

復原明文p為:

p = cd modulo r

= 73 modulo 15

= 343 modulo 15

= 13

因為e和d互逆,公開金鑰加密方法也允許採用這樣的方式對加密資訊進行"簽名",以便接收方能確定簽名不是偽造的。假設a和b希望通過公開金鑰加密方法進行資料傳輸,a和b分別公開加密演算法和相應的金鑰,但不公開解密演算法和相應的金鑰。a和b的加密演算法分別是eca和ecb,解密演算法分別是dca和dcb,eca和dca互逆,ecb和dcb互逆。若a要向b傳送明文p,不是簡單地傳送ecb(p),而是先對p施以其解密演算法dca,再用加密演算法ecb對結果加密後傳送出去。密文c為:

c = ecb(dca(p))

b收到c後,先後施以其解密演算法dcb和加密演算法eca,得到明文p:

eca(dcb(c))

= eca(dcb(ecb(dca(p))))

= eca(dca(p)) /*dcb和ecb相互抵消*/

= p /*dcb和ecb相互抵消*/

這樣b就確定報文確實是從a發出的,因為只有當加密過程利用了dca演算法,用eca才能獲得p,只有a才知道dca演算法,沒有人,即使是b也不能偽造a的簽名。 

中斷以及相關的概念

中斷是指程式執行過程中,遇到急需處理的事件時,暫時中止cpu上現行程式的執行轉而執行相應的事件處理程式,待處理完成後再返回原程式被中斷處或排程其他程式執行的過程 1 外中斷 是指來自處理器之外的中斷訊號,包括時鐘中斷 鍵盤中斷 裝置中斷 外中斷又可分為 可遮蔽中斷和不可遮蔽中斷 三 中斷與異常的區別...

資料庫的相關概念

資料庫定義 是相關資訊和組織良好資訊的集合,是安裝資料庫軟體時的物理檔案組成。資料庫模型定義 有組織和有序的描述儲存在計算機上的資訊集。通俗的理解就是,我把資料存在資料庫裡面,並不是雜亂無章的放進去,而是進行有效的儲存,以方便操作,所以就需要模型。層次結構資料庫模型和網路資料庫模型 層次結構資料庫模...

資料庫的相關概念

1 描述事物的符號 1 糧庫 車庫 2 存放資料的倉庫存放在計算機中,可為使用者共享 1 如何科學的組織和儲存資料 如何高效的維護資料,靠資料庫管理系統 2 常用的幾個資料庫管理系統 oracle mysql 在資料庫管理系統的基礎上,使用資料庫管理系統的語法,開發直接面對終端使用者的應用程式 學生...