加密与解密、OpenSSL(SSL/TLS)、OpenSSH(ssh)、dropbear |
您所在的位置:网站首页 › linux生成密码给dropbear › 加密与解密、OpenSSL(SSL/TLS)、OpenSSH(ssh)、dropbear |
下面介绍的是Linux的加密与解密、OpenSSL(SSL/TLS)、OpenSSH(ssh)、dropbear。 一、数据的加密与解密 1、进程间通信基础 (1)、进程间通信方式 同一主机间进程间的通信方式:signal、shm、semaphore、message queue(MQ、RabbitMQ)。 不同主机进程间的通信方式:socket-pair。 (2)、套接字 -------IP:PORT 套接字Socket:IP:PORT 套接字,是进程的地址标识,一个套接字就是指特定主机上的特定应用程序。 三种套接字:流套接字(基于TCP协议)、数据报套接字(基于UDP协议)、裸套接字(基于底层协议)。 (3)、守护进程 对于服务器,对套接字有监听机制,即进程的监听模式。我们就把具有这种监听模式的进程,称为守护进程,也叫服务进程。其套接字是在启动之前,向内核注册得到的,即分配了端口号。对于端口号,分为了以下4类:0(默认没有被使用)、1~1023(固定的端口)、1024~49151(注册端口)、49152~65535(动态端口)。 2、数据加密、解密基础 数据安全的三个标志:机密性、完整性、可用性。 数据安全的三类威胁:威胁机密性(窃听、嗅探、扫描、信息量分析)、威胁完整性(更改、伪装、重放、否认)、威胁可用性(拒绝服务)。 数据安全的保护方法:加密解密技术。 3、加密算法 传统的两种加密方法,有替代、置换;现代的加密方法,有块加密算法。 常用的四种加密算法:对称加密算法、公钥加密算法、单向加密算法、密钥交换算法。 (1)、对称加密算法 特点:加密和解密使用同一秘钥、加密的速度较快、块加密。 缺点:对称加密,最大的缺点就是秘钥分发困难,容易泄露,其次,就是加密和解密保存的秘钥过多。 其 6 种主流算法为:DES(56bit密钥,64bit块)、AES(128bit)、Blowfish、Twofish、IDEA、RC4/RC6。 (2)、公钥加密算法 特点:秘钥由公钥和私钥组成、秘钥长度长(安全性高)。私钥,通过特定的工具创建生成(secret key/private key);公钥,从私钥中提取生成(public key)。 缺点:公钥加密,秘钥较长,加密数据的时候,消耗的系统资源和时间都较多,很少用来加密大批量数据,常用来加密小数据,如秘钥等。 用途:数字签名(身份确认)、秘钥交换、数据加密。 其 3 种主流算法为:RSA、DSA、ELgamal。 (3)、单向加密算法 特点:定长输出、雪崩效应。单向加密算法,只能加密,不能解密;可从数据中提取密码指纹。 功能:保证数据的完整性。 其 2 种主流算法为:md5(128bit定长输出)、sha系列。 (4)、秘钥交换算法 -----IKE 秘钥交换算法,用公钥进行加密,一对主机共有4个秘钥,有两个共有的公钥,每个主机还有一个单独的私钥。每个主机用两个公钥加自己的私钥进行数据加密,解密时,解密主机再加入自己的私钥,进行解密。即,只有4个秘钥齐全才能进行解密操作,加强了数据的可靠性。 四种加密算法的联合应用示例: 1)、通信双方互相交换证书,并到信任的CA(三方)进行证书验证; 2)、发送方使用某种对称加密算法对数据进行【加密】; 对加密后的数据使用【单向加密】计算其【特征值】; 发送方再用自己的【私钥加密此特征值】,以证明数据来源的可靠; 发送方使用接收方的证书加密对称密钥。 3.接收方在收到数据之后,先使用自己的私钥解密对称密钥; 然后使用发送方的公钥解密特征值; 再利用相同的单向加密算法,重新计算加密数据的特征值。比较两个特征值,如果特征值一致,则表明数据完整; 再用解密出来的对称密钥解密出原始数据。 CA发挥作用的步骤: 1)、双方【交换证书】 2)、双方协商【加密算法】 3)、双方验证【证书真伪】 ---------检查以下四个方面 用CA的公钥解密证书中CA的【签名】,能解密说明证书来源可靠。 用通用的加密算法加密证书,取得【特征值】;与解密出来的特征值比较,如果相同,说明证书完整性可靠。 检查证书的【有效期】是否在合法时间范围,如果过期则证书不被认可。 检查证书的【主体名称】和此次通信的目标是否能够对应。 二、OpenSSL(SSL/TLS) 1、ssl/tsl简介 ssl ---------叫做:安全的套接字层 tsl ---------叫做:传输层安全(采用分层设计) ssl/tsl【握手】的四个阶段: (1)、客户端向服务器索要证书,并验证证书。(版本、算法等) -----------【客户端】生成一个随机数,用于生成会话秘钥。 (2)、双方协商生成会话秘钥。(版本、算法等) -----------【服务器】生成一个随机数,用于生成会话秘钥 (3)、进行加密通信(已生成会话秘钥) -----------【客户端】发送给服务器端一个随机数,用于服务器上公钥加密。 (4)、互相通告握手结束 -----------服务器端收到【客户端】发来的一个随机数,用于发送数据并结束。 2、openssl及其组件 --------------实现加密功能 openssl是一个开源实现ssl/tsl的标准。openssl是一个命令行工具,其使用多个子命令来实现加密解密的功能,其下的子命令有:dgst、enc、ca、req、genrsa、rand、crl、passwd、x509等。 dgst ---------使用单向加密算法 enc ----------使用对称加密算法 (1)、openssl enc 命令 ---------对称加密、解密 格式:openssl enc -ciphername [-in filename] [-out filename] [-e] [-d] [-a/-base64] [-salt] 常用选项: -ciphername -------算法名称(des3、des、aes、rc4) -e ----------加密 -d ----------解密 -a/-base64 ------------纯文本格式编码 -salt -------------盐随机 -in filename --------------加密的文件路径 -out filename -------------加密后的输出文件路径 # openssl enc -e -salt -in fatab -out fstab.des3 -des3 -a -----------加密 # openssl enc -d -in fstab.des3 -out fstab2 -des3 -a -----------解密 (2)、openssl dgst -----------单向加密(只能加密) 格式:openssl dgst -ciphername /PATH/TO/SOME_FILE 常用选项: -ciphername ------------算法名称(des3、des、aes、rc4) # openssl dgst -md5 fstab (3)、openssl rand ------------生成随机数 格式:openssl rand [-out file] [-base64] [-hex] num 常用选项: -base64 ---------纯文本格式 -hex ------------16进制 num ----------生成的随机数长度(单位:字节) # openssl rand -base64 -hex 10 (4)、openssl passwd ------------生成用户密码 格式:openssl passwd [-1] [-salt string] # openssl passwd -1 [-salt ‘openssl rand -base64 5’] (5)、openssl genrsa -----------生成私钥 格式:openssl genrsa [-out filename] [-des] [-des3] [-idea] [-f4] [numbits] # (umask 077;openssl genrsa -out myp.key 4096) (6)、openssl rsa -----------生成公钥 格式:openssl rsa [-in filename] [-out filename] [-pubout] # openssl rsa -in myp.key2 -out mykey.pub (7)、openssl req ------------生成自签证书 格式:# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3653 常用选项: -new ----------生成新证书签署请求 -x509 ----------生成自签证书,专用于私有CA的自签 -key ------------指定私钥路径 -out ------------自签证书保存路径 -days ------------证书有效期限(单位:天) 3、建立私有CA步骤 (1)、创建主机私钥,抽取公钥 (2)、服务器上生成自签证书 (3)、生成目录级文件、文本格式文件 三个【目录级】文件:cert、crl、newcerts。(/etc/pki/CA/cert /etc/pki/CA/crl /etc/pki/CA/newcerts) 两个【文本格式】文件:serial、index.txt。(/etc/pki/CA/serial /etc/pki/CA/index.txt) 专有配置文件:/etc/pki/tls/openssl.cnf 【公钥】保存位置:/etc/pki/CA/cacert.pem 【私钥】保存位置:/etc/pki/CA/private/cakey.pem 例: # ( umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) # openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3653 # touch /etc/pki/CA/index.txt # echo 01 > /etc/pki/CA/serial ----------创建serial文件时,需给定一个初始序列号,一般为01。 4、https 的实现步骤(生成证书): #安装httpd程序 # mkdir /etc/httpd/conf/ssl # cd /etc/httpd/conf/ssl ssl]# (umask 077;openssl genrsa -out /etc/httpd/conf/ssl/http.key 4096) ---------创建私钥 ssl]# openssl req -new -key http.key -out httpd.csr -days 3653 --------生成自签证书 ~]# openssl ca -in /tmp/csrs/httpd.csr -out /tmp/csrs/httpd.crt -days 365 ----------CA服务器签发证书 ~]# openssl x509 -in /etc/pki/CA/newcerts/01.pem -noout -serila -subject ------查看证书 5、吊销证书步骤(在CA上执行): ~]# openssl x509 -in /etc/pki/CA/newcerts/01.pem -noout -serila ------获取客户端证书相应的序列号 ~]# openssl ca -revoke /etc/pki/CA/newcerts/01.pem --------吊销证书,注意相应的序列号 ~]# echo 01 > /etc/pki/CA/crlnumber ----------生成吊销证书的吊销编号 ~]# openssl ca -genctl -out /etc/pki/CA/ca.crl -----------更新证书吊销列表 三、OpenSSH(ssh) 1、openssh基础: openssh 用于服务器端,远程登录。对于C/S架构,默认不允许管理员直接远程登录,在开启C/S服务之前,要先关闭防火墙和selinux。 CentOS 6开启C/S服务为:# chkconfig telenet on # service xinetd start CentOS 7开启C/S服务为:# systemctl start telnet.socket 2、ssh ssh是安全的shell,当前使用的ssh协议是sshv2。ssh有两种认证方式,即基于口令、基于秘钥两种人认证方式。 openssh由两部分组成,即客户端(ssh)、服务器端(sshd)。 3、ssh客户端工具 --------------------------------- /etc/ssh/ssh_config (1)、ssh命令 -------远程登录 格式:ssh [options]... [user@]hostname [command] 常用选项: -l user -----------指明登录的用户 -p port ----------指明远程服务器目标端口 -b bind_address -------------指明服务器ip地址 -X -------------------X11转发 -Y --------------受信任的X1转发 客户端访问: # ssh -p PORT user@host # dbclient -p PORT user@host (2)、ssh机制 ssh-keygen命令 ------------【创建秘钥对】 格式:ssh-keygen [-q] [-b bits] [-t type] [-f output_keyfile] [-P passphrase] 常用选项: -q -----------静默模式 -b bits --------------密钥的长度(RSA、DSA、ECDSA、ED25519) -t type --------------公钥加密算法类型(dsa、ecdsa、ed25519、rsa) -f output_keyfile -------------生成密钥文件的路径 -P passphrase --------------私钥的加密密码 ssh-copy-id命令 -----------【复制秘钥】 格式:ssh-copy-id [-i [identity_file]] [-p port] [user@]hostname 常用选项: -i ------------指定要复制的公钥文件 -p port ----------------服务器端的端口 scp命令 ----------------基于ssh连接完成【复制】 格式:scp [options]... SRC HOST:/PATH/TO/DEST ------------推送 scp [options]... HOST:/PATH/FROM/SRC DEST ----------拉取 常用选项: -r ---------------递归复制 -p ---------------保留源文件的权限 -q ----------------静默模式 -P port -----------------指定监听端口
(3)、ssh秘钥验证步骤: # ssh-keygen -t rsa -P 'passphrase' -f /PATH/TO/KEY_PAIR ------------生成秘钥对 # ssh-copy-id -i /PATH/TO/PUBLIC_KEY user@HOSTNAME ----------发送公钥到目标服务器 # ssh -l user HOSTNAME ------------远程登录(# ssh user@HOSTNAME) 4、ssh的服务器端工具 -----------------------------------/etc/ssh/sshd_config 修改配置文件/etc/ssh/sshd_config后,必须读取配置文件,如下: # systemctl reload sshd.service # service sshd reload 四、dropbear -------------------用于嵌入式环境,实现ssh协议远程登录。 1、编译安装dropbear步骤: (1)、解压 (2)、# ./configure (3)、# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert" (4)、# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert" install 2、dropbear命令 格式:# dropbear -p IP:PORT -F -E 常用选项: -p IP:PORT -----------------启动dropbear服务进程监听的套接字 -F ----------------dropbear服务进程运行在前台 -E ---------------进程消息从标准错误输出,不写入日志 -w ----------------禁止root直接登录dropbear服务器 3、启动dropbear步骤: # dropbear -h # mkdir /etc/dropbear -------------秘钥文件目录 # dropbearkey -t rsa -s 2048 -f /etc/dropbear/dropbear_rsa_host_key --------------创建秘钥 # dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key # dropbearkey -t ecdsa -s 521 -f /etc/dropbear/dropbear_ecdsa_host_key # dropbear -p IP:PORT -F -E ------------启动dropbear,运行于前台 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |