加密解密以及数字证书

 
在网络中的应用:http(访问网站)    ftp(上传资料)   telnet(管理网络设备)    smtp(邮件传输协议)  pop3(接收邮件的服务器)     imap4(交互式数据消息访问协议)
 
 
为了提高网络信息的机密性和完整性,我们就要采用各种方案来实现,加密则为最有效的方案之一。
 
 
加密技术的分类
 
加密技术的原理及主要算法
 
 
为什么要加密呢?
1.信息是当今社会的一种重要资源
2.用户要求信息保密、完整和真实
3.现代信息系统必须具备有信息安全技术措施
4.信息加密是信息安全的主要措施之一
 
 
对称加密(私有密钥算法),往往用于会话加密
 
 
非对称加密(公有密钥密码)
 
 
通过使用加密,可以提供的安全服务(保密性,完整性,不可否认性)
 
 
 
置换
1.置换使用一个特定的值替换另一个特定值的而过程
2.置换需要通信双方事先知道置换的方法
3.置换比较简单,频繁使用会找到规律
 
 
移位
1.把某个字母以其前或期后几位的某个特定的字母代替
2.移位具有规律,容易被攻破
 
 
 
加密强度主要取决于三个主要因素:
算法的强度
密钥的保密性
密钥强度
 
 
 
加密算法(DES IDEA RC系列 CAST Blowfish)
 
数字签名
1.不是手写签名的数字图像
2.是一种可以提供认证的加密形式
3.转向安全无纸环境的一个途径
 
 
密钥管理
1.密钥的管理容易出现漏洞
2.密钥是最有价值的信息
3.密钥管理包含建立密钥、分发密钥、验证密钥以及取消密钥
 
[root@localhost ~]# rpm -qa |grep openssl
openssl-devel-0.9.8e-12.el5
openssl-0.9.8e-12.el5
 
 
 
root@localhost ~]# mkdir dir1
[root@localhost ~]# cd dir1
[root@localhost dir1]# ll
total 0
[root@localhost dir1]# cp /etc/inittab
cp: missing destination file operand after `/etc/inittab'
Try `cp --help' for more information.
[root@localhost dir1]# cp /etc/inittab ./
[root@localhost dir1]# ll
total 4
-rw-r--r-- 1 root root 1666 Apr 22 06:33 inittab
[root@localhost dir1]# vim inittab 
 
[root@localhost dir1]# openssl des3 -salt -in inittab -out inittab.out
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
[root@localhost dir1]# ll
total 4
-rw-r--r-- 1 root root 1666 Apr 22 06:33 inittab
[root@localhost dir1]# vim inittab.out
[root@localhost dir1]# openssl des3 -salt -in inittab -out inittab.out
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
[root@localhost dir1]# ll
total 8
-rw-r--r-- 1 root root 1666 Apr 22 06:33 inittab
-rw-r--r-- 1 root root 1688 Apr 22 06:55 inittab.out
 
 
 
CA 要想运行,必须有自己的私钥
 
 
库文件         /lib/.libcrypto.so.0.9.8e.hmac     加密
               /lib/libssl.so.6   为了实现ssl和tls证书的过程
 
指定的文件在哪个目录下
 -in filename
           the input filename, standard input by default. 
 
输出结果
-out filename
           the output filename, standard output by default.
 
加密
       -salt
           use a salt in the key derivation routines. This option should
           ALWAYS be used unless compatibility with previous versions of
           OpenSSL or SSLeay is required. This option is only present on
           OpenSSL versions 0.9.5 or above.
 解密    
-d  decrypt the input data.
 
 
 
 
 
EXAMPLES
       Just base64 encode a binary file:
 
        openssl base64 -in file.bin -out file.b64
 
       Decode the same file
 
        openssl base64 -d -in file.b64 -out file.bin
 
       Encrypt a file using triple DES in CBC mode using a prompted password:
 
        openssl des3 -salt -in file.txt -out file.des3
 
       Decrypt a file using a supplied password:
 
        openssl des3 -d -salt -in file.des3 -out file.txt -k mypassword
 
       Encrypt a file then base64 encode it (so it can be sent via mail for
       example) using Blowfish in CBC mode:
 
        openssl bf -a -salt -in file.txt -out file.bf
 
       Base64 decode a file then decrypt it:
 
        openssl bf -d -salt -a -in file.bf -out file.txt
 
       Decrypt some data using a supplied 40 bit RC4 key:
 
        openssl rc4-40 -in file.rc4 -out file.txt -K 0102030405
 
 
 
[root@localhost dir1]# openssl genrsa -out key.pem 1024
Generating RSA private key, 1024 bit long modulus
..................................++++++
...........++++++
e is 65537 (0x10001)
[root@localhost dir1]# openssl genrsa 1024 >  key.pem 1024
Generating RSA private key, 1024 bit long modulus
...................++++++
..................++++++
e is 65537 (0x10001)
 
 
 
 
 
 
[root@localhost ~]# ll
total 17884
drwxr-xr-x 2 root root    4096 Apr 12 07:59 Desktop
-rw------- 1 root root    1175 Apr 11 22:10 anaconda-ks.cfg
-rw-r--r-- 1 root root  982243 Apr 14 02:17 apr-1.4.6.tar.gz
-rw-r--r-- 1 root root  829779 Apr 14 02:17 apr-util-1.5.1.tar.gz
drwxr-xr-x 2 root root    4096 Apr 22 07:03 dir1
-rw-r--r-- 1 root root     852 Apr 15 06:18 httpd
-rw-r--r-- 1 root root 4780289 Apr 14 02:17 httpd-2.4.4.tar.bz2
-rw-r--r-- 1 root root   35236 Apr 11 22:10 install.log
-rw-r--r-- 1 root root    3995 Apr 11 22:09 install.log.syslog
-rw-r--r-- 1 root root   16661 Apr 19 11:00 php-mcrypt-5.1.6-5.el5.i386.rpm
-rw-r--r-- 1 root root 4483812 Apr 19 11:00 phpMyAdmin-2.11.10.1-all-languages.zip
-rw-r--r-- 1 root root 6547757 Apr 19 11:00 phpMyAdmin-3.5.8-all-languages.zip
-rw-r--r-- 1 root root  537287 Apr 18 09:57 webalizer-2.23-05-src.tgz
[root@localhost ~]# cd dir1
[root@localhost dir1]# openssl rsa -in key.pem -pubout
writing RSA key
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTsOxFT1RowFinl+u2kyCd2Eok
rhMqWHiVc/w3mWwzfXjVYB0fn5amP2QNenGlrCPE55AnyqDztrQh8+rNEVUnxG3e
JjWwHno7OzRvOLEMuLig2SKbzCYPP3tW+ye4ya6GMin7DJNmgFl3GTUImk+jg8I+
F78+4uE4gOWjs7BHZQIDAQAB
-----END PUBLIC KEY-----
[root@localhost dir1]# openssl rsa -in key.pem -pubout  -out public.key
writing RSA key
[root@localhost dir1]# ll
total 8
-rw-r--r-- 1 root root   0 Apr 22 06:58 inittab
-rw-r--r-- 1 root root   0 Apr 22 06:56 inittab.out
-rw-r--r-- 1 root root 887 Apr 22 07:03 key.pem
-rw-r--r-- 1 root root 272 Apr 22 07:46 public.key
[root@localhost dir1]# vim public.key
 
 
 
 
 
[root@localhost pki]# cd CA
[root@localhost CA]# mkdir certs newcerts cr1
[root@localhost CA]# touch index.txt  serisl
[root@localhost CA]# echo "01" >serial
[root@localhost CA]# ll
total 24
drwxr-xr-x 2 root root 4096 Apr 22 08:21 certs
drwxr-xr-x 2 root root 4096 Apr 22 08:21 cr1
-rw-r--r-- 1 root root    0 Apr 22 08:21 index.txt
drwxr-xr-x 2 root root 4096 Apr 22 08:21 newcerts
drwx------ 2 root root 4096 Jun 30  2009 private
-rw-r--r-- 1 root root    3 Apr 22 08:22 serial
-rw-r--r-- 1 root root    0 Apr 22 08:21 serisl
[root@localhost CA]# cd ..
[root@localhost pki]# ll
total 32
drwx------ 6 root root 4096 Apr 22 08:22 CA
drwxr-xr-x 2 root root 4096 Apr 11 21:56 nssdb
drwxr-xr-x 2 root root 4096 Apr 11 21:57 rpm-gpg
drwxr-xr-x 5 root root 4096 Apr 22 08:21 tls
[root@localhost pki]# openssl genrsa 1024 >CA/private/cakey.pem
Generating RSA private key, 1024 bit long modulus
..................++++++
.........++++++
e is 65537 (0x10001)