以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 安全理论 』  (http://bbs.xml.org.cn/list.asp?boardid=65)
----  Pki基础教程[转帖]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=65&rootid=&id=30940)


--  作者:benq123
--  发布时间:4/20/2006 12:42:00 PM

--  Pki基础教程[转帖]
Pki基础教程-1 Public Key Infrastructure(公开密钥基础设施)

公开密钥基础设施是公开密钥理论和技术上发展的综合安全平台:
1。CA (Certificate Authority) 认证中心
负责产生,分配并且管理数字证书的可信赖的第三方权威机构。
采用分级机构,上级认证中心负责签发和管理下级认证中心的证书,最下一级直接面向最终用户

2。数字证书
由认证中心发放并且认证中心数字签名的,包含公开密钥拥有者及其相关消息的文件,可以用来证明数字证书持有者的真实身份。
采用公开密钥体制。每个用户自己设定私钥,用它解密和验证数字签名。同时设定公钥并有本人公开,用于加密和验证签名。发送机密文件时,发送方使用接受方的公钥加密,接受方用自己的私钥解密。

网络的广泛性和开放性,也就决定了它的安全隐患性.
常见安全性问题及其解决手段
1.盗听
解决方法->网络上流通数据加密

2.违法访问
手段
a.用词典工具对正常用户进行暴力破解
b.利用服务器中的安全漏洞
解决方法->防火墙,及对服务器中重要数据加密保存

3.伪装
方式
a.正规用户情报盗听后,利用得到的认证情报
b.假冒电子邮件的发件人名字
解决方法->加强认证方法,增加数字签名

4.篡改
解决方法->增加数字签名

5.否认
解决方法->确认发生在有当事人认证和数字签名的环境

功能
1。Encryption 加密
2。Digital Signature 数字签名

目的
1。Confidentiality 守秘性
2。Authentication 认证
3。Integrity 完整性
4。Non-Repudiation 否認防止

+++++++++++++++++++++++++++++++++++++++
Pki基础教程-2  加密算法

对称密码算法/单钥密码算法
Symmetric cryptography

1。用同样的钥来加密和解密。使用的钥叫做Symmetric Key。

2。加密方法大体分2种。
Block:报文按照一定的长度分割,分别进行加密
Stream:不分割报文,逐次(1-几bit每)加密

3。具体技术:
KeyLen Description
DES 56bit Block Data Encryption Standard
Triple-DES 168bit Block 3次DES加密。3回不同钥的情况3Key方式,1和3回同样钥的2Key方式
IDEA 128bit Block International Data Encryption Algorithm(64bits block)
RC2 8-1024 Block RFC2268
RC4 40-256 Stream
RC5 -2048 Block
CAST-128 -128 Block RFC2144
AES 128,192,156 Block Advanced Encryption Standard

4。CBC (Cipher Block Chaining)
对于Block方式来说,由于攻击者可以对于关键位置来攻击所以存在危险性。
为了降低这种危险,我们通过增加Block间的关联性来解决。

ECB 分割的Blog分别加密,Blog之间没有关联->危险
CBC 加密完了的Blog和接着的一个进行XOR处理,对这个值来加密处理。也就是说各个Blog是连锁
CFB 加密完了的Blog和接着的一个进行XOR处理,把该值Feedback
OFB 随机数生成与Blog进行XOR运算。前一个Blog的随机数加密后成为后一个的随机数。


非对称密码算法/双钥密码算法/公钥密码算法
Asymmetric Cryptography/Public Key Cryptography
非対称暗号方式 /公開鍵暗号方式

1。加密
加密报文方法
example:
A->B
1.B create public key and private key.
2.B announce public key by internet
3.A want to send message to B, so get the public key from internet
4.A send the message which encrypted by public key to B
5.B get the normal message by private key
Total (A---message encrypted by public key --- internet --- cracked by private key ---B)

A->E, F, D
1.E, F, D create respective public key
2.A create Symmetric Key
3.A encrypt message with Symmetric Key.
4.A encrypt symmetric key by respective public key
5.A send message and encrypted key message to every one
6.E crack key message by E private key and get symmetric key. Then crack message by the symmetric key
F, D also

2。数字签名(Digital Signature)
于加密相反,数字签名利用的是private key加密要送出的东西,用public key解密就可以知道发送人的身份,达到个人认证和完全性保证。

3。主要技术
DH (Diffie-Hellman) 钥交换 Symmetric Key安全交换算法
RSA (Rivest-Shamir-Adleman) 加密/签名/钥交换 利用大整数的素因数分解问题
DSA (Digital Signature Algorithm) 签名 利用离散对数问题,只有签名功能,不能用于加密
ECC (Elliptic Curve cryptosystem) 加密/签名/钥交换 离散对数问题里面再加上椭圆曲线问题
以上都是大概的描述,有兴趣的人可以自己去google一下看看都是怎么样的算法。

+++++++++++++++++++++++++++++++++++++++
Pki基础教程-3 安全哈希函数
Secure Hash Function
安全哈希函数,网上还有一个流传甚广的台湾叫法杂凑函数。不喜之,且置之。

谈起哈希函数,我们首先要理解哈希函数设计的要求,从中我们可以看出这些密码算法最终的目的。
安全设计时必须满足四个要求
第一:寻找两个输入得到相同的输出在计算上不可行的。也就是常说的抗碰撞(No Collision)
第二:从输出得到输入在计算上不可行。也就是单向性
第三:不同长的输入数据得到相同长的输出数据。该长度叫做hash长或者digest长。
第四:输入的一点点不同导致输出的大相径庭。也就是说防止相似破解查找

我们可以通过MD5的来演示一下
Unix用户直接输入下列命令,Window用户打开你的cygwin。以下是我的yama,yamat的例子结果
-------------------------------------------------------------------------------
chinatimeover@nx9040 ~
$ echo -n yama | md5sum
3971a7663b23a5b7116ba73da31c3e4a *-

chinatimeover@nx9040 ~
$ echo -n yamat | md5sum
a5503d45d67bb7dc3165b5f9f53f19b4 *-
--------------------------------------------------------------------------------

目前主要用到的算法
MD2 128bit。用于PEM。详见RFC1319
MD4 128bit。可以说是MD5、SHA-1的母亲。详见RFC1320。不过1994年就被搞定了
MD5 128bit。详见RFC1321。1996年弱点发现,2004年山东大学王小云教授成功破解。
SHA-1 160bit。详见RFC 3174。1995年NIST把它作为美国政府的标准hash函数。

但是MD5的破解,一定程度上吹响了对SHA-1破解的最终号角。也许不久的明天我们再也无从信任。一个个B2B,B2C网站都面临着安全的危险。作为一个环境架构的实现者,我清楚地明白一旦碰撞不可抗的后果。那时候脆弱的架构能够接受挑战么!!我们何去何从,也许攻击者永远都是优势地位----

+++++++++++++++++++++++++++++++++++++++
Pki基础教程-4 数字签名
数字签名Digital Signature

重要的概念
1。签名Sign:生成数字签名的过程
具体如下
第一:使用哈希函数对需要签名的数据处理生成digest。
第二:使用Private钥对digest实行加密处理。
第三:数据加上签名一同通过网络传输到接受方。
2。有效性确认Validate:确认数字签名是否有效的过程
具体如下
第一:对受信数据使用哈希函数来生成digest。
第二:对受信签名用Public钥来解密得到原始digest
第三:一和二生成的digest进行比较。结果一致即为有效

使用数字签名的目的
1。保证数据完整性
2。作成者的认证

数字签名的主要种类
正如概念里面说过,数字签名实际上是哈希函数和非对称加密算法的综合体。
所以主要由以下几种
1。Sha-1WithRSAEncyption RSA + SHA-1
2。Md5WithRSAEncryption RSA + MD5
3。id-dsa-with-sha1 DSA + SHA-1
4。ecdsa-with-SHA1 ECDSA + SHA-1

正如我在上一章里面说过,现在的哈希函数并不是非常安全了.MD5实际上已被完全淘汰,而SHA-1也进入了淘汰期。很多专家很早就呼吁过现在开始停止使用SHA-1。所以建立在这些基础上面的上述4种电子签名自然而然的存在生命危险性。不过技术也是发展的,方法是可以不断更新的,但是对于我们这些徘徊在技术路上的人呢,我觉得最重要是思想,当你理解了这里面的一切,当你有了挑战标准的机会,那才是让人开心的事情。

+++++++++++++++++++++++++++++++++++++++
Pki基础教程-5 Ca模式产生背景及基本原理
问题产生:
前面几章对于公开钥加密的应用作了一定的阐述。但是,公开钥加密有一个不能不正视的问题,那就是你凭什么来判断你获得的public key是真的。如果有人从一开始就伪造身份,让接受到公开钥的人以为这是另外需要发送消息的人的公开钥,并且用这个钥去验证伪造者发出的加密情报。后果。。。。。我不说也知道了把,一直都是被虚假消息所欺骗,而且还误以为真。还有可能同时把自己真实的情报用假的公开钥加密后发送给伪造者。

解决:
怎么办?这时候我们需要的显然是一种可以判断公开钥所有者真实性的机制。于是两种主要的认证方式应运而生。
1。PGP模式
Pretty Good Privacy
比方说:
A同学想要取得C同学的公开钥。这时候有一位B同学和A同学,C同学都有着信赖关系。
然后B同学就把他所知道的正确的C同学的公开钥上面电子签名后传给A。
A同学和B同学由于有信赖关系,所以检查签名就知道数据没有问题,拿到的是真的C的公开钥

缺点:不宜在没有管理主体的大规模应用中推广

2。CA模式
Certification Authority(认证机构)
这是一种由可信任的第三方机关(TTP: Trusted Third Party)来保证公开钥所有者的方法。

发行方法:
TTP首先对公开钥的所有者进行确认,然后发行证书(Certificate)。
在证书里面,有公开钥和关于公开钥所有者的证明情报。
为了防止恶意修改,附加上TTP的署名。
也就是说证书Certificate = 公钥拥有者情报+公钥+认证机构的数字签名
发行证书的TTP,就是我们常说的CA认证机构。

认证方法:
公钥发行者向CA提出申请,CA确认该公钥发行者后然后签发证书。
公钥发行者把证书发给需要的人。接受者通过该证书和CA签名来确认真伪。
如果为真,得到需要的公开钥。

该技术的前提是CA必须是可信任的。对于CA来说,有公开的CPS: Certificate Practice Statement文 档来确认,一般来说,CA都是由政府来负责推广认定的。

另外:
CA为了证明自己也需要证明书。但是,CA的证书里面是他自己的数字签名。
这样的证明书叫做自己签名证书。大型项目里面,也有CA的证明书是由别的CA来签名的情况。

关于CA模式下PKI的要素
1。证书所有者(Certificate Holder)
也就是秘钥的拥有者。又称为Subscriber(签署者)。

2。证书信赖者(Relying Party)
也就是一般使用者。

3。证书注册机构(RA : Registration Authority)
确认证书本人性的机构。对证书认证机构提出发行证书和证书失效的要求。

4。档案文件(Archive)
证明书长期保存和密钥的备份。

5。证书认证机构(CA : Certification Authority)
证书发行。证书失效队列发行。

6。仓库(Repository)
存放证书和失效证书队列。证书信赖者在这里查询并且取得证书和失效队列。

PKI模式的主要流程
1。证书所有者向证书注册机构提出申请。
2。证书注册机构对证书所有者的身份确认。
3。证书注册机构向证书认证机构提出发行申请。
4。证书认证机构对证明书所有者发行证明书。
5。证书认证机构在仓库里面公开发行的证明书和失效队列。
6。证书所有者和证书信赖者通信。
7。证书信赖者通过仓库来检验证书的有效性。然后利用证书就可以验证电子签名和进行数据加密。



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms