安全之道 加密與數字簽名

2021-03-31 08:56:30 字數 3385 閱讀 6019

鍾峰·2023年10月

[版本:1.0.0]

本指南介紹為基於 microsoft

® .*** 的多層應用程式設計和編寫由應用程式管理的安全和數字簽名的指導原則,主要討論常見的安全任務和方案,並提供相應的資訊幫助您選擇最佳方法和技術。本指南適用於體系結構設計人員和開發人員。

本指南假定讀者已經了解 xml web service 以及 web service enhancement 等主題的基本知識。有關 xml web service 安全的相關資料可以參考 msdn 的

,有關 web service enhancement 的基本情況請參閱 msdn library 中的

安全始終是可信賴的企業應用的基石。

在多層應用程式的設計中通常需要跨機器或網路來訪問中間層或資料層的服務,無論這些網路是內部還是外部,我們始終都假設其是不安全(不可信賴)的通道,因為黑客或者系統漏洞總是出其不意的出現在我們不希望的地方,所以我們必須為需要經過這些通道的資料進行加密和簽名。最後,我將給出乙個基於.*** xml web service 的安全方案。

加密將防止資料被檢視或修改,並在原本不安全的通道上提供安全的通訊通道。加密的功能是將明文通過某種演算法轉換成一段無法識別的密文,在古老的加密方法中,加密的方法(演算法)和加密的金鑰都必須保密,否則就會被攻擊者破譯出密文。例如:古人將一段羊皮條纏繞在一根圓木上,然後在其上寫下要傳送書信的內容,展開羊皮條後這些書信內容將變成一堆雜亂的**,那麼這種將羊皮條纏繞在圓木上的做法可視為加密演算法,而圓木棍的粗細、皮條的纏繞方向就是金鑰。在現代加密體系中,演算法的私密性已經不需要了,資訊的安全依賴於金鑰的保密性。在現代加密體系中分兩種加密方法:私鑰加密法(又稱對稱加密);共鑰加密法(又稱非對稱加密)。

私鑰加密演算法使用單個私鑰來加密和解密資料。由於具有金鑰的任意一方都可以使用該金鑰解密資料,因此必須保護金鑰不被未經授權的**得到。私鑰加密又稱為對稱加密,因為同一金鑰既用於加密又用於解密。

可以危及用此型別密碼加密的資料的乙個方法是,對每個可能的金鑰執行窮舉搜尋。根據用於執行加密的金鑰大小,即使使用最快的計算機執行這種搜尋,也極其耗時,因此難以實施。使用較大的金鑰大小將使解密更加困難。雖然從理論上說加密不會使對手無法檢索加密的資料,但它確實極大增加了這樣做的成本。如果執行徹底搜尋來檢索只在幾天內有意義的資料需要花費三個月的時間,那麼窮舉搜尋的方法是不實用的。

私鑰加密並不能實現資料完整性,即防止資料被更改;也無法完成對身份的驗證,即確保資料發自特定的一方。

.*** framework 提供以下實現私鑰加密演算法的類:

公鑰加密使用乙個必須對未經授權的使用者保密的私鑰和乙個可以對任何人公開的公鑰。公鑰和私鑰都在數學上相關聯;用公鑰加密的資料只能用私鑰解密,而用私鑰簽名的資料只能用公鑰驗證。公鑰可以被任何人使用;該金鑰用於加密要傳送到私鑰持有者的資料。兩個金鑰對於通訊會話都是唯一的。公鑰加密演算法也稱為不對稱演算法,原因是需要用乙個金鑰加密資料而需要用另乙個金鑰來解密資料。

通常將相關的共鑰和私鑰稱為乙個金鑰對,在 .*** 中可以通過相關的共鑰加密類來生成這樣的金鑰對。

.*** framework 提供以下實現公鑰加密演算法的類:

雜湊演算法將任意長度的二進位制值對映為固定長度的較小二進位制值,這個小的二進位制值稱為雜湊值。雜湊值是一段資料唯一且極其緊湊的數值表示形式。如果雜湊一段明文而且哪怕只更改該段落的乙個字母,隨後的雜湊都將產生不同的值。要找到雜湊為同乙個值的兩個不同的輸入,在計算上是不可能的。

.*** framework 提供以下實現數字簽名演算法的類:

數字簽名驗證傳送方的標識並保護資料的完整性。

事實上數字簽名不是一種具體的技術實現,它是基於以上各種加密技術組合的解決方案。通常乙個基本的數字簽名方案可能有如下步驟:

雙方各自生成乙個公鑰/私鑰對。

雙方交換他們的公鑰。

雙方生成乙個用於對稱加密法的私鑰,並使用該對稱私鑰加密要傳送的訊息。

生成加密後訊息的雜湊值。

用對方的共鑰加密對稱私鑰和雜湊值(該組合密文即為簽名),並將該簽名附加在訊息主體的密文後傳送給對方。

基於以上數字簽名的技術方案,問題的策略點在於雙方何時生成金鑰對(共鑰/私鑰),並如何交換他們的共鑰。

在編譯或發布的時候生成固定的金鑰對。正因為我們整個方案的安全是基於私有金鑰的強度和私隱性,因此,將私鑰儲存在應用程式中,顯然不是明智之舉,那麼該如何將私鑰存放在安全的地方並在執行時能獲取它?將它存放在加密鎖中,是個不錯辦法,當然你也可以將它儲存在登錄檔或者某個奇怪的檔案中,但是不建議這麼做,因為至少目前看來加密鎖的抗攻擊能力較之其他要強。

在執行時生成臨時的金鑰對。在某個初始化過程中將先請求獲取對方的共鑰,並在以後的通訊中使用該共鑰加密簽名。在該方案中,如何證明獲取的共鑰的確是真實通訊者的共鑰以及保管眾多聯接者的共鑰就成為了問題的重點。

方案一:

首先生成雙方各自的金鑰對,並交換彼此的共鑰。伺服器將自己的金鑰對和客戶端的共鑰的加密檔案寫入硬體加密鎖內(該加密鎖稱為「伺服器鎖」),客戶端將自己的金鑰對和伺服器的共鑰的加密檔案寫入硬體加密鎖內(該加密鎖稱為「客戶端鎖」)。在每次傳送資料時,先從自己的加密鎖內取得對方的共鑰,並用該共鑰簽名傳送的資料;接收到資料時,利用加密鎖內儲存的自己的私鑰來驗證資料報。當然,你的加密鎖**商可能會有更好的獲取加密鎖內資訊的建議和方法。

使用硬體加密鎖是基於「加密鎖的硬體具有不可複製性、並能反**跟蹤和暴力破解」的前提下作出的決定,這也正是各硬體加密鎖開發商所申稱的。

優點:

缺點:

方案二:優點:

缺點:

以上兩種方案各有利弊,如果能結合這兩者的優點而消除其缺點就好了,幸運的是,我們可以做到這點。只要在伺服器端使用『方案一』,客戶端使用『方案二』就可達此目的,這樣就可以不用在每個客戶端部署硬體加密鎖,而客戶端又避免了獲取伺服器共鑰時的安全隱患。

鍾峰(popeye zhong)目前是

深圳恆泰豐科技公司

的.***專案組的架構設計人員。他曾經使用 c 語言做過圖形程式設計,在相當長的一段時期內從事 ***/***+ 元件的開發和設計工作,並且短暫的做過 lotus/notes 和 dialogic 語音卡程式的開發,從2023年初開始使用.***這個充滿趣味和挑戰的開發平台。感興趣的除了企業應用架構設計、元件開發、安全、影象處理外還對汽車和槍械模型有濃厚的興趣。如果希望與他聯絡,可訪問

或者email

sw515@21**.*** 。

加密與數字簽名

加密與數字簽名 加密與數字簽名 一 加密 資料加密技術從技術上的實現分為在軟體和硬體兩方面。按作用不同,資料加密技術主要分為資料傳輸 資料儲存 資料完整性的鑑別以及金鑰管理技術這四種。在網路應用中一般採取兩種加密形式 對稱金鑰和公開金鑰,採用何種加密演算法則要結合具體應用環境和系統,而不能簡單地根據...

數字簽名與數字加密

數字簽名主要經過以下幾個過程 資訊傳送者使用一單向雜湊函式 hash函式 對資訊生成資訊摘要 資訊傳送者使用自己的私鑰簽名資訊摘要 資訊傳送者把資訊本身和已簽名的資訊摘要一起傳送出去 資訊接收者通過使用與資訊傳送者使用的同乙個單向雜湊函式 hash函式 對接收的資訊本身生成新的資訊摘要,再使用資訊傳...

加密 數字簽名

對稱加密演算法是訊息傳送者和接收者使用同乙個密匙,傳送者使用密匙加密了檔案,接收者使用同樣的密匙解密,獲取資訊。常見的對稱加密演算法有 des aes 3des.對稱加密演算法的特點有 速度快,加密前後檔案大小變化不大,但是密匙的保管是個大問題,因為訊息傳送方和接收方任意一方的密匙丟失,都會導致資訊...