加密、簽名、證書基本概念

1.非對稱加密

非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。

公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進行加密,只有用對應(yīng)的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進行加密,那么只有用對應(yīng)的公開密鑰才能解密。

因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。

工作原理

  • A要向B發(fā)送信息,A和B都要產(chǎn)生一對用于加密和解密的公鑰和私鑰。
  • A的私鑰保密,A的公鑰告訴B;B的私鑰保密,B的公鑰告訴A。
  • A要給B發(fā)送信息時,A用B的公鑰加密信息,因為A知道B的公鑰。
  • A將這個消息發(fā)給B(已經(jīng)用B的公鑰加密消息)。
  • B收到這個消息后,B用自己的私鑰解密A的消息。其他所有收到這個報文的人都無法解密,因為只有B才有B的私鑰。

RSA算法

RSA加密算法是一種非對稱加密算法

RSA是三位開發(fā)者姓氏開頭字母拼在一起組成的。

2.對稱加密

所謂對稱,就是采用這種加密方法的雙方使用方式同樣的密鑰進行加密和解密。

密鑰是控制加密及解密過程的指令。

算法是一組規(guī)則,規(guī)定如何進行加密和解密。

優(yōu)缺點

由于其速度快,對稱性加密通常在消息發(fā)送方需要加密大量數(shù)據(jù)時使用。對稱性加密也稱為密鑰加密。

加密的安全性不僅取決于加密算法本身,密鑰管理的安全性更是重要。因為加密和解密都使用同一個密鑰,如何把密鑰安全地傳遞到解密者手上就成了必須要解決的問題。

工作原理

  • 數(shù)據(jù)發(fā)送方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后,使其變成復(fù)雜的加密密文發(fā)送出去。
  • 接收方收到密文后,若想解讀原文,則需要使用加密密鑰及相同算法的逆算法對密文進行解密,才能使其恢復(fù)成可讀明文。
  • 在對稱加密算法中,使用的密鑰只有一個,發(fā)收信雙方都使用這個密鑰對數(shù)據(jù)進行加密和解密。

AES

高級加密標(biāo)準(zhǔn)(英語:Advanced Encryption Standard,縮寫:AES)

這個標(biāo)準(zhǔn)用來替代原先的DES

DES全稱為Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法

AES屬于對稱加密方法

3.密碼散列函數(shù)

密碼散列函數(shù)(Cryptographic hash function),又譯為加密散列函數(shù),是散列函數(shù)(哈希函數(shù))的一種。

它被認(rèn)為是一種單向函數(shù),也就是說極其難以由散列函數(shù)輸出的結(jié)果,回推輸入的數(shù)據(jù)是什么。

這種散列函數(shù)的輸入數(shù)據(jù),通常被稱為消息(message),而它的輸出結(jié)果,經(jīng)常被稱為消息摘要(message digest)或摘要(digest)。

特點

  • 對于任何一個給定的消息,它都很容易就能運算出散列數(shù)值
  • 難以由一個已知的散列數(shù)值,去推算出原始的消息
  • 在不更動散列數(shù)值的前提下,修改消息內(nèi)容是不可行的
  • 對于兩個不同的消息,它不能給與相同的散列數(shù)值

MD5

MD5消息摘要算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數(shù)

可以產(chǎn)生出一個128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。

SHA家族

安全散列算法(英語:Secure Hash Algorithm,縮寫為SHA)是一個密碼散列函數(shù)家族,是FIPS所認(rèn)證的安全散列算法。

能計算出一個數(shù)字消息所對應(yīng)到的,長度固定的字符串(又稱消息摘要)的算法。

家族成員

  • SHA家族的五個算法,分別是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512
  • SHA-1在許多安全協(xié)定中廣為使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec
  • SHA-1的安全性如今被密碼學(xué)家嚴(yán)重質(zhì)疑;后四者有時并稱為SHA-2,至今尚未出現(xiàn)對SHA-2有效的攻擊

4.證書機制

  • 引入一個公正的第三方
  • 當(dāng)某一方想要發(fā)布公鑰時,它將自身的身份信息及公鑰提交給這個第三方
  • 第三方對其身份進行證實,如果沒有問題,則將其信息和公鑰打包成為證書(Certificate)
  • 而這個公正的第三方,就是常說的證書頒發(fā)機構(gòu)(Certificate Authority)
  • 當(dāng)我們需要獲取公鑰時,只需要獲得其證書,然后從中提取出公鑰就可以了

解決問題:

通常情況下,獲取外部平臺的公鑰時,除非對方手把手將公鑰交給我們,否則公鑰在網(wǎng)絡(luò)中傳遞時,可能被篡改

5.數(shù)據(jù)安全傳輸條件

數(shù)據(jù)傳輸安全要滿足的要求:

  • 消息的發(fā)送方能夠確定消息只有預(yù)期的接收方可以解密(不保證第三方無法獲得,但保證第三方無法解密)。
  • 消息的接收方可以確定消息是由誰發(fā)送的(消息的接收方可以確定消息的發(fā)送方)。
  • 消息的接收方可以確定消息在途中沒有被篡改過(必須確認(rèn)消息的完整性)。

如何實現(xiàn)?

假設(shè)有兩組四個密鑰

A的公鑰(PUB_A),A的私鑰(PRI_A);B的公鑰(PUB_B),B的私鑰(PRI_B)

公鑰一般用來加密,私鑰用來簽名

A發(fā)送消息

  • 利用加密散列函數(shù)(SHA-2、MD5)對要發(fā)送的消息進行運算,單向生成消息摘要
  • A用自己的私鑰(PRI_A)對消息摘要進行簽名
  • A用B的公鑰(PUB_B)對消息和簽名后的消息摘要進行加密

B接受消息

  • B用自己的私鑰(PRI_B)解密A用B的公鑰(PUB_B)加密的內(nèi)容
  • 解密后的內(nèi)容分為兩部分,一部分是消息,一部分是簽名后的消息摘要
  • B用A的公鑰(PUB_A)解簽A用A自己私鑰(PRI_A)簽的簽名
  • 對解密后的消息,進行加密散列函數(shù)運算,生成新的消息摘要,對比解簽后的消息摘要,判斷是否一致

非對稱加密盡可能的保證了,消息在網(wǎng)絡(luò)傳輸過程中,即使被截取,也無法被解密;

對消息摘要解簽的過程,要用到發(fā)送方的公鑰,這樣也就確定了消息的發(fā)送方;

消息摘要的前后對比,保證了消息的完整性。

非對稱加密是一種很耗時的操作,而對稱加密效率雖然高,但不安全。

我們可以結(jié)合使用。

利用非對稱加密,加密(簽名)消息摘要和對稱加密中的密鑰;利用對稱加密方式,加密消息數(shù)據(jù)

偷了一幅圖:

加密流程.png

這篇博客寫的很詳細(xì),圖偷他的:

加密、簽名和SSL握手機制細(xì)節(jié)https://www.cnblogs.com/f-ck-need-u/p/6089523.html

圖中利用私鑰,加密摘要信息生成數(shù)字簽名,就是 簽名 的過程。

參考

加密和簽名的區(qū)別:https://blog.csdn.net/youshaoduo/article/details/78476578

簽名、加密、證書的基本原理和理解:https://www.cnblogs.com/Caersi/p/6720789.html

加密、簽名和SSL握手機制細(xì)節(jié)https://www.cnblogs.com/f-ck-need-u/p/6089523.html

還有一篇,關(guān)于前后端代碼層面的,可以看一下:

前后端API交互如何保證數(shù)據(jù)安全性https://mp.weixin.qq.com/s?__biz=MzIwMDY0Nzk2Mw==&mid=2650319474&idx=1&sn=58d93748e1fce98a49378f611584dac2&chksm=8ef5fe06b982771076064fdca41117a5aadf782f7a2cecb7ca1b6208fadbe4103ade35bafdf7&scene=21#wechat_redirect

API數(shù)據(jù)加密框架monkey-api-encrypthttps://mp.weixin.qq.com/s?__biz=MzIwMDY0Nzk2Mw==&mid=2650319952&idx=1&sn=7cc80ab7ed6f3e1df48c23b245372ba8&chksm=8ef5f824b9827132f60d34dbe6915fe0528a2c56a8554b8f49ac797f372822d212f4f2a5f642&mpshare=1&scene=1&srcid=01163FLdZcK0cq47tY4ZG0Da&pass_ticket=Sn9gxTq46KCLz60J3Cs6MnKXjxGSsgKRe48Qz7idTxoU200Ohd5V420i5WMYpEWP#rd

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

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