网络安全服务

**網路安全服務**（**Network Security Services**，簡稱 **NSS**）是一組支援跨平台開發安全客戶端與伺服器應用程式的程式庫，它提供伺服器側硬體 TLS/SSL 加速和客戶端側智慧卡的可選支援。NSS 提供了支援 TLS/SSL 及 S/MIME 的完全開源實現。早前以多許可方式授權在 Mozilla 公共許可證 1.1、GNU 通用公共許可證和 GNU 寬通用公共許可證，但從 3.14 版本開始升級到 GPL 相容的 MPL 2.0 許可證。

## 歷史

NSS 的開發源自 Netscape 開發時 SSL 安全協定的發明。

### FIPS 140 驗證和 NISCC 測試

NSS 軟體加密模組已 5 次通過驗證（1997 年、1999 年、2002 年、2007 年和 2010 年），符合 FIPS 140 的安全層級 1 和 2。NSS 是首個通過 FIPS 140 驗證的開源的加密程式庫。NSS 程式庫也已通過 NISCC TLS/SSL 和 S/MIME 測試套件（160 萬無效資料輸入的測試）。

## 使用 NSS 的應用程式

AOL、Red Hat、昇陽電腦 / Oracle 公司、Google 及其他公司和個人貢獻者協同運作參與了 NSS 的開發。Mozilla 提供了開原始碼庫、缺陷跟蹤系統和郵寄清單及討論組這些基礎設施。有許多款產品中使用了 NSS，以下是部分產品：

* Mozilla 客戶端產品，包括 Firefox、Thunderbird、SeaMonkey 和 Firefox for mobile（Fennec）。
* AOL Communicator 和 AOL Instant Messenger（AIM）
* Opera
* 開源客戶端程式，例如 Evolution、Pidgin、OpenOffice.org 2.0 及更高版本，以及 Apache OpenOffice。
* Red Hat 的伺服器產品：Red Hat Directory Server, Red Hat Certificate System 以及 Apache 網頁伺服器的 mod nss SSL 模組。
* Sun Java Enterprise System 的 Sun 伺服器產品，包括 Sun Java System Web Server、Sun Java System Directory Server、Sun Java System Portal Server、Sun Java System Messaging Server 和 Sun Java System Application Server，目錄伺服器的開源版本 OpenDS。
* Libreswan IKE/IPsec 需要 NSS。它是 Openswan 的一個分支，其中可選使用 NSS。
* Google Chrome 和 Chromium 曾使用 NSS，但現在它們使用 BoringSSL。

## 架構

NSS 包含一個框架，開發者和 OEM 廠商可以貢獻修補程式，例如最佳化在其特定平台效能的組譯代碼。Mozilla 已認證 NSS 3.x 可用於 18 種平台。NSS 製作了一個 Netscape 可攜式執行時（NSPR）, 一個無關平台的開源 API，便於跨平台開發和完成系統功能設計。NSS、NSPR 等已被多種產品大量使用。

### 軟體開發套件

除了程式庫和 API，NSS 還提供了除錯、診斷及憑證和金鑰管理、加密模組管理及其他開發任務所需的安全工具。NSS 配有廣泛且持續增長的文件，包括介紹材料、API 參考、命令列工具的 `man` 頁面、範例代碼。

程式設計師可以使用 NSS 作為原始碼和作為共享（動態）程式庫。每個 NSS 發布版本都對此前的版本有向下相容性，允許 NSS 使用者直接升級到新的 NSS 共享程式庫，無須重新編譯或重新連結他們的應用程式。

### 互操作性和開放標準

NSS 支援一系列安全標準，包括如下所示：

* TLS 1.0（RFC 2246）、1.1（RFC 4346）和 1.2（RFC 5246）。傳輸層安全（TLS）協定來自 IETF 取代的 SSL v3.0，並保持了對 SSL v3 實現的向下相容性。
* SSL 2.0 和 3.0。安全套階層（SSL）協定允許客戶端與伺服器互相認證身分並建立一個經身分驗證且加密的連接。
* DTLS 1.0（RFC 4347）和 1.2（RFC 6347）。
* DTLS-SRTP（RFC 5764）。
* 下列 PKCS 標準：
  * PKCS #1。RSA 標準，約定基於 RSA 演算法的公鑰加密演算法實現。
  * PKCS #3。RSA 標準，約定 Diffie–Hellman 金鑰協定的實現。
  * PKCS #5。RSA 標準，約定基於密碼的加密法，例如加密儲存裝置上的私鑰。
  * PKCS #7。RSA 標準，約定加密資料的應用程式，例如數位簽章和數字信封。
  * PKCS #8。RSA 標準，約定私鑰的儲存和加密。
  * PKCS #9。RSA 標準，約定選擇的屬性類型，包括 PKCS #7。PKCS #8 和 PKCS #10 的使用。
  * PKCS #10。RSA 標準，約定憑證請求的語法。
  * PKCS #11。RSA 標準，約定加密權杖的通信（例如硬體加速器和智慧卡）並允許應用程式獨立於特定演算法和實現。
  * PKCS #12。RSA 標準，約定儲存或傳輸私鑰、憑證和其他秘密材料的格式。
* Cryptographic Message Syntax，使用在 S/MIME（RFC 2311 和 RFC 2633）中。IETF 訊息標準（基於流行的網際網路 MIME 標準）提供了一個一致的方法來傳送和接收簽章並已加密的 MIME 資料。
* X.509 v3。ITU 標準，公鑰加密中用於身分驗證的憑證的格式。
* OCSP（RFC 2560）。線上憑證狀態協定（OCSP）提供即時的憑證有效性確認服務。
* PKIX 憑證和 CRL 組態（RFC 3280）。按 IETF 的公鑰基礎設施（X.509）工作群組（也稱 PKIX）為網際網路的公鑰基礎設施開發的四個標準的部分內容組成。
* RSA、DSA、ECDSA、Diffie–Hellman、EC Diffie–Hellman、AES、Triple DES、Camellia、IDEA、SEED、DES、RC2、RC4、SHA-1、SHA-256、SHA-384、SHA-512、MD2、MD5、HMAC：公鑰和對稱金鑰加密中的常用演算法。
* FIPS 186-2 偽亂數生成器。

### 硬體支援

NSS 支援 PKCS #11 介面存取加密裝置，例如 SSL 加速器、HSM-s 和智慧卡。自從大多數裝置供應商（例如 SafeNet 和 Thales）也支援此介面，使用 NSS 的應用程式可以使用加密硬體高速運作，以及使用駐留在智慧卡上的私鑰，只要裝置供應商提供了必要的中介軟體。NSS 3.13 及更高版本中支援進階加密標準新指令（AES-NI）。

### Java 支援

Network Security Services for Java（JSS）包含一個指向 NSS 的 Java 介面。它由 NSS 提供，支援大多數安全標準和加密技術。JSS 也提供一個純 Java 介面用於 ASN.1 類型和 BER/DER 編碼。Mozilla CVS 樹提供了指向 NSS 的 Java 介面的原始碼。

## 另見

* 資訊安全
* TLS 的應用對比
* OpenSSL
* MatrixSSL

## 參考資料

## 外部連結

* Network Security Services （頁面存檔備份，存於網際網路檔案館）
* Network Security Services （頁面存檔備份，存於網際網路檔案館）
* JSS toolkit （頁面存檔備份，存於網際網路檔案館）
* Validated FIPS 140-1 and FIPS 140-2 Cryptographic Modules: 1997. NIST. 2013-04-02 [2016-05-17]. （原始內容存檔於 2011-11-20）.
* Validated FIPS 140-1 and FIPS 140-2 Cryptographic Modules: 2002. NIST. 2013-04-02 [2016-05-17]. （原始內容存檔於 2017-09-13）.
* Validated FIPS 140-1 and FIPS 140-2 Cryptographic Modules: 2010. NIST. 2013-05-17 [2016-05-17]. （原始內容存檔於 2017-08-24）.