白話電子簽章原理及風險

2022-08-02 18:02:06

  

  因為業務需要近來在對接一個線上的電子簽章平臺, 簽完的效果就是在PDF上蓋一個紅色的章。內部過程溝通中發現,對這個紅色章背後的證明邏輯,技術原理,能夠了解的比較清楚的人還是很少的。甚至連鍋叔自己,對其中的一些細節也感覺有些模糊不清,經常一時想不起,不能對答如流-_-||。

  簽名證書類的技術博文其實很多, 但有個問題,很多隻提技術原理,不提證明邏輯,證明邏輯需要自己去領悟。  於是在這裡再回憶梳理下,會著重從證明邏輯來說,補充下其他博主日常省略的部分-_-|| ,做個分享,也順便備忘。

 

  一、簽字畫押的邏輯

   日常生活中大家應該都有簽字,按手印的經驗,對簽字按手印的意義也十分清楚。就是對簽字內容的認可,接受。不接受的合同肯定不能隨便籤,手印也不能隨便按。例如「你欠我幾十個W」這種,肯定是不會隨便籤的。同樣我寫一個「你欠我幾十個W」這樣的欠條如果沒有你的簽字,法官大人是不會認可的,如果我幫你籤一個字,筆跡鑑定多半會被識破,我更沒有你的指紋。這其中其實就隱含了一個證明邏輯問題。

  因為:

  1. 別人的簽字,指紋與你的不可能相同

    2. 簽字,指紋不可能在紙張上被複制,貼上

  3. 這張紙上有你的簽字,手印

 

  所以:

  你本人肯定是接觸過這張紙,看過了紙上的內容,簽字表示了對內容的認可。

 

  抽象概括下:

   1. 筆跡與指紋是唯一的,並且與簽字畫押的人是天然繫結的,不可分離的,即可以代表本人

   2. 按的指印,寫的簽名,與紙張上的其他內容,是繫結的(因為同一張紙上,無法拼接,複製)。 即 簽名與內容是繫結的

   因此,可能證明筆記指紋所屬人,對紙上上內容的認可。

   

  二、一些安全基礎

 

  1.非對稱加密

  一種基於數學原理(不需要懷疑)的演演算法,生成一對祕鑰A,a。特性:

  •   A與a 不相同
  •       由A加密的內容,能且只能被a成功解密,反之亦然。  
  •     由A不能得出a,反之亦然。

  

  2.數位摘要

  一種基於數學原理(不需要懷疑)的演演算法,對任意長度的內容 A 進行計算後,得出一個固定長度的內容B 。特性:

  •   當A內容發生變化後。用該演演算法重新計算得出的b,與B一定不同。
  •   由B 不能計算出A

 

   上面兩個東西可以理解為客觀規律,下面兩個是對上面客官規律的利用,用於解決實際問題。

  

      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. 私鑰由簽章平臺生成並保管,理論上可以代表使用者隨意簽署任何檔案。私鑰不是僅由使用者掌握。

  《中華人民共和國電子簽名法》    

第十三條電子簽名同時符合下列條件的,視為可靠的電子簽名:
(一)電子簽名製作資料用於電子簽名時,屬於電子簽名人專有;
(二)簽署時電子簽名製作資料僅由電子簽名人控制;
(三)簽署後對電子簽名的任何改動能夠被發現;
(四)簽署後對資料電文內容和形式的任何改動能夠被發現。

  

  寫到這裡,歡迎討論,指正。 ;-)