国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Linux下數(shù)字簽名技術(shù)的實(shí)現(xiàn)

2019-06-17 05:10:18余立強(qiáng)
教育教學(xué)論壇 2019年19期
關(guān)鍵詞:私鑰公鑰

余立強(qiáng)

摘要:運(yùn)用非對(duì)稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)描繪出數(shù)字簽名技術(shù)的工作原理圖,使用Linux系統(tǒng)中的shell命令實(shí)現(xiàn)數(shù)字簽名技術(shù)中的創(chuàng)建私鑰、導(dǎo)出公鑰、私鑰簽名、公鑰校驗(yàn)等實(shí)踐操作,很好地展現(xiàn)了數(shù)字簽名技術(shù)實(shí)踐應(yīng)用的可操作性。

關(guān)鍵詞:Linux;數(shù)字簽名技術(shù);私鑰;公鑰

中圖分類號(hào):G642.0 ? ? 文獻(xiàn)標(biāo)志碼:A ? ? 文章編號(hào):1674-9324(2019)19-0103-02

數(shù)字簽名是一種電子簽章,類似寫在紙上的普通的物理簽名,在電子商務(wù)、電子政務(wù)等各類項(xiàng)目中得到廣泛的應(yīng)用。

一、基本概念

數(shù)字簽名技術(shù)由非對(duì)稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)構(gòu)成,用于文件完整性驗(yàn)證,具有不可抵賴性。數(shù)字簽名只有信息的發(fā)送者才能產(chǎn)生、別人無法偽造的一串?dāng)?shù)字,這些數(shù)字同時(shí)也是對(duì)信息的發(fā)送者發(fā)送信息真實(shí)性的一個(gè)有效證明。

數(shù)字簽名技術(shù)工作原理如圖1所示。

在圖1中,發(fā)送方利用RSA加密算法創(chuàng)建私鑰,對(duì)原文用Hash算法得到信息摘要,輸出固定長度的哈希值。對(duì)信息摘要用私鑰和RAS加密算法進(jìn)行加密得到數(shù)字簽名。發(fā)送方利用私鑰導(dǎo)出公鑰,然后將數(shù)字簽名、原文和數(shù)字簽名三個(gè)文件發(fā)送給接收方。

接收方首先用與發(fā)送方一樣的哈希函數(shù)對(duì)接收到的原文計(jì)算出信息摘要,再用接收到的公鑰對(duì)數(shù)字簽名文件進(jìn)行解密,也得到一個(gè)信息摘要,然后判斷這兩個(gè)摘要是否相同,若相同,則接收方確認(rèn)該數(shù)字簽名是發(fā)送方的,原文也是無篡改的。反之,則數(shù)字簽名不可信,或原文有篡改。

二、Linux系統(tǒng)環(huán)境

(一)操作環(huán)境

在宿主機(jī)上安裝VMware虛擬機(jī)軟件,準(zhǔn)備1臺(tái)或2臺(tái)安裝CentOS 6.5版本以上的Linux系統(tǒng)的虛擬機(jī)。

(二)數(shù)字簽名操作

在Linux系統(tǒng)opensll命令可實(shí)現(xiàn)4種非對(duì)稱加密算法,包括DH、RSA、DSA和橢圓曲線算法(EC)。RSA算法既可以用于密鑰交換,也可以用于數(shù)字簽名。

OpenSSL實(shí)現(xiàn)了5種信息摘要算法,分別是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。這里主要用SHA信息摘要算法。

三、數(shù)字簽名操作過程

進(jìn)入Linux系統(tǒng)進(jìn)行操作:

(一)編輯原文件file.txt

創(chuàng)建原文件file.txt,可以是任意類型的文件,這里僅作演示,輸入命令:

#echo “This is a digital signature example.”>file.txt

(二)創(chuàng)建私鑰key.pri

1.創(chuàng)建私鑰。

#openssl genrsa –out key.pri –f4 2048

RSA加密算法產(chǎn)生的2048位私鑰,并使用F4作為公鑰的E參數(shù),將私鑰保存在文件key.pri中。

2.查看私鑰。

#openssl rsa –inform PEM –in key.pri –text

以PEM格式顯示私鑰的明文輸出密鑰參數(shù)。

(三)導(dǎo)出公鑰key.pub

1.導(dǎo)出公鑰。

#openssl rsa –inform PEM –outform PEM –in key.pri –out key.pub –pubout

用rsa的私鑰文件key.pri導(dǎo)出PEM格式的公鑰,保存在文件key.pub中。

2.查看公鑰。

#cat key.pub

或查看公鑰命令:

#openssl rsa –inform PEM –in key.pub –pubin –text

以PEM格式顯示公鑰的明文輸出密鑰參數(shù),得到與上面查看私鑰類似的顯示。

(四)私鑰簽名

1.方法1。參見圖1,進(jìn)行私鑰簽名操作:

(1)計(jì)算原文件的信息摘要。

#openssl dgst –sha256 –binary –out file1.sha256 file.txt

將原文件的信息摘要(hash值)保存在文件file1.sha256中。

(2)用私鑰key.pri簽名。

#openssl rsautl -out file1.sig –sign –inkey key.pri –in file1.sha256

用私鑰對(duì)信息摘要進(jìn)行非對(duì)稱加密算法加密簽名,產(chǎn)生簽名文件file1.sig。

2.方法2。對(duì)上面方法1的合成操作命令:

#openssl dgst –sha256 –out file2.sig –sign key.pri –keyform PEM file.txt

產(chǎn)生簽名文件file2.sig,并查看簽名文件file2.sig:

#od –v –An –t x1 file2.sig

注意,file1.sig與file2.sig的內(nèi)容是不相同的。

(五)公鑰校驗(yàn)

發(fā)送者將原文件file.txt、公鑰文件key.pub和簽名文件file.sig傳輸給接收者,接收者模擬驗(yàn)證操作。

與私鑰簽名相對(duì)應(yīng),接收者的公鑰校驗(yàn)的二種方法如下。

1.方法1。對(duì)照?qǐng)D1,接收方校驗(yàn)信息摘要的操作:

(1)由簽名文件計(jì)算信息摘要。

#openssl rsautl –out file2.rec –inkey key.pub –in file1.sig –pubin –verify

用公鑰解密收到的簽名文件file1.sig的hash值,即原文件file.txt的信息摘要(hash值),將結(jié)果保存到二進(jìn)制文件file2.rec中。

(2)查看file2.rec文件中的信息摘要。

#od –v –An –t x1 file2.rec

(3)計(jì)算接收到的原文件file.txt的信息摘要。

#openssl dgst –sha256 –binary –out file2.sha256 file.txt

在接收方計(jì)算收到的原文件file.txt的hash值,即信息摘要保存到文件file2.sha256中。

(4)查看file2.sha256的內(nèi)容。

#od –v –An –t x1 file2.sha256

比較file2.sha256文件與file2.rec文件中32個(gè)字節(jié)的內(nèi)容是完全一致的,即信息摘要是相同的,可以確認(rèn)接收到的原文件file.txt是無篡改、可信的。反之,則說明接收到的文件有篡改或不可信的。

2.方法2。對(duì)應(yīng)私鑰簽名方法2,用下面的命令進(jìn)行公鑰校驗(yàn):

#openssl dgst –sha256 –keyform PEM –verify key.pub –signature file2.sig file.txt

若顯示:Verified OK

則表示用公鑰校驗(yàn)簽名文件是正常的,即接收到的原文件是無篡改和可信的。

若顯示:Verification Failure

則表示接收到的文件有篡改或不可信的。

四、小結(jié)

在shell狀態(tài)下用openssl命令實(shí)現(xiàn)數(shù)字簽名技術(shù)的操作有助于對(duì)其工作原理的理解,方法1對(duì)應(yīng)圖1所示的工作原理,方法2是圖1的合成命令操作,在實(shí)際操作中更快、更有效。

參考文獻(xiàn):

[1]魯立,計(jì)算機(jī)網(wǎng)絡(luò)安全[M].機(jī)械工業(yè)出版社,2018,(01).

[2]百度.數(shù)字簽名[EB/OL].https://baike.baidu.com/item/數(shù)字簽名/212550?fr=aladdin

[3]百度.linux平臺(tái)數(shù)字簽名實(shí)現(xiàn)無示例[EB/OL].https://jingyan.baidu.com/article/6181c3e06a920f152ff1536e.html.

猜你喜歡
私鑰公鑰
比特幣的安全性到底有多高
基于改進(jìn)ECC 算法的網(wǎng)絡(luò)信息私鑰變換優(yōu)化方法
一種基于混沌的公鑰加密方案
一種基于虛擬私鑰的OpenSSL與CSP交互方案
HES:一種更小公鑰的同態(tài)加密算法
SM2橢圓曲線公鑰密碼算法綜述
基于格的公鑰加密與證書基加密
LeeB私鑰分發(fā)協(xié)議的改進(jìn)方案
始兴县| 溆浦县| 崇仁县| 稻城县| 昌黎县| 荔浦县| 景德镇市| 方山县| 景洪市| 济阳县| 香格里拉县| 威远县| 葵青区| 措美县| 邢台市| 郓城县| 青河县| 合肥市| 双鸭山市| 贡山| 开封市| 福鼎市| 西华县| 红河县| 商水县| 孙吴县| 岱山县| 新竹市| 高青县| 新平| 泌阳县| 繁峙县| 普定县| 余江县| 竹山县| 桑日县| 城固县| 东兴市| 田东县| 察隅县| 沈丘县|