因為業務需要近來在對接一個線上的電子簽章平臺, 簽完的效果就是在PDF上蓋一個紅色的章。內部過程溝通中發現,對這個紅色章背後的證明邏輯,技術原理,能夠了解的比較清楚的人還是很少的。甚至連鍋叔自己,對其中的一些細節也感覺有些模糊不清,經常一時想不起,不能對答如流-_-||。
簽名證書類的技術博文其實很多, 但有個問題,很多隻提技術原理,不提證明邏輯,證明邏輯需要自己去領悟。 於是在這裡再回憶梳理下,會著重從證明邏輯來說,補充下其他博主日常省略的部分-_-|| ,做個分享,也順便備忘。
一、簽字畫押的邏輯
日常生活中大家應該都有簽字,按手印的經驗,對簽字按手印的意義也十分清楚。就是對簽字內容的認可,接受。不接受的合同肯定不能隨便籤,手印也不能隨便按。例如「你欠我幾十個W」這種,肯定是不會隨便籤的。同樣我寫一個「你欠我幾十個W」這樣的欠條如果沒有你的簽字,法官大人是不會認可的,如果我幫你籤一個字,筆跡鑑定多半會被識破,我更沒有你的指紋。這其中其實就隱含了一個證明邏輯問題。
因為:
1. 別人的簽字,指紋與你的不可能相同
2. 簽字,指紋不可能在紙張上被複制,貼上
3. 這張紙上有你的簽字,手印
所以:
你本人肯定是接觸過這張紙,看過了紙上的內容,簽字表示了對內容的認可。
抽象概括下:
1. 筆跡與指紋是唯一的,並且與簽字畫押的人是天然繫結的,不可分離的,即可以代表本人
2. 按的指印,寫的簽名,與紙張上的其他內容,是繫結的(因為同一張紙上,無法拼接,複製)。 即 簽名與內容是繫結的
因此,可能證明筆記指紋所屬人,對紙上上內容的認可。
二、一些安全基礎
1.非對稱加密
一種基於數學原理(不需要懷疑)的演演算法,生成一對祕鑰A,a。特性:
2.數位摘要
一種基於數學原理(不需要懷疑)的演演算法,對任意長度的內容 A 進行計算後,得出一個固定長度的內容B 。特性:
上面兩個東西可以理解為客觀規律,下面兩個是對上面客官規律的利用,用於解決實際問題。
3.數位簽章
作用:與紙質簽名對應, 期望實現紙張上簽字畫押的效果。 即證明生物上的一個人,對電子檔案內容的認可。
實現邏輯:
1. 小明自己偷偷的生成一對兒祕鑰AB,然就他對其他人說 「我生成了一對非對稱祕鑰AB,B除了我本人誰都不會知道,打死我,我也不會說」,即B這個祕鑰只有小明知道,對於不認識小明的人來說,可以認為掌握祕鑰B的人就是小明。
2. 對電子檔案的內容執行 數位摘要演演算法,得到摘要 H, 這個H 與檔案內容即唯一系結。
3. 小明使用自己藏好的祕鑰B,對上面的摘要結果 H,進行加密,得到了一個祕鑰B加密摘要H後的加密摘要 HB. 並把HB附在了檔案後面. 代表小明的祕鑰B,與代表檔案內容的H被關聯到了一起。因為只有小明可以用B對H進行加密。所以HB的產生,代表了小明對檔案內容認可。
4. 其他人拿到這個據說是小明「簽過字」的檔案後,拿出前面小明公開給大家的B的對應祕鑰A,用公鑰A去解密負載檔案後的加密摘要HB, 根據非對稱加密的特性。如果能成功解密,則證明該密文一定是A的配對祕鑰B加密的,而B只有小明知道,所以這個簽名肯定是小明本人籤的。
5.小明簽字的內容即H對應的內容,其他人會再對檔案做一次摘要計算,得到一個當前檔案摘要h, 如果解密後的摘要H 與 當前檔案內容的摘要h一致則證明,小明用私鑰B加密(簽名)的內容就是這份檔案。 如果h 與 H 不同,根據 數位摘要的特性,證明,檔案已經被修改過了。小明籤的檔案內容不是現在的這一個。
4.數位憑證
作用: 筆跡,指紋與其所屬的人的關係是不需要證明的,天然一體,無法分離,不可能被盜被搶。但上面說的數位簽章的邏輯中,對代表小明的私鑰B 與小明並不是無法分割的。在實際生活中,小明簽完了,說這個祕鑰B,不是我所有的,跟我沒關係,這個祕鑰對AB是小芳生成持有的, 你們有問題去找小芳去。或者,對於一些不認識小明的人,他們也無法識別,面前的這個小明是不是就是傳說中的小明。所以需要有一種機制來固定「祕鑰與持有人的關係」。數位憑證與公司公章體系對應,擁有公司公章的,就代表公司行為。同樣,持有證書中公鑰所對應私鑰的人,就是向我申請證書的小明——注意與現實中證書,證件含義不同,是持有私鑰的,而不是擁有證書的。電子證書是數位形式,是可以任意複製分發的,證書中不含私鑰。
實現邏輯:
1: 小明為了廣而告之「上面擁有B祕鑰的就是小明我本人」,這件事,小明把它的公鑰A 和 他的身份證 和錢,戶口本提交給了一個全球說了算很有威望的組織。這個組織檢查了下材料,確認小明確實是 小明,而且驗證了小明確實掌握所提交的公鑰A對應的私鑰B後,於是給他了一份證明。 證明上說,茲證明, 小明 持有 公鑰A 對應的私鑰B——有私鑰B的就是傳說中的小明, 他的身份證戶口本我都檢查過了。
2:在小明申請證書前,這個全球很有威望的組織,自己也生成一對祕鑰對,X/Y. 其中的Y 打死也不跟其他人說,其中的公鑰X,通過各種非常可靠的渠道,通知到各國各省各轄區派出所。已經讓世界上所有人相信,擁有公鑰X對應的私鑰Y的人,就是這個全球權威組織。
3:權威組織在給小明生成的證書上,也有他的私鑰X結合證書內容摘要H,生成了HX的數位簽章。
4:人民群眾看到這個證書時,可以像驗證小明簽名一樣驗證權威機構的簽名。如果驗證沒問題,那證明,小明擁有A公鑰對應的B私鑰這件事情,是有一個非常可信的人給他背書的,不需要懷疑——即固定了小明與私鑰B的關聯。
* 證書的驗證實際情況會涉及多層CA,即證書鏈。會附有多個證書,依次證明,最頂層的證書是自簽名。自己簽發給自己。其公鑰是通過可靠途徑通知給所有人的。證書鏈的中間證書需要祕鑰用途包含 Certificate Signing(證書籤發)——權威機構授權的可以簽發證書的機構的數位憑證。需要驗證證書的場景,如瀏覽器,閱讀器,會將頂層的根證書預先放置於程式內。
三、PDF電子簽章原理(雲籤)
pdf 的電子簽章,顯然那個紅色的圖形章,只是一個形式,是不具有任何效力的,因為誰都可以做一個圖形加上去。背後顯然也是依賴於數位簽章和證書技術的。但目前的電子簽章平臺,已經封裝的非常高階了。 使用過程中基本不涉及數位簽章底層技術,可以對數位簽章,數位憑證完全無感,但方便的同時,也帶來了隱患,後面會討論。
PDF雲籤的流程原理:
1. 百度電子簽章,選個電子簽章平臺進去註冊賬號,企業實名認證。
—— 平臺用你提供的資訊,幫你自動去CA 申請了對應的數位憑證,私鑰儲存在了簽章平臺。
2. 發起一個簽署流程,提供一個待簽署 pdf檔案 以及 涉及到的簽署方的聯絡人。
—— 上傳的pdf 檔案會通過簡訊等方式,引導需要籤檔案的各方到平臺連結,進行簽署操作。相關的簽署方,都要有相應的數位憑證(麼有的,在流程中引導認證)。平臺使用各簽署方私鑰對檔案內容摘要進行簽名。同時將數位憑證和加密摘要附在PDF檔案的簽名區域中。pdf 檔案格式是支援數位簽章的, 可以保證符合規範的pdf 閱讀器,都能正常的顯示,校驗簽署資訊。同時,檔案上也會加上一個視覺形式上的圖章圖片。
3. 取回簽署檔案,pdf瀏覽器開啟,驗證簽名。
—— pdf 檔案閱讀器開啟簽名檔案後對簽名及證書進行驗證。通過證書證明,簽署方的真實身份及確實持有對應公鑰。用簽署方公鑰驗證,簽署方私鑰正確及摘要未修改。
四、電子簽章效力風險
從上面的PDF 雲籤流程中可以看出,整個流程中基本沒有體現數位簽章的摘要及加密簽署過程,都是平臺封裝完成的。鍋叔認為對應的也引入了風險。
1. 數位憑證並非由本人直接申請,如果在使用者協定中沒有很好的約定及取證,在證明使用者與證書關聯性方面可能存在瑕疵,使用者可以否認從未申請過數位憑證。
2. 私鑰由簽章平臺生成並保管,理論上可以代表使用者隨意簽署任何檔案。私鑰不是僅由使用者掌握。
《中華人民共和國電子簽名法》
寫到這裡,歡迎討論,指正。 ;-)
本文來自部落格園,作者:鍋叔
轉載請註明原文連結:https://www.cnblogs.com/uncleguo/p/16542731.html