OpenSSL:


数据加密: SSL: Secure Socket Layer


NIST:

    保密性:

        数据保密性

        隐私性

    完整性:

        数据完整性

        系统完整性

    可用性:


OSI: x.800

    安全***:

        被动***:监听

        主动***:伪装、重放、消息篡改、拒绝服务

    安全机制:

        加密/解密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证

    安全服务:

        认证

        访问控制

    数据保密性

        连接保密性

        无连接保密性

        选择域保密性

        流量保密性

    数据完整性

    不可否认性


安全机制:PKI:public Key Infrastructure


密码算法和协议:

    对称加密

    公钥加密

    单向加密

    认证协议


加密算法和协议:

    对称加密:加密和解密使用同一个密钥;

        依赖于:算法和密钥;

            安全性依赖于密钥,而非算法;

    

    常见算法:

        DES:Data Encryption Standard, 56bits

        3DES: 

        AES: Advanced Encrpytion Standard, (128bits, 192, 256, 384, 512bits)

        Blowfish

        Twofish

        IDEA

        RC6

        CAST5

    

    特性:

        1、加密、解密使用同一密钥;

        2、将明文分隔成固定大小的块,逐个进行加密;

    

    缺陷:

        1、密钥过多;

        2、密钥分发;

    

非对称加密:公钥加密

    公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之亦然;   

    密钥对儿:私钥和公钥

    私钥:secret key,仅允许个人使用;

    公钥:public key,公开给所有获取;

    用处:

    身份认证:私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份;

    密钥交换:与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方;

    数据加密:


    算法:

        RSA

        DSA

        ELGamal

    

    特性:

        1、密钥长度较大,例如512bits, 2048bits, 4096bits

        2、加密解密分别使用密钥对儿中的密钥相对进行;

        3、常用于数字签名和密钥交换;

    

单向加密:提出数据的特征码;

    特性:

    1、定长输出:无论原来的数据是多大级别,其加密结果长度一样;

    2、雪崩效应:原始数据微小改变,将会导致结果巨大变化;

    3、不可逆:


    算法:

    MD5:128bits定长输出;

    SHA1:160bits定长输出;

    SHA256

    SHA384

    SHA512:

    CRC32


wKioL1YKUl7h7bksAABmDLYPeA4645.jpg

    

    用处:

        1、数据完整性;


密钥交换:IKE (Internet Key Exchange)

    公钥加密

    DH (Deffie-Hellman)

        A:P,G

            X

    

        P^X%G

    

    从B拿到:(P^Y%G)^X=P^XY%G

    

        B:

        公开:P,G

        私有:Y

        

        P^Y%G

        

    从A拿到:(P^X%G)^Y=P^XY%G


一次加密通信过程(数字信封)

    发送者:

    1、使用单向加密算法提取生成数据的特征码;

    2、使用自己的私钥加密特征码附加在数据后面;

    3、生成用于对称加密的临时密钥;

    4、用此临时密钥加密数据和已经使用私钥加密后的特征码;

    5、使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后方;

    

    接收方:

    1、使用自己的私钥解密加密的临时密钥;从而获得对称密钥;

    2、使用对称密钥解密对称加密的 数据和私钥加密的特征码密文;从而获得数据和特征码密文;

    3、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码;

    4、使用与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较;



SSL:secure socket layer

    sslv1, sslv2, sslv3,

    IETF: tlsv1.0, tlsv1.1, tlsv1.2, tlsv1.3


数字证书:

    CA:签证机构

    功用:保证公钥信息安全分发;


    数字证书的格式(x.509 v3):

        版本号(version)

        序列号(serial number):CA用于惟一标识此证书;

        签名算法标志(Signature algorithm identifier)

        发行者的名称:即CA自己的名称;

        有效期:两个日期,起始日期和终止日期;

        证书主体名称:证书拥有者自己的名字

        证书主体公钥信息:证书拥有者自己的公钥;

        发行商的惟一标识:

        证书主体的惟一标识:

        扩展信息:签名:CA对此证书的数字签名;


    证书通常有两类用途:

    用户证书

    主机证书(httpd)


    撤消证书:

    

PKI: Public Key Infrastructure

    签证机构:CA

    注册机构:RA

    证书吊销列表:CRL

    证书存取库:

    


openssl的组成部分:

    libcrypto:加密、解密库文件;

    libssl: ssl协议实现

    openssl:多用途命令行工具,每种功能都使用专用的子命令来实现


gpg: GNU Privarcy Guard,是pgp规范的实现;


openssl: 

    子命令分类:

    标准命令

    消息摘要命令

    加密、解密相关的命令

wKiom1YLdg7zq6BXAACIPSIgjhU512.jpg

    

加密文件(对称加密):

    工具:openssl enc, gpg

    算法:des, 3des, aes, blowfish, twofish, idea, cast5

wKioL1YLdueS-AzSAALaGwtjg0w006.jpg


    enc工具:

    (加密)# openssl enc -e -CIPHERNAME -a -salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMECIPHERFILE

wKioL1YLeNeDlIgPAAHKkEmsK88538.jpg

wKiom1YLeKDSR120AAKn03FGHe4059.jpg

    (解密)# openssl enc -d -CIPHERNAME -a -salt -in /PATH/FROM/SOMECIPHERFILE -out /PATH/TO/SOMEFILE

wKioL1YLejPBshIKAAHbDjLtkdo677.jpg


单向加密:

    算法:md5, sha1

    工具:openssl dgst, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum

    语法:# openssl dgst -CIPHER /PATH/TO/SOMEFILE...

wKioL1YLfUCTCD-aAACxIOz9xsU228.jpg


    MAC: 消息认证码,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性;

    机制:CBC-MAC;

          HMAC:使用md5或sha1算法 

    

    生成用户密码:

    # openssl passwd -1 -salt 8bits随机数

    

    生成随机数:

    # openssl rand -hex|-base64 NUM

wKiom1YLgMbDhgONAADn4jgVl5g914.jpg




公钥加密:

工具:gpg, openssl rsautl

功能:

    数字签名:RSA, DSA, ELGamal

        DSA: Digital Signature Algorithm

        DSS: Digital Signature Standard

    密钥交换:公钥加密、DH


生成密钥对儿:

    操作过程:生成私钥,从私钥中提取公钥;

    # openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS

    

注意:在bash命令行上放在小括号中执行的命令,其实是通过打开一个子shell进程进行的;

     #(umask 077; openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS)

    

    从私钥中手动提取公钥:

    # openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout

wKioL1YLhk-C4OZJAANmTbdFTcs660.jpg    

    随机数生成器:

    random, urandom

    

    熵池:保存硬件中断产生的随机数

    /dev/random:仅从熵池中返回随机数,当熵池中的随机数耗尽时,取随机数的进程将会被阻塞;

    /dev/urandom:先从熵池中取随机数,当熵池中的随机耗尽时,就通过伪随机数生成器生成随机数;


X.509 v3数字证书的格式:

    获取证书的方法:

    向RA注册申请

    建立私有CA:

    OpenSSL

    OpenCA


使用OpenSSL构建私有CA:

    1、生成私钥;

    2、生成自签署证书;

    

    (1) 私钥用于签发证书时,向证书添加数字签名使用;

    (2) 证书:每个通信方都导入此证书至“受信任的证书颁发机构”;

    


    配置文件:/etc/pki/tls/openssl.cnf

    工作目录:/etc/pki/CA/


建立私有CA:

    1、生成私钥文件: /etc/pki/CA/private/cakey.pem

    # (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

wKiom1YLm_3ihy-lAAB0aTsp0SI565.jpg

wKiom1YLig3jK_5hAAMWXZ88hIA269.jpg

wKiom1YLijCBCWviAAVI0WUcmIU681.jpg

2、生成自签证书

    # openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days #

        -new: 生成新的证书签署请求;

        -key:私钥文件路径,用于提取公钥;

        -days N: 证书有效时长,单位为“天”;

        -out:输出文件保存位置;

        -x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;

wKiom1YLnBXBxtZtAAB0aTsp0SI652.jpg

wKiom1YLjozi_GHKAALa4sEf8IM235.jpg

    3、提供辅助文件

    # touch /etc/pki/CA/index.txt

    # echo 01 > /etc/pki/CA/serial

wKiom1YLnBXBxtZtAAB0aTsp0SI652.jpg

wKiom1YLjzzxx2EHAAFYwktxek4711.jpg



给节点发证书:

    1、节点申请证书

    在证书申请的主机上进行如下步骤:

    (1) 生成私钥;

    (2) 生成证书签署请求;

    (3) 把请求发送给CA;

wKiom1YLm6HT6fYsAACSFUmQs0Y104.jpg

wKiom1YLmzmChl32AAD8g_zU1pw542.jpg

wKioL1YLm5eAZG98AAN1rYBlAmI661.jpg

注意:

(a) 其中的subject信息部分,要与CA的保持一致;

(b) Common Name要使用此主机在通信真实使用名字;


    2、CA签发证书

    (1) 验正请求者信息

    (2) 签署证书

    # openssl ca -in /PATH/FROM/CSR_FILE -out /PATH/TO/CRT_FILE -days N

    (3) 把签署好的证书发还给请求者

wKiom1YLnBXBxtZtAAB0aTsp0SI652.jpg

wKioL1YLnyOwD6aMAAMTT8jPRYY355.jpg

wKioL1YLn3WSVsUyAAKPN6R0ut8587.jpg

wKiom1YLm6HT6fYsAACSFUmQs0Y104.jpg

wKiom1YLn6rilG8lAACK7izp-08386.jpg


吊销证书:

1、获取吊销证书的序列号;

# openssl x509 -in /PATH/FROM/CRT_FILE -noout -serial -subject


2、实现证书吊销

(1) 吊销证书

# openssl ca -revoke /PATH/FROM/CRT_FILE


(2) 生成吊销证书的编号

echo 01 > /etc/pkie/CA/crlnumber


(3) 更新证书吊销列表

# openssl crl -gencrl -out THISCA.crl



OpenSSH

ssh: secure shell (22/tcp) <-- telnet (23/tcp), rcp, rlogin


服务器上安装telnet

7.1

wKiom1YNJHLiQXcJAAG9iVUuWc0410.jpg

wKiom1YNJe7QDT_DAAFAIN_FAso200.jpg

wKioL1YNNRGCAF-cAABRiRMElUE180.jpg

wKiom1YNNSyQIxTkAADULfqJy-8736.jpg

wKioL1YNNVyQh8fwAAF33l0vZJ4984.jpg

wKioL1YNNcHzzwKuAABBvJEQ-L0734.jpg

wKiom1YNNYuQBwsTAAJJvkB5m8I689.jpg

wKiom1YNNi-BsXJjAAHBLKDRpgk301.jpg


6.7telnet

wKiom1YNN43SKaimAAIf3z8-3Xk357.jpg

wKioL1YNOHTQySUBAAJcTEzNkzA469.jpg

wKiom1YNOSLh9zlMAAI-H_8NVuo155.jpg

wKiom1YNObaRvT4cAAJJp5gsv4E288.jpg


    ssh protocol:v1, v2(目前)


两种方式的用户认证:基于口令;基于密钥


C/S

    Server: sshd

    Client:

        Linux: ssh

        Windows:

            xshell

            putty

            securecrt

            ...


OpenSSH:

    sshd: 服务器

    ssh: 客户端

    scp: 安全跨主机复制工具,基于ssh协议实现;

    sftp


    sshd: /etc/ssh/sshd_config

    ssh: /etc/ssh/ssh_config

    

    ssh命令行客户端:

        ssh [options] [-l user] host ['COMMAND'] -p PORT

        ssh [options]  [user@]host ['COMMAND'] -p PORT

        

wKiom1YNSTvAJwdhAAJyaZH4XIo927.jpg

wKiom1YNSbfBINPyAAF0lITKWfs881.jpg

wKioL1YNSpuwAEmoAATyrxXTaxA896.jpg


    基于密钥认证:

    在客户端生成一对密钥,私自己留存;公钥通过私密方式保存至要登录的远程服务某用户的家目录的专用于ssh通信的文件;


# ssh-keygen [-t rsa]

# ssh-copy-id -i ~/.ssh/id_rsa.put user@host

示例1:

wKioL1YNTLDAQipxAARTdQ2H3kc673.jpg

wKioL1YNTQXx7NgxAAU9ErAhY8o042.jpg

示例2:

wKiom1YNTjGCbOIqAAS1eY8XR7A213.jpg

wKiom1YNTqjBXfivAAWO7UnS_IY950.jpg


scp远程复制命令:

    push: scp [-rp] /path/from/somefile user@host:/path/to/somewhere  -P PORT

    pull: scp [-rp] user@host:/path/from/somefile /path/to/somewhere -P PORT

    -r:目录

    -p:保持原来的权限

   

wKioL1YNVQODNkG2AAVRVDddUEM717.jpg

wKioL1YNVT2zvwtOAAQdutNIzBM905.jpg

wKiom1YNVi3Si8SOAATPN00Lo38986.jpg


    sshd服务器端的安全配置:

    /etc/ssh/sshd_config

        Port 22

        Protocol 2


    限制可登录用户:

    PermitRootLogin : 是否允许管理员直接登录; no

    AllowUsers user1 user2 ...白名单

    AllowGroups grp1 grp2 ...白名单

    DenyUsers user1 ...黑名单

    DenyGroups grp1 ...黑名单


    仅监听需要监听的IP地址:

    ListenAddress 0.0.0.0


    网络使用强密码策略:随机数openssl


    认证出错次数:MaxAuthTries 6(一般3)


    日志分析:/var/log/secure