计算机与网络安全总结(第一部分:基本加解密算法)
来源:互联网 发布:linux系统安全软件 编辑:程序博客网 时间:2024/06/09 14:28
第一部分:基本加解密算法
1. 分类
可以想象两个人的对话过程,会产生什么安全问题
BOB <-----DARTH--->TOM (BOB与DARTH通话,DARTH为HACKER)
[1]. 如何知道你对话的对象是BOB/TOM?
Authentication (SSL握手过程,证书)
[2]. 如何保证你们的会话不被其它人看到?这是passive attack, DARTH只监听内容,不对内容做任何改动。
Confidentiality.对内容进行加密(如何加密,有公共密钥和对称密钥等方式)
公共密钥:RSA
对称:DES, AES
[3].虽然加密了,可能DARTH不知道里面是什么内容,但如何保证它不篡改内容呢,比如在内容中加入一些东西
Integrity. HASH,即BOB的信息先进行HASH,TOM在收到时,对信息HASH后与BOB的HASH值进行比较。
实际上,HASH的值需要与原信息一起加密传给对方
[4].现在BOB与TOM可以会话。但如何保证BOB说的一些东西以后不会反悔
NON-Repudiation. Signature,对BOB的信息进行signature。具体是先对信息进行HASH(因为我们假设信息与HASH是一一对应的;另外如果对整个信息加密会较耗资源,没有必要;HASH后可以保证信息的integrity),然后对HASH值进行私钥加密。一旦TOM能用BOB的公钥对此信息进行解密,就说明此信息来自于TOM
[5].Availability. A system and a system resource remain accessible and usable upon demand
在安全领域里,你需要对一个解决方案指明它解决了以上分类的哪些
2. Cryptography
这是安全领域的基础,个人觉得有三种, encrypt, decrypt, 及hash,其它的是这三种的组合应用.
2.1 公共密钥:
[1]RSA:
模型:
简单来讲,就是 {{M}k+}k- = M.
注: {M}k表示信息M用k密钥来加密. k+表示公钥,k-表示私钥.
[2]DH
个人觉得DH更象是对称加密的前期准备,用于产生对称加密的密钥.
过程: ALICE <----->BOB
§ 首先双方有相同的g,p值 (这个应该是公开的)
§ ALICE产生私钥a, BOB产生b, 它们计算 yA = g^a mod p, yB = g^b mod p,然后互传
§ 对于ALICE, 它计算出的它和BOB要用来对称加密的KEY为 Kab = (yB)^a = g^(ab) mod p, 同理BOB也会得到相同的值
§ 一个HACKER它只知道yA, yB, g, p,但它不知道a或者b,所以它没有办法计算出 Kab, 也很难推导出a,b值.
2.2 对称:DES, AES
2.3 HASH: MD5,SHA,SHA-1,SHA-256,SHA384,SHA-512
2.4 DSA
感觉应该是和HMAC性质一样的,不过它是在public key crypto里的实现
模型:
其实就是解决了第一部分所说的non-repudiation. 上面show了两个不同实现, 显然第二个会较好些,原因见第一部分. 而且sign完后要encrypt.
2.5 certificates
为了认证我们在第一部分提到的authentication, 必需要能确认一个人提供的私钥,就是这个人的. 举个例子来看,
ALICE <-----HACKER------->BOB
我们只关注前期它们的认证。且假定是ALICE认证BOB(在现实中,我们需要认证我们登陆的银行是不是那个银行,当然,银行也可以认证个人)。
§ 那么什么情况可以认定BOB就是BOB呢?个人认为是两个条件,其一,BOB可以解用BOB公钥加密的信息(说明它有BOB的私钥)。其二,我们需要BOB的公钥
§ 首先我们想到的是到哪里找BOB的公钥。这就是 Certification Authority(CA)的用处,binds public key to particular entity. 下面先看下申请和使用的过程是如何的
§ 申请:
§
§ BOB提供相关信息及它的公钥给CA
§ CA认证后,产生BOB的certificate。包含BOB的公钥,及CA对这个公钥的签名(防止伪造)
§ 使用:
§
§ 当ALICE需要BOB公钥时,它得到一份CA的certificate。但它怎么能确定这份是真实的呢?那么就要用到CA的public key(有点鸡生蛋。。。所以最终应该是操作系统里有份根的CA的PUBLICE KEY)。OK,得到CA的PUBLIC KEY后,我们就可以认证这份certificate是不是真实的了(应该是先用公钥去解签名,并且还要查HASH,看是否被篡改),最后我们得到BOB的public key
§ 得到BOB的PUBLIC KEY后,可以用这个PUBLIC KEY去加密一些信息,然后传给BOB,看它能不能解出来。
注:现在广泛使用的SSL握手和我上述过程不是非常一样,但大致原理是相同的。
SSL握手是收到BOB传过来的certificate,说它是BOB,那么我们认证了是BOB的证书后(步骤就是上述讲到的),就开始协商密钥,没有我们上述提出的步骤二),不过应该也是OK的。因为如果BOB没有私钥的话,后续它是没有办法完成密钥的exchange的。
具体可参见http://blog.csdn.net/turui/archive/2008/01/25/2065349.aspx
3. 容易混淆的概念
SSL:是安全协议,它是HTTPS的基础
OPENSSL:它是函数库,实现了各种加解密算法
- 计算机与网络安全总结(第一部分:基本加解密算法)
- 计算机与网络安全总结(第三部分:WEB攻击与安全)
- 计算机和网络安全总结(第二部分:网络攻击与安全)
- 部分加解密算法小结
- 加解密算法总结(RSA)
- 一些基本加解密算法的比较
- 面试常见基本题目总结及php实现(第一部分:排序算法)
- 加解密算法总结(RSA,DES,MD5)
- Base32加解密算法与实战
- Base32加解密算法与实战
- 加解密与编解码算法
- 普林斯顿大学算法第一部分学习总结(Week1-Percolation)
- 第一部分 1.变量与基本类型
- cleversafe 的加解密部分
- DES加解密算法
- AES加解密算法
- RSA加解密算法
- RC4加解密算法
- Use Dom4J to Write XML file
- ubuntu8.04分辨率设置
- Use Jdom to Write XML file
- 恢复刚被误删QQ好友的方法
- 双缓冲 不错的转一下算是!!
- 计算机与网络安全总结(第一部分:基本加解密算法)
- 无法在安装新的版本前,为"*"做一个符号链接备份
- USACO算法系列十八——game1
- 使用jplayer来制作音乐播放插件
- 自动生成Makefile的详细过程
- 通过SSIS实现Oracle与Sqlserver数据库间的数据同步,并定时执行同步任务
- Use Jdom to Read XML file
- eclipse中出现Context startup failed due to previous errors错误解决方法
- AMD处理器+2G硬盘+256M内存硬件环境下linux安装