確保對等通道應用程式安全
和 .NET Framework 3.0 下的其他繫結一樣,NetPeerTcpBinding 預設已啟用安全性,並且會提供傳輸和訊息型安全性 (或兩者皆提供)。這個主題會討論這兩種類型的安全性。安全性類型則是由繫結規格中的安全性模式標記所指定 (Security Mode)。
傳輸型安全性
對等通道支援兩種可用來保護傳輸的驗證認證類型,這兩種類型都需要在相關聯的 ChannelFactory 上設定 ClientCredentialSettings.Peer 屬性:
密碼:用戶端會運用已知的機密密碼來驗證連線。使用這個認證類型時,ClientCredentialSettings.Peer.MeshPassword 必須傳遞有效的密碼並選擇性傳遞 X509Certificate2 執行個體。
憑證:將會使用特定的應用程式驗證。使用這個認證類型時,您必須在 ClientCredentialSettings.Peer.PeerAuthentication 中使用實體 X509CertificateValidator 實作。
訊息型安全性
使用訊息安全性時,應用程式可以簽署傳輸訊息,因此所有接收方都可驗證是否從信任的一方傳出訊息,而且該訊息並沒有遭到竄改。目前對等通道僅支援 X.509 認證的訊息簽署。
最佳做法
- 本節會討論保護對等通道應用程式安全的最佳做法。
啟用對等通道應用程式的安全性
有鑑於對等通道通訊協定的分散式特性,在不安全的網狀結構中很難強制施行網狀結構成員資格、機密性和隱私權。而記住用戶端和解析程式服務之間的安全通訊也相當重要。在套用對等名稱解析通訊協定 (PNRP) 時,請使用安全名稱來避免詐騙和其他常見攻擊。啟用連線用戶端使用上的安全性以連絡解析程式服務,即可保護自訂解析程式服務,而這包括了訊息和傳輸型安全性。
使用最強的可能安全性模型
例如,如果網狀結構的每個成員都需要個別識別,請使用憑證型驗證模型。如果不可能這樣做,請使用密碼型驗證,再使用目前的建議以保持其安全。這包括僅與受信任的對象共用密碼、使用安全媒介傳輸密碼、經常變更密碼以及確保密碼為強式 (長度至少為八個字元,其中至少包括大小寫字母、數字和特殊字元)。
永不接受自我簽署的憑證
永不接受以主體名稱為基礎的憑證認證。請注意,任何人都可建立憑證,而任何人也都可以選擇您要驗證的名稱。若要避免可能發生詐騙,請根據發行授權單位的認證來驗證憑證 (信任的簽發者或根憑證授權單位)。
使用訊息驗證
使用訊息驗證以驗證源自於信任來源的訊息,並驗證傳輸期間沒有任何人竄改訊息。如果不使用訊息驗證,就很容易讓惡意用戶端詐騙或竄改網狀結構中的訊息。
對等通道程式碼範例
Peer Channel Custom Authentication
Peer Channel Message Authentication