白話電子簽章原理及風險

  

  因為業務需要近來在對接一個線上的電子簽章平台, 簽完的效果就是在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. 私鑰由簽章平台生成並保管,理論上可以代表用戶隨意簽署任何文件。私鑰不是僅由用戶掌握。

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

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

  

  寫到這裡,歡迎討論,指正。 😉