免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

密碼學(xué)奇妙之旅、02 混合加密系統(tǒng)、AES、RSA標(biāo)準(zhǔn)、Golang代碼

CTR 計(jì)數(shù)器模式

密碼學(xué)奇妙之旅、02 混合加密系統(tǒng)、AES、RSA標(biāo)準(zhǔn)、Golang代碼

文章插圖
計(jì)數(shù)器模式CTR是分組密碼模式中的一種 。通過(guò)將逐次累加的計(jì)數(shù)器進(jìn)行加密來(lái)生成密鑰流的流密碼 。每次加密時(shí)會(huì)生成一個(gè)不同的值來(lái)作為計(jì)數(shù)器的初始值 。
  • 可以事先進(jìn)行加密、解密的準(zhǔn)備 。
  • 加密、解密使用相同結(jié)構(gòu) 。
  • 對(duì)包含某些錯(cuò)誤比特的密文進(jìn)行解密時(shí),只有明文中響應(yīng)的比特會(huì)出錯(cuò) 。
  • 加密和解密均支持并行運(yùn)算 ??梢砸匀我忭樞?qū)Ψ纸M進(jìn)行加密和解密 。
在CTR模式基礎(chǔ)上添加認(rèn)證功能的模式稱為GCM模式 。生成密文的同時(shí)生成用于認(rèn)證的信息 。用于識(shí)別主動(dòng)攻擊者發(fā)送的偽造的密文 。
混合密碼系統(tǒng)混合密碼系統(tǒng)能夠解決對(duì)稱密碼密鑰分配的問(wèn)題和公鑰密碼速度慢的問(wèn)題 。使用快速的對(duì)稱密碼來(lái)對(duì)消息進(jìn)行加密,再使用公鑰密碼對(duì)對(duì)稱密碼的密鑰進(jìn)行加密,由于對(duì)稱密碼的密鑰一般比消息本身要短,因此可以忽略公鑰密碼速度慢的問(wèn)題 。
會(huì)話密鑰是對(duì)稱密碼的密鑰,同時(shí)也是公鑰密碼的明文 。
密碼學(xué)奇妙之旅、02 混合加密系統(tǒng)、AES、RSA標(biāo)準(zhǔn)、Golang代碼

文章插圖
一個(gè)問(wèn)題
由于會(huì)話密鑰已經(jīng)通過(guò)公鑰密碼進(jìn)行加密,因此會(huì)話密鑰的長(zhǎng)度較短也沒(méi)有問(wèn)題 。
錯(cuò)!當(dāng)會(huì)話密鑰長(zhǎng)度較短,當(dāng)攻擊者已知加密方式、分組密碼模式的情況下可以通過(guò) brute-force 暴力破解組合消息的后半段部分 。增加風(fēng)險(xiǎn) 。
RSA-OAEP 最優(yōu)非對(duì)稱加密填充RSA-OAEP 是RSA的改良算法,在加密時(shí)會(huì)在明文前面填充一些認(rèn)證信息,包括明文散列值以及一定數(shù)量的0 。
RSA-OEAP 最大的優(yōu)點(diǎn)是認(rèn)證信息 。好處是可以防御選擇密文攻擊(攻擊者將任意密文發(fā)送給服務(wù)器,服務(wù)器發(fā)送解密提示),服務(wù)器可以固定返回錯(cuò)誤消息decryption error,而不是將具體的錯(cuò)誤內(nèi)容告知攻擊者 。
ciphertext, err := rsa.EncryptOAEP(sha256.New(), rand.Reader, &key, []byte(secretMessage), label)sha256是我們選擇的單向散列函數(shù) 。至于為什么需要rand.Reader,這是OAEP算法需要的,通過(guò)隨機(jī)數(shù)使得每次生成的密文呈現(xiàn)不同的排列方式,進(jìn)一步提高安全性 。key 是接收人的公鑰 。[]byte(secretMessage)是加密信息的字節(jié)表現(xiàn)形式 。label用于給公鑰添加標(biāo)簽,不會(huì)被加密 。
【密碼學(xué)奇妙之旅、02 混合加密系統(tǒng)、AES、RSA標(biāo)準(zhǔn)、Golang代碼】如果公鑰標(biāo)簽不同,假設(shè)我們修改下文的RSA_OAEP_Encrypt 、RSA_OAEP_Decrypt 函數(shù)中的 label := []byte("標(biāo)簽") 。那么當(dāng)兩個(gè)函數(shù)各自label不同時(shí),會(huì)發(fā)生如下錯(cuò)誤 。根據(jù)官方文檔,如果給定的公鑰用于加密兩種類型的消息,則可以使用不同的標(biāo)簽值來(lái)確保攻擊者不能將用于一種目的的密文用于另一種目的 。如果不需要,它可以是空的 。
crypto/rsa: decryption errorpanic: crypto/rsa: decryption errorgoroutine 1 [running]:main.CheckError({0x10092e0, 0xc0000603d0})C:/Users/小能喵喵喵/Desktop/Go/Cryptography/對(duì)稱加密/HybridCryptoSystem/rsa_crypto.go:14 +0x9dmain.RSA_OAEP_Decrypt(0xc00031a4e0?, {0xc00031a4e0?, 0xfe8637?})C:/Users/小能喵喵喵/Desktop/Go/Cryptography/對(duì)稱加密/HybridCryptoSystem/rsa_crypto.go:37 +0x134main.hybridDecrypt(0x1009360?, {0xc000316fc0?, 0xfe2c44?})C:/Users/小能喵喵喵/Desktop/Go/Cryptography/對(duì)稱加密/HybridCryptoSystem/main.go:56 +0xbdmain.main()C:/Users/小能喵喵喵/Desktop/Go/Cryptography/對(duì)稱加密/HybridCryptoSystem/main.go:35 +0x2dcexit status 2任何擁有密文簽名、密文消息和公鑰的人都可以使用 RSA 驗(yàn)證來(lái)確保消息確實(shí)來(lái)自頒發(fā)公鑰的一方 。如果數(shù)據(jù)或簽名不匹配,則驗(yàn)證過(guò)程失敗 。只有擁有私鑰的一方才能簽署消息,但擁有公鑰的任何人都可以驗(yàn)證它 。

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀