网络安全服务

网络安全服务Network Security Services,简称NSS)是一组支持跨平台开发安全客户端与服务器应用程序的程序库,它提供服务器侧硬件TLS/SSL加速和客户端侧智能卡的可选支持。NSS提供了支持TLS/SSLS/MIME的完全开源实现。早前以多许可方式授权在Mozilla公共许可证 1.1、GNU通用公共许可证GNU宽通用公共许可证,但从3.14版本开始升级到GPL兼容的MPL 2.0许可证[2]

网络安全服务
開發者Mozilla美国在线紅帽公司昇陽電腦甲骨文公司Google
当前版本
  • 3.99 (2024年3月15日)[1]
編輯維基數據鏈接
源代码库 編輯維基數據鏈接
编程语言C语言汇编语言
操作系统跨平台
平台跨平台
类型函式庫
许可协议Mozilla公共许可证2.0
网站developer.mozilla.org/en-US/docs/NSS

历史 编辑

NSS的开发源自Netscape开发时SSL安全协议的发明。

FIPS 140验证和NISCC测试 编辑

NSS软件加密模块已5次通过验证(1997年、1999年、2002年、2007年和2010年),符合FIPS 140的安全层级1和2[3]。NSS是首个通过FIPS 140验证的开源的加密程序库[3]。NSS程序库也已通过NISCC TLS/SSL和S/MIME测试套件(160万无效数据输入的测试)[3]

使用NSS的应用程序 编辑

AOLRed Hat、Sun微系统/Oracle公司Google及其他公司和个人贡献者协作参与了NSS的开发。Mozilla提供了开源代码库、缺陷跟踪系统和邮件列表及讨论组这些基础设施。有许多款产品中使用了NSS,以下是部分产品:

架构 编辑

NSS包含一个框架,开发者和OEM厂商可以贡献补丁,例如优化在其特定平台性能的汇编代码。Mozilla已认证NSS 3.x可用于18种平台[6][7]。NSS制作了一个Netscape便携式运行时(NSPR), 一个无关平台的开源API,便于跨平台开发和完成系统功能设计。NSS、NSPR等已被多种产品大量使用。

软件开发工具包 编辑

除了程序库和API,NSS还提供了调试、诊断及证书和密钥管理、加密模块管理及其他开发任务所需的安全工具。NSS配有广泛且持续增长的文档,包括介绍材料、API参考、命令行工具的man页面、示例代码。

程序员可以使用NSS作为源代码和作为共享(动态)程序库。每个NSS发布版本都对此前的版本有向后兼容性,允许NSS用户直接升级到新的NSS共享程序库,无须重新编译或重新链接他们的应用程序。

互操作性和开放标准 编辑

NSS支持一系列安全标准,包括如下所示[8][9]

  • 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-SRTPRFC 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–HellmanEC Diffie–HellmanAESTriple DESCamelliaIDEA、SEED、DES、RC2、RC4、SHA-1、SHA-256SHA-384SHA-512、MD2、MD5HMAC:公钥和对称密钥加密中的常用算法。
  • FIPS 186-2伪随机数生成器。

硬件支持 编辑

NSS支持PKCS #11接口访问加密设备,例如SSL加速器、HSM-s和智能卡。自从大多数设备供应商(例如SafeNet和Thales)也支持此接口,使用NSS的应用程序可以使用加密硬件高速运作,以及使用驻留在智能卡上的私钥,只要设备供应商提供了必要的中间件。NSS 3.13及更高版本中支持高级加密标准新指令(AES-NI)[10]

Java支持 编辑

Network Security Services for Java(JSS)包含一个指向NSS的Java接口。它由NSS提供,支持大多数安全标准和加密技术。JSS也提供一个纯Java接口用于ASN.1类型和BER/DER编码。Mozilla CVS树提供了指向NSS的Java接口的源代码。

另见 编辑

参考资料 编辑

  1. ^ Add release notes for 3.99. 
  2. ^ NSS 3.14 release notes. MDN. Mozilla Developer Network. [2015-09-01]. (原始内容存档于2021-12-07). The NSS license has changed to MPL 2.0. Previous releases were released under a MPL 1.1/GPL 2.0/LGPL 2.1 tri-license. 
  3. ^ 3.0 3.1 3.2 FIPS. Mozilla. 2012-02-01 [2013-05-17]. (原始内容存档于2013-05-02). 
  4. ^ Does Fennec use NSS?. mozilla.dev.security.policy newsgroup. April 2010 [2013-05-17]. 
  5. ^ The Chromium Project: BoringSSL. [2016-11-08]. (原始内容存档于2015-09-23). 
  6. ^ Network Security Services. Mozilla. 2013-05-16 [2013-05-17]. (原始内容存档于2014-03-28). 
  7. ^ NSS FAQ. Mozilla. 2013-05-16 [2013-05-17]. [失效連結]
  8. ^ Encryption Technologies Available in NSS 3.11. Mozilla. 2012-02-01 [2013-05-17]. (原始内容存档于2013-04-02). 
  9. ^ "NSS 3.23 release notes"页面存档备份,存于互联网档案馆).
  10. ^ AES-NI enhancements to NSS on Sandy Bridge systems. 2012-05-02 [2013-05-17]. (原始内容存档于2014-04-13). 

外部链接 编辑