了解數字簽名

2021-09-30 18:40:02 字數 1576 閱讀 5858

(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值。數字信封,被公鑰加密後的對稱密碼被稱為數字信封,用於對稱金鑰的交換。數字證書,用來證明資料傳送者的身份的。為什麼能證明...