(1)什麼是數字簽名?
a發訊息給b, a將訊息用雜湊函式生成乙個雜湊值確保資訊不被修改,然後a用自己的私鑰對雜湊值進行加密,a將加密後的雜湊值和訊息一起傳送給b
b接收到訊息後,b也用雜湊函式生成乙個雜湊值,然後用a的公鑰將a傳送來的加密的雜湊值進行解密,兩個雜湊值進行對比,看訊息是否被修改過
如下圖:
(2)為什麼需要數字簽名? 如下圖
a喜歡b,於是a乙個訊息"我愛你" 給b,
但c也喜歡b,c通過某種手段攔截到了a傳送給b的訊息,於是將訊息改為"我不愛你".
結果a還傻傻的以為已經向b進行了表白.....
(3)數字簽名存在的問題?
不能確保人與加密對的對等.如下圖:
a將訊息的雜湊值加密和訊息體傳送給b,結果被c攔截到,c事先將b中儲存的a的公鑰替換成了自己的公鑰,
c修改訊息並用自己的私鑰加密雜湊值傳送給b,b收到訊息後用被c替換的公鑰進行解密,結果雜湊值無誤
(4)怎麼解決數字簽名存在的人與訊息對不對等的問題?
pki(公鑰基礎設施),通過頒發數字證書的方式將特定金鑰對和特定人進行繫結.
如下圖是a的數字證書:(類似於身份證)
a在發訊息前將自己的數字證書發給了b, b用權威機構的公開金鑰對該證書內容進行驗證,發現就是a的證書,然後再用證書裡a的公鑰對a發來的訊息中的雜湊值進行解密
檢視訊息的完整性,確保訊息沒被修改
(5)用openssl實現數字簽名過程
1) 生成rsa私鑰
openssl genrsa -out private.pem 1024
2)從私鑰成提取公鑰
openssl rsa -in private.pem -pubout -out public.pem
3)用私鑰對檔案摘要進行簽名(採用sha1進行摘要計算)
openssl dgst -sha1 -sign private.pem -out sing.txt te.c
4)將sing.txt public.pem te.c傳送給對方
(6)用openssl驗證數字簽名
1)有對方發來的sing.txt(簽名的摘要) public.pem(對方公鑰) te.c(原檔案)
2)執行openssl命令對於簽名進行驗證
openssl dgst -sha1 -verify public.pem -signature sing.txt te.c
了解數字證書 數字簽名與常見的加密演算法
一 對稱加密 對稱加密指加密和解密使用相同金鑰的加密演算法,也稱為單金鑰加密。他的特點是演算法公開 計算量少 加密速度快,對於同樣大小的傳輸物件,對稱加密效率通常為非對稱加密的千倍左右,因此通常被廣泛應用於很多加密協議的核心工作 如https在真正資料通訊時就使用的對稱加密演算法 對稱加密演算法的缺...
數字簽名簽名概述
數字簽名的技術流程描述 1 傳送者使用摘要演算法對傳送資訊產生資訊摘要 2 傳送者使用自己的私鑰對資訊摘要進行簽名 3 傳送者將資訊本身和已簽名的摘要一起傳送出去 4 接收者使用相同的摘要演算法對資訊本身計算資訊摘要 5 接收者使用傳送者的公鑰對簽名的摘要就行驗籤,獲得資訊傳送者的資訊摘要 6 接收...
數字信封 數字簽名
2019 08 06 19 51 51 數字簽名是用來表明資料傳送者身份的,有了簽名就說明這個資料是傳送都發出來的。為什麼?因為可以用你的公鑰開啟你的簽名資訊,獲取明文的hash值。數字信封,被公鑰加密後的對稱密碼被稱為數字信封,用於對稱金鑰的交換。數字證書,用來證明資料傳送者的身份的。為什麼能證明...