安全加密技術(shù)

分類

加密技術(shù)通常分為兩大類:“對稱式”和“非對稱式”。

一、對稱算法

只有一個密鑰key進(jìn)行加密解密,可以逆向加解密。

常見的對稱式算法:

  • DES設(shè)計中使用了分組密碼設(shè)計的兩個原則:混淆(confusion)和擴(kuò)散(diffusion),其目的是抗擊敵手對密碼系統(tǒng)的統(tǒng)計分析?;煜鞘姑芪牡慕y(tǒng)計特性與密鑰的取值之間的關(guān)系盡可能復(fù)雜化,以使密鑰和明文以及密文之間的依賴性對密碼分析者來說是無法利用的。擴(kuò)散的作用就是將每一位明文的影響盡可能迅速地作用到較多的輸出密文位中,以便在大量的密文中消除明文的統(tǒng)計結(jié)構(gòu),并且使每一位密鑰的影響盡可能迅速地擴(kuò)展到較多的密文位中,以防對密鑰進(jìn)行逐段破譯。
  • DES算法把64位的明文輸入塊變?yōu)?4位的密文輸出塊,它所使用的密鑰也是64位(實(shí)際用到了56位,第8、16、24、32、40、48、56、64位是校驗(yàn)位, 使得每個密鑰都有奇數(shù)個1)

  • 3DES(Triple DES):是基于DES的對稱算法,對一塊數(shù)據(jù)用三個不同的密鑰進(jìn)行三次加密,強(qiáng)度更高;

  • RC2RC4:對稱算法,用變長密鑰對大量數(shù)據(jù)進(jìn)行加密,比 DES 快;

  • IDEA(International Data Encryption Algorithm)國際數(shù)據(jù)加密算法,使用 128 位密鑰提供非常強(qiáng)的安全性;

二、非對稱算法

非對稱密鑰算法是指一個加密算法的加密密鑰和解密密鑰是不一樣的,或者說不能由其中一個密鑰推導(dǎo)出另一個密鑰。

常見的非對稱式算法:

  • RSA:由 RSA 公司發(fā)明,是一個支持變長密鑰的公共密鑰算法,需要加密的文件塊的長度也是可變的
  • RSA算法基于一個十分簡單的數(shù)論事實(shí):將兩個大質(zhì)數(shù)相乘十分容易,但是想要對其乘積進(jìn)行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
  • RSA的算法涉及三個參數(shù),n、e1、e2。
    其中,n是兩個大質(zhì)數(shù)p、****q的積,n的二進(jìn)制表示時所占用的位數(shù),就是所謂的密鑰長度。
    e1和e2是一對相關(guān)的值,e1可以任意取,但要求e1與(p-1)(q-1)互質(zhì);再選擇e2,要求(e2e1)mod((p-1)(q-1))=1。
    (n,e1),(n,e2)就是密鑰對。其中
    (n,e1)為公鑰,*(n,e2)為私鑰。[1]
    **
    RSA加解密的算法完全相同,設(shè)A為明文,B為密文,則:A=B^e2 mod n;B=A^e1 mod n;(公鑰加密體制中,一般用公鑰加密,私鑰解密)
    e1和e2可以互換使用,即:
    A=B^e1 mod n;B=A^e2 mod n;

  • DH(Diffie-Hellman算法):

  • ElGamal
    解釋原理之前,首先需要知道幾個概念
    • 歐拉函數(shù)
      簡單來說就是一個正整數(shù)p,從1到p之間與p互質(zhì)的正整數(shù)的個數(shù)
    • 階: 其在數(shù)論中的定義為:
      設(shè)a,p是整數(shù),有:a^n Ξ 1(mod p)
      可以使上式成立的最小正整數(shù)n叫做a模p的階。
      ps:Ξ表示恒等的意思
    • 原根
      設(shè)m是正整數(shù),a是整數(shù),若a模m的階等于φ(m) (歐拉函數(shù)),則稱a為模m的一個原根
  • 如果是用于用于數(shù)字簽名,被簽名的信息是M(一般是信息的HASH值)
    1. 首先取一個素數(shù)p,再獲取p的原根g,以及一個隨機(jī)數(shù)x,要求x和g都小于p,計算y=g^x(mod p),則其公鑰是y\g\p,私鑰是x.
    2. 首先選擇一個隨機(jī)數(shù)k,k與p-1互質(zhì)
      計算a=g^k(mod p)
    3. 再用擴(kuò)展的ElGamal算法求解下面的方程:
      M = xa + kb ( mod p - 1 )
      簽名就是( a, b )。隨機(jī)數(shù)k須丟棄。
    4. 驗(yàn)證時要驗(yàn)證下式:
      y^a * a^b ( mod p ) = g^M ( mod p )
      同時一定要檢驗(yàn)是否滿足1<= a < p。否則簽名容易偽造。
  • 如果是用于加密。被加密信息為M,
    1. 首先選擇一個隨機(jī)數(shù)k,k與 p - 1互質(zhì),
    2. 計算a = g^k ( mod p )
    3. 計算b = y^k M ( mod p )
    4. ( a, b )為密文,是明文的兩倍長。
    5. 解密時計算
      M = b / a^x ( mod p )

三、基本的單向加密算法

常見的單向加密算法

  • BASE64:Base64編碼可用于在HTTP,mime協(xié)議下快速傳輸數(shù)據(jù), 嚴(yán)格地說,屬于編碼格式,而非加密算法。

Base64的作用:將非ASCII字符的數(shù)據(jù)轉(zhuǎn)換成ASCII字符的一種方法,因?yàn)槟承┫到y(tǒng)中只能使用ASCII字符(比如傳輸郵件)

  • MD5:嚴(yán)格來說不算加密算法,只能說是摘要算法;

信息摘要算法,用于確保信息傳輸完整一致。廣泛用于加密和解密技術(shù),常用于文件校驗(yàn)。不管文件多
大,經(jīng)過MD5后都能生成唯一的MD5值(SHA-1與此類似)
特點(diǎn)
1、任意長度的數(shù)據(jù),MD5值長度都是固定的。
2、對原數(shù)據(jù)進(jìn)行任何改動,哪怕只修改1個字節(jié),所得到的MD5值都有很大區(qū)別。
3、弱抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。
4、強(qiáng)抗碰撞:想找到兩個不同的數(shù)據(jù),使它們具有相同的MD5值,是非常困難的。

  • SHA:Secure Hash Algorith,安全散列算法,是數(shù)字簽名等密碼學(xué)應(yīng)用中重要的工具,被廣泛地應(yīng)用于電子商務(wù)等信息安全領(lǐng)域,較MD5更為安全。

SHA1比MD5安全,是因?yàn)镾HA-1摘要為160位,MD5摘要為128位,相差32位,因此SHA1的強(qiáng)度更大。

四、相關(guān)應(yīng)用

這里舉個例子,server和app之間的通信

  1. 采用ras加密通信數(shù)據(jù),由server產(chǎn)生公鑰和私鑰,公鑰給app:
  • app通過公鑰加密數(shù)據(jù),發(fā)送給server,server通過私鑰解密數(shù)據(jù)
  • server用私鑰加密數(shù)據(jù),然后發(fā)送給app,app通過公鑰解密數(shù)據(jù)

這里就產(chǎn)生了一個問題:公鑰是公開的,第三方可以截取數(shù)據(jù)后用公鑰解密,造成數(shù)據(jù)泄露
這個問題可以通過雙向ras加密解決,也就是:server和app各自產(chǎn)生一對公鑰和私鑰,然后把各自的公鑰暴露給對方:

  • app通過公鑰(server_public_key)加密數(shù)據(jù),發(fā)送給server,server通過私鑰(server_private_key)解密數(shù)據(jù)
  • server用公鑰(app_public_key)加密數(shù)據(jù),然后發(fā)送給app,app通過私鑰(app_private_key)解密數(shù)據(jù)

上面這種方式看起來很牢固,然并卵
第三方依舊可以介入,通過中間人的方式,對于server端,第三方可以拿app端的公鑰

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MD5的全稱是Message-Digest Algorithm 5,在90年代初由MIT的計算機(jī)科學(xué)實(shí)驗(yàn)室和RSA...
    沒能唱給你的歌曲閱讀 1,061評論 2 6
  • 本文主要介紹移動端的加解密算法的分類、其優(yōu)缺點(diǎn)特性及應(yīng)用,幫助讀者由淺入深地了解和選擇加解密算法。文中會包含算法的...
    蘋果粉閱讀 11,679評論 5 29
  • 之前的項(xiàng)目中接觸過一些加密的方法,也沒有太仔細(xì)的進(jìn)行記錄和研究。最近在寫SDK時,加密模塊的占比相當(dāng)之大;借此時機(jī)...
    大雄記閱讀 11,129評論 20 63
  • 這篇文章主要講述在Mobile BI(移動商務(wù)智能)開發(fā)過程中,在網(wǎng)絡(luò)通信、數(shù)據(jù)存儲、登錄驗(yàn)證這幾個方面涉及的加密...
    雨_樹閱讀 3,039評論 0 6
  • 如果真的有低谷, 我又能怎么辦, 在月夜, 在貓兒輕輕悄悄的叫, 在小花園, 在各種各樣的寂寞與孤獨(dú), 我又該如何...
    汎彼柏舟閱讀 529評論 0 4

友情鏈接更多精彩內(nèi)容