加密算法常识及密码学基本知识
- 格式:doc
- 大小:86.50 KB
- 文档页数:26
密码基础知识密码学是一门研究如何保护信息安全,实现信息隐蔽与伪装的学科。
它涉及到许多基础知识,以下是一些主要的概念:密码学基本概念:密码学是研究编制密码和破译密码的技术科学,主要目的是保护信息的机密性、完整性和可用性。
它包括密码编码学和密码分析学两个分支。
加密算法:加密算法是用于将明文(可读的信息)转换为密文(不可读的信息)的一种数学函数或程序。
常见的加密算法包括对称加密算法(如AES)和非对称加密算法(如RSA)。
解密算法:解密算法是用于将密文转换回明文的一种数学函数或程序。
它通常与加密算法相对应,使用相同的密钥或不同的密钥(取决于加密算法的类型)来执行解密操作。
密钥:密钥是用于加密和解密信息的秘密参数。
在对称加密中,加密和解密使用相同的密钥;在非对称加密中,加密和解密使用不同的密钥(公钥和私钥)。
密码分析:密码分析是研究如何破译密码的一门科学。
它涉及到对加密算法、密钥和密文的分析,以尝试恢复出原始的明文信息。
密码协议:密码协议是用于在网络环境中实现安全通信的一系列规则和约定。
常见的密码协议包括SSL/TLS(用于保护Web通信)和IPSec(用于保护IP层通信)。
散列函数:散列函数是一种将任意长度的输入数据映射为固定长度输出的数学函数。
在密码学中,散列函数通常用于生成消息的摘要,以确保消息的完整性。
数字签名:数字签名是一种用于验证消息来源和完整性的技术。
它涉及到使用私钥对消息进行加密(或签名),然后使用公钥进行解密(或验证签名)。
我们可以继续深入探讨密码学的一些进阶概念和原理:密码体制分类:对称密码体制:加密和解密使用相同的密钥。
优点是加密速度快,缺点是密钥管理困难。
常见的对称加密算法有DES、AES、IDEA等。
非对称密码体制(公钥密码体制):加密和解密使用不同的密钥,其中一个密钥(公钥)可以公开,另一个密钥(私钥)必须保密。
优点是密钥管理简单,缺点是加密速度慢。
常见的非对称加密算法有RSA、ECC(椭圆曲线加密)等。
密码学基础(一)常见密码算法分类对称算法是指一种加密密钥和解密密钥相同的密码算法,也称为密钥算法或单密钥算法。
该算法又分为分组密码算法(Block cipher)和流密码算法(Stream cipher)。
•分组密码算法o又称块加密算法o加密步骤一:将明文拆分为 N 个固定长度的明文块o加密步骤二:用相同的秘钥和算法对每个明文块加密得到 N 个等长的密文块o加密步骤三:然后将 N 个密文块按照顺序组合起来得到密文•流密码算法o又称序列密码算法o加密:每次只加密一位或一字节明文o解密:每次只解密一位或一字节密文常见的分组密码算法包括 AES、SM1(国密)、SM4(国密)、DES、3DES、IDEA、RC2 等;常见的流密码算法包括 RC4 等。
•AES:目前安全强度较高、应用范围较广的对称加密算法•SM1:国密,采用硬件实现•SM4:国密,可使用软件实现•DES/3DES:已被淘汰或逐步淘汰的常用对称加密算法二、非对称密码算法(Asymmetric-key Algorithm)非对称算法是指一种加密密钥和解密密钥不同的密码算法,也称为公开密码算法或公钥算法。
该算法使用一个密钥进行加密,另一个密钥进行解密。
•加密秘钥可以公开,又称为公钥•解密秘钥必须保密,又称为私钥常见非对称算法包括 RSA、SM2(国密)、DH、DSA、ECDSA、ECC 等。
三、摘要算法(Digest Algorithm)算法是指将任意长度的输入消息数据转换成固定长度的输出数据的密码算法,也称为哈希函数、哈希函数、哈希函数、单向函数等。
算法生成的定长输出数据称为摘要值、哈希值或哈希值,摘要算法没有密钥。
算法通常用于判断数据的完整性,即对数据进行哈希处理,然后比较汇总值是否一致。
摘要算法主要分为三大类:MD(Message Digest,消息摘要算法)、SHA-1(Secure Hash Algorithm,安全散列算法)和MAC(Message Authentication Code,消息认证码算法);另国密标准 SM3 也属于摘要算法。
密码学基础知识密码学是一门研究数据的保密性、完整性以及可用性的学科,广泛应用于计算机安全领域、网络通信以及电子商务等方面。
密码学的基础知识是研究密码保密性和密码学算法设计的核心。
1. 对称加密和非对称加密在密码学中,最基本的加密方式分为两类:对称加密和非对称加密。
对称加密通常使用一个密钥来加密和解密数据,同时密钥必须保密传输。
非对称加密则使用一对密钥,分别为公钥和私钥,公钥可以公开发布,任何人都可以用它来加密数据,但只有私钥持有人才能使用私钥解密数据。
2. 散列函数散列函数是密码学中常用的一种算法,它将任意长度的消息压缩成一个固定长度的摘要,称为消息摘要。
摘要的长度通常为128位或更长,主要用于数字签名、证书验证以及数据完整性验证等。
常见的散列函数有MD5、SHA-1、SHA-256等。
3. 数字签名数字签名是一种使用非对称加密技术实现的重要保密机制,它是将发送方的消息进行加密以保证消息的完整性和真实性。
发送方使用自己的私钥对消息进行签名,然后将消息和签名一起发送给接收方。
接收方使用发送方的公钥来验证签名,如果消息被篡改或者签名无法验证,接收方将拒绝接收消息。
4. 公钥基础设施(PKI)PKI是一种包括数字证书、证书管理和证书验证的基础设施,用于管理数字证书和数字签名。
数字证书是将公钥与其拥有者的身份信息结合在一起的数字文件,它是PKI系统中最重要的组成部分之一。
数字证书通过数字签名来验证其真实性和完整性,在通信和数据传输中起着至关重要的作用。
总之,密码学是计算机科学中重要的领域之一,其应用广泛,影响深远。
掌握密码学基础知识非常有必要,对于安全性要求较高的企业和组织来说,更是至关重要。
密码学的基础知识与应用密码学是一门研究如何保护信息安全的学科,是信息安全领域中重要的一环。
本文将从密码学的基础知识和应用两个方面来探讨这门学科。
一、密码学的基础知识密码学的基础知识包括加密算法、解密算法和密钥管理。
1.加密算法加密算法是将明文变为密文的过程。
常见的加密算法有对称加密算法和非对称加密算法两种。
对称加密算法是指加密和解密使用相同密钥的算法。
例如,DES (Data Encryption Standard)、AES(Advanced Encryption Standard)等都属于对称加密算法。
对称加密算法的优点是加密解密速度快,密文加密难度大,缺点是密钥管理问题,如果密钥泄露则很容易被破解。
非对称加密算法是指加密和解密使用不同密钥的算法。
例如,RSA、DSA等都属于非对称加密算法。
非对称加密算法的优点是密钥管理便利,密钥可以公开,缺点是加解密速度较慢。
2.解密算法解密算法是将密文还原为明文的过程。
解密算法通常是对称加密算法的逆运算或非对称加密算法的配对算法。
例如,RSA的解密算法是通过对公钥和密文进行运算得出明文,而对称加密算法的解密算法则是通过使用加密时所用的密钥对密文进行运算。
3.密钥管理密钥管理是指对加密算法中的密钥进行管理的过程。
密钥管理包括密钥的生成、存储、传递、更新和撤销等一系列操作。
密钥的管理工作直接影响加密算法的安全性。
二、密码学的应用密码学的应用非常广泛,包括网络安全、数据传输、数字签名、身份验证等方面。
1.网络安全网络安全是密码学应用的重要领域之一。
网络安全的主要目的是保护计算机网络中的数据免受未经授权的访问、窃取、破坏和攻击。
密码学在网络安全中的应用主要包括数据加密、数字签名和身份认证等方面。
数据加密是保护网上通讯中数据的安全的重要手段。
在网上通讯的过程中,如果数据不加密,那么黑客可以窃取数据并进行恶意攻击。
因此,需要使用对称加密算法或非对称加密算法对数据进行加密,以保证数据安全。
密码基础算法知识点总结密码学是计算机科学的一个分支,主要研究数据的保护和安全性。
密码算法是密码学的一个重要组成部分,它用于数据加密和解密。
在信息安全领域中,密码算法被广泛应用于保护通信数据、网络数据、存储数据等方面。
密码算法的安全性直接影响着信息的保密性和完整性,并且也是信息安全的一个重要基础。
密码算法知识点总结如下:1. 对称加密算法对称加密算法也称为私钥加密算法,它使用一个密钥进行加密和解密过程。
常见的对称加密算法有DES、3DES、AES等。
对称加密算法的优点是加密和解密速度快,但密钥管理较为复杂,安全性较低。
2. DES算法DES算法是一种对称加密算法,采用56位密钥,有8位校验位,所以实际上是64位。
DES算法的加密过程主要包括初始置换、16轮迭代加密、逆初始置换三个步骤,解密过程与加密过程相反。
3. 3DES算法3DES算法是对DES算法的加强,它采用了三个相同或不同的密钥,对数据进行三次加密和解密。
3DES算法的安全性比DES算法更高。
4. AES算法AES算法是一种高级加密标准,采用对称加密算法,它的密钥长度支持128位、192位和256位。
AES算法的特点是安全性高、速度快。
5. 非对称加密算法非对称加密算法也称为公钥加密算法,它使用一对密钥进行加密和解密,其中一个为公钥,另一个为私钥。
常见的非对称加密算法有RSA、ElGamal、ECC等。
非对称加密算法的优点是密钥管理简单,安全性高,但加密和解密速度较慢。
6. RSA算法RSA算法是一种非对称加密算法,基于大数分解的数学难题。
RSA算法的安全性依赖于大数分解的困难性,目前还未有有效的算法可以快速有效地分解大数。
7. 数字签名数字签名是一种用于验证文件或数据完整性和来源的技术,它使用私钥对文件或数据进行签名,然后使用公钥对签名进行验证。
数字签名主要用于保护文件的完整性和防止抵赖。
8. 消息摘要算法消息摘要算法也称为哈希算法,它将任意长度的消息或文件转换为固定长度的摘要值。
标题:加密算法的一些常识admin等级:管理员文章:94积分:493门派:无门无派注册:2002年5月19日楼主-------------------------------------------------------------------------------- 加密算法的一些常识加密算法很容易理解啦,就是把明文变成人家看不懂的东西,然后送给自己想要的送到的地方,接收方用配套的解密算法又把密文解开成明文,这样就不怕在路世上如果密文给人家截获而泄密。
加密算法有俩大类,第一种是不基于KEY的,举个简单的例子,我要加密"fordesign"这么一串字符,就把每个字符都变成它的后一个字符,那么就是"gpseftjhm"了,这样的东西人家当然看不明白,接收方用相反的方法就可以得到原文。
当然这只是个例子,现在应该没人用这么搞笑的加密算法了吧。
不基于KEY的加密算法好象一直用到了计算机出现。
我记得古中国军事机密都是用这种方式加密的。
打战的时候好象军队那些电报员也要带着密码本,也应该是用这种方式加密的。
这种算法的安全性以保持算法的保密为前提。
这种加密算法的缺点太明显了,就是一旦你的加密算法给人家知道,就肯定挂。
日本中途岛惨败好象就是密码给老米破了。
设计一种算法是很麻烦的,一旦给人破了就没用了,这也忑浪费。
我们现在使用的加密算法一般是基于key的,也就是说在加密过程中需要一个key,用这个key来对明文进行加密。
这样的算法即使一次被破,下次改个key,还可以继续用。
key是一个什么东西呢?随便你,可以是一个随机产生的数字,或者一个单词,啥都行,只要你用的算法认为你选来做key的那玩意合法就行。
这样的算法最重要的是:其安全性取决于key,一般来说取决于key的长度。
也就是说应该保证人家在知道这个算法而不知道key的情况下,破解也相当困难。
其实现在常用的基于KEY的加密算法在网络上都可以找到,很多革命同志(都是老外)都在想办法破解基于key的加密算法又包括俩类:对称加密和不对称加密。
密码学知识点总结csdn1. 密码学基础密码学基础包括对称加密、非对称加密、哈希函数、消息认证码等概念的介绍。
对称加密即加密和解密使用相同的密钥,常用算法有DES、AES、RC4等;非对称加密则分为公钥加密和私钥解密,常用算法有RSA、ECC等;哈希函数则是将任意长度的消息压缩为固定长度的摘要信息,常用算法有MD5、SHA-1、SHA-256等;消息认证码是在消息传输中保障数据完整性的重要手段,主要分为基于对称加密的MAC和基于非对称加密的数字签名。
2. 随机数生成密码学安全性的基础在于随机数的生成,常用的随机数生成算法有伪随机数生成器(PRNG)和真随机数生成器(TRNG)。
PRNG是通过确定性算法生成随机数,安全性依靠其内部逻辑结构;TRNG则是依靠物理过程生成随机数,如放射性衰变、指纹图像等,安全性更高。
密码学攻击主要分为三类:密码分析攻击、椭圆曲线攻击和量子攻击。
密码分析攻击是通过推测、猜测等方法攻破密码;椭圆曲线攻击是因为非对称加密算法中的基于椭圆曲线离散对数问题存在可解性,从而破解密码;量子攻击则是通过量子计算机的强大计算能力破解传统密码学算法。
4. 密码学综合应用密码学在实际应用中广泛应用于电子邮件加密、数字证书、数字签名、数字支付、VPN安全通信等领域。
其中,AES算法被广泛应用于SSL/TLS等加密通信协议中;RSA算法则是数字证书和电子邮件加密中最常用的算法;数字签名则应用于身份认证、电子合同、电子票据等领域;数字支付则依赖于密码学原理来保证支付的安全性。
5. 密码学的未来发展当前,密码学面临着来自量子计算机的挑战,需要进一步开发抗量子攻击的加密算法。
同时,在移动互联网、物联网等领域中,新的安全需求也对密码学技术提出了挑战。
未来发展的重点可能包括量子密码学研究、密码学与人工智能技术的结合等方面。
总之,密码学是信息安全的重要组成部分,掌握相关知识点将有助于提高信息安全意识和防范风险能力。
网络安全基础知识密码学与加密技术随着互联网的迅猛发展,网络安全问题日益突出。
为了保护个人和组织的信息安全,密码学与加密技术成为网络安全的重要组成部分。
本文将介绍密码学的基本概念,以及常见的加密技术和应用。
一、密码学基础知识密码学是研究信息保密和验证的科学,主要包括加密和解密两个过程。
加密是将明文转化为密文的过程,而解密则是将密文恢复为明文的过程。
密码学基于一系列数学算法和密钥的使用来保证信息的保密性和完整性。
以下是密码学中常见的一些基本概念:1.1 明文与密文明文是指原始的未经加密的信息,而密文则是通过加密算法处理后的信息。
密文具有随机性和不可读性,只有持有正确密钥的人才能解密得到明文。
1.2 密钥密钥是密码学中非常重要的概念,它是加密和解密过程中使用的参数。
密钥可以分为对称密钥和非对称密钥两种类型。
对称密钥加密算法使用相同的密钥进行加解密,而非对称密钥加密算法使用公钥和私钥进行加解密。
1.3 算法密码学中的算法是加密和解密过程中的数学公式和运算规则。
常见的密码学算法包括DES、AES、RSA等。
这些算法在保证信息安全的同时,也需要考虑运算速度和资源消耗等因素。
二、常见的加密技术2.1 对称加密算法对称加密算法是指加密和解密使用相同密钥的算法,也被称为共享密钥加密。
这种算法的特点是运算速度快,但密钥传输和管理较为困难。
常见的对称加密算法有DES、AES等。
2.2 非对称加密算法非对称加密算法是指加密和解密使用不同密钥的算法,也被称为公钥加密。
这种算法的优点是密钥的传输和管理相对简单,但加解密过程相对较慢。
常见的非对称加密算法有RSA、DSA等。
2.3 哈希算法哈希算法是一种将任意长度数据转换为固定长度摘要的算法。
它主要用于验证数据的完整性和一致性。
常见的哈希算法有MD5、SHA-1、SHA-256等。
三、密码学与加密技术的应用3.1 数据加密密码学与加密技术广泛应用于数据加密领域。
通过对敏感数据进行加密,可以防止未经授权的访问和篡改。
密码学基本概念
密码学是一门研究保护信息安全的学科,其基本目标是保证信息在传输过程中不被非法获取和篡改。
在密码学中,有一些基本概念需要了解。
1. 密码学基础
密码学基础包括加密、解密、密钥、明文和密文等概念。
加密是将明文转换为密文的过程,解密则是将密文还原为明文的过程。
密钥是用于加密和解密的秘密码,明文是未经过加密的原始信息,密文则是加密后的信息。
2. 对称加密算法
对称加密算法指的是加密和解密时使用同一个密钥的算法,如DES、AES等。
在对称加密算法中,密钥必须保密,否则会被攻击者轻易获取并进行破解。
3. 非对称加密算法
非对称加密算法指的是加密和解密时使用不同密钥的算法,如RSA、DSA等。
在非对称加密算法中,公钥用于加密,私钥用于解密。
公钥可以公开,私钥必须保密,否则会被攻击者轻易获取并进行破解。
4. 数字签名
数字签名是用于保证信息的完整性和真实性的技术。
数字签名使用非对称加密算法,签名者使用私钥对信息进行加密,接收者使用公钥进行验证。
如果验证通过,则说明信息未被篡改过。
5. Hash函数
Hash函数是一种将任意长度的消息压缩成固定长度摘要的函数,常用于数字签名和消息验证。
Hash函数具有不可逆性,即无法通过消息摘要还原出原始数据。
以上就是密码学的基本概念,掌握这些概念对于理解密码学的原理和应用非常重要。
密码科普小知识1. 密码学基本概念:密码学(Cryptography)是一门研究如何隐匿信息以确保其安全性的学科,包括加密算法的设计、分析以及各种密码系统的应用。
2. 加密与解密:加密是将明文(原始信息)通过特定的算法转化为密文的过程,目的是防止未经授权的人获取和理解信息内容。
解密则是将密文还原为原来的明文过程,只有拥有正确密钥的人才能进行有效解密。
3. 对称加密与非对称加密:对称加密(如DES、AES等):加密和解密使用同一密钥,优点是速度快效率高,但密钥管理相对复杂,需要保证密钥在通信双方的安全传输。
非对称加密(如RSA、ECC等):使用一对公钥和私钥,公钥用于加密,私钥用于解密。
安全性更高,因为私钥不需要在网络上传输。
4. 哈希函数:哈希函数(Hash Function)是一种特殊的密码学算法,它可以将任意长度的消息压缩成固定长度的摘要,如MD5、SHA 系列等,主要用于数据完整性校验和密码存储等领域。
5. 数字签名:数字签名利用非对称加密技术,确保信息的完整性和发送者的身份真实性,发送者用自己的私钥对消息摘要进行加密形成数字签名,接收者用发送者的公钥验证签名的真实性。
6. 密钥管理:密钥管理是密码学中的重要环节,涉及密钥的生成、分发、更新、撤销及销毁等一系列操作,对于信息安全至关重要。
7. 安全协议:SSL/TLS(Secure Sockets Layer/Transport Layer Security)协议广泛应用于互联网安全通信,采用混合加密方式确保网络数据传输的安全性。
8. 密码学的应用领域:除了传统的网络安全,现代密码学还应用于数字货币(如比特币中的椭圆曲线加密)、云计算环境的数据保护、物联网设备的身份认证等诸多场景。
加密算法的一些常识加密算法很容易理解啦,就是把明文变成人家看不懂的东西,然后送给自己想要的送到的地方,接收方用配套的解密算法又把密文解开成明文,这样就不怕在路世上如果密文给人家截获而泄密。
加密算法有俩大类,第一种是不基于KEY的,举个简单的例子,我要加密"fordesign" 这么一串字符,就把每个字符都变成它的后一个字符,那么就是"gpseftjhm"了,这样的东西人家当然看不明白,接收方用相反的方法就可以得到原文。
当然这只是个例子,现在应该没人用这么搞笑的加密算法了吧。
不基于KEY的加密算法好象一直用到了计算机出现。
我记得古中国军事机密都是用这种方式加密的。
打战的时候好象军队那些电报员也要带着密码本,也应该是用这种方式加密的。
这种算法的安全性以保持算法的保密为前提。
这种加密算法的缺点太明显了,就是一旦你的加密算法给人家知道,就肯定挂。
日本中途岛惨败好象就是密码给老米破了。
设计一种算法是很麻烦的,一旦给人破了就没用了,这也忑浪费。
我们现在使用的加密算法一般是基于key的,也就是说在加密过程中需要一个key,用这个key来对明文进行加密。
这样的算法即使一次被破,下次改个key,还可以继续用。
key是一个什么东西呢?随便你,可以是一个随机产生的数字,或者一个单词,啥都行,只要你用的算法认为你选来做key的那玩意合法就行。
这样的算法最重要的是:其安全性取决于key,一般来说取决于key的长度。
也就是说应该保证人家在知道这个算法而不知道key的情况下,破解也相当困难。
其实现在常用的基于KEY 的加密算法在网络上都可以找到,很多革命同志(都是老外)都在想办法破解基于key的加密算法又包括俩类:对称加密和不对称加密。
对称加密指的是双方使用完全相同的key,最常见的是DES. DES3, RC4等。
对称加密算法的原理很容易理解,通信一方用KEK加密明文,另一方收到之后用同样的KEY来解密就可以得到明文。
不对称加密指双方用不同的KEY加密和解密明文,通信双方都要有自己的公共密钥和私有密钥。
举个例子比较容易理解,我们们假设通信双方分别是A, B.A, 拥有KEY_A1, KEY_A2, 其中KEY_A1是A的私有密钥,KEY_A2是A的公共密钥。
B, 拥有KEY_B1, KEY_B2, 其中KEY_B1是B的私有密钥,KEY_B2是B的公共密钥。
公共密钥和私有密钥的特点是,经过其中任何一把加密过的明文,只能用另外一把才能够解开。
也就是说经过KEY_A1加密过的明文,只有KEY_A2才能够解密,反之亦然。
通信过程如下:A-------->KEY_A2------------>BA<--------KEY_B2<------------A这个过程叫做公共密钥交换,老外管这叫key exchange.之后A和B就分别用对方的公共密钥加密,用自己的私有密钥解密。
一般公共密钥是要发布出去的,然后你通过自己的私有密钥加密明文,人家用你的公共密钥解密,如果能解开,那么说明你是加密人,这就是SSL使用的验证机制。
常用的不对称加密一般有RSA, DSA, DH等。
我们一般使用RSA.数字签名也是不对称加密算法的一个重要应用,理解它对于理解SSL很重要的,放在这里一起介绍一下。
签名是什么大家都很熟悉吧?证明该东西是你写的,是你发布的,你就用签名搞定。
看看那些重要文件都要头头签名。
数字签名就是数字化的签名了。
记得公用密钥和私有密钥的特征吗?只有你一个人有你自己的私有密钥。
而你的公用密钥是其他人都知道的了。
那么你在写完一封邮件之后,用自己的私有密钥加密自己的名字,接收人用你的公共密钥解开一看,哦,是你发的。
这就是你的数字签名过程了。
上面的解释是很简化的了,其实数字签名比这个复杂多了,但我们没有了解的必要,知道数字签名是这么一回事就可以了。
还有一种我们需要知道的加密算法,其实我不觉得那是加密算法,应该叫哈希算法,英文是message digest, 是用来把任何长度的一串明文以一定规则变成固定长度的一串字符串。
它在SSL中的作用也很重要,以后会慢慢提及的。
一般使用的是MD5, SHA.base64不是加密算法,但也是SSL经常使用的一种算法,它是编码方式,用来把asc码和二进制码转来转去的。
具体的加密解密过程我们不需要了解,因为SSL根本不关心。
但了解加密算法的一些基本原理是必要的,否则很难理解SSL。
对加密算法的细节有兴趣的同志,可以去网络上找这些加密算法的原理的文章和实现的程序来研究,不过先学数论吧。
不懂数论看那玩意还是一头雾水。
1.传统的加密方法传统的加密方法也称为密钥或对称加密,加密和解密过程使用同一个密钥.数据加密标准(DES)是传统加密方法的一个实例现在被(老美的)联邦政府广泛使用.传统加密方法的一个极简单的例子是置换密码(substitution cipher). 就是用一种信息替换另一种信息.常见的用法是将字母在字母表中偏移位置. 朱利叶.凯撒并不相信自己的信使,他把给前线将领文书中的A全部替换成D,B全部替换成E,用这样的方法来加密文书.以今天的标准来看这种方法太简单了,但这对凯撒很实用.这个例子描述了传统加密方法的原理.1.1 密钥管理和传统的加密方法传统加密方法是有优势的.它的速度很快,而且特别适用于不需要移动的数据.然而,由于安全地发布密钥非常困难,单独使用传统加密方法来安全传输数据的代价是非常昂贵的.在间谍影片中常可以看到这样的情节,特工将一个密码箱用手铐和自己的手腕铐在一起.密码箱中有什么呢?多数情况下里面不是导弹发射密码,不是化学公式,也不是入侵计划,而是用来解密的密钥.对于使用传统加密方法进行安全通讯的手法双方来说,他们必须拥有相同的密钥而且不能让别人知道.如果他们处在不同的物理位置,必须相信信使,加密电话或者其他的安全通讯介质,防止在传输过程中泄露密钥.在传输过程中,偷听或截获到密钥的任何人,就能够阅读,修改和伪造用这个密钥加密或认证的所有信息. 无论DES还是凯撒,传统加密方法的永恒问题就是密钥的发布,怎样才能使接收得到密钥而不被其他人截获呢?2.公开密钥加密法公开密钥加密法可以解决密钥发布的问题,公开密钥的概念由Whitfield Diffie&Martin Hellman在1975年提出.(现在有证据表明英国情报机关先于Diffie&Hellman几年发明了这种方法,但是却作为军事秘密,而且在这方面的工作什么也没做)公开密钥加密法是一种使用一对密钥的非对称加密手段.公钥用于加密,私钥用于解密公钥可以让所有人知道,而私钥却必须保密.任何人(甚至是你从未见过的人)用你的公钥加密的信息只有你可以看懂.想从公钥推导出私钥在计算上是不可行的.拥有公钥的人可以加密信息却不能将其解密,只有拥有对应私钥的人才能解密信息.公钥加密法的主要优势在于可以让事先没有安全通道的人安全地交换信息.收发双方通过安全通道共享密钥的前提条件不存在了.所有的通讯中只包含了公钥,私钥是不会传输或共享的.下面是一些公钥密码系统的例子:Elgamal 以其发明者Taher Elgamal的名字命名RSA发明者Ron Rivest, Adi Shamir, and Leonard AdlemanDiffie-Hellman 以发明者的名字命名DSA Digital Signature Algorithm (数字签名算法)发明者David Kravitz由于传统的加密方法曾经是传送秘密信息的唯一手段,保持安全通道和发布密钥的高昂费用将其应用范围限制在能够负担得起这些费用的用户中,比如政府或者大银行.公钥加密法是加密技术的革命,它可以为普通人提供强加密手段.还记得将密码箱铐在自己手腕上的特工信使吗,公钥加密法会使他失去工作(他自己可能很高兴这样)3.PGP如何工作PGP综合了传统加密方法和公开密钥加密方法的优点,是一种杂交的方法.当用户使用PGP来加密明文时,PGP首先压缩明文.数据压缩可以节省modem的传输时间和磁盘空间.更重要的是,压缩可以加强密文的安全性.绝大多数密码分析技术利用在明文中发现的模式(pattern)来破解密码.压缩可以减少明文中的模式,因此极大增强了对密码分析的抵抗力.(太短或不能被很好压缩的文件就不进行压缩)PGP接着生成一个会话钥(session key),这是一个一次性的密钥.会话钥是从用户鼠标的随机移动和击键中产生的一个随机数.会话钥和一个非常安全而快速的传统加密算法共同加密明文,结果就是密文.一旦数据被加密之后,就用接收者的公钥来加密会话钥.被公钥加密后的会话钥连同密文一起传送给接收者.解密工作与此相反.接收者的PGP工具使用他(她)自己的私钥来恢复临时的会话钥,然后PGP使用该会话钥来解密传统方法加密的密文.两种加密方法的组合既保留了传统方法的速度优势,又拥有公开密钥方法的方便性.传统加密方法的速度大约是公开密钥方法的1000倍,反过来公开密钥方法解决了密钥发布和数据传输的问题.二者结合起来,在没有牺牲任何安全性的情况下,性能和密钥发布都得到了提高.4.密钥(key)密钥是一个数值,它和加密算法一起生成特别的密文.密钥本质上是非常非常大的数.密钥的尺寸用位(bit)来衡量,1024位密钥代表的数是非常巨大的.在公开密钥加密方法中,密钥的尺寸越大,密文就越安全.然而,公钥的尺寸和传统加密方法中密钥的尺寸是不相关的.传统80位密钥的强度等同于1024位的公钥,传统128位密钥的强度等同于3000位的公钥.在同种加密算法中,密钥越大越安全.但是传统方法和公开密钥方法所用的加密算法不一样,因此它们的密钥尺寸不能直接比较.公钥和私钥是算术相关的,仅凭公钥推算出私钥是非常困难的.然而如果有足够的时间和计算能力,总是可能导出私钥的.这使得选择合适尺寸的密钥变得非常重要.为了安全需要足够大的密钥,为了速度有要足够小的密钥.而且,要考虑是谁想要读取你的文件,他有多大的决心,多少时间和多少可以利用的资源.长的密钥会在很长一段时间内是安全的.如果想保密许多年,应该选择非常长的密钥.当然,谁也不知道使用未来速度更快更有效的计算机来测定你的密钥会花费多长时间.曾经有一段时间人们认为56位的对称密钥是非常安全的.密钥以加密后的形式保存.PGP在硬盘的两个文件中保存密钥,一个文件保存公钥,另一个保存私钥.这两个文件称为钥匙环(keyrings).在使用PGP时,用户会经常向公钥环中加入接收者的公钥.用户自己的私钥保存在私钥环上.如果丢失了私钥环,就无法解密依赖于该环的加密信息.2003-10-17 0:31:47====================================================================== ===============密码学基本知识(二)5.数字签名公开密钥加密方法的一个主要优点是提供了数字签名的实现手段.数字签名使得信息的接收者能够验证信息来源的真实性,还能够验证信息是否完整.因此,公钥数字签名可以提供身份验证和数据完整性保证.数字签名还提供了不可抵赖的特性,该特性能够保证信息的发送者无法否认自己确实发送了这个信息.这些特性如同加密功能一样是整个密码系统的最基本功能.数字签名的目的和手写签名一样.然而手写签名很容易仿造,数字签名和手写签名的优势在于它几乎不可能被仿造,而且它在确认签名者身份的同时还能保证信息内容的完整性.有些人使用数字签名多于使用加密.比如:客户可能不在意任何人知道他往自己的银行户头存进1000块钱,但是客户必须确保自己在和银行的出纳员打交道,而不是其他任何人.数字签名和加密的基本工作模式很类似,只不过在签名时用自己的私钥加密而不是用别人的公钥.如果信息可以用你的公钥解密,那就能确定信息是由你发出的.5.1 哈希函数上面所描述的数字签名系统有一些问题.它的速度非常慢,而且会生成大量的数据--至少是原始信息的两倍.前述系统在处理过程中可以引入一种单向哈希函数来提高性能.单向哈希函数可以接受可变长度的输入--既然这样,输入可以是任意长的消息,甚至成千上万位--产生固定长度的输出;比如160位.哈希函数保证,如果信息不管以什么方式改变了--甚至只有1位变化--输出的结果会完全不同.PGP对用户签名的明文使用一种强哈希函数.这产生一个定长的数据,称为消息摘要(message digest).(再次强调,信息的任何改变都会生成完全不同的摘要.)然后PGP使用摘要和私钥来创建"签名".PGP将签名和明文一同传输.接收者一旦收到消息,就可以用PGP来重新计算摘要(并用发送者的公钥来解密签名得到原始摘要),据此接收者就可以验证签名.PGP对明文可以加密也可以不加密.对明文签名有时也很有用处,比如接收者可能没有兴趣或者没有能力来验证签名(这时他直接看明文就可以了).只要使用了安全哈希函数,就没办法从一篇文章上取下某人的签名而附加到另一篇文章上,同样也无法改变签过名的消息.签过名的文章哪怕是极小的改动,也会导致数字签名验证过程失败.数字签名在身份验证和确认其他PGP用户密钥的过程中扮演了很重要的角色.6.数字证书公开密钥密码系统的一个关键问题是使用者必须经常保持警惕,确保用正确的密钥来加密信息.在通过公共服务器来自由交换密钥的环境中,"中间人"攻击方式是一种潜在的威胁.在这种类型的攻击中,某人发布了一个假冒的密钥,该密钥所代表的用户名和用户ID正是使用者要发信的接收方.加密的数据被这个假密钥的拥有者截获后,就能获知数据的真正内容.在公开密钥环境中,保证加密所使用的公钥确实是接收者的公钥而不是假冒的,这是至关重要的.如果密钥是由接收者亲自交给你的,完全可以放心地用来加密,可是如果要同一个从未见过面的人交换信息,怎么保证手中握有正确的密钥.数字证书简化了确定公开密钥确实属于其所有者的工作.证书是某种形式的信任状.比如你的驾驶执照,社会保障卡, 或出生证明.这每一种证书都包含鉴别你身份的信息而且一些权威机构声明某些人已经证实了你的身份.某些证书, 比如护照,是身份非常重要的证明,不能丢失,也不能让别人冒充你.数字证书是功能上类似物理证书的数据.数字证书包括个人公钥的信息,这可以帮助别人验证密钥是真实的且合法的. 数字证书用于防止个人的密钥被调换.一个数字证书由三个部分组成:1.公开密钥.2.证书信息(用户的身份比如名字,用户ID等等).3.一个或多个数字签名.证书中数字签名的目的是声明证书的信息已经由某些人或实体证实.数字签名不能保证整个证书的真实性;它仅能保证其中签名的身份信息及其公钥的真实.因此证书基本上是由公钥及其一两种形式的附加ID构成,加上一些可信个人提供的热心证明标记.6.1 证书发布在有必要和其他人交换公钥时,证书就有用了.对于希望安全通讯的小集团用户来说,手工交换包含彼此公钥信息的磁盘和Email是非常容易的.这称作手工公钥发布,而且在某些时候是很实用的. 除此之外,必须给系统提供必要的安全,存储和交换机制,凭此合作者,商业伙伴,或陌生人可以互相安全通讯.这些可以形成称为证书服务器(Certificate Servers)的只存(storage-only)仓库,或者提供附加密钥管理特性的更加结构化的系统,即公开密钥基础(Public Key Infrastructures-PKIs)证书服务器证书服务器或称密钥服务器,是允许用户提交和获取数字证书的数据库.证书服务器通常提供一些管理特性,使单个公司可以维护自己的安全策略--比如,只允许符合特定要求的密钥进入服务器存储.公钥基础(Public Key Infrastructures--PKI)PKI包含证书服务器的证书存储功能,还提供证书管理能力(发布,回收,存储,获取和认证证书).PKI的主要特性是引入了所谓的认证权威(Certification Authority--CA),这是由人组成的实体--个人,团体,部门,公司或其他协会--该组织有权向计算机用户发布证书.(CA的角色类似于国家政府颁发护照的部门).CA创建证书并在上面用自己的私钥进行数字签名.由于CA在创建证书过程中的角色很重要, 因此它是PKI的核心.使用CA的公钥,想要验证证书真实性的任何人只要校验CA的数字签名就能确定证书内容的完整性和真实性(更为重要的是确认了证书持有者的公钥和身份).6.2 证书格式数字证书基本上是身份信息加上公开密钥并由可信的第三方签名以证明其真实性.数字证书可以是许多种不同格式中的一种.PGP承认两种不同的证书格式: PGP证书和X.509证书PGP证书格式一份PGP证书包括(但不仅限于)以下信息:<>PGP版本号-这指出创建与证书相关联的密钥使用了哪个PGP版本<>证书持有者的公钥-这是密钥对的公开部分,并且还有密钥的算法:RSA,DH(Diffie-Hellman),或DSA(数字签名算法).<>证书持有者的信息-这包括用户的身份信息,比如姓名,用户ID,照片等<>证书拥有者的数字签名-也叫做自签名,这是用与证书中的公钥相关的私钥生成的签名.<>证书的有效期-证书的起始日期/时间和终止日期/时间;指明证书何时失效.<>密钥首选的对称加密算法-指明证书拥有者首选的信息加密算法.支持的算法有:CAST,IDEA和Triple-DES.读者可能会把PGP证书想象成公钥及与其有关的一个或多个标签.在这些标签中,可以找到有关密钥拥有者的身份信息和密钥拥有者的签名, 这签名声明了密钥和身份信息是完整无缺的.(这种特殊的签名叫做自签名;每一个PGP证书都包含一个自签名.)PGP证书格式的一个特点是单个证书可能包含多个签名.也许有几个或许多人会在证书上签名,保证证书上的公钥明确属于某个人.在公共证书服务器上,读者可能会注意到某些证书,比如PGP的创建者Phil Zimmermann,包含许多签名.有些PGP证书由一个公钥和一些标签组成,每个标签包含确认密钥所有者身份的不同手段(例如:所有者的姓名和公司邮件帐户,所有者的绰号和家庭邮件帐户,所有者的照片---所有这些全都在一个证书里).每一个认证手段(每一个标签)的签名表可能是不同的;这些签名保证这个标签是属于证书中的公钥的,但其实并非所有的标签都是可信的. (注,这是客观意义上的可信---签名只是署名者对证书内容真实性的评价,在签名证实一个密钥之前,不同的署名者在认定密钥真实性方面所做的努力并不相同)X.509证书格式X.509是另一种非常通用的证书格式.所有的证书都符合ITU-T X.509 国际标准;因此(理论上)为一种应用创建的证书可以用于任何其他符合X.509标准的应用.但实际上,不同的公司对X.509证书进行了不同的扩展,不是所有的证书都彼此兼容.在一份证书中,必须证明公钥及其所有者的姓名是一致的.对PGP证书来说,任何人都可以扮演认证者的角色.对X.509证书来说,认证者总是CA或由CA指定的人.(其实PGP证书也完全支持使用CA来确认证书的体系结构)一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息.X.509标准定义了证书中应该包含哪些信息,并描述了这些信息是如何编码的(即数据格式).所有的X.509证书包含以下数据:<>X.509版本号-指出该证书使用了哪种版本的X.509标准,版本号会影响证书中的一些特定信息.目前的版本是3.<>证书持有人的公钥-包括证书持有人的公钥,算法(指明密钥属于哪种密码系统)的标示符和其他相关的密钥参数.<>证书的序列号-创建证书的实体(组织或个人)有责任为该证书指定一个独一无二的序列号,以区别于该实体发布的其他证书.序列号信息有许多用途;比如当一份证书被回收以后,它的序列号就被放入证书回收列表(CRL)之中.<>证书持有人唯一的标示符-(或称DN-distinguished name)这个名字在Internet上应该是唯一的.DN由许多部分组成,看起来象这样:CN=Bob Allen, OU=Total Network Security Division,O=Network Associates, Inc., C=US这些信息指出该科目的通用名,组织单位,组织和国家<>证书的有效期-证书起始日期和时间以及终止日期和时间;指明证书何时失效.<>证书发布者的唯一名字-这是签发该证书的实体的唯一名字.通常是CA. 使用该证书意味着信任签发证书的实体.(注意:在某些情况下,比如根或顶级CA证书,发布者自己签发证书)<>发布者的数字签名-这是使用发布者私钥生成的签名.<>签名算法的标示符-指明CA签署证书所使用的算法.X.509证书和PGP证书之间有许多不同,最明显的如下所述:<>用户可以创建自己的PGP证书;但是必须向CA请求才能得到一份X.509 证书.<>X.509证书天生只支持密钥拥有者的一个名字.<>X.509证书只支持证明密钥合法性的一个数字签名.要获得一份X.509证书,必须请求CA发给你证书.用户提供自己的公钥,证明自己拥有相应的私钥,并提供有关自己的某些特定信息.然后在这些信息上数字签名,并将整个数据包(称为证书请求)发给CA.CA做一些努力来验证用户提供的信息是正确的,然后就生成证书并返回给用户.一份X.509证书看起来很象一份带公钥的标准书面证书(类似于基础急救班的结业证书).证书中包含名字和一些有关的个人信息,加上颁发证书人的签名.。