移動商務智能安全(上篇):加密算法之對稱與非對稱
時間:2023-03-22 02:44:02 | 來源:電子商務
時間:2023-03-22 02:44:02 來源:電子商務
商務智能產(chǎn)品的服務對象是對數(shù)據(jù)安全非常敏感的企業(yè)。安全一貫是微策略關注的核心要素。在開發(fā)移動商務智能產(chǎn)品時,我們致力于為用戶數(shù)據(jù)的存儲、傳輸、驗證等方方面面提供業(yè)界最頂尖的安全保障措施。
加密算法可以防止數(shù)據(jù)的讀取、確保數(shù)據(jù)的完整性以及實現(xiàn)身份認證。本文對網(wǎng)絡通信、數(shù)據(jù)存儲、登錄驗證這幾個方面涉及的加密算法進行簡單的介紹,希望讀者對安全功能實現(xiàn)的理論基礎有一個清晰的認知,以便更深入地理解微策略的安全產(chǎn)品。
加密算法可以簡單的分為“對稱密鑰加密算法”和“非對稱密鑰加密算法”,這是以加解密過程中使用的密鑰是否相同來區(qū)分的:
- “對稱加密算法”是指加密和解密使用同一個密鑰,一般而言,算法的強度與密鑰的長度成正比,涉及的加密算法包括:AES、DES、Triple DES、RC2、RC4、IDEA、Camellia等。
- “非對稱密鑰加密算法”是指加密和解密使用不同的密鑰,通常包括兩個密鑰,一個公鑰,可以對外公開,一個私鑰,只有自己知道,這種算法現(xiàn)在的主要應用是在開放且不安全的網(wǎng)絡上認證身份。這里涉及的加密算法包括:RSA、DSA、Diffie-Hellman等。
對稱密鑰加密對稱密鑰加密 Symmetric Key Algorithm 又稱為對稱加密、私鑰加密、共享密鑰加密:這類算法在加密和解密時使用相同的密鑰,或是使用兩個可以簡單的相互推算的密鑰,對稱加密的速度一般都很快。
分組密碼 Block Cipher 又稱為“分塊加密”或“塊加密”,將明文分成多個等長的模塊,使用確定的算法和對稱密鑰對每組分別加密解密。這也就意味著分組密碼的一個優(yōu)點在于可以實現(xiàn)同步加密,因為各分組間可以相對獨立。
與此相對應的是流密碼:利用密鑰由密鑰流發(fā)生器產(chǎn)生密鑰流,對明文串進行加密。與分組密碼的不同之處在于加密輸出的結果不僅與單獨明文相關,而是與一組明文相關。
數(shù)據(jù)加密標準 DES Data Encryption Standard 是由IBM在美國國家安全局NSA授權下研制的一種使用56位密鑰的分組密碼算法,并于1977年被美國國家標準局NBS公布成為美國商用加密標準。但是因為DES固定的密鑰長度,漸漸不再符合在開放式網(wǎng)絡中的安全要求,已經(jīng)于1998年被移出商用加密標準,被更安全的AES標準替代。
DES使用的Feistel Network網(wǎng)絡屬于對稱的密碼結構,對信息的加密和解密的過程極為相似或趨同,使得相應的編碼量和線路傳輸?shù)囊笠矞p半。
DES是塊加密算法,將消息分成64位,即16個十六進制數(shù)為一組進行加密,加密后返回相同大小的密碼塊,這樣,從數(shù)學上來說,64位0或1組合,就有2^64種可能排列。DES密鑰的長度同樣為64位,但在加密算法中,每逢第8位,相應位會被用于奇偶校驗而被算法丟棄,所以DES的密鑰強度實為56位。
3DES Triple DES,使用不同Key重復三次DES加密,加密強度更高,當然速度也就相應的降低。
高級加密標準 AES Advanced Encryption Standard 為新一代數(shù)據(jù)加密標準,速度快,安全級別高。由美國國家標準技術研究所NIST選取Rijndael于2000年成為新一代的數(shù)據(jù)加密標準。
AES的區(qū)塊長度固定為128位,密鑰長度可以是128位、192位或256位。AES算法基于Substitution Permutation Network代換置列網(wǎng)絡,將明文塊和密鑰塊作為輸入,并通過交錯的若干輪代換"Substitution"和置換"Permutation"操作產(chǎn)生密文塊。
AES加密過程是在一個4*4的字節(jié)矩陣(或稱為體State)上運作,初始值為一個明文區(qū)塊,其中一個元素大小就是明文區(qū)塊中的一個Byte,加密時,基本上各輪加密循環(huán)均包含這四個步驟:
合并(AddRoundKey):矩陣中的每個字節(jié)與該回合密鑰做XOR異或運算,其中回合密鑰由主密鑰通過Rijndael密鑰生成方案生成,這個密鑰大小跟原矩陣一致。替換(SubBytes):矩陣中的每個字節(jié)通過一個8位查找表對應的特定字節(jié)所替換。這里的8位查找表為S-box(Substitution-box, 置換盒),用來模糊密鑰與密文之間的關系,實現(xiàn)輸入輸出的非線性特征。行混淆(ShiftRows):矩陣中的每一行的各個字節(jié)循環(huán)向左方位移,位移量隨行數(shù)遞增。列混淆(MixColumns):每一列的四個字節(jié)通過線性變換互相結合,即與一個固定的多項式做乘法。已知的針對AES唯一的成功攻擊是旁道攻擊,2005年時使用緩存時序攻擊法,破解了一個裝載OpenSSL AES加密系統(tǒng)的客戶服務器。
針對區(qū)塊加密系統(tǒng)最常見的方式,是通過對加密循環(huán)次數(shù)較少的版本嘗試攻擊,然后改進算法后繼續(xù)攻擊高級版本,目前這個破解方法還不太實用。
另外由于AES的數(shù)據(jù)結構具有井然有序的代數(shù)結構,有一個擔心就是相關的代數(shù)攻擊,目前基于此的有效攻擊方法也暫時沒有出現(xiàn)。
非對稱密鑰加密非對稱密鑰加密 Asymmetric Key Cryptography 也可稱為 Public Key Cryptography 公開密鑰加密:需要兩個密鑰,分為公鑰和私鑰,一個用作加密而另外一個只能用于解密,而加密的密鑰并不能用來解密。
根據(jù)此特性,除了加解密的應用外,還可以確保數(shù)字簽名的功能:某用戶用私鑰加密明文,任何人都可以用該用戶的公鑰解密密文,以此判定身份。
對稱密鑰需要一個安全的渠道可以交換共用的密鑰,而非對稱密鑰可以將加密公鑰公開發(fā)布;不過公鑰加密在計算上相當復雜,性能遠比不上對稱加密,所以一般會利用公鑰加密來交換對稱密鑰,然后依靠對稱密鑰來傳輸具體的信息。
RSA是由三個人的名字組成 Ron Rivest、Adi Shamir、Leonard Adleman于1977年在MIT提出,并于1987年公布,是目前最常用的公鑰加密算法。
RSA算法的核心是極大整數(shù)的因式分解,理論基礎在于由兩個大質(zhì)數(shù)算出乘積很容易,但是要從一個極大整數(shù)因式分解得出兩個質(zhì)數(shù)卻很難。
ECC即 Elliptic Curve Cryptography 橢圓曲線密碼學,是基于橢圓曲線數(shù)學建立公開密鑰加密的算法。ECC的主要優(yōu)勢是在提供相當?shù)陌踩燃壡闆r下,密鑰長度更小。
ECC的原理是根據(jù)有限域上的橢圓曲線上的點群中的離散對數(shù)問題ECDLP,而ECDLP是比因式分解問題更難的問題,是指數(shù)級的難度。而ECDLP定義為:給定素數(shù)p和橢圓曲線E,對Q=kP,在已知P,Q 的情況下求出小于p的正整數(shù)k。可以證明由k和P計算Q比較容易,而由Q和P計算k則比較困難。
數(shù)字簽名 Digital Signature 又稱公鑰數(shù)字簽名是一種用來確保數(shù)字消息或文檔真實性的數(shù)學方案。一個有效的數(shù)字簽名需要給接收者充足的理由來信任消息的可靠來源,而發(fā)送者也無法否認這個簽名,并且這個消息在傳輸過程中確保沒有發(fā)生變動。
數(shù)字簽名的原理在于利用公鑰加密技術,簽名者將消息用私鑰加密,然后公布公鑰,驗證者就使用這個公鑰將加密信息解密并對比消息。一般而言,會使用消息的散列值來作為簽名對象。
下期預告:移動商務智能安全下篇——消息摘要與密碼破解在加密安全領域中,如果不需要保證消息被完整地讀取,只需要驗證消息本身,還有消息摘要這類算法。摘要算法多用于信息的比對和驗證,使得在不暴露原始信息,以及縮小比對量的情況下保證結果的正確性。
數(shù)據(jù)來源:Wikipedia Block Cipher: Wikipedia DES:Wikipedia AES:Wikipedia RSA: Wikipedia ECC: 我們會每周推送商業(yè)智能、數(shù)據(jù)分析資訊、技術干貨和程序員日常生活,歡迎關注我們的本站公眾號“微策略中國”或微信公眾號“微策略 商業(yè)智能"。