分享
 
 
 

The Cryptography API, or How to Keep a Secret (一)

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

The Cryptography API, or How to Keep a Secret

译注:因本文发布时间较早,文中所阐述某些内容已发生变化,发生变化处译者已标出。

Robert Coleridge

Microsoft Developer Network Technology Group

August 19, 1996

摘要

本文描述已在新的Windows NT 4.0版本和即将在Windows 95之后版本中发布的微软加密应用程序接口 (Microsoft Cryptography application programming interface)。 本文检验了为安装并使用这些新的 API需要具备的条件。 为了完成例程的编译,你需要 Microsoft Visual C++ 4.2或以后版本及Windows NT 4.0或以后版本.

注 部分加密算法 API处在美国政府出口限制下。(译注:美国政府对强加密产品的出口限制已撤消)

下载例程http://download.microsoft.com/download/win95/api-samp/1.0/WIN98MeXP/EN-US/5003.exe

简介

加密 API在企业计算模型(Enterprise Computing Model)中有着重要的应用。企业计算化程度意味着人的接触更全球化,例如国际商品贸易,州际库存管理等等。在这些领域中经常要通过不安全渠道传输敏感信息—例如电传合同,通过电子邮件收发订单,及种种其它情况。使用加密API(Cryptography API),你就能够保证信息的安全性。

本文使用CRYPTOAPI例程来演示如何加密、解密数据(decrypt or encrypt data),对文件签名、验证签名(sign and verify files),及增加、删除用户(add and remove users)。

加密API总览

加密服务提供者模块(Cryptography Service Provider――CSP)

[编者注:文章中部分内容直接取材于平台SDK(Platform SDK)的CryptoAPI文章。这些部分的段落已缩进(所有段落左对齐), 但没以数字、项目符号或“注意:”引导,因此你应该能容易的辨认出来]

当对用户的私有敏感数据提供保护时,加密API中的函数允许应用程序以一种灵活的方式来加密或者电子签名数据。所有加密操作都由独立的模块来实施,这些模块叫作加密服务提供者(cryptographic service provider)。操作系统中已经包含了一个CSP,名叫“Microsoft RSA Base Provider”。

每个CSP都对加密API层提供一个不同的实现。一些提供强加密算法,而另一些会包含如智能卡(smartcards,智能卡是一张嵌有包含用户安全信息芯片的塑料卡片)之类的硬件部件。另外,一些CSP可能会直接与用户交互,如使用用户的签名私鈅进行数据签名时。

应用程序不要使用依赖于特定CSP的属性。例如,“Microsoft RSA Base Provider”目前使用40位的会话密鈅(session keys)和512位的公鈅(public keys) (参阅 "Symmetric Versus Public-Key Encryption," MSDN Library, Platform, SDK, DDK 文档)。当程序维护这些的时候,要小心的不要假定需要使用多大的内存去存储它们。另外,当用户在系统中安装一个不同的CSP后,程序很可能出错。你要努力使写出的程序尽可能的well-behaved and flexible(行为良好且易扩展)。

密鈅库

每个CSP都有一个密鈅库(key database),里面存储着由CSP保存的算法密鈅。每个密鈅库都包含一个或多个密鈅容器(key container), 每个容器都包含所有属于特定用户(或使用加密API的客户端程序)的密鈅对。每个密鈅容器都被赋与一个唯一的名字,这个名字是程序要获得此容器句柄时传给函数CryptAcquireContext的参数。图1图解了密鈅容器中的内容:

图1 密鈅容器的内容

CSP在两次会话之间保存所有密鈅容器,包括所有属于它的公/私鈅对(public/private key pairs)。但会话密鈅在两次会话之间(session keys)不被保存。

尽管在计算机中可以找出这些密鈅来,但这些密鈅是以一种加密的安全格式保存的。

通常,会为每个用户创建一个默认的密鈅容器。这个密鈅容器是以用户的登录名来命名的,之后任何程序都可以使用它。应用程序自己也可以创建自己的密鈅容器和密鈅对,应用可以自己起名。

密鈅

会话密鈅

会话密鈅被用在加密和解密数据时。应用使用 CryptGenKey 或者CryptDeriveKey 函数来创建它。CSP将密鈅安全的保存在内部。

与密鈅对不同,会话密鈅是可变的。应用可以将密鈅保存下来以备后用或者用CryptExportKey函数以加密的密鈅二进制大对象或密鈅blob(key binary large object or key blob)形式将密鈅导出到应用中,然后传输给其它人。

公鈅、私鈅对

每个用户通常都有两对公鈅/私鈅对。一对用于加密会话密鈅,另一对用于创建数字签名。它们分别叫做密鈅交换( key exchange )密鈅对与签名(signature)密鈅对。

注意,尽管大多数CSP创建的密鈅容器会包含两对密鈅对,但这不是必须的。一些CSP根本不存储密鈅对,而另一些会存储额外的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有