歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

郵件加密兩把鎖:PGP和S/MIME

  郵件加密兩把鎖:PGP和S/MIME 目前互聯網上應用最多的服務是電子郵件,保證電子郵件的安全常用到兩種端到端的安全技術:PGP(Pretty Good Privacy)和S/MIME(Secure Multi-Part Intermail Mail Extension)。它們的主要功能就是身份的認證和傳輸數據的加密。 你的電子郵件不安全 我們知道,電子郵件在傳輸中使用的是SMTP協議,它不提供加密服務,攻擊者可在郵件傳輸中截獲數據。其中的文本格式、非文本格式的二進制數據(如:.exe文件)都可輕松地還原。你經常收到,好像是你的好友發來的郵件,但可能這是一封冒充的、帶著病毒或其他讓你被欺騙的郵件。還有,電子郵件誤發給陌生人或不希望發給的人,也是電子郵件的不加密性客觀帶來的信息洩露。安全電子郵件能解決郵件的加密傳輸問題,驗證發送者的身份驗證問題,錯發用戶的收件無效問題(因為需要用密鑰解密)。但是,安全電子郵件不能解決如郵件炸彈、防御病毒在郵件中的傳播、郵件服務器的入侵等問題。 PGP和S/MIME郵件加密專用協議 PGP和S/MIME這兩種協議對一般用戶來說,在使用上幾乎沒有什麼差別。但是事實上它們是完全不同的,主要體現在格式上,這就有點像GIF和JPEG兩種圖形文件,對用戶來說,查看圖片是沒有區別,但它們是兩種完全不一樣的文件。這也就意味著,由於格式的不同,一個使用PGP的用戶不能與另一個使用S/MIME的用戶通訊,且他們也不能共享證書。 PGP/MIME 和OpenPGP PGP最早出現在1990年,是一種長期在學術圈和技術圈內得到廣泛使用的安全郵件標准。其特點是通過單向散列算法對郵件內容進行簽名,保證信件內容無法修改,使用公鑰和私鑰技術保證郵件內容保密且不可否認。發信人與收信人的公鑰發布在公開的地方,如FTP站點。公鑰本身的權威性由第三方,特別是收信人所熟悉或信任的第三方進行簽名認證,但它沒有統一的集中的機構進行公鑰/私鑰的簽發。即在PGP系統中,更多的信任是來自於通信的雙方。 s/mime v3和openpgp的對比 主要特征 s/mime v3 openpgp 信息通信的格式 基於cms的二進制格式 基於早期 pgp的二進制格式 身份認證的格式 基於 x.509v3的二進制格式 基於早期 pgp的二進制格式 機密算法 tripledes(des ede3 cbc) tripledes(des ede3 eccentric cfb) 數字簽名 diffie-hellman(x9.42) with dss elgamal with dss 哈希算法 sha-1 sha-1 PGP/MIME和OpenPGP都是基於PGP的,已經得到許多重要的郵箱提供商支持,PGP的通信和認證的格式是隨機生成的、使用簡單的二進制代碼。PGP的主要提供商是美國NAI的子公司PGP,在中國,由於PGP的加密超過128位,受到美國出口限制,所以商用的比較少。 S/MIME S/MIME是一個新協議,最初版本來源於私有的商業社團RSA 數據安全公司。S/MIME V2版本已經廣泛地使用在安全電子郵件上。 但是它並不是IETF 的標准。 因為它需要使用 RSA 的密鑰交換,這就受限於美國RSA數據安全公司的專利(不過,2001年12月該專利到期)。 S/MIME是從PEM (Privacy Enhanced Mail)和MIME(Internet郵件的附件標准)發展而來的。 同PGP一樣,S/MIME也利用單向散列算法和公鑰與私鑰的加密體系。但它與PGP主要有兩點不同:它的認證機制依賴於層次結構的證書認證機構,所有下一級的組織和個人的證書由上一級的組織負責認證,而最上一級的組織(根證書)之間相互認證,整個信任關系基本是樹狀的,這就是所謂的Tree of Trust。還有,S/MIME將信件內容加密簽名後作為特殊的附件傳送,它的證書格式采用X.509,但與一般浏覽器網上使用的SSL證書有一定差異。 國內眾多的認證機構基本都提供一種叫“安全電子郵件證書”的服務,其技術對應的就是S/MIME技術,平台使用的基本上是美國Versign的。主要提供商有北京的天威誠信(www.itrus.com.cn)和TrustAsia上海(www.trustasia.com.cn),它們一個是Versign的中國區合作伙伴,一個是Versign亞太區分支機構。 如何保證郵件安全 加密與解密 找兩個很大的質數,一把公開,稱為“公鑰”,另一把保密,叫“私鑰”。這兩把密匙是互補的,就是說用公鑰加密的密文可以用私鑰解密,反之亦然。假設甲要寄信給乙,他們互相知道對方的公鑰。甲就用乙的公鑰加密郵件寄出,乙收到後就可以用自己的私鑰解密出甲的原文。由於只有乙知道他的私鑰,所以即使是甲本人也無法解密那封信,這就解決了信件保密的問題。 數字簽名 上面例子中,由於每個人都知道乙的公鑰,他們都可以給乙發信,而乙無法確信是不是甲的來信。這就需要數字簽名來進行認證。 圖中為安全電子郵件的邏輯圖,發送者使用自己的證書對郵件進行數字簽名,同時將自己的證書傳給接收者。對加密郵件來說,發送者需要使用接收者證書中的公鑰對郵件進行加密,對無證書的接收者,則不能加密。 了解數字簽名首先要了解“郵件文摘”(messagedigest)。簡單地講,“郵件文摘”就是對一封郵件用某種算法算出一個能體現這封郵件的“精華”數來,一旦郵件有任何改變,這個數都會變化,這個數加上作者的名字(實際上在作者的密鑰裡)和日期等等,就可以作為一個簽名了。 甲用自己的私鑰將上述的“精華”加密,附在郵件上,再用乙的公鑰將整個郵件加密。這樣這份密文被乙收到以後,乙用自己的私鑰將郵件解密,得到甲的原文和簽名,乙自身的驗證系統也從原文計算出一個“精華”來,再用甲的公鑰解密簽名得到的數進行比較,如果符合就說明這份郵件確實是甲寄來的。這一點在商業領域有很大應用前途,可以防止發信人抵賴和信件被途中篡改。 原作者:姜力東




Copyright © Linux教程網 All Rights Reserved