回覆列表
  • 1 # 娛樂超級社

    現在高科技時代,講究無紙化辦公。好多檔案資訊實現電子化,在這種趨勢下,以前的手寫簽名,沒法進行,數字簽名應運而生。所謂“數字簽名”就是透過某種密碼運算生成一系列符號及程式碼組成電子密碼進行簽名,來代替書寫簽名或印章,對於這種電子式的簽名還可進行技術驗證,其驗證的準確度是一般手工簽名和圖章的驗證而無法比擬的。“數字簽名”是目前電子商務、電子政務中應用最普遍、技術最成熟的、可操作性最強的一種電子簽名方法。它採用了規範化的程式和科學化的方法,用於鑑定簽名人的身份以及對一項電子資料內容的認可。它還能驗證出檔案的原文在傳輸過程中有無變動,確保傳輸電子檔案的完整性、真實性和不可抵賴性。

  • 2 # 李永樂老師

    在生活中,我們經常要用到手機支付。手機支付是如何保證安全的呢?這就涉及到數字簽名了。為了解釋數字簽名,我們首先來研究一個問題:生日。

    也許有同學會想:這個機率太低了。一年有365天,如果群裡有50個人,最多隻能填滿全年的1/7, 兩個人生日在同一天的機率太低了。

    事實真的如此嗎?

    這是一個著名的問題,稱為生日碰撞。它的結果令許多人驚奇:只要班裡有23個人,有生日相同的機率就超過50%。如果有50個人,有生日相同的機率就超過97%。

    我們來解釋一下原因。我們令P表示所有人的生日都不在同一天的機率,那麼1-P就是至少有兩人生日在同一天的機率。為了方便起見,我們暫時不算閏年的2月29日。

    如果只有一個人:無論這個人生日在哪一天,都不會有人與他生日相同。或者說:他的生日有365種可能,生日不相同的可能也是365種,所以生日不同的機率為

    如果有兩個人,那麼第一個人的生日在365天中的任意一天,第二個人生日不能與第一個人相同,只有364種選擇,第二個人不與第一個人撞車的機率為364/365。因此兩人生日不同的機率為

    如果有3個人,那麼第一個人的生日在365天中的任意一天,第二個人的生日不能與第一個人相同,有364種選擇,第二個人不與第一個人撞車的機率364/365。第三個人的生日不能與前兩個人相同,只有363種選擇,不與前兩個人撞車的機率為363/365。這樣, 三個人生日都不相同的機率為

    ……

    按照這種方法,我們可以計算出如果有n個人(n≤365)時,所有人生日都不同的機率為:

    我們可以列一張表,並把“存在生日相同的人”的機率1-P同時列出

    我們會發現:隨著人數的增加,生日彼此不同的機率急速下降,有相同生日的機率逐漸增加。我們也可以畫出一張圖表示這個趨勢:

    我們會發現:只要人數超過23個,有相同生日的人機率就超過了50%。如果人數超過50個,發生生日碰撞的機率就非常接近於1了。是不是與直覺不太相同?

    雜湊函式

    那麼,這個問題在生活中有什麼應用呢?這就涉及到與我們日常生活息息相關的問題了:資訊保安。

    比如:當我們用手機支付購買一件商品的時候,手機會向伺服器發出請求。此時面臨兩個問題:

    第一,支付系統中樞怎麼確認這個請求是賬號使用者發出的,而不是被人冒充的?

    第二,支付系統如何保證在同意了這筆請求後,使用者不會抵賴?

    在這個問題上,數字簽名就開始發揮作用了。數字簽名可以配合加密系統,完成上述工作。

    數字簽名比較通用的演算法是雜湊函式。所謂雜湊函式,是指將一串程式碼對映到一個比較短的程式碼上。它有兩個特點:第一是位數固定,即無論原始碼是多少位,雜湊值的位數都一樣多。第二是單向性,即從原始碼推匯出雜湊值很容易,但是雜湊值反推出原始碼幾乎是不可能的。

    這非常像一個人和他的生日。無論這個人名字多長,生日的位數都是固定的。而且,已知一個人,求出他的生日很容易;給出一個生日,問這個人是誰幾乎是不肯能的。

    數字簽名

    利用這個原理,就可以進行數字簽名了。

    首先,進行通訊的雙方A和B有一對公鑰、私鑰對,私鑰在傳送方A手中,可以對資訊進行加密。公鑰是公開的,任何人都可以獲得,用於解密。首先發送方計算資訊的雜湊函式,然後用私鑰進行加密。然後,資訊傳送方A將加密後的資訊和數字簽名傳送給接收方B,接收方B就可以對資訊和簽名進行解密,並驗證這個解密後的數字簽名和資訊是否符合雜湊函式。如果符合,就說明資訊來源於傳送方,並且沒有被篡改。

    說通俗一點:比如我們要派一個人張三到某地執行任務,會把張三的生日寫在一個該有封印的信封裡,隨著張三一起派到目的地。接收方看到張三後會查驗張三的生日,同時將封印的信封開啟,檢查張三的生日是否與信封裡寫的生日相同。如果相同,就接收張三。

    如果中途張三被敵人抓住,派了李四冒充張三。敵人沒有辦法把李四的生日裝進信封裡,因為信封的封印只有我們傳送方才有。所以只能讓李四帶著張三原來的信封到達目的地。接收方查驗李四的生日,再開啟信封對比,發現李四的生日與信封裡的不同,從而拒絕李四。

    這裡,張三就是資訊,生日就是雜湊值,封印就是私鑰。

    雜湊碰撞

    看到這,有同學會問:為什麼不找一個與張三生日相同的人來冒充張三呢?是的,這就是數字簽名的風險:如果兩段資訊的雜湊值是相同的,那麼接收者就會誤以為資訊是無誤的,從而接收篡改後的資訊,這個現象叫做雜湊碰撞。

    雜湊碰撞就像生日碰撞一樣,如果雜湊值只有365種可能,那麼只要有23段資訊就有50%以上的機率出現相同的雜湊值。

    不過幸好,雜湊值是單向演算法,也就是說發生生日碰撞只能憑運氣,我們無法知道到底哪個資訊會和我們要傳送的資訊發生碰撞,就像我們要挑選一個與張三生日相同的人,而且這個人還能夠執行特殊的人物,是很困難的。只要雜湊值有足夠多的位數,還是可以保證資訊的安全。

    在我們每一次掃碼支付的過程中,計算機系統都幫我們完成了加密、簽名等一系列過程。計算機科學本質上就是一門用電路實現的數學過程,所有的計算機科學家都是數學家,由於這些科學家的努力,才能讓我們的生活越來越方便。

  • 中秋節和大豐收的關聯?
  • 有哪些可使用的預訓練中文詞向量?