密钥
时间:2006-07-29 来源:winxbin
密钥 所有的密钥都使用CSP储存,CSP负责建立和吊销密钥,并使用密钥进行各种于加密相关的操作。
4.1 会话密钥 会话密钥主要用于对称加密算法的加密和解密,这意味着加密和解密使用的是同一个密钥。 应用程序可以任意创建会话密钥来加密信息,然而,这些密钥并不受到CSP有会话到会话的维护。如果你想使用长周期的密钥,你必须从CSP中导出密钥作长期储存。 会话密钥使用CryptoAPI里的CryptoGenKey创建。当密钥创建后,便可以定义稍后进行加密解密操作的算法,这个算法必须受到CSP的支持。 多属于会话密钥的行为必须保密,使尽量少的人拥有会话密钥是十分重要的(推荐一到两个人)。
4.2 公钥私钥对 公钥私钥对包含两个部分:公钥和私钥。公钥可以广泛的分发,而私钥必须保密,只有公钥私钥对的所有者可以拥有私钥。 对于每个用户而言,CSP通常维护两个公钥私钥对:交换密钥对和数字签名密钥对,这些密钥受到会话到会话的保护。 交换密钥对用来加密会话密钥以保证会话密钥可以被安全地储存和与其他用户交换。 数字签名密钥对用来对信息摘要(Message Digest,或称为Hash值)进行数字签名。 将两个密钥分开的原因很多。例如,一些CSP可能选择使用一种算法来加密会话密钥,另一种用来进行数字签名。这是因为一些数字签名算法不适用于加密和交换密钥,反之亦然。
5.数据加密
5.1 概述 使用数据加密,可以使明文信息被编码成乱码,如果不是用密钥就很难将其还原。在这里,信息特指数据块。信息可以使文本文档、数据库文件或其他人后你想安全储存或传说的数据。明文指未经加密的数据,密文则指经过加密的数据。 一旦信息被加密,它便可以安全地储存在非安全介质上,或在非安全网络上进行传输。 加密信息使用了加密密钥,正如一把锁对应一把钥匙,解密便要使用解密密钥。保管好解密密钥是十分重要的,因为任何人一旦拥有解密密钥,都能使用它解密经过这个密钥加密的信息。需要指出的是,加密密钥与解密密钥通常是相同的。 说起来可能会令你吃惊,数据加密解密并不困难,困难的是保证密钥的安全,以及安全地将密钥交给其他用户。
5.2 数据加密技术
5.2.1 流加密(Stream Cipher) 从理论上来讲,流加密算法每次加密一位(Bit),明文流从一边流进,密文流从另一边流出。而实际上,数据加密通常以字节(Byte)为单位。 虽然安全性依赖于不同的算法,流加密的安全性仍被认为不如块加密。但是,流加密的速度往往要比块加密快。此外,经过流加密算法加密过的数据大小与原来的大小相等。 使用流加密算法所产生的错误的涟漪效应也更少。当密文中有一位遭到篡改,许多流加密算法就只产生一位遭到破坏的数据。而在块加密算法中,与遭到篡改的那一位在一起的整块数据都将遭到破坏。 Microsoft RSA Base Provider所提供的唯一的流加密算法使RC4。
5.2.2 块加密(Block Cipher) 块加密算法加密数据以块(Block)为单位,而不是一位。块的大小通常是64位。 因为每一块都受到了安全的处理,所以,一般认为块加密更安全。但是,块加密的速度却很慢。 Microsoft RSA Base Provider提供了RC2用于块加密。 下面是在120 MHz 奔腾处理器下通过CryptoAPI得到的数据:
加密算法 加密模式 密钥生成时间 (ms) 加密速度 (bps) DES 64位块加密 460 1,138,519 RC2 64位块加密 40 286,888 RC4 流加密 151 2,377,723
6.信息摘要与数字签名
6.1 概述 如果你想以明文的形式分发信息,但又希望保证信息在离手后不会遭到更改,那么,你可以使用数字签名(Digital Signature)。数字签名并不改变信息本身,它生成一串简单的字符串,你可以将它与信息绑定在一起,也可以分开来储存或传输。 数字签名由公钥签名算法产生。私钥用于生成签名,公钥用于使签名生效。 在任意一个网络中,都运行着一个受信的的程序,这就是CA(认证中心,Certification Authority)。这个应用程序知道每个用户的公钥。CA以证书(Certificate)的形式分发包含每个客户端的公钥的信息。每个证书由CA的私钥签名。包含签名者公钥的证书通常与被签名的信息放在一起,以便与修改签名。 使用CryptoAPI提供的相关函数可以使用户方便地对数据进行签名。 数字签名包含一些二进制数据(通常不多于256字节)。Microsoft RSA Base Provider根据RSA PKCS #6(RSA公钥加密标准#6,RSA Public-Key Cryptography Standard #6)来生成数字签名。
6.2 数字签名如何工作 生成一个数字签名主要有两个步骤:首先从信息创建信息摘要,在用公钥进行数字签名。 要更改签名,信息与签名都是必要的。正如创建签名,首先从信息创建签名,在用公 公钥名这个摘要,若信息摘要与原签名匹配,便可以确定这个信息未遭到更改。 信息摘要同样包含一些二进制数据(通常在160位左右)。信息摘要主要包含以下几个 特点: 1.不管信息有多长,信息摘要的长度是固定的。信息可以是几KB,也可以是几GB,都没有关系。 2.使用相同的算法计算相同的信息的信息摘要,信息摘要始终是不变的。 3.所有的信息摘要算法(Hash Algorithms)都是不可逆的。即给定一个信息摘要,是不可能将其还原为信息的。
7.信息安全与密码 通过上面的介绍,相信你已经知道怎样回答前言中的问题了吧!可能你觉得这些东西离自己太远,用处不大。好了,下面让我们回到实际,举一个简单的应用例子来结束文章。 在普通的计算机上是没有绝对安全的密码的,因为目前几乎所有的系统密码都使用DES(参见第3.1.2节)加密的。正如3.1.2节中的叙述,有效的密码只有8位,超过8位的密码都是无效的。 因为设定密码的是人而不是计算机,所以就存在安全与不安全的密码之分。安全的密码可以让计算机算5000年,而不安全的密码一猜即可猜出。 安全的密码拥有以下特点: 1. 位数大于6; 2. 大小写字母混合; 3. 将数字无序地加在字母中; 4. 系统用户一定要用8位密码,并包含“!@#$%^&*()<>?{}[]=-\|/.,’;””等符号。 非安全密码有以下形式: 1. 使用账号做密码; 2. 使用账号的变换形式做密码; 3. 使用自己或亲友的生日做密码; 4. 使用常见的单词做密码; 5. 使用五位或以下的字符做密码。
8.总结 总之,信息安全离不开密码,密码不单单是一串字符串,而是一门学问。密码学是信息安全的基础。信息安全在当今社会是一个十分重要的领域。密码学的发展对信息安全起到领航作用。 相信当某种加密算法被破解后,你也不会再用这种算法去对你的信息进行加密了。密码学是在不断发展的,它的发展也离不开数学和通讯学科的发展。要保证信息安全,只能随着密码学的发展而不断更新信息安全的策略。 |
|
||
19:47 | | | 固定链接 | 引用通告 (0) | 记录它 | 计算机与 Internet |
|
||||||||
信息安全与密码(2) |
3.对称加密与非对称加密 通过上一部分的介绍,想必你已经对Windows中的加密工作流程有所了解了吧!算法是加密解密的核心,在这个部分,你将看到有关算法的详细情况。
3.1 对称加密
3.1.1 概述 对称加密算法(Symmetric Encryption Algorithms)是加密算法中最常见的类型。他们之所以被称为对称加密,是因为在加密和解密时所使用的密码是相同的,即“一把所对应一把钥匙”。与非对称加密不同,对称加密的密钥经常改变,这些密钥被称为会话密钥(Session Key)。此外,对称加密的速度还非常快,因此,它常被用来加密大型数据。常见的对称加密算法由RC2,RC4和DES。
3.1.2 DES简介 美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的(通常称为DES 密码算法要求)主要为以下四点: 1.提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改; 具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握; 2.DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础; 3.实现经济,运行有效,并且适用于多种完全不同的应用。 1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES,Data Encryption Standard)。 DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。 DES算法是这样工作的:如Mode为加密,则用Key 去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。 通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。
3.2 非对称加密
3.2.1 概述 非对称加密算法(Asymmetric Encryption Algorithms)又被称为公钥加密算法(Public-Key Encryption Algorithms),它使用两个不同的密钥:公钥和私钥。私钥由用户自己保留,而公钥可以任意分发。如果其中一个密钥被用来加密信息,则需要用另一个密钥来解密信息。公钥加密的速度极慢,比对称加密慢1000倍。所以,公钥算法常用于加密会话密钥,当然,它也用于进行数字签名。最常见的公钥加密算法使RSA公钥加密(RSA Public-Key Cipher)。
3.2.2 RSA简介 RSA是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。 RSA算法的简单流程如下:
首先, 找出三个数, p, q, r,
接著, 找出 m, 使得 rm == 1 mod (p-1)(q-1).....
编码过程是, 若资料为 a, 将其看成是一个大整数, 假设 a < n....
解码的过程是, 计算 c == b^r mod pq (0 <= c < pq),
如果第三者进行窃听时, 他会得到几个数: m, n(=pq), b...... RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。 RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET( Secure Electronic Transaction )协议中要求CA采用比特长的密钥,其他实体使用比特的密钥。 |
|
||
19:40 | | | 固定链接 | 引用通告 (0) | 记录它 | 计算机与 Internet |
|
||||||||
信息安全与密码(1) | ||||||||||||||||||||||||||||||||||||||||||||||||||
1.前言 什么是密码?我想这个问题人人都会回答吧!我们通常接触的密码都是一串字符串,例如系统账户密码以及一些加密软件加密文件所需的密码。这些密码的重要性就更不用说了吧!不管是文件安全和系统安全都离不开密码。 密码技术是保护信息安全的主要手段之一。密码技术自古有之,到目前为止,已经从外交和军事领域走向公开,它并且是结合数学、计算机科学、电子与通信等诸多学科于一身的交叉学科,它不仅具有保证信息机密性的信息加密功能, 而且具有数字签名、身份验证、秘密分存、系统安全等功能。所以,使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整性和确定性,防止信息被篡改、伪造和假冒。 本文主要从windows加密系统,加密类型,数字签名等方面阐述了信息安全与密码的关系,并且也提到了部分常用的加密算法。当你读完此文章时,相信你会对“加密”这个词有了进一步的认识,同时,本文的目标并不是让你看完这篇文章后马上掌握复杂的加密算法。本文的目标是让你对信息安全与加密有个总体的概念。
2.Windows里的加密系统(Cryptosystem)
2.1 关于CSP CSP,即Cryptography Service Provider(加密系统提供程序)。顾名思义,CSP以一个库(Library)的形式出现,它提供加密和解密服务,有的也提供数字签名服务(参见“信息摘要与数字签名”部分)。不同的CSP有不同的工作方式,有的提供强有力的加密算法,有的则会使用硬件组件,如智能卡。 除了一些特殊的CSP之外,多数CSP是不会与用户直接沟通的,那么,我们是怎样用CSP进行加密的呢?
2.2 Microsoft CryptoAPI Microsoft CryptoAPI(Cryptography Application Program Interface,加密编程接口)提供了一系列函数,让编程人员方便的进行加密程序的编写,而无需了解CSP的底层执行。
CryptoAPI处于应用程序和CSP(cryptographic service provider)之间(见图一)。 CryptoAPI的编程模型同Windows系统的图形设备接口 GDI比较类似,其中加密服务提供者CSP等同于图形设备驱动程序 ,加密硬件(可选)等同于图形硬件,其上层的应用程序也类似,都不需要同设备驱动程序和硬件直接打交道。 再Win32™环境中,加密编程接口由crypto32.dll文件提供,编程人员通过这个库编写软件,最后,具有信息安全保护功能的程序就能够方便地让用户使用了。(在Microsoft .NET 框架中,mscorlib.dll同样提供类似的功能)
2.3 Windows里的CSP---Microsoft RSA Base Provider 在Windows中,所有的安全服务都是由基于Microsoft RSA Base Provider的,因此,接下来的内容也是特指在Windows环境中的情况。其实CSP是真正实行加密的独立模块,他既可以由软件实现也可以由硬件实现。但是他必须CryptoAPI接口的规范。每个CSP都有一个名字和一个类型。每个CSP的名字是唯一的,这样便于CryptoAPI找到对应的CSP。目前已经有9种CSP类型,并且还在增长。下表列出出它们支持的密钥交换算法、签名算法、对称加密算法和Hash算法。
|