go語言編程 要點總結(六)安全編程

go語言編程 要點總結(六)安全編程

數據加密

單秘鑰加密,整個系統由需要加密的明文,加密算法和秘鑰工程。常見的有DES、AES、RC4等

雙秘鑰加密,整個系統由需要加密的銘文,加密算法,秘鑰和公鑰。公鑰和秘鑰都可以用來加密。常見的有RSA等

不可解密,哈希算法,MD5和SHA-1等

數字簽名

指用於標記數字文件擁有者、創造者、分發者身份的字符串。擁有標記文件身份、分發的不可抵賴性等作用,

目前常用的數字簽名採用了非對稱加密。

數字證書

銀行U盾初始化的過程就是下載數字證書,數字證書包含銀行公鑰。有了公鑰之後,網銀就可可以用公鑰加密我們提供給銀行的信息,銀行才能用對應的私鑰解密,確保安全。

PKI體系

全稱公鑰基礎設施,使用非堆成加密理論,提供數字簽名、加密、數字證書等服務的體系,一般包括權威認證機構CA、數字證書庫、秘鑰備份及恢復系統、證書作廢系統、應用接口API等

go語言的哈希函數

包crypto/sha1 crypto/md5

加密通信

https是基於ssl(secure sockets layer)協議。ssl是網景公司開發位於tcp與http之間的透明安全協議,通過ssl,可以把http包數據以非對稱加密的形式往返於瀏覽器和站點之間,避免被第三方非法獲取。

加密通信流程:

  1. 瀏覽器輸入https協議網址
  2. 服務器向瀏覽器返回證書,
  3. 瀏覽器檢車證書合法性
  4. 瀏覽器使用證書中的公鑰加密一個隨機堆成秘鑰,並將加密後的秘鑰和使用秘鑰加密後的請求URL一起發送到服務器
  5. 服務器用私鑰解密隨機堆成秘鑰,並用獲取的秘鑰解密加密的請求URL
  6. 服務器把用戶請求的網頁用秘鑰加密,並返回給用戶
  7. 瀏覽器用秘鑰解密服務器發來的數據,最終顯示

上述過程依賴SSL/TLS層實現。工程更復雜一些,基本流程是一致的


分享到:


相關文章: