Java怎么實(shí)現(xiàn)密鑰的管理

本篇內(nèi)容介紹了“Java怎么實(shí)現(xiàn)密鑰的管理”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

專注于為中小企業(yè)提供網(wǎng)站制作、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)廣平免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

各種密鑰總結(jié)

之前的文章中,我們分別講到了對稱密碼,公鑰密碼,消息認(rèn)證碼和數(shù)字簽名這四種密碼學(xué)技術(shù)。這里我們再來回顧一下。

  • 對稱密碼

Java怎么實(shí)現(xiàn)密鑰的管理

對稱密碼使用相同的密鑰來進(jìn)行明文的加密和解密。

  • 公鑰密碼

Java怎么實(shí)現(xiàn)密鑰的管理

公鑰密碼使用不同的密鑰來對消息進(jìn)行加密解密。

  • 消息認(rèn)證碼

Java怎么實(shí)現(xiàn)密鑰的管理

消息認(rèn)證碼使用相同的密鑰來對消息進(jìn)行認(rèn)證。

  • 數(shù)字簽名

Java怎么實(shí)現(xiàn)密鑰的管理

數(shù)字簽名使用不同的密鑰來對消息進(jìn)行簽名和驗(yàn)證。

其中對稱密碼和公鑰密碼是直接對明文進(jìn)行加密,從而用來保證消息的機(jī)密性。

而消息認(rèn)證碼和數(shù)字簽名則是用來做消息的認(rèn)證,其本身并不用作對明文的加密,主要來驗(yàn)證消息的合法性。

其他密鑰分類

上面的四種是按照加密方式和使用用途來分的,其實(shí)安裝密鑰的使用次數(shù)可以分為會話密鑰和主密鑰。

會話密鑰是只用在一個(gè)會話中的密鑰,用完之后就廢棄不用了,而主密鑰是固定的密鑰,一直重復(fù)使用的密鑰。

熟悉SSL/TLS協(xié)議的朋友肯定對這個(gè)比較熟悉,在這個(gè)協(xié)議中每次會話都會創(chuàng)建一個(gè)單獨(dú)的密鑰用來加密會話消息,也就是說每次會話都會創(chuàng)建一個(gè)會話密鑰。

另外安裝加密對象是內(nèi)容還是密鑰,我們可以分為加密消息的密鑰(CEK)和加密密鑰的密鑰(KEK)。加密消息的密鑰很好理解,之前的對稱密鑰和公鑰密鑰就是CEK。而加密密鑰的密鑰主要是為了減少密鑰的保存?zhèn)€數(shù)。

密鑰的管理

我們主要從下面幾個(gè)方面來講解密鑰的管理:

  1. 生成密鑰

生成密鑰有兩種方式,使用隨機(jī)數(shù)和使用口令。

隨機(jī)數(shù)一定要有不可被推斷的特性,一般來說我們需要使用偽隨機(jī)送生成器來生成。

java代碼中我們通常會用到Random類,但是這個(gè)類是不能用來生成密鑰的。我們可以使用java.security.SecureRandom來生成密碼安全的隨機(jī)數(shù)。

下面是SecureRandom的兩種常用用法:

        SecureRandom random = new SecureRandom();
        byte bytes[] = new byte[20];
        random.nextBytes(bytes);
 byte seed[] = random.generateSeed(20);

除了隨機(jī)數(shù),另外一種方式就是口令了。

口令是人類可以記住的密碼,為了保證口令生成的密鑰不會被暴力破解,需要對口令加鹽。

簡單點(diǎn)說就是向口令添加一個(gè)隨機(jī)數(shù),然后對添加之后的數(shù)進(jìn)行hash計(jì)算,計(jì)算出來的結(jié)果就可以當(dāng)做密鑰了。

  1. 配送密鑰

為了配送密鑰我們可以采用事先共享密鑰,使用密鑰分配中心,使用公鑰密碼等方式。當(dāng)然還可以采用其他的方式來配送。

  1. 更新密鑰

有的時(shí)候,為了保證密鑰的安全,我們需要不定期的更新密鑰,一般的做法就是使用當(dāng)前的密鑰作為一個(gè)基準(zhǔn)值,通過特定的算法計(jì)算出新的密鑰。

  1. 保存密鑰

學(xué)過區(qū)塊鏈的應(yīng)該都知道有個(gè)紙密鑰的東西,實(shí)際上就是把密鑰寫在紙上進(jìn)行保存。

當(dāng)密鑰太多的話,離線保存密鑰也成了一個(gè)非常困難的工作。這時(shí)候就可以使用到密鑰的密鑰KEK。將這些密鑰加密后保存。

這樣加密后的密鑰我們不用特別考慮其安全性,因?yàn)榧词贡桓`取也無法還原之前的密鑰。我們只需要保存加密這些密鑰的密鑰即可。

  1. 作廢密鑰

作廢密鑰是個(gè)非常比較復(fù)雜的事情,因?yàn)槊荑€就是密鑰,即使你把它刪除,其他的人也可能持有它的備份。所以在設(shè)計(jì)的時(shí)候要充分考慮到密鑰作廢的情況。

我們可以通過CRL列表來保存廢棄的密鑰。

“Java怎么實(shí)現(xiàn)密鑰的管理”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)站標(biāo)題:Java怎么實(shí)現(xiàn)密鑰的管理
當(dāng)前URL:http://muchs.cn/article20/phoico.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、用戶體驗(yàn)網(wǎng)站制作、虛擬主機(jī)、網(wǎng)站營銷、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司