TCP/IP:安全
机密性:明文传输(ftp,http,smtp,telnet)
数据的完整性:
身份验证:
机密性:
planitext-->转换规则-->ciphertext
ciphertext-->转换规则-->plaintext
对称加密:算法
转换算法:密钥
数据完整性:
单向加密算法:提取数据特征码
输入一样,输出必然相同
雪崩效应,输入的微小改变,将会引起结果的巨大改变
定长输出:无论原始数据是多大,结果大小都是相同的
不可逆的,无法用特征码还原原来的数据
协商生成密码:密钥交换(Internet Key Exchange ,IKE)支持的协议是Diffie-Hellman协议
公钥加密算法又叫非对称加密算法,特性:
密钥是成对的,有公钥和私钥,公钥是任何人都能看到的,用P表示;私钥是自己知道, 用s表示;并且公钥是从私钥中生成的。它们是相互解密的。
发送方用自己的私钥加密数据,可以实现身份验证
发送方用对方的公钥加密数据,可以保证数据的机密性
公钥加密算法很少用来加密数据:速度太慢
CA:Certificate Authority 证书颁权威机构
数字证书格式流行的有x509
x509包含:
公钥及其有效期限
证书的合法拥有者
证书该如何被使用
CA的信息
使用CA的签名的校验码
对称加密算法有:
DES:Data Encrption Standard,56bit
3DES:三倍DES
AES:高级加密标准 Advanced Encrption Standard
AES192,AES256,AES512
BLOWFISH
加密工具:openssl,gpgssl
单向加密:
MD4、MD5 128、SHA192,SHA256,SHA384,SHA1,
CRC-32:循环冗余校验码是一种校验码的机构
非对称加密或公钥加密:(加密/签名)
身份认证(数字签名)、数据加密、密钥交换
RSA:即可加密有能签名
DSA:只能签名但是不能加密
ElGamal:商业算法
OpenSSL:即SSL的开源实现,openssl是个软件有三部分组成:
libcrypto:通用加密库
libssl:TLS/SSL的实现
基于会话的、实现身份认证、数据机密性和会话完整性的TLS/SSL库
openssl:多用途命令行工具,实现私有证书颁发机构
查看openssl用rpm -q openssl
用openssl来特取特征码:openssl dgst -md5 inittad
生成跟用户一样的密码串openssl passwd -1 -salt tpsgh0st
rand伪生成数(随机数)的工具,openssl rand -base64 45
openssl实现私有CA:
1、生一对密钥:
openssl genrsa 保存用重定向或用-out
即生成有是600的权限:(umask 077;openssl genrsa -out server1024.key 1024)
私钥中提取公钥:openssl rsa -in /PATH/TO/KEYFTLENAME -pubout
2、生成自签署证书
REQ:生成自签证书的工具
openssl req -new -x509 -key server1024.key -out server.crt -day 365生成证书
openssl x509 -text -in server.crt 以文本的格式输出
genrsa:私钥生成是600权限
CA 的配置文件/etc/pki/tls/openssl.cnf
申请证书;openssl req -new -key httpd.key -out httpd.csr
签证:openssl ca -in httpd.csr -out httpd.crt -days 365
查看用在ssl中cd /etc/pki/CA-->cat index.txt-->cat serial
OpenSSL:
tenlent,TCP/23,远程登录的协议,但是他有两个缺点:
认证是明文,数据传输明文;
SSH:Secure SHell,TCP/22,也是远程登录的协议。
SSH是客户端服务器端架构的软件
客户端软件:
Linux:ssh
Windows:putty,SecureCRT,SSHSecurShellClient,Xmanager
服务器端:
sshd
openssh(ssh,sshd)
sshd:主机密钥 基于口令 基于密钥,一般情况是口令的
服务器端不允许管理员直接登录的,我们想基于ssh远程登录到服务器上,我们只能使用一个普通用户登录,然后在su到管理员。
netstat :查启动的服务
-r:显示路由表的
-n:表示用数字来表示IP和端口号
-t:tcp connections表示跟TCP协议的会话
-l:处于监听状态的服务
-u:udp connections表示跟UDP协议的会话
-p:表示被那个程序监听,process
客户端ssh:(/etc/ssh/ssh_config)配置文件显示配置信息
服务端sshd:(/etc/ssh/sshd_config)配置文件显示配置信息
sshd_config中的一些配置:
Port:监听号,默认是22号
protocol:协议版本
AddressFamily:默认是只就行,any
ListenAddress:监听的地址,只想给这个地址提供服务
Hostkey:版本号的密钥
KeyRegenerationInterval:密钥重新生成新密钥的间隔的时间
serverKeuBits:服务器密钥的长度
LoginGraceTime:登录的宽限期
PermitRootLogin:是否允许管理员的直接登录
StrictModes:是否使用严格限定模式
MaxAuthTries允许输错密码的最大次数
PubkeyAuthentication:基于密钥的认证
PasswordAuthentication:是不是允许口令的认证
Banner:欢迎标语,显示详细的信息
PrintLastLog:是不是显示那个主机在啥时候登录的
Subsystem:子系统
ssh的远程登录:
-l USERNAME REMOTE_HOST ['command']
ssh USERNAME@REMOTE_HOST
-p指定端口
-X:登录远程服务器并且执行窗口命令,本地是图形的,远程不一定是。
-Y:跟-X一样
基于密钥的认证:
一台主机为客户端(基于某个用户实现):
1、生成一对密钥
ssh-keygen
-t{rsa|dsa}
-f/path/tokeyfile
-N‘password’
2、将公钥传输至服务器端某用户的家目录下的.ssh/authorized_keys文件中
使用文件传输工作传输(ssh-copy-id,scp)
ssh-copy-id -i /path/to/pubkey USERNAME@REMOTE_HOST
例如:ssh-copy-id -i .ssh/id_rsa.pub root@172.16.100.2
单向的
3、测试登录
scp:基于ssh的远程复制命令,可以实现现在主机之间传输数据
scp[options] SRC DEST
-r:复制目录
例如:scp root@172.16.100.2:/etc/fstab ./
远程主机:REMOTE_MACHINE
USERNAME@HOSTNAME:/path/to/somefile
复制到远程主机上例子:scp fstab root@172.16.100.2:/root
openssl实现私有CA服务器一般规范步骤:
CA服务器:
1、vim /etc/pki/tls/openssl.cnf
dir=/etc/pki/CA
2、cd /etc/pki/CA
# make certs newcerts crl
# touch index.txt
# echo 01 > serial
3、自签证书
# (umask 077; openssl genrsa -out private/cakey.pem 2048)
# openssl req -x509 -new -key private/cakey.pem -out cacert.pem -days 3650
证书申请方:
1、为某服务生成密钥:
# cd /etc/vsfptd/
# mkdir ssl
# cd ssl
# (umask 077; openssl genrsa 1024 > vsftpd.key)
# openssl req -new -key vsftpd.key -out vsftpd.csr
2、将此请求通过某方式传递给CA服务器
3、CA签署证书(在CA服务器上操作)
# openssl ca -in vsftpd.csr -out vsftpd.crt -days N
总结A--B的会话
A发送方:
1、计算数据的特征码(单向加密);
2、用自己的私钥加密特征码,并附加在数据后面
3、生成一个临时对称密钥
4、用此密钥结合某算法加密数据及加密后的特征码
5、对接收方的公钥加密此对称密钥,并附加加密后的数据后面
6、发送至接收方
B接收方
1、用自己的私钥解密加密的对称密钥
2、用对称密钥解密数据
3、用对方的公钥解密加密的特征码
4、用同样的算法计算数据的征码。并与解密而来的征码进行比较