网络安全服务

网络安全服务（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、Sun微系统/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 
 
 
 

加密软件
电子商务
互联网标准
网际协议
Mozilla
Netscape
保密通信
傳輸層安全協議