Skip to content

Latest commit

 

History

History
62 lines (40 loc) · 5.43 KB

File metadata and controls

62 lines (40 loc) · 5.43 KB

SHA256 對稱式加密(Symmetric Encryption)

對稱式加密就是傳送方與接收方的加解密皆使用同一把密鑰,所以只要雙方都擁有這把鑰匙,當傳送方傳資料時,使用這把鑰匙加密,接收方收到訊息後,再用同一把鑰匙解密,就能驗證訊息了。

但對稱式加密最大的弱點是,要是這把鑰匙在第一次傳送時,被中間人攔截且複製,再原封不動傳給接收方,那之後所有攔截到的加密訊息,都能被輕易破解,因此就需要更進階的非對稱式加密技術去解決這個bug。

  • 不管資料量多大經過SHA256運算字串長度都是一樣的
  • SHA256的原因是運算完的資料大小一定是 256 bit
  • 不可逆的算法(單向).
  • 相同的值用SHA運算過後值都是一樣的

RSA 非對稱式加密(Asymmetric Encryption)

非對稱式加密就是每個使用者都擁有一對金鑰:公開金鑰(Public key)及私密金鑰(Private key),公開金鑰能被廣泛的發佈與流傳,而私密金鑰則必須被妥善的保存。

當訊息由其中一把金鑰加密後,就必須用另一把金鑰解密,加解密的鑰匙要是完整一對(pair)的,所以可以是公鑰加密私鑰解密,也可以是私鑰加密公鑰解密,沒有一定。

運作原理是傳送方與接收方在傳送之前,先把彼此的公鑰傳給對方,當傳送方要傳送時,就用接收方的公鑰將訊息加密,接收方收到加密訊息後,再用自己的密鑰解開,這樣即使有心人拿到公鑰,只要沒拿到接收方的私鑰,也還是無法解密訊息。

數位簽章(Digital Signature)的Double Confirm了,也就是傳送方除了使用接收方的公鑰加密外,也使用自己的私鑰對該封加密訊息的Hash簽名,這樣當接收方收到時,除了要使用接收方本身的私鑰解密,也需要用寄件者的公鑰來對簽章作二次驗證,確認真的是由正確的傳送者傳來的。

  • 公鑰加密、私鑰解密的應用場景就像我們之前提過的:傳私密訊息給別人;利用別人的公鑰加密後,就可以確保持有私鑰的本人有辦法解開
  • 私鑰加密、公鑰解密的就是數位簽章,透過數位簽章我們可以確保該訊息的確是由私鑰的持有人發出的,因此為了確保該筆交易是由本人發起的,每筆交易都必須經過數位簽章的確認。

優缺點比較

  • 對稱加密算法運算速度快,並且需要較少的計算資源,但它的主要缺點是密鑰的分發。 因為在加密和解密信息時,使用相同的密鑰,所以必須將該密鑰分發給需要訪問數據的人,這也隨之帶來了安全風險。
  • 對稱式加密是安全的,但傳遞過程不是。
  • 非對稱加密使用公鑰進行加密,私鑰進行解密,來解決密鑰分發的問題。 然而,需要權衡的是,與對稱加密相比,非對稱加密系統運行得非常緩慢,並且由於它們的密鑰長度非常長,因此需要更多的計算資源。

AES

相比於其他加密,AES加密似乎模式很多,包括ECB、CBC等等等等,每個模式又包括IV引數和Padding引數,並且,不同語言對AES加密的庫設計有區別。這些導致AES加密在不同人之間聯調會很麻煩。

模式

AES分為幾種模式,比如ECB,CBC,CFB等等,這些模式除了ECB由於沒有使用IV而不太安全,其他模式差別並沒有太明顯,大部分的區別在IV和KEY來計算密文的方法略有區別。

另外,AES分為AES128,AES256等,表示期待祕鑰的長度,比如AES256祕鑰的長度應該是256/8的32位元組,一些語言的庫會進行自動擷取,讓人以為任何長度的祕鑰都可以。而這其實是有區別的。

IV

IV稱為初始向量,不同的IV加密後的字串是不同的,加密和解密需要相同的IV,既然IV看起來和key一樣,卻還要多一個IV的目的,對於每個塊來說,key是不變的,但是隻有第一個塊的IV是使用者提供的,其他塊IV都 是自動生成。

IV的長度為16位元組。超過或者不足,可能實現的庫都會進行補齊或截斷。但是由於塊的長度是16位元組,所以一般可以認為需要的IV是16位元組。

PADDING

AES塊加密說過,PADDING是用來填充最後一塊使得變成一整塊,所以對於加密解密兩端需要使用同一的PADDING模式,大部分PADDING模式為PKCS5, PKCS7, NOPADDING。

加密解密端

所以,在設計AES加密的時候

  • 對於加密端,應該包括:加密祕鑰長度,祕鑰,IV值,加密模式,PADDING方式。
  • 對於解密端,應該包括:解密祕鑰長度,祕鑰,IV值,解密模式,PADDING方式。
  • 可逆的算法(雙向)

RSA x AES 混搭風

  • 用非對稱加密演算法RSA加密處理?但效能相較其他對稱加密演算法好像來得慢一些。
  • 用對稱加密演算法,但金鑰交換的安全需要重視。

於是出現了一種不知道是不是某種工業標準的混搭風格,俗稱數位信封(Digital Envelop),打翻傳統使用單一加密演算法的款式搭配。 她的概念上是以非對稱加密演算法加密此次會議金鑰(Session key),檔案內容就以會議金鑰進行對稱式演算法加密,一來顧金鑰安全、二來顧效能。