加密和安全

对称加密算法

对称加密:加密和解密使用同一个密钥 DES:Data Encryption Standard,56bits 3DES: AES:Advanced (128, 192, 256bits) Blowfish,Twofish IDEA,RC6,CAST5   加密、解密使用同一个密钥,效率高

 

对称加密

公钥加密:密钥是成对出现 公钥:公开给所有人;public key 私钥:自己留存,必须保证其私密性;secret key 特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然 功能: 数字签名:主要在于让接收方确认发送方身份 对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方 数据加密:适合加密较小数据  

非对称加密

基于一对公钥/密钥对 • 用密钥对中的一个加密,另一个解密

实现加密:

• 接收者 生成公钥/密钥对:P和S 公开公钥P,保密密钥S • 发送者 使用接收者的公钥来加密消息M 将P(M)发送给接收者 • 接收者 使用密钥S来解密:M=S(P(M))  

实现数字签名:确认身份真实性

• 发送者 生成公钥/密钥对:P和S 公开公钥P,保密密钥S 使用密钥S来加密消息M 发送给接收者S(M) • 接收者 使用发送者的公钥来解密M=P(S(M)) 结合签名和加密 分离签名   加密和安全

 

                    银行U盾里放置的是自己的私钥 /密钥   加密信息发送给银行使用自己的公钥解密来核实身份真实性   插上U盘输口令 (公钥加密)U盘丢失防止他人冒充     key(Sa) 对称密钥来加密私钥 Pb{Sa(data)} 算法: RSA(加密,数字签名) DSA(数字签名) ELGamal

 

 

hash 加密

hash(data)=digist 摘要  

data不同 digist 摘要必不同

digist不同逆推出data

任意长度输入  固定长度输出

如果固定位某种算法 长度也固定

md5 算法 128位 

sha1 160位

sha5 512位

 

加密和安全

md5sum -c 检查单个文件的完整性

比较hash

rpm -v 查看 hash 值 rpm -k  

来源:数字签名

 

 

 

 

 加密和安全

 

检查文件真实完整性 

ma5sum文件重定向md5后缀的加密

md5sum重定向不同文件写入md5.log 日志

 md5sum -c         md5.log日志 比较检查完整性

               --check

 

key(data+Sb[hash(data)]) + Pa(key)

本机操作 对称加密 gpg -c

gpg -d -o  生成新文件

 gpg --gen-key

a发给b b的公钥加密 6发给7

 

 

gpg --list 导出公钥列表

gpg -a --export - o 文件导出文字文件 以 base二进制文件转换可见格式文件

- e加密  

gpg --delete -keys magedu

gpg --delete-secret-keys wange

 

A 的私人信息

 

B-A

 

使用gpg工具实现公钥加密 在hostB主机上用公钥加密,在hostA主机上解密 在hostA主机上生成公钥/私钥对 gpg --gen-key   Pa Sa 在hostA主机上查看公钥 gpg --list-keys 在hostA主机上导出公钥到wang.pubkey gpg -a --export -o wang.pubkey    Pa 从hostA主机上复制公钥文件到需加密的B主机上  scp wang.pubkey hostB: 使用gpg工具实现公钥加密 在需加密数据的hostB主机上生成公钥/私钥对 gpg --list-keys Pb Sb gpg --gen-key 在hostB主机上导入公钥 gpg --import wang.pubkey   Pa gpg --list-keys 用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg Pa gpg -e -r wangxiaochun file file file.gpg使用gpg工具实现公钥加密 复制加密文件到hostA主机 scp fstab.gpg hostA:    在hostA主机解密文件 gpg -d file.gpg            gpg -o file -d file.gpg 删除公钥和私钥 gpg --delete-keys wangxiaochun gpg --delete-secret-keys wangxiaochun

 

openssl命令

对称加密:

工具:openssl enc, gpg 算法:3des, aes, blowfish, twofish enc命令: 帮助:man enc 加密: openssl enc -e -des3(对称算法) -a(ASCII乱码转换base64编码) -salt(每次生成的不一样避免密码整体的重复性) -in testfile  -out testfile.cipher(生成新文件) base64 6位编码 2的6次方 64种组合

加密和安全

 


ASCII6位一组重新组合成BASE64编码 不够6位0来补齐 可见的为=

解密: openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile (生成新文件)  

 

单向加密

工具:md5sum, sha1sum, sha224sum,sha256sum…     openssl dgst dgst命令 帮助:man dgst openssl dgst -md5 [-hex默认] /PATH/SOMEFILE openssl dgst -md5 testfile md5sum /PATH/TO/SOMEFILE   加密和安全

 

  MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现 网络通信中保证所传输数据的完整性机制 CBC-MAC HMAC:使用md5或sha1算法openssl命令

生成用户密码:

passwd命令: 帮助:man sslpasswd openssl passwd -1(md5加密) -salt SALT(最多8位) 随机salt生成随机密码   加密和安全

$$内为salt

openssl passwd -1 –salt (指定 salt 指定使用上次密码)centos

生成随机数:

帮助:man sslrand

openssl rand -base64|-hex NUM

NUM: 表示字节数,使用-hex,每个字符为十六进制,相当于4位二进制, 出现的字符数为NUM*2openssl命令 加密和安全

生成8位随机口令

公钥加密: 算法:RSA, ELGamal 工具:gpg, openssl rsautl(man rsautl) 数字签名: 算法:RSA, DSA, ELGamal 密钥交换: 算法:dh DSA:Digital Signature Algorithm DSS:Digital Signature Standard RSA:openssl命令 生成密钥对儿:man genrsa 生成私钥 openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS (umask 077; openssl genrsa –out test.key –des 2048)(加密位数)对称加密加密私钥

 

()开启子shell 仅对当前文件设置提高访问权限 防止丢失他人窃取密码(字符串)

    openssl rsa -in test.key –out test2.key 将加密key转换位新文件(没有对称加密)       从私钥中提取出公钥 openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE openssl rsa –in test.key –pubout –out test.key.pub     随机数生成器:伪随机数字 键盘和鼠标,块设备中断 /dev/random:仅从熵池返回随机数;随机数用尽,阻塞 /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机 数,非阻塞OpenSSL    

PKI:Public Key Infrastructure

CA RA CRL 证书存取库 建立私有CA: OpenCA openssl 证书申请及签署步骤: 1、生成申请请求 2、RA核验 3、CA签署 4、获取证书

 

 A——B

Pb  Sb 加密

Sa  Pa 来源性

每个用户的公钥 私钥 加密解密一一对应  PaSa   SaPa            PbSb SbPb

 公钥公开发放不具有唯一性   无法拿到保证对方真实公钥

Ca核对公钥

openssl -dgst -md5 -1 testfile    -1指定盐

openssl rand -base64 12

 umask 066 :openssl genrsa -out 

openssl命令 生成密钥对儿:man genrsa 生成私钥 openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS (umask 077; openssl genrsa –out test.key –des 2048) openssl rsa -in test.key –out test2.key 将加密key解密 从私钥中提取出公钥 openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE openssl rsa –in test.key –pubout –out test.key.pub 随机数生成器:伪随机数字 键盘和鼠标,块设备中断 /dev/random:仅从熵池返回随机数;随机数用尽,阻塞 /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机 数,非阻塞   证书申请及签署步骤: 1、生成申请请求 2、RA核验 注册机构 测试可省 3、CA签署  4、获取证书   创建CA和申请证书 创建私有CA: openssl的配置文件:/etc/pki/tls/openssl.cnf 三种策略:match匹配、optional可选、supplied提供 match:要求申请填写的信息跟CA设置信息必须一致 optional:可有可无,跟CA设置信息可不一致 supplied:必须填写这项申请信息, 1、创建所需要的文件 touch /etc/pki/CA/index.txt 生成证书索引数据库文件 echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号 2、 CA自签证书 生成私钥 cd /etc/pki/CA/ (umask 066; openssl genrsa -out private/cakey.pem 2048)

  

  

1、创建所需要的文件touch /etc/pki/CA/index.txt 生成证书索引数据库文件echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号         2、 CA自签证书生成私钥cd /etc/pki/CA/ (umask 066; openssl genrsa -out private/cakey.pem 2048)创建CA和申请证书生成自签名证书openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem-days 3650 -out /etc/pki/CA/cacert.pem     、颁发证书 在需要使用证书的主机生成证书请求 给web服务器生成私钥 (umask 066; openssl genrsa –out /data/test.key 2048) 生成证书申请文件 openssl req -new -key /data/test.key -out /data/test.csr 将证书请求文件传输给CA CA签署证书,并将证书颁发给请求者 openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 100 注意:默认要求 国家,省,公司名称三项必须和CA一致创建CA和证书管理  查看证书中的信息: openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates openssl ca -status SERIAL 查看指定编号的证书状态

 

 

 实验:私有ca的建立

1 建立CA

cd /etc/pki/CA

touch index.txt   证书信息

echo 0F > serial

(umask 066;openssl genrsa -out private/cakey.pem 4096 )

openssl req -new -x509 -key private/cakey.pem  -out cacert.pem -days 3650

openssl x509 -in cacert.pem -noout -text

 

  

2 在客户端生成证书申请

 (umask 066;openssl genrsa -out test.key 1024)

openssl req -new  -key test.key -out test.csr

scp test.csr  192.168.36.7:/data

 

 

3 在CA给客户端颁发证书

openssl ca -in /data/test.csr  -out certs/test.crt -days 100

 

SSH ssh: secure shell, protocol, 22/tcp, 安全的远程登录 具体的软件实现: OpenSSH: ssh协议的开源实现,CentOS默认安装 dropbear:另一个开源实现 SSH协议版本 v1: 基于CRC-32做MAC,不安全;man-in-middle v2:双方主机协议选择安全的MAC方式 基于DH算法做密钥交换,基于RSA或DSA实现身份认证 两种方式的用户登录认证: 基于password 基于keyOpenssh软件组成 OpenSSH介绍 相关包: openssh openssh-clients openssh-server 工具: 基于C/S结构 Linux Client: ssh, scp, sftp,slogin Windows Client:xshell, putty, securecrt, sshsecureshellclient Server: sshdssh客户端  客户端组件:  ssh, 配置文件:/etc/ssh/ssh_config Host PATTERN StrictHostKeyChecking no 首次登录不显示检查提示  格式:ssh [user@]host [COMMAND] ssh [-l user] host [COMMAND]  常见选项 -p port:远程服务器监听的端口 -b:指定连接的源IP -v:调试模式 -C:压缩方式 -X:支持x11转发 -t:强制伪tty分配 ssh -t remoteserver1 ssh -t remoteserver2 ssh remoteserver3ssh客户端 允许实现对远程系统经验证地加密安全访问 当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub (CentOS7默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的 ~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥,不能匹配,将拒 绝连接公钥交换公钥交换 客户端发起链接请求 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥) 客户端生成密钥对 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密 客户端发送加密后的值到服务端,服务端用私钥解密,得到Res 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到 客户端公钥) 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥, 之后的所有通讯都会被加密ssh加密通讯ssh服务登录验证 ssh服务登录验证方式 用户/口令 基于密钥 基于用户和口令登录验证 1 客户端发起ssh请求,服务器会把自己的公钥发送给用户 2 用户会根据服务器发来的公钥对密码进行加密 3 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确, 则用户登录成功基于用户名口令登录验证ssh服务基于密钥登录验证 基于密钥的登录方式 1 首先在客户端生成一对密钥(ssh-keygen) 2 并将客户端的公钥ssh-copy-id 拷贝到服务端 3 当客户端再次发送一个连接请求,包括ip、用户名 4 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的 IP和用户,就会随机生成一个字符串,例如:magedu 5 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端 6 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的 字符串发送给服务端 7服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一 致,就允许免密码登录基于密钥的登录方式基于key认证实现 基于密钥的认证: (1) 在客户端生成密钥对 ssh-keygen -t rsa [-P ''] [-f “~/.ssh/id_rsa"] (2) 把公钥文件传输至远程服务器对应用户的家目录 ssh-copy-id [-i [identity_file]] [user@]host (3) 测试 (4) 在SecureCRT或Xshell实现基于key验证 在SecureCRT工具—>创建公钥—>生成Identity.pub文件 转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化格式),并复制到 需登录主机上相应文件authorized_keys中,注意权限必须为600,在需登录的ssh 主机上执行:ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys基于key认证 (5)重设私钥口令: ssh-keygen –p (6)验证代理(authentication agent)保密解密后的密钥 这样口令就只需要输入一次 在GNOME中,代理被自动提供给root用户 否则运行ssh-agent bash (7)钥匙通过命令添加给代理 ssh-add

 

 

 

 

 

 

 

 

 

 

 

  

 

上一篇:gpg 加解密和数据库备份加密


下一篇:Maven 简单配置gpg