Chinaunix首页 | 论坛 | 博客
  • 博客访问: 298302
  • 博文数量: 58
  • 博客积分: 2763
  • 博客等级: 少校
  • 技术积分: 731
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-04 19:07
文章分类

全部博文(58)

文章存档

2011年(55)

2009年(1)

2008年(2)

分类: LINUX

2011-08-10 13:54:17

今天讲一讲安全机制,加密和CA的创建
加密算法包括:对称加密,非对称加密(公钥加密),单向加密
数据在传输过程中应该具有保证数据的可靠性,保证性,完整性
下面我来聊一聊具体的加密算法,只是简单介绍,并没有深入研究。
 
1)对称加密:加密解密方使用同一个密钥,把数据切成大小相等块,把每一个块单独加密。
 对加密后的数据块的处理:两种常见的机制ECB,CBC(异或运算,跟此前的块进 行异或。第一个块跟一个随机数进行异或)
比较常见的加密解密算法
        DES:数据加密标准(56位的密钥长度)
        AES:高级加密标准(128,192,256)
        3DES:3轮DES加密
        Blowfish,Twofish,RC6,IDEA(商业),CAST5等

2)非对称加密(公钥加密算法):
加密解密使用不同密钥,公钥与私钥,必须成对出现。
       公钥加密算法:DSA,RSA,EIGamal
主要功能:加密解密,用户的身份认证
DSA只能实现身份认证,RSA可以实现加密和认证
公钥:是从私钥中提取出来的
缺陷:速度非常慢
功能:主要实现用户认证
 
 
如何实现认证:假如通信方是Bob和Alice,那要怎样实现身份认证。
Bob向Alice发信息,Bob拿自己的私钥,进行加密。Alice拿Bob的公钥解密,只要能解密出来,Alice就可以认为Bob就是Bob,而不是别人冒充的。

3)单向加密:这种加密不可逆,就是去计算一段数据的特征码的
             雪崩效应(输入的数据有一点点不同,就会产生巨大的差异)
主要功能;对数据完整性校验
无论你输入多长,但是加密后输出的是定长的。
MD5:Message Digest 5  固定长度:128
SHA1:Secure Hash Algorithm 固定长度:160
在进行身份认证时,不会让用户去加密数据,而是在数据发出之前,先用自己的私钥对特征值进行加密。这样既能验证用户身份,又能验证数据完整性。
 
IKE:互联网密钥交换。
PKI:公钥基础设施,最核心的内容是CA
     CA:证书颁发机构,放的是通信人的公钥
证书格式:X509,pkcs12
         包含组织名称,单位,服务器名字,公钥信息,数字签名
证书撤销列表:crl,提供声明证书作废

实现通信机制:
openssl,三个组件:libcrypto:加密解密的库文件,主要实现加密
     libssl: 库文件,支持TLS/SSL协议,将常见的明文协议加密的。
      例如:转换:http-->https
    pop3-->pop3s
    smtp-->smtps
    ldap-->ldaps
     openssl:跟软件包同名,多用途的加密解密,可以实现单向加密,公钥加密,对称加密,还可以做个CA。功能非常强大
 简单应用:cp /etc/inittab ./ 
 openssl enc -des3 -salt -a  -in inittab -out inittab.des3把inittab加密为
inittab.des3
 -d 表示解密
 openssl enc -d -des3 -salt -a -in inittab.des3 -out inittab把刚才我们加密的文件解密出来
  
当A和B通信时,A如果发送的数据要加密,一般情况下,不会对数据进行加密,而是对数据的特征码进行加密,那我们来看看如何取得文件的特征码
 openssl dgst -sha1 inittab 计算文件的特征值,提取文件特征值
我们知道单向加密具有雪崩效应,你可以改一下文件中的一个字符,看看效果。
 openssl passwd -1  ,1表示使用md5算法,生成类似/etc/shadow的密码
即使你输入的密码相同,所显示出来的加密后的密码也会不一样的。因为他们的salt不一样。
但是如果你使用同一个salt,那显示出来的结果就是相同的。用法:openssl passwd -1 -salt 跟你刚才的salt 
 
生成私钥
   例如:cd /etc/pki/tls/cers;make my.key
 openssl genrsa command 生成rsa格式的私钥,公钥是从私钥中提取的
  例如:openssl genrsa 2048 > my.key  你生成出来的私钥是不能让别人看的,但是生成出来的别人却是可读的,因此,你可以使用chmod来改变权限为600.
不过你也可以使用 (umask 066;openssl genrsa 1024 > server.key),括号表示命令在子shell中进行,不会对当前shell产生影响。
 
 公钥是从私钥中提取出来的
 openssl rsa -in server.key -pubout -out server.pub 从私钥中提取出公钥
 
发证步骤:
作为客户端: 生成一对密钥公钥/私钥,
  公钥放到证书颁发请求(CSR)里, CSR里包含 (p(公钥),地址,服务器,NAME等)
  请求发给CA,CA发个证书(CRT)
 

如何让自己成为CA,得首先给自己生成一个密钥,并给自己生成一个证书
1)cd /etc/pki/CA
  ls 显示一个private目录
  为CA生成一个私钥
(umask 066;openssl genrsa 2048 > private/cakey.pem)
  ll private
 生成字签证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650,-x509表示自签证书
接下来会让你输入一系列信息:
   国家代码:CN
   省:Henan
   城市:Zhengzhou
   公司的名字:RHCE
   部门:tech
   名字(关键):ca.rhce.com (必须是完全合格域名)
   email:
2)vim etc/pki/tls/openssl.cnf  (openssl的主配置文件,定义了CA一些相关配置选项)
找到CA_default
dir  = /etc/pki/CA
certs 放发给别人证书的
crl_dir 放证书吊销列表
database 证书文件的索引
new_certs_dir 新生成的证书
certificate CA的证书
serial 序列号,每产生一个证书,序列号加1,从00或01开始
crlnumber 证书吊销列表号
crl
private_key 私钥文件
下面还有设置的一些信息,就是刚才我们所输入的CN,Henan等,你可以设置成默认值
不过你的创建3个目录和2个文件,并且序列号文件也得指明从哪个开始,默认是从01开始
cd /etc/pki/CA
 mkdir certs crl newcerts
 touch index.txt serial
 echo 01 > serial
 
 

客户端获得证书
假如我们的计算机既是CA又是WEB服务器,当通信时,希望能加密,我们需要给WEB服务器安装证书,不过你得先安装WEB服务(yum install httpd),WEB服务器的配置文件在/etc/httpd,我们创建一个目录ssl,放httpd的私钥和证书
     cd /etc/httpd
 mkdir ssl
 cd ssl
 (umask 66;openssl genrsa 2048 > web.key)
你作为WEB服务器,是想让CA给你发证的,作为web服务器来说你要产生一个证书颁发请求,把你的请求发送给服务器,服务器就可以发证了,把证书再传给你。接下来,就是证书颁发请求了。
 openssl req -new -key web.key -out web.csr  csr表示是一个证书颁发请求
因为我们的CA和WEB服务器是在同一台主机上,接下来CA就可以发证了
openssl ca -in web.csr -out web.crt    crt证书的格式
 
阅读(1965) | 评论(0) | 转发(0) |
0

上一篇:LVM

下一篇:linux 启动流程详解

给主人留下些什么吧!~~