加密技术通常分为两大类:“对称式”和“非对称式”。
对称式加密就是加密和解密使用同一个密钥,通常称之为“
Session Key
”这种加密技术目前被广泛采用,如美国政府所采用的
DES
加密标准就是一种典型的“对称式”加密法,它的
Session Key
长度为
56Bits
。
对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。在计算机专网系统中广泛使用的对称加密算法有
DES
、
IDEA
和
AES
。
非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难把密钥告诉对方,不管用什么方法都有可能被别窃听到。而非对称式的加密方法有两个密钥,且其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须把自己早已随机生成的公钥送给发信方,而自己保留私钥。
RSA
和
DSA
其中
RSA
可以加密而
DSA
只可以作为签名
不可逆加密
:
即单向加密:能够提取任何数据特征码
输出定长
不可逆
雪崩效应
(
输入信息的微小改变会对结果造成巨大影响
)
PKI Public key Infrastructure
公钥基础架构
是现代互联网电子商务最基础的安全架构。
PKI
即公共密钥体系。它利用公共密钥算法的特点,建立一套证书发放、管理和使用的体系,来支持和完成网络系统中的身份认证、信息加密、保证数据完整性和抗抵赖性。目前在
Internet
上主要使用
RSA
公共密钥方法,密钥长度
512
或
1024
位,是广泛使用的
SSL/TLS
和
S/MIME
等安全通信协议的基础。
数据在通信过程中要做到以下几点:
1
,数据的完整性,
2
,数据的真实性,
3
,数据的保密性。首先数据的完整性可以使用单向加密,数据的真实性可以使用非对称加密,保密性可用对称加密。
一份数据在网络中传输过程:这份数据首先由发送方通过对称算法加密再用单向加密对数据的特征码加密来实现完整性确保不被他人篡改;然后使用非对称算法用自己的私钥对单向加密后的结果加密附于数据后面,保证数据的真实性即发送方的身份得以确认;然后再使用对称算法将整个过程加密,最后再用接收方的公钥对加密的结果加密最后接收方就可以得到完整的安全的数据了。但是这个过程中还是存在不安全的因素的,比如说公钥的确定,这是就需要双方信任的第三者的出现,这个第三者来确定对方的公钥,这就是
CA
的出现,就有数字证书,证书包括以下内容:证书
=Public key + expire date(
有效期限
) + owner's information/fqdn + how the Certificate may be used + CA's information + CA
用自己私钥做的签名
使用单向加密算法
抽取整个证书的特征码
将此特征码用私钥加密
就要一种协议
SSL
(
Secure Sockets Layer
),用于补充
TCP/IP
协议栈的安全性问题,属于一个半层协议,工作在应用层和传输层之间,对上层数据进行加密。与其功能相同的还有
TLS(Transport Layer Security),
其属于
SSL
的升级版
这里就要介绍一种工具
openssl
这种多用途工具
生成密钥对
生成颁发请求
生成自签证书等等
openssl ciphers
所支持的参数
openssl list-cipher-commands
显示支持的加密方法
openssl passwd -1
用来生成加密的密码
Openssl
的加密:
openssl enc -des3 -in
加密文件名
-out
加密后文件名
解密:
openssl enc -d -des3 -in
加密后的文件
-out
解密后文件
如何做一个企业内部的
CA
呢?
做证书之前我们要知道证书存放的位置:
/etc/pki/CA
和配置文件存放位置
/etc/pki/tls/openssl.conf
在该文件中我们可以修改默认参数
生成私钥到密钥存放的家目录下:
#
(
umask77
;
openssl genrsa 1024 >private/cakey.pem
)
因为我们的私钥只有自己可以看的所有使用
umask77
私钥和公钥是一对的所以公钥是从私钥中提取的,可以使用:
openssl rsa in cakey.pam �Cpubou
例如:
#openssl genrsa -out mykey.key 1024
生成一个
1024
位的私钥保存到
mykey.key
或者
#openssl genrsa 1024 > mykey.key
#openssl rsa -in mykey.key -pubout
可以从
mykey.key
中提取对应公钥
#openssl req -new -x509 -key mykey.key -out mykey.crt -days 3655
生成自签证书
将一个服务器做成
CA
:
#vim /etc/pki/tls/openssl.cnf
将
[ CA_default ]
里
修改成:
dir=/etc/pki/CA
其余东西默认参数可以修改
#cd /etc/pki/CA
#openssl genrsa 1024 > private/cakey.pem
#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
#mkdir certs newcerts crl
#touch index.txt serial
#echo 01 >serial
客户端设置:
以
http
服务为例
#cd /etc/httpd
#mkdir certs
#cd certs
#openssl genrsa 1024 >httpd.key
#openssl req -new -key httpd.key -out httpd.csr
CA
签署客户端的请求
并生成证书
#openssl ca -in httpd.crs -out httpd.crt
然后客户端将生成的证书拷贝到本地
下面介绍下
openssh
首先查看是否安装了该软件包:
rpm �Cqa |grep openssh
主进程是:
sshd
ssh
的配置文件:
/etc/ssh/sshd_config
这里说下他的几个主要参数
Port
22
“
Port
”设置
sshd
监听的端口号。
ListenAddress
192.168.1.1
“
ListenAddress
”设置
sshd
服务器绑定的
IP
地址。
ServerKeyBits
1024
“
ServerKeyBits
”定义服务器密匙的位数。
LoginGraceTime
600
“
LoginGraceTime
”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。
KeyRegenerationInterval
3600
“
KeyRegenerationInterval
”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。
PermitRootLogin
no
“
PermitRootLogin
”设置
root
能不能用
ssh
登录。这个选项一定不要设成“
yes
”。
X11Forwarding
no
“
X11Forwarding
”设置是否允许
X11
转发。
PrintMotd
yes
“
PrintMotd
”设置
sshd
是否在用户登录的时候显示“
/etc/motd
”中的信息。
LogLevel
INFO
“
LogLevel
”设置记录
sshd
日志消息的层次。
INFO
是一个好的选择。查看
sshd
的
man
帮助页,已获取更多的信息。
AllowUsers
admin
“
AllowUsers
”的后面可以跟着任意的数量的用户名的匹配串(
patterns
)或
user@host
这样的匹配串,这些字符串用空格隔开。主机名可以是
DNS
名或
IP
地址。