導航:首頁 > 文檔加密 > 基於屬性加密密文可偽造

基於屬性加密密文可偽造

發布時間:2023-08-13 19:56:59

1. 數據加密

數據加密技術是指將一個信息或稱明文,經過加密鑰匙及加密函數轉換,變成無意義的密文,而接收方則將此密文經過解密函數、解密鑰匙還原成明文。加密技術廣泛用於網路數據的安全領域。

數據加密技術要求只有在指定的用戶或網路下,才能解除密碼而獲得原來的數據,這就需要給數據發送方和接受方以一些特殊的信息用於加解密,這就是所謂的密鑰。其密鑰的值是從大量的隨機數中選取的。按加密演算法分為專用密鑰和公開密鑰兩種。

1)專用密鑰,又稱為對稱密鑰或單密鑰,加密和解密時使用同一個密鑰,即同一個演算法。如DES和MIT的Kerberos演算法。專用密鑰是最簡單方式,通信雙方必須交換彼此密鑰,當需給對方發信息時,用自己的加密密鑰進行加密,而在接收方收到數據後,用對方所給的密鑰進行解密。當一個文本要加密傳送時,該文本用密鑰加密構成密文,密文在信道上傳送,收到密文後用同一個密鑰將密文解出來,形成普通文體供閱讀。由於對稱密鑰運算量小、速度快、安全強度高,因而目前仍廣泛被採用。

2)公開密鑰,又稱非對稱密鑰,加密和解密時使用不同的密鑰,即不同的演算法,雖然兩者之間存在一定的關系,但不可能輕易地從一個推導出另一個。有一把公用的加密密鑰,有多把解密密鑰,如RSA演算法。公開密鑰由於兩個密鑰(加密密鑰和解密密鑰)各不相同,因而可以將一個密鑰公開,而將另一個密鑰保密,同樣可以起到加密的作用。在這種編碼過程中,一個密碼用來加密消息,而另一個密碼用來解密消息。在兩個密鑰中有一種關系,通常是數學關系。公鑰和私鑰都是一組十分長的、數字上相關的素數(是另一個大數字的因數)。有一個密鑰不足以翻譯出消息,因為用一個密鑰加密的消息只能用另一個密鑰才能解密。每個用戶可以得到唯一的一對密鑰,一個是公開的,另一個是保密的。公共密鑰保存在公共區域,可在用戶中傳遞,甚至可印在報紙上面。而私鑰必須存放在安全保密的地方。任何人都可以有你的公鑰,但是只有你一個人能有你的私鑰。它的工作過程是:「你要我聽你的嗎?除非你用我的公鑰加密該消息,我就可以聽你的,因為我知道沒有別人在偷聽。只有我的私鑰(其他人沒有)才能解密該消息,所以我知道沒有人能讀到這個消息。我不必擔心大家都有我的公鑰,因為它不能用來解密該消息。」公開密鑰的加密機制雖提供了良好的保密性,但難以鑒別發送者,即任何得到公開密鑰的人都可以生成和發送報文。數字簽名機制提供了一種鑒別方法,以解決偽造、抵賴、冒充和篡改等問題。

2. 003 國密演算法【技術】

國密演算法:國家密碼局認定的國產密碼演算法,即商用密碼。

非對稱密碼(公鑰演算法):SM2,SM9

對稱密碼(分組密碼,序列密碼):SM1,SM4,SM7,ZUC

雜湊演算法(散列,哈希演算法):SM3

概述 : 對稱加密演算法(分組密碼) ,分組長度128位,密鑰長度128位, 演算法不公開 ,通過加密晶元的介面進行調用。

場景 :採用該演算法已經研製了系列晶元、智能IC卡、智能密碼鑰匙、加密卡、加密機等安全產品,廣泛應用於電子政務、電子商務及國民經濟的各個應用領域(包括國家政務通、警務通等重要領域)。

概述 : 非對稱加密演算法(公鑰演算法) ,加密強度為256位,是一種橢圓曲線演算法。

公鑰密碼學與其他密碼學完全不同, 使用這種方法的加密系統,不僅公開加密演算法本身,也公開了加密用的密鑰。公鑰密碼系統與只使用一個密鑰的對稱傳統密碼不同,演算法是基於數學函數而不是基於替換和置換。公鑰密碼學是非對稱的,它使用兩個獨立的密鑰,即密鑰分為公鑰和私鑰,因此稱雙密鑰體制。雙鑰體制的公鑰可以公開,因此稱為公鑰演算法。

使用私鑰加密後的密文只能用對應公鑰進行解密,反之使用公鑰加密的密文也只能用對應的私鑰進行解密。通過對私鑰進行橢圓曲線運算可以生成公鑰,而由於橢圓曲線的特點,知道公鑰卻很難反推出私鑰,這就決定了SM2演算法的安全性。SM2演算法最常見的應用是進行身份認證,也就是我們熟知的數字簽名與驗簽,通過私鑰的私密性來實現身份的唯一性和合法性。

場景: 適用於商用應用中的 數字簽名和驗證 ,可滿足多種密碼應用中的 身份認證 和 數據完整性,真實性 的安全需求。

場景: 適用於商用密碼應用中的 密鑰交換 ,可滿足通信雙方經過兩次或可選三次信息傳遞過程,計算獲取一個由雙方共同決定的共享秘密密鑰(會話密鑰)。

場景: 適用於國家商用密碼應用中的 消息加解密 ,消息發送者可以利用接收者的公鑰對消息進行加密,接收者用對應的私鑰進行解,獲取消息。

涉及國密標准: GB/T 32918.1-2016、GB/T 32918.2-2016、GB/T 32918.3-2016、GB/T 32918.4-2016、GB/T 32918.5-2017、GB/T 35275-2017、GB/T 35276-2017。

概述:哈希演算法(散列演算法,雜湊演算法) ,任意長度的數據經過SM3演算法後會生成長度固定為256bit的摘要。SM3演算法的逆運算在數學上是不可實現的,即通過256bit的摘要無法反推出原數據的內容,因此在信息安全領域內常用SM3演算法對信息的完整性進行度量。

場景: 適用於商用密碼應用中的 數字簽名和驗證 , 消息認證碼的生成與驗證 以及 隨機數的生成 ,可滿足多種密碼應用的安全需求。

涉及國密標准: GB/T 32905-2016

概述:對稱加密演算法(分組密碼) ,分組長度128位,密鑰長度128位,使用某一密鑰加密後的密文只能用該密鑰解密出明文,故而稱為對稱加密。SM4演算法採用32輪非線性迭代實現,加解密速度較快,常應用於大量數據的加密,保存在存儲介質上的用戶數據往往就使用SM4演算法進行加密保護。

場景:大量數據的加密,解密,MAC的計算 。

分組密碼就是將明文數據按固定長度進行分組,然後在同一密鑰控制下逐組進行加密,從而將各個明文分組變換成一個等長的密文分組的密碼。其中二進制明文分組的長度稱為該分組密碼的分組規模。

分組密碼的實現原則如下:必須實現起來比較簡單,知道密鑰時加密和脫密都十分容易,適合硬體和(或)軟體實現。加脫密速度和所消耗的資源和成本較低,能滿足具體應用范圍的需要。

分組密碼的設計基本遵循混淆原則和擴散原則

①混淆原則就是將密文、明文、密鑰三者之間的統計關系和代數關系變得盡可能復雜,使得敵手即使獲得了密文和明文,也無法求出密鑰的任何信息;即使獲得了密文和明文的統計規律,也無法求出明文的任何信息。

②擴散原則就是應將明文的統計規律和結構規律散射到相當長的一段統計中去。也就是說讓明文中的每一位影響密文中的盡可能多的位,或者說讓密文中的每一位都受到明文中的盡可能多位的影響。

涉及國密標准: GB/T 32907-2016

概述 : 對稱加密演算法(分組密碼) ,分組長度128位,密鑰長度128位, 演算法不公開 ,通過加密晶元的介面進行調用。

場景 :適用於非接觸式IC卡,應用包括身份識別類應用(門禁卡、工作證、參賽證),票務類應用(大型賽事門票、展會門票),支付與通卡類應用(積分消費卡、校園一卡通、企業一卡通等)。

概述:非對稱加密演算法(標識密碼) ,標識密碼將用戶的標識(如郵件地址、手機號碼、QQ號碼等)作為公鑰,省略了交換數字證書和公鑰過程,使得安全系統變得易於部署和管理,非常適合端對端離線安全通訊、雲端數據加密、基於屬性加密、基於策略加密的各種場合。

SM9演算法不需要申請數字證書,適用於互聯網應用的各種新興應用的安全保障。如基於雲技術的密碼服務、電子郵件安全、智能終端保護、物聯網安全、雲存儲安全等等。這些安全應用可採用手機號碼或郵件地址作為公鑰,實現數據加密、身份認證、通話加密、通道加密等安全應用,並具有使用方便,易於部署的特點,從而開啟了普及密碼演算法的大門。

概述 : 對稱加密演算法(序列密碼) ,是中國自主研究的流密碼演算法,是運用於移動通信4G網路中的國際標准密碼演算法,該演算法包括祖沖之演算法(ZUC)、加密演算法(128-EEA3)和完整性演算法(128-EIA3)三個部分。目前已有對ZUC演算法的優化實現,有專門針對128-EEA3和128-EIA3的硬體實現與優化。

3. 開發中常見的加密方式及應用

開發中常見的加密方式及應用

一、base64

簡述:Base64是網路上最常見的用於傳輸8Bit 位元組碼 的編碼方式之一,Base64就是一種基於64個可列印字元來表示二進制數據的方法。所有的數據都能被編碼為並只用65個字元就能表示的文本文件。( 65字元:A~Z a~z 0~9 + / = )編碼後的數據~=編碼前數據的4/3,會大1/3左右(圖片轉化為base64格式會比原圖大一些)。

應用:Base64編碼是從二進制到字元的過程,可用於在 HTTP 環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base64來將一個較長的唯一 標識符 (一般為128-bit的UUID)編碼為一個字元串,用作HTTP 表單 和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制 數據編碼 為適合放在URL(包括隱藏 表單域 )中的形式。此時,採用Base64編碼具有不可讀性,需要解碼後才能閱讀。

命令行進行Base64編碼和解碼

編碼:base64 123.png -o 123.txt

解碼:base64 123.txt -o test.png -D Base64編碼的原理

原理:

1)將所有字元轉化為ASCII碼;

2)將ASCII碼轉化為8位二進制;

3)將二進制3個歸成一組(不足3個在後邊補0)共24位,再拆分成4組,每組6位;

4)統一在6位二進制前補兩個0湊足8位;

5)將補0後的二進制轉為十進制;

6)從Base64編碼表獲取十進制對應的Base64編碼;

Base64編碼的說明:

a.轉換的時候,將三個byte的數據,先後放入一個24bit的緩沖區中,先來的byte占高位。

b.數據不足3byte的話,於緩沖區中剩下的bit用0補足。然後,每次取出6個bit,按照其值選擇查表選擇對應的字元作為編碼後的輸出。

c.不斷進行,直到全部輸入數據轉換完成。

d.如果最後剩下兩個輸入數據,在編碼結果後加1個「=」;

e.如果最後剩下一個輸入數據,編碼結果後加2個「=」;

f.如果沒有剩下任何數據,就什麼都不要加,這樣才可以保證資料還原的正確性。

二、HASH加密/單向散列函數

簡述:Hash演算法特別的地方在於它是一種單向演算法,用戶可以通過Hash演算法對目標信息生成一段特定長度(32個字元)的唯一的Hash值,卻不能通過這個Hash值重新獲得目標信息。對用相同數據,加密之後的密文相同。 常見的Hash演算法有MD5和SHA。由於加密結果固定,所以基本上原始的哈希加密已經不再安全,於是衍生出了加鹽的方式。加鹽:先對原始數據拼接固定的字元串再進行MD5加密。

特點:

1) 加密 後密文的長度是定長(32個字元的密文)的

2)如果明文不一樣,那麼散列後的結果一定不一樣

3)如果明文一樣,那麼加密後的密文一定一樣(對相同數據加密,加密後的密文一樣)

4)所有的加密演算法是公開的

5)不可以逆推反算(不能根據密文推算出明文),但是可以暴力 破解 ,碰撞監測

原理:MD5消息摘要演算法,屬Hash演算法一類。MD5演算法對輸入任意長度的消息進行運行,產生一個128位的消息摘要。

1)數據填充

對消息進行數據填充,使消息的長度對512取模得448,設消息長度為X,即滿足X mod 512=448。根據此公式得出需要填充的數據長度。

填充方法:在消息後面進行填充,填充第一位為1,其餘為0。

2)添加信息長度

在第一步結果之後再填充上原消息的長度,可用來進行的存儲長度為64位。如果消息長度大於264,則只使用其低64位的值,即(消息長度 對264取模)。

在此步驟進行完畢後,最終消息長度就是512的整數倍。

3)數據處理

准備需要用到的數據:

4個常數:A = 0x67452301, B = 0x0EFCDAB89, C = 0x98BADCFE, D = 0x10325476;

4個函數:F(X,Y,Z)=(X & Y) | ((~X) & Z);G(X,Y,Z)=(X & Z) | (Y & (~Z));H(X,Y,Z)=X ^ Y ^ Z;I(X,Y,Z)=Y ^ (X | (~Z));

把消息分以512位為一分組進行處理,每一個分組進行4輪變換,以上面所說4個常數為起始變數進行計算,重新輸出4個變數,以這4個變數再進行下一分組的運算,如果已經是最後一個分組,則這4個變數為最後的結果,即MD5值。

三、對稱加密

經典演算法:

1)DES數據加密標准

DES演算法的入口參數有三個:Key、Data、Mode。其中Key為8個位元組共64位,是DES演算法的工作密鑰;Data也為8個位元組64位,是要被加密或被解密的數據;Mode為DES的工作方式,有兩種:加密或解密。

DES演算法是這樣工作的:如Mode為加密,則用Key去把數據Data進行加密, 生成Data的密碼形式(64位)作為DES的輸出結果;如Mode為解密,則用Key去把密碼形式的數據Data解密,還原為Data的明碼形式(64位)作為DES的輸出結果。在通信網路的兩端,雙方約定一致的Key,在通信的源點用Key對核心數據進行DES加密,然後以密碼形式在公共通信網(如電話網)中傳輸到通信網路的終點,數據到達目的地後,用同樣的Key對密碼數據進行解密,便再現了明碼形式的核心數據。這樣,便保證了核心數據(如PIN、MAC等)在公共通信網中傳輸的安全性和可靠性。

2)3DES使用3個密鑰,對消息進行(密鑰1·加密)+(密鑰2·解密)+(密鑰3·加密)

3)AES高級加密標准

如圖,加密/解密使用相同的密碼,並且是可逆的

四、非對稱加密

特點:

1)使用公鑰加密,使用私鑰解密

2)公鑰是公開的,私鑰保密

3)加密處理安全,但是性能極差

經典演算法RSA:

1)RSA原理

(1)求N,准備兩個質數p和q,N = p x q

(2)求L,L是p-1和q-1的最小公倍數。L = lcm(p-1,q-1)

(3)求E,E和L的最大公約數為1(E和L互質)

(4)求D,E x D mode L = 1

五、數字簽名

原理以及應用場景:

1)數字簽名的應用場景

需要嚴格驗證發送方身份信息情況

2)數字簽名原理

(1)客戶端處理

對"消息"進行HASH得到"消息摘要"

發送方使用自己的私鑰對"消息摘要"加密(數字簽名)

把數字簽名附著在"報文"的末尾一起發送給接收方

(2)服務端處理

對"消息" HASH得到"報文摘要"

使用公鑰對"數字簽名"解密

對結果進行匹配

六、數字證書

簡單說明:

證書和駕照很相似,裡面記有姓名、組織、地址等個人信息,以及屬於此人的公鑰,並有認證機構施加數字簽名,只要看到公鑰證書,我們就可以知道認證機構認證該公鑰的確屬於此人。

數字證書的內容:

1)公鑰

2)認證機構的數字簽名

證書的生成步驟:

1)生成私鑰openssl genrsa -out private.pem 1024

2)創建證書請求openssl req -new -key private.pem -out rsacert.csr

3)生成證書並簽名,有效期10年openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt

4)將PEM格式文件轉換成DER格式openssl x509 -outform der -in rsacert.crt -out rsacert.der

5)導出P12文件openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt

iOS開發中的注意點:

1)在iOS開發中,不能直接使用PEM格式的證書,因為其內部進行了Base64編碼,應該使用的是DER的證書,是二進制格式的;

2)OpenSSL默認生成的都是PEM格式的證書。

七、https

HTTPS和HTTP的區別:

超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站伺服器之間傳遞信息。HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站伺服器之間的傳輸報文,就可以直接讀懂其中的信息,因此HTTP協議不適合傳輸一些敏感信息,比如信用卡號、密碼等。

為了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議HTTPS。為了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通信加密。

HTTPS和HTTP的區別主要為以下四點:

1)https協議需要到ca申請證書,一般免費證書很少,需要交費。

2)http是 超文本傳輸協議 ,信息是明文傳輸,https則是具有 安全性 的 ssl 加密傳輸協議。

3)http和https使用的是完全不同的連接方式,用的埠也不一樣,前者是80,後者是443。

4)http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的 網路協議 ,比http協議安全。

5)SSL:Secure Sockets Layer安全套接字層;用數據加密(Encryption)技術,可確保數據在網路上傳輸過程中不會被截取及竊聽。目前一般通用之規格為40 bit之安全標准,美國則已推出128 bit之更高安全標准,但限制出境。只要3.0版本以上之I.E.或Netscape 瀏覽器 即可支持SSL。目前版本為3.0。SSL協議位於TCP/IP協議與各種應用層協議之間,為數據通訊提供安全支持。SSL協議可分為兩層:SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持。SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密密鑰等。

4. 雙系統加密技術如何證明密碼方案的安全性

在密碼雙系統中,密文與密鑰均能呈現兩種形態:標准型和半功能型。半功能型的密文和密鑰不在實際方案中使用,而只是用來進行安全性證明。其中,一個標准密鑰可以解密標准型或半功能型密文,而一個標准密文也能用標准型或半功能型密鑰解密。然而當一個半功能型密鑰去解密一個半功能型密文時,解密演算法失效,即密鑰和密文中的半功能成分會相互作用通過另外的隨機元素偽裝盲化因子。雙系統密碼方案的安全性證明要通過一系列被證明是不可區分的交互游戲來完成。其中realGame:此為安全游戲,其中要求參與用戶的身份模N不等;restrictedGame:此游戲是受限游戲,其與實際安全的游戲很相似,但限制更嚴格即攻擊不能為模2p後與挑戰身份相同的那些身份進行密鑰質詢,並且此限制將貫穿隨後的游戲。Gamek:設q表示攻擊者提出密鑰質詢的次數且1,,kq="。此游戲中給攻擊者的密文是半功能的,前k個密鑰是半功能的,剩餘密鑰標准,其他同受限游戲。特殊地,0Game中所有密鑰標准但密文半功能,而Gameq中密文與所有密鑰均為半功能。finalGame:此游戲要求攻擊者要求消息之外的隨機消息的密文是半功能的,其餘同游戲Gameq。

5. 密碼技術

密碼演算法的特性
1、是否需要事先配送私鑰:對稱密碼需要考慮
2、是否會遭到中間人攻擊:非對稱密碼分發公鑰時需要考慮
3、不可抵賴(可被雙方 和 第三方 用原理證明):非對稱密碼分發公鑰時需要考慮
4、能否保證消息的機密性:即不可破譯
5、能否保證消息的完整性(一致性):即不可篡改
6、不可冒充(偽造)

總結:對稱密碼(解決456)--非對稱密碼之單向通信--> 混合密碼(解決1) --非對稱密碼之數字簽名--> 公鑰證書(解決23)

概念
密碼演算法:加密演算法 + 密鑰 + 解密演算法,簡稱密碼
密鑰空間:密鑰的所有取值
隱蔽式安全性:以密碼演算法不為人所知,來保證機密性
分組密碼:對明文進行分組加密,而非以全文作為輸入
流密碼:不分組,整體加密

破解密文的方法
1、竊聽 + 破譯
2、社會工程學
破解密鑰的方法
1、暴力破解(密鑰窮舉),例如破譯凱撒密碼
2、頻率分析,例如破譯簡單替換密碼
3、選擇明文攻擊(對分組進行明文窮舉)

加密系統的可選技術
隱寫術:將消息藏在更大的數據中,例如藏頭詩
偽隨機數生成器
散列值(摘要,哈希值,指紋):原文經過散列函數(摘要函數,哈希函數,雜湊函數,單向加密)計算出來的值
對稱密碼(共享密鑰密碼):加密和解密用同一個私鑰
非對稱密碼(公鑰密碼):公鑰加密,私鑰解密
消息認證碼
數字簽名
公鑰證書

碰撞:兩個消息的散列值相同
弱抗碰撞性:給定一條消息,很難找到另一條消息與其散列值相同。防止以下情形,Bob持有一個消息A,計算其摘要;Alice找到與A散列值相同的另一條消息B,用B將A調包;由於摘要不變,不被Bob發覺
強抗碰撞性:很難找到兩條散列值相同的消息。防止以下情形,Alice拿兩個摘要相同的消息A和B,將A發給Bob;Bob計算其摘要;Alice再用B將A調包;由於摘要不變,不被Bob發覺
MD5(Message Digest 5)
歷史:1991年Ronald Rivest 設計出MD5
現狀:2004年王小雲提出了MD5碰撞攻擊演算法
SHA
歷史:1993年NIST發布SHA,1995年發布SHA-1,2002年發布SHA-2
現狀:2004年王小雲提出了SHA-0的碰撞攻擊演算法;2005年王小雲提出了SHA-1的碰撞攻擊演算法
SHA-3
歷史:2007年NIST發起選拔SHA-3,2012年Joan Daemen等人設計的Keccak演算法被選定為SHA-3

弱偽隨機數:隨機性
強偽隨機數:不可預測性
真隨機數:不可重現性

隨機數生成器:硬體可以通過熱雜訊實現真隨機數
偽隨機數生成器:軟體只能生成偽隨機數,需要一種子seed來初始化

偽隨機數演算法:線性同餘法、散列法、密碼法等

好的對稱密碼解決:不可破譯
缺點:需要事先配送密鑰
凱撒密碼
加密演算法:字母平移
密鑰:平移位數
解密演算法:逆向平移
破解密鑰:窮舉可能的密鑰
簡單替換密碼
加密演算法:一個字母替換成另一個字母
密鑰:替換表
解密演算法:逆向替換
破解密鑰:對密文的字母 和 字母組合進行頻率分析,與通用頻率表對比;用破譯出來的明文字母,代入密文,循環分析
Enigma密碼
發明者:德國人Arthur Sherbius
加密演算法:雙重加密,每日密鑰作為密鑰1,想一個密鑰2;用密鑰1加密密鑰2,得到密鑰2密文;用密鑰2加密消息;將密鑰2密文和消息密文一起發出
密鑰:密鑰冊子記錄的每天不同的密鑰
解密演算法:用每日密鑰解密密鑰2密文,得到密鑰2;用密鑰2解密消息密文
破譯者:Alan Turing 圖靈

DES密碼(Data Encryption Standard)
歷史:1974年IBM公司的Horst Feistel開發出了Lucifer密碼,1977年被美國國家標准學會(American National Standards Institute,ANSI)確定為DES標准
加密演算法:以64比特為一組,進行16輪運算。在一輪中,把一組分為左側和右側,並從密鑰中提取子密鑰;輪函數用一側和子密鑰生成一個比特序列,用這個比特序列對另一側進行異或運算(XOR)
密鑰:長度56位
破譯:可在現實時間內被暴力破解

三重DES密碼(triple-DES,TDEA,3DES)
加密演算法:將DES重復三次
密鑰:長度 56 * 3

AES密碼(Advanced Encryption Standard)
歷史:1997年,美國國家標准與技術研究院(National Institute of Standards and Technology,NIST)公開募集AES,2000年比利時密碼學家Joan Daemen 和 Vincent Rijmen提交的Rijndael方案,被選為標准
加密演算法:以128比特為一組,進行多輪的替換、平移、矩陣運算
密鑰:有128,192,256三種長度

分組密碼的迭代模式
ECB模式:Electronic CodeBook mode,電子密碼本模式;明文分組 和 密文分組 順序對應。主動攻擊者可以改變密文分組的順序,復制 或 刪除密文分組,使得接受者解密後得到錯誤的明文
CBC模式:Cipher Block Chaining mode,密碼分組鏈接模式;將本組明文 和 上組密文 進行異或運算後,在進行加密;如果被篡改,則不能正常解密
CFB模式:Cipher Feedback mode,密文反饋模式;將本組明文 和 上組密文 進行異或運算後,就得到本組的密文
OFB模式:Output Feedback mode,輸出反饋模式;用隨機比特序列作為初始化組(初始化向量);用初始化組的密文和 明文分組 異或運算,得到密文分組;再次對初始化組密文進行加密運算,得到新的初始化組密文,跟下組明文進行異或運算,以此類推
CTR模式:CounTeR mode,計數器模式;用隨機比特序列作為計數器的初始值,加密後與明文分組進行異或操作,得到密文分組;計數器加一,對下組明文進行加密

對稱密碼中,發送方發送密文時,帶上消息的MAC值A;接收方用相同方法計算出MAC值B;對比A和B,確保消息不被篡改
Encrypt-then-MAC:MAC值為消息密文的散列值
Encrypt-and-MAC:MAC值為消息明文的散列值
MAC-then-Encrypt:MAC值為明文散列值的密文

重放攻擊:攻擊者竊聽到Alice給Bob發送的消息後,重復給Bob發送,Bob以為都是Alice發的
預防重放攻擊:消息里帶有一個id

比對稱密碼:不可篡改、不可偽造
缺點:需要實現配送私鑰

基於口令的密碼:Password Based Encryption,PBE
解決:密鑰(會話密鑰)保存問題
CEK:會話密鑰
KEK:用來加密CEK的密鑰
方案
1、隨機數作為鹽salt,口令 + 鹽 的散列值作為KEK
2、用KEK加密CEK,得到CEK密文
3、只保存鹽和CEK密文,人腦記住口令,丟棄KEK

字典攻擊:如果沒有鹽參與生成KEK,那麼口令決定了KEK,常用的口令對應一個常用KEK字典,攻擊者直接拿常用KEK去解密CEK密文
鹽的作用:KEK由鹽參與形成,不可能有KEK字典包含這樣的KEK

非對稱密碼單向通信,不能單獨用於通信,只用在混合密碼中
方案:Alice 給 Bob 分發加密密鑰(公鑰);Bob用公鑰加密消息,發送給Alice;Alice用解密密鑰(私鑰)解密
總結:消息接收者是密鑰對主人,即私鑰持有人;公鑰用於加密,私鑰用於解密

RSA密碼
歷史:1978年,Ron Rivest、Adi Shamir、Reonard Adleman共同發表了RSA
加密演算法:密文 = 明文 E mode N
公鑰:E 和 N的組合
解密演算法:明文 = 密文 D mode N
私鑰:D 和 N的組合

生成密鑰對
生成質數:用偽隨機數生成隨機數,通過Miller-Rabin測試法測試它是不是質數,直到得到質數
求最大公約數:歐幾里得的輾轉相除法
1、求N
生成兩個512位的質數p和q,N = p * q
2、求L
L是p-1 和 q-1 的最小公倍數
3、求E
用偽隨機數生成(1,L)范圍內的隨機數,直到滿足E和L的最大公約數為1
4、求D
用偽隨機數生成(1,L)范圍內的隨機數,直到滿足(E * D) mod L = 1

破解:對N進行質因數分解,得到p和q,從而求出D。但是對大數的質因數分解,未有快速有效的方法

首次通信為混合密碼,後續通信為對稱密碼
比消息認證碼:無需事先配送私鑰
總體思路:Bob 用會話密鑰加密消息,用Alice的公鑰加密會話密鑰,一起發給Alice;Alice用私鑰解密會話密鑰,用會話密鑰解密消息
會話密鑰:用來加密消息的 對稱密碼的密鑰
1、Alice 給 Bob 發送公鑰
2、Bob隨機生成會話密鑰,用會話密鑰加密消息,得到消息密文
3、Bob用公鑰加密會話密鑰,得到會話密鑰密文
4、Bob將會話密鑰密文和消息密文一起發給Alice
5、Alice用私鑰解密會話密鑰,再用會話密鑰解密消息
6、雙方都有了會話密鑰,從此以後,可以用對稱密碼通信了,帶上消息認證碼

缺點:分發公鑰時,可能遭受中間人攻擊;Alice可能對給Bob發送公鑰這件事進行抵賴
中間人攻擊:中間人從一開始Alice向Bob發放公鑰時,就攔截了消息,得到Alice的公鑰;然後偽裝成Alice,向Bob發送自己的公鑰;從而Bob打算發給Alice的消息,能被中間人解密

不能單獨用於通信,只用在公鑰證書中
明文簽名:Alice用簽名密鑰(私鑰)加密消息的摘要,把摘要密文和消息明文一起發給Bob;Bob解密摘要密文,得到摘要A;算出明文摘要B,對比A和B
總結:私鑰用於加密,公鑰用於解密,與 非對稱加密之單向通信,剛好反過來

公鑰證書:Public-Key Certificate,PKC,簡稱證書
認證機構:Certification Authority,CA
證書標准:國際電信聯盟ITU 和 國際標准化組織ISO指定的X.509標准
流程:
1、Alice在CA登記
2、CA生成Alice的證書明文,包含Alice登記的信息、Alice的公鑰、CA信息
3、CA用自己的私鑰加密證書明文部分,得到數字簽名
4、證書明文部分 和 數字簽名 組成PKC,頒發給Alice
5、Bob向Alice獲取這個PKC,拿本地已有的CA公鑰去驗證證書,就得到了可信的Alice的公鑰
6、從此Alice 和 Bob之間可以進行混合密碼通信

首次通信為從CA獲取PKC,後續通信為混合密碼
比混合密碼:防止了中間人攻擊;CA不能抵賴自己的證書

歷史:1994年網景公司設計出SSL,2014年SSL 3.0被發現安全漏洞,1999年IEIF發布TLS
TLS(Transport Layer Security)是SSL(Secure Socket Layer)的後續版本,在tcp和http之間加一層TLS,就是https
OpenSSL:OpenSSL是實現SSL/TLS協議的工具包
以https為例
0、瀏覽器安裝時,存有幾個CA公鑰;伺服器在CA登記,拿到證書
1、瀏覽器訪問一個https地址,伺服器返回自己的證書
2、瀏覽器根據證書上的CA信息,拿對應的CA公鑰驗證證書,得到可信的伺服器公鑰
3、瀏覽器生成對稱密碼的密鑰(會話密鑰),用伺服器公鑰加密後發給伺服器
4、伺服器解密後得到會話密鑰,從此用對稱密碼通信,帶上消息認證碼

1、生成JKS證書:keytool -genkeypair -alias "別名" -keyalg "RSA" -keystore "D:app.jks"
2、將JKS轉換成PKCS12:keytool -importkeystore -srckeystore D:app.jks -destkeystore D:app.p12 -deststoretype pkcs12
3、將PKCS12轉成pem:openssl pkcs12 -in ./app.p12 -out app.pem
4、提取加密後的私鑰:將pem中 「—–BEGIN ENCRYPTED PRIVATE KEY—–」 至 「—–END ENCRYPTED PRIVATE KEY—–」 的內容拷貝出來,保存為ciphertext.key
5、將密文私鑰轉成明文私鑰:openssl rsa -in ciphertext.key -out plaintext.key

.jks(Java Key Storage):二進制格式,包含證書和私鑰,有密碼保護
.pfx 或 .p12(Predecessor of PKCS#12):二進制格式,包含證書和私鑰,有密碼保護
.pem(Privacy Enhanced Mail):文本格式,包含證書,可包含私鑰,私鑰有密碼保護
.der 或 .cer:二進制格式,只包含證書
.crt(Certificate):可以是der格式,也可以是pem格式,只包含證書

SSL證書:SSL證書必須綁定域名,不能綁定IP
加密服務、密鑰管理服務

6. 數據加密的基本信息

和防火牆配合使用的數據加密技術,是為提高信息系統和數據的安全性和保密性,防止秘密數據被外部破譯而採用的主要技術手段之一。在技術上分別從軟體和硬體兩方面採取措施。按照作用的不同,數據加密技術可分為數據傳輸加密技術、數據存儲加密技術、數據完整性的鑒別技術和密鑰管理技術。
數據傳輸加密技術的目的是對傳輸中的數據流加密,通常有線路加密與端—端加密兩種。線路加密側重在線路上而不考慮信源與信宿,是對保密信息通過各線路採用不同的加密密鑰提供安全保護。端—端加密指信息由發送端自動加密,並且由TCP/IP進行數據包封裝,然後作為不可閱讀和不可識別的數據穿過互聯網,當這些信息到達目的地,將被自動重組、解密,而成為可讀的數據。
數據存儲加密技術的目的是防止在存儲環節上的數據失密,數據存儲加密技術可分為密文存儲和存取控制兩種。前者一般是通過加密演算法轉換、附加密碼、加密模塊等方法實現;後者則是對用戶資格、許可權加以審查和限制,防止非法用戶存取數據或合法用戶越權存取數據。
數據完整性鑒別技術的目的是對介入信息傳送、存取和處理的人的身份和相關數據內容進行驗證,一般包括口令、密鑰、身份、數據等項的鑒別。系統通過對比驗證對象輸入的特徵值是否符合預先設定的參數,實現對數據的安全保護。
密鑰管理技術包括密鑰的產生、分配、保存、更換和銷毀等各個環節上的保密措施。 數據加密的術語有 :
明文,即原始的或未加密的數據。通過加密演算法對其進行加密,加密演算法的輸入信息為明文和密鑰;
密文,明文加密後的格式,是加密演算法的輸出信息。加密演算法是公開的,而密鑰則是不公開的。密文不應為無密鑰的用戶理解,用於數據的存儲以及傳輸;
密鑰,是由數字、字母或特殊符號組成的字元串,用它控制數據加密、解密的過程;
加密,把明文轉換為密文的過程;
加密演算法,加密所採用的變換方法;
解密,對密文實施與加密相逆的變換,從而獲得明文的過程;
解密演算法,解密所採用的變換方法。
加密技術是一種防止信息泄露的技術。它的核心技術是密碼學,密碼學是研究密碼系統或通信安全的一門學科,它又分為密碼編碼學和密碼分析學。
任何一個加密系統都是由明文、密文、演算法和密鑰組成。發送方通過加密設備或加密演算法,用加密密鑰將數據加密後發送出去。接收方在收到密文後,用解密密鑰將密文解密,恢復為明文。在傳輸過程中,即使密文被非法分子偷竊獲取,得到的也只是無法識別的密文,從而起到數據保密的作用。
例:明文為字元串:
AS KINGFISHERS CATCH FIRE
(為簡便起見,假定所處理的數據字元僅為大寫字母和空格符)。假定密鑰為字元串:
ELIOT
加密演算法為:
1) 將明文劃分成多個密鑰字元串長度大小的塊(空格符以+表示)
AS+KI NGFIS HERS+ CATCH +FIRE
2) 用0~26范圍的整數取代明文的每個字元,空格符=00,A=01,...,Z=26:
3) 與步驟2一樣對密鑰的每個字元進行取代:
0512091520
4) 對明文的每個塊,將其每個字元用對應的整數編碼與密鑰中相應位置的字元的整數編碼的和模27後的值(整數編碼)取代:
舉例:第一個整數編碼為 (01+05)%27=06
5) 將步驟4的結果中的整數編碼再用其等價字元替換:
FDIZB SSOXL MQ+GT HMBRA ERRFY
如果給出密鑰,該例的解密過程很簡單。問題是對於一個惡意攻擊者來說,在不知道密鑰的情況下,利用相匹配的明文和密文獲得密鑰究竟有多困難?對於上面的簡單例子,答案是相當容易的,不是一般的容易,但是,復雜的加密模式同樣很容易設計出。理想的情況是採用的加密模式使得攻擊者為了破解所付出的代價應遠遠超過其所獲得的利益。實際上,該目的適用於所有的安全性措施。這種加密模式的可接受的最終目標是:即使是該模式的發明者也無法通過相匹配的明文和密文獲得密鑰,從而也無法破解密文。 傳統加密方法有兩種,替換和置換。上面的例子採用的就是替換的方法:使用密鑰將明文中的每一個字元轉換為密文中的一個字元。而置換僅將明文的字元按不同的順序重新排列。單獨使用這兩種方法的任意一種都是不夠安全的,但是將這兩種方法結合起來就能提供相當高的安全程度。數據加密標准(Data Encryption Standard,簡稱DES)就採用了這種結合演算法,它由IBM制定,並在1977年成為美國官方加密標准。
DES的工作原理為:將明文分割成許多64位大小的塊,每個塊用64位密鑰進行加密,實際上,密鑰由56位數據位和8位奇偶校驗位組成,因此只有56個可能的密碼而不是64個。每塊先用初始置換方法進行加密,再連續進行16次復雜的替換,最後再對其施用初始置換的逆。第i步的替換並不是直接利用原始的密鑰K,而是由K與i計算出的密鑰Ki。
DES具有這樣的特性,其解密演算法與加密演算法相同,除了密鑰Ki的施加順序相反以外。 多年來,許多人都認為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) molo(p - 1)*(q - 1) = 1
根據e、p和q可以容易地計算出d。
4) 公開整數r和e,但是不公開d;
5) 將明文P (假設P是一個小於r的整數)加密為密文C,計算方法為:
C = P^e molo r
6) 將密文C解密為明文P,計算方法為:
P = C^d molo r
然而只根據r和e(不是p和q)要計算出d是不可能的。因此,任何人都可對明文進行加密,但只有授權用戶(知道d)才可對密文解密。
下面舉一簡單的例子對上述過程進行說明,顯然我們只能選取很小的數字。
例:選取p=3, q=5,則r=15,(p-1)*(q-1)=8。選取e=11(大於p和q的質數),通過(d*11)molo(8) = 1。
計算出d =3。
假定明文為整數13。則密文C為
C = P^e molo r
= 13^11 molo 15
= 1,792,160,394,037 molo 15
= 7
復原明文P為:
P = C^d molo r
= 7^3 molo 15
= 343 molo 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的簽名。 前言
隨著信息化的高速發展,人們對信息安全的需求接踵而至,人才競爭、市場競爭、金融危機、敵特機構等都給企事業單位的發展帶來巨大風險,內部竊密、黑客攻擊、無意識泄密等竊密手段成為了人與人之間、企業與企業之間、國與國之間的安全隱患。
市場的需求、人的安全意識、環境的諸多因素促使著我國的信息安全高速發展,信息安全經歷了從傳統的單一防護如防火牆到信息安全整體解決方案、從傳統的老三樣防火牆、入侵檢測、殺毒軟體到多元化的信息安全防護、從傳統的外部網路防護到內網安全、主機安全等。
傳統數據加密技術分析
信息安全傳統的老三樣(防火牆、入侵檢測、防病毒)成為了企事業單位網路建設的基礎架構,已經遠遠不能滿足用戶的安全需求,新型的安全防護手段逐步成為了信息安全發展的主力軍。例如主機監控、文檔加密等技術。
在新型安全產品的隊列中,主機監控主要採用外圍圍追堵截的技術方案,雖然對信息安全有一定的提高,但是因為產品自身依賴於操作系統,對數據自身沒有有效的安全防護,所以存在著諸多安全漏洞,例如:最基礎的手段拆拔硬碟、winpe光碟引導、USB引導等方式即可將數據盜走,而且不留任何痕跡;此技術更多的可以理解為企業資產管理軟體,單一的產品無法滿足用戶對信息安全的要求。
文檔加密是現今信息安全防護的主力軍,採用透明加解密技術,對數據進行強制加密,不改變用戶原有的使用習慣;此技術對數據自身加密,不管是脫離操作系統,還是非法脫離安全環境,用戶數據自身都是安全的,對環境的依賴性比較小。市面上的文檔加密主要的技術分為磁碟加密、應用層加密、驅動級加密等幾種技術,應用層加密因為對應用程序的依賴性比較強,存在諸多兼容性和二次開發的問題,逐步被各信息安全廠商所淘汰。
當今主流的兩大數據加密技術
我們所能常見到的主要就是磁碟加密和驅動級解密技術:
全盤加密技術是主要是對磁碟進行全盤加密,並且採用主機監控、防水牆等其他防護手段進行整體防護,磁碟加密主要為用戶提供一個安全的運行環境,數據自身未進行加密,操作系統一旦啟動完畢,數據自身在硬碟上以明文形式存在,主要靠防水牆的圍追堵截等方式進行保護。磁碟加密技術的主要弊端是對磁碟進行加密的時間周期較長,造成項目的實施周期也較長,用戶一般無法忍耐;磁碟加密技術是對磁碟進行全盤加密,一旦操作系統出現問題。需要對數據進行恢復也是一件讓用戶比較頭痛的事情,正常一塊500G的硬碟解密一次所需時間需要3-4個小時;市面上的主要做法是對系統盤不做加密防護,而是採用外圍技術進行安全訪問控制,大家知道操作系統的版本不斷升級,微軟自身的安全機制越來越高,人們對系統的控制力度越來越低,尤其黑客技術層層攀高,一旦防護體系被打破,所有一切將暴露無疑。另外,磁碟加密技術是對全盤的信息進行安全管控,其中包括系統文件,對系統的效率性能將大大影響。
驅動級技術是信息加密的主流技術,採用進程+後綴的方式進行安全防護,用戶可以根據企事業單位的實際情況靈活配置,對重要的數據進行強制加密,大大提高了系統的運行效率。驅動級加密技術與磁碟加密技術的最大區別就是驅動級技術會對用戶的數據自身進行保護,驅動級加密採用透明加解密技術,用戶感覺不到系統的存在,不改變用戶的原有操作,數據一旦脫離安全環境,用戶將無法使用,有效提高了數據的安全性;另外驅動級加密技術比磁碟加密技術管理可以更加細粒度,有效實現數據的全生命周期管理,可以控制文件的使用時間、次數、復制、截屏、錄像等操作,並且可以對文件的內部進行細粒度的授權管理和數據的外出訪問控制,做到數據的全方位管理。驅動級加密技術在給用戶的數據帶來安全的同時,也給用戶的使用便利性帶來一定的問題,驅動級加密採用進程加密技術,對同類文件進行全部加密,無法有效區別個人文件與企業文件數據的分類管理,個人電腦與企業辦公的並行運行等問題。

閱讀全文

與基於屬性加密密文可偽造相關的資料

熱點內容
超短macd源碼 瀏覽:163
群暉怎麼設置用戶訪問指定文件夾 瀏覽:555
安卓怎麼測觸摸屏 瀏覽:593
javastring原理 瀏覽:315
如何關閉手機dhcp伺服器 瀏覽:981
php免費ide 瀏覽:200
程序員詞句 瀏覽:976
伺服器如何禁止某個ip段 瀏覽:329
便簽手機文件夾 瀏覽:768
gameloft的java游戲 瀏覽:110
神佑釋放怎麼轉伺服器 瀏覽:735
洋蔥app軟體怎麼登錄 瀏覽:788
兩相電空氣壓縮機 瀏覽:396
基於51單片機的智能語音密碼鎖設計 瀏覽:845
mac如何用ssh登錄伺服器 瀏覽:446
appstore怎麼設置 瀏覽:954
在哪個app買韓國女裝 瀏覽:111
php寫入文件換行 瀏覽:749
dsp實現fft演算法 瀏覽:485
棋牌源碼轉讓交易手續費 瀏覽:293