必須牢記(且須仔細品味): 網絡層(傳輸層)的安全協議允許為主機(進程)之間的數據通道增加安全屬性。本質上,這意味著真正的(或許再加上機密的)數據通道還是建立在主機(或進程)之間,但卻不可能區分在同一通道上傳輸的一個具體文件的安全性要求。比如說,如果一個主機與另一個主機之間建立起一條安全的IP通道,那麼所有在這條通道上傳輸的IP包就都要自動地被加密。同樣,如果一個進程和另一個進程之間通過傳輸層安全協議建立起了一條安全的數據通道,那麼兩個進程間傳輸的所有消息就都要自動地被加密。
如果確實想要區分一個具體文件的不同的安全性要求,那就必須借助於應用層的安全性。提供應用層的安全服務實際上是最靈活的處理單個文件安全性的手段。例如一個電子郵件系統可能需要對要發出的信件的個別段落實施數據簽名。較低層的協議提供的安全功能一般不會知道任何要發出的信件的段落結構,從而不可能知道該對哪一部分進行簽名。只有應用層是唯一能夠提供這種安全服務的層次。
一般來說,在應用層提供安全服務有幾種可能的做法,第一個想到的做法大概就是對每個應用(及應用協議)分別進行修改。一些重要的TCP/IP應用已經這樣做了。在RFC 1421至1424中,IETF規定了私用強化郵件(PEM)來為基於SMTP的電子郵件系統提供安全服務。由於種種理由,Internet業界采納PEM的步子還是太慢,一個主要的原因是PEM依賴於一個既存的、完全可操作的PKI(公鑰基礎結構)。PEM PKI是按層次組織的,由下述三個層次構成:
頂層為Internet安全政策登記機構(IPRA)
次層為安全政策證書頒發機構(PCA)
底層為證書頒發機構(CA)
建立一個符合PEM規范的PKI也是一個政治性的過程,因為它需要多方在一個共同點上達成信任。不幸的是,歷史表明,政治性的過程總是需要時間的,作為一個中間步驟,Phil Zimmermann開發了一個軟件包,叫做PGP(pretty Good Privacy)。PGP符合PEM的絕大多數規范,但不必要求PKI的存在。相反,它采用了分布式的信任模型,即由每個用戶自己決定該信任哪些其他用戶。因此,PGP不是去推廣一個全局的PKI,而是讓用戶自己建立自己的信任之網。這就立刻產生一個問題,就是分布式的信任模型下,密鑰廢除了怎麼辦。
S-HTTP是Web上使用的超文本傳輸協議(HTTP)的安全增強版本,由企業集成技術公司設計。S-HTTP提供了文件級的安全機制,因此每個文件都可以被設成私人/簽字狀態。用作加密及簽名的算法可以由參與通信的收發雙方協商。S-HTTP提供了對多種單向散列(Hash)函數的支持,如: MD2,MD5及SHA; 對多種單鑰體制的支持,如:DES,三元DES,RC2,RC4,以及CDMF; 對數字簽名體制的支持,如: RSA和DSS。
目前還沒有Web安全性的公認標准。這樣的標准只能由WWW Consortium,IETF或其他有關的標准化組織來制定。而正式的標准化過程是漫長的,可能要拖上好幾年,直到所有的標准化組織都充分認識到Web安全的重要性。S-HTTP和SSL是從不同角度提供Web的安全性的。S-HTTP對單個文件作“私人/簽字”之區分,而SSL則把參與通信的相應進程之間的數據通道按“私用”和“已認證”進行監管。Terisa公司的SecureWeb工具軟件包可以用來為任何Web應用提供安全功能。該工具軟件包提供有 RSA數據安全公司的加密算法庫,並提供對SSL和S-HTTP的全面支持。
另一個重要的應用是電子商務,尤其是信用卡交易。為使Internet上的信用卡交易安全起見,MasterCard公司(同IBM,Netscape,GTE和Cybercash一道) 制定了安全電子付費協議(SEPP),Visa國際公司和微軟(和其他一些公司一道)制定了安全交易技術(STT)協議。同時,MasterCard,Visa國際和微軟已經同意聯手推出Internet上的安全信用卡交易服務。他們發布了相應的安全電子交易(SET)協議,其中規定了信用卡持卡人用其信用卡通過Internet進行付費的方法。這套機制的後台有一個證書頒發的基礎結構,提供對X.509證書的支持。
上面提到的所有這些加安全功能的應用都會面臨一個主要的問題,就是每個這樣的應用都要單獨進行相應的修改。因此,如果能有一個統一的修改手段,那就好多了。通往這個方向的一個步驟就是赫爾辛基大學的Tatu Yloenen開發的安全shell(SSH)。SSH允許其用戶安全地登錄到遠程主機上,執行命令,傳輸文件。它實現了一個密鑰交換協議,以及主機及客戶端認證協議。SSH有當今流行的多種Unix系統平台上的免費版本,也有由Data Fellows公司包裝上市的商品化版本。
把SSH的思路再往前推進一步,就到了認證和密鑰分配系統。本質上,認證和密鑰分配系統提供的是一個應用編程界面(API),它可以用來為任何網絡應用程序提供安全服務,例如: 認證、數據機密性和完整性、訪問控制以及非否認服務。目前已經有一些實用的認證和密鑰分配系統,如: MIT的Kerberos(V4與V5),IBM的CryptoKnight和Netwrok Security Program,DEC的SPX,Karlsruhe大學的指數安全系統(TESS)等,都是得到廣泛采用的實例。甚至可以見到對有些認證和密鑰分配系統的修改和擴充。例如,SESAME和OSF DCE對Kerberos V5作了增加訪問控制服務的擴充,Yaksha對Kerberos V5作了增加非否認服務的擴充。
關於認證和密鑰分配系統的一個經常遇到的問題是關於它們在Internet上所受到的冷遇。一個原因是它仍要求對應用本身做出改動。考慮到這一點,對一個認證和密鑰分配系統來說,提供一個標准化的安全API就顯得格外重要。能做到這一點,開發人員就不必再為增加很少的安全功能而對整個應用程序大動手術了。因此,認證系統設計領域內最主要的進展之一就是制定了標准化的安全API,即通用安全服務API(GSS-API)。GSS-API(v1及v2)對於一個非安全專家的編程人員來說可能仍顯得過於技術化了些,但德州Austin大學的研究者們開發的安全網絡編程(SNP),把界面做到了比GSS-API更高的層次,使同網絡安全性有關的編程更加方便了。
摘自:http://hackers.home.chinaren.net