fbpx
维基百科

Cryptography API: Next Generation

下一代密码学API (Cryptography API: Next Generation, CNG) 是微軟Windows Vista开始在作業系統中包含的密碼学编程接口。替代了当时已经发布了十年的Cryptographic API

CNG允许同一个函数可用更多的密码学算法,并包含了美国国家安全局NSA Suite B Cryptography英语NSA Suite B Cryptography中发布的新算法。[1]并灵活地支持插件定制密码学API到CNG的运行时中。但CNG的密钥存储机制仍然不支持存储对称密钥。[2] CNG既可以工作在用户模式下,也可以工作在内核模式下,支持CryptoAPI的所有算法。其运行代码在Bcrypt.dll文件中。

CNG也支持椭圆曲线密码学非对称加密。[3]CNG API集成了智能卡子系统,包括Base Smart Card Cryptographic Service Provider (Base CSP) 模块,封装了智能卡API。智能卡制造商只需要使其产品兼容与该API,而不需要从头写解决方案。

CNG增加了双椭圆曲线确定性随机比特生成器[4],一套定义于NIST SP 800-90A英语NIST SP 800-90A中的伪随机数生成器,被认为存在NSA的安全后门。除非开发者记得每次都用其它伪随机数生成器或真随机数生成器产生初始化种子。该算法也很慢。[5]该算法只在明确调用时才会被使用。

CNG的缺省的伪随机数生成算法已经被使用AES作为块加密器的CTR_DRBG英语CTR_DRBG替代了。因为老的算法使用DESSHA-1,都已经被攻破。[6] CTR_DRBG定义在NIST SP 800-90中的两种算法之一,由布魯斯·施奈爾捐赠。[5]

示例源代码

产生指定字节长度的伪随机数:

 #include <Windows.h> #include <bcrypt.h> #include <iostream> #include <stdio.h> #pragma comment(lib, "bcrypt.lib") using namespace std; unsigned long getSeed(ULONG buffer_size) {  NTSTATUS status = 0;  ULONG flags = 0;  UCHAR c_seed[128] = { 0 };  BCRYPT_ALG_HANDLE handle;  status = BCryptOpenAlgorithmProvider(  &handle, BCRYPT_RNG_ALGORITHM, NULL, 0  );  if (!BCRYPT_SUCCESS(status)) {  cout << "BCryptOpenAlgorithmProvider";  printf("%X", status);  }  status = BCryptGenRandom(  handle, c_seed, buffer_size, 0  );  if (!BCRYPT_SUCCESS(status)) {  cout << "Error in BCryptGenRandom";  printf("%X", status);  }  status = BCryptCloseAlgorithmProvider(  handle, 0  );  if (!BCRYPT_SUCCESS(status)) {  cout << "BCryptCloseAlgorithmProvider";  printf("%X", status);  }  unsigned long seedNo = (unsigned long)c_seed;  return seedNo; } 

参考文献

  1. ^ Suite B. [2020-07-15]. (原始内容于2009-02-07). 
  2. ^ Key Storage and Retrieval, Microsoft. [2020-07-15]. (原始内容于2017-09-21). 
  3. ^ The Case for Elliptic Curve Cryptography, NSA. [2020-07-15]. (原始内容于2018-09-18). 
  4. ^ Schneier, Bruce. Dual_EC_DRBG Added to Windows Vista. Schneier on Security. December 17, 2007 [January 13, 2010]. (原始内容于2020-07-10). 
  5. ^ 5.0 5.1 Schneier, Bruce. The Strange Story of Dual_EC_DRBG. Schneier on Security. November 15, 2007 [January 12, 2010]. (原始内容于2020-07-10). 
  6. ^ FIPS PUB 186-2 (PDF). Federal Information Processing Standards. National Institute of Standards and Technology. January 27, 2000 [January 13, 2010]. (原始内容 (PDF)于2011-08-12). 

cryptography, next, generation, 下一代密码学api, 是微軟从windows, vista开始在作業系統中包含的密碼学编程接口, 替代了当时已经发布了十年的cryptographic, cng允许同一个函数可用更多的密码学算法, 并包含了美国国家安全局nsa, suite, cryptography, 英语, suite, cryptography, 中发布的新算法, 并灵活地支持插件定制密码学api到cng的运行时中, 但cng的密钥存储机制仍然不支持存储对称密钥, cng既可以工. 下一代密码学API Cryptography API Next Generation CNG 是微軟从Windows Vista开始在作業系統中包含的密碼学编程接口 替代了当时已经发布了十年的Cryptographic API CNG允许同一个函数可用更多的密码学算法 并包含了美国国家安全局NSA Suite B Cryptography 英语 NSA Suite B Cryptography 中发布的新算法 1 并灵活地支持插件定制密码学API到CNG的运行时中 但CNG的密钥存储机制仍然不支持存储对称密钥 2 CNG既可以工作在用户模式下 也可以工作在内核模式下 支持CryptoAPI的所有算法 其运行代码在Bcrypt dll文件中 CNG也支持椭圆曲线密码学非对称加密 3 CNG API集成了智能卡子系统 包括Base Smart Card Cryptographic Service Provider Base CSP 模块 封装了智能卡API 智能卡制造商只需要使其产品兼容与该API 而不需要从头写解决方案 CNG增加了双椭圆曲线确定性随机比特生成器 4 一套定义于NIST SP 800 90A 英语 NIST SP 800 90A 中的伪随机数生成器 被认为存在NSA的安全后门 除非开发者记得每次都用其它伪随机数生成器或真随机数生成器产生初始化种子 该算法也很慢 5 该算法只在明确调用时才会被使用 CNG的缺省的伪随机数生成算法已经被使用AES作为块加密器的CTR DRBG 英语 CTR DRBG 替代了 因为老的算法使用DES与SHA 1 都已经被攻破 6 CTR DRBG定义在NIST SP 800 90中的两种算法之一 由布魯斯 施奈爾捐赠 5 示例源代码 编辑产生指定字节长度的伪随机数 include lt Windows h gt include lt bcrypt h gt include lt iostream gt include lt stdio h gt pragma comment lib bcrypt lib using namespace std unsigned long getSeed ULONG buffer size NTSTATUS status 0 ULONG flags 0 UCHAR c seed 128 0 BCRYPT ALG HANDLE handle status BCryptOpenAlgorithmProvider amp handle BCRYPT RNG ALGORITHM NULL 0 if BCRYPT SUCCESS status cout lt lt BCryptOpenAlgorithmProvider printf X status status BCryptGenRandom handle c seed buffer size 0 if BCRYPT SUCCESS status cout lt lt Error in BCryptGenRandom printf X status status BCryptCloseAlgorithmProvider handle 0 if BCRYPT SUCCESS status cout lt lt BCryptCloseAlgorithmProvider printf X status unsigned long seedNo unsigned long c seed return seedNo 参考文献 编辑 Suite B 2020 07 15 原始内容存档于2009 02 07 Key Storage and Retrieval Microsoft 2020 07 15 原始内容存档于2017 09 21 The Case for Elliptic Curve Cryptography NSA 2020 07 15 原始内容存档于2018 09 18 Schneier Bruce Dual EC DRBG Added to Windows Vista Schneier on Security December 17 2007 January 13 2010 原始内容存档于2020 07 10 5 0 5 1 Schneier Bruce The Strange Story of Dual EC DRBG Schneier on Security November 15 2007 January 12 2010 原始内容存档于2020 07 10 FIPS PUB 186 2 PDF Federal Information Processing Standards National Institute of Standards and Technology January 27 2000 January 13 2010 原始内容存档 PDF 于2011 08 12 取自 https zh wikipedia org w index php title Cryptography API Next Generation amp oldid 64128755, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。