• LinuxDay19——加密与安全(1)


    安全算法

    1、对称加密

      对称加密算法,原则算法公开

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

     特点

      加密。解密使用同一个密钥,效率高

      将原始数据分割成固定大小的块,逐个进行加密

     缺点

      密钥过多

      密钥分发中会出现泄漏

      数据来源无法确认

    2、非对称加密

      公钥加密:密钥是成对出现

      公钥:公开给所有人;public key

      私钥:自己留存,必须保证其私密性;secret key

     特点

      用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

     算法

      RSA(加密,数字签名),DSA(数字签名),ELGamal

     功能

      数字签名:主要在于让对方确认发送方身份

      对称密钥交换:发送方用对方的公钥加密一个对称密钥发送给对方

      数据加密:适合加密较小数据

     缺点

      密钥长,加密解密效率低下

    3、单向散列(hash)

     特性

    雪崩效应:数据不同,摘要一定大不同

    单向:不可反推数据

    摘要长度固定大小

     算法

      md5:128、sha1:160、sha224、sha256、sha384、sha512

     功能

      用来验证数据的完整性

    4、DH密钥交换

      1)A: a,p 协商生成公开的整数a, 大素数p

       B: a,p

      2)A:生成隐私数据 :x (x<p ),计算得出 a^x%p,发送给B

       B:生成隐私数据 :y,计算得出 a^y%p,发送给A

      3)A:计算得出 [(a^y%p)^x] %p = a^xy%p,生成为密钥

       B:计算得出 [(a^x%p)^y] %p = a^xy%p,生成为密钥

    数据加密过程:

    Pb公钥加密{data+Sa私钥加密{hash(data)}} →Sb data+Sa{hash(data)} hash(data)=data1 →

    Pa hash(data)=data2→ key[data+Sa{hash(data)}]+Pb(key)

    安全协议

    SSL: Secure Socket Layer

    TLS: Transport Layer Security

    两阶段协议,分为握手阶段和应用阶段

      握手阶段(协商阶段):

      客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是

    通过MasterSecret生成。

      应用阶段:

      在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信

     

    Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换

    ChangeCipherSpec 协议:一条消息表明握手协议已经完成

    Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告

    Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等

    HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的组合。HTTP over SSL”或“HTTP over TLS”,对http协议的文本数据进行加密处理后,成为二进制形式传输

     

    gpg

    -c 对文件进行对称加密

    --list-key查主机上公、私钥对

      --list-public-key查看公钥

      --list-secret-key查看私钥

    --gen-key 在主机上生成公、私钥对

    -a --export -o XXX.pubkey 主机上导出公钥到XXX。publkey

    -e -r keyname file:使用指定公钥加密文件

    --import filename.pubkey:导入公钥

    --delete-secret-keys keyname:删除私钥

    --delete-keys keyname:删除公钥

    OpenSSL

     对称加密:

     工具:openssl enc (man enc)

    -e 加密

    -a base64编码(可见,已读字符显示)a-z A-Z 0-9 / +

    -des3方式加密

    -salt 加盐

    -in 对...文件加密

    -out 输出...文件

     dgst  -md5 | -hex  单向加密

     passwd -1 -salt  生成MD5加密密码

     rand -base64 | -hex # 生成随机数

     

    CA证书

    PKI: Public Key Infrastructure

    签证机构:CA(Certificate Authority)

    注册机构:RA

    证书吊销列表:CRL

    X.509:定义了证书的结构以及认证协议标准

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

    向CA申请证书

    思路:

    1、建立rootCA

      创建root CA

      生成私钥

      自签名证书

    2、用户或服务器

      生成私钥

      生成证书申请

      将申请文件发给CA

    3、CA办法证书

    4、证书发送给客户端

    5、应用软件使用证书

    规划

    Centos7 →CA Centos6客户端

    服务器端下

    生成私钥(umask 077;openssl genrsa -out private/cakey.pem 4096)

     

    openssl req -new新成立 -x509自签名 -key private/cakey.pem -out cacert.pem -days有效期 3650

    >CN

    >beijing

    >beijing

    >test

    >it

    >www.test.com

    >

    自签名证书

    查看签名证书 openssl x509 -in cacert.pem -noout -text -issuer查看发布

    被颁发端下

    生成私钥(umask 077;openssl genrsa -out相关申请文件目录下app.key 1024)

    生成申请文件

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

    >cn

    >beijing

    >beijing

    >test

    >it

    >app.test.com

    创建相关文件

    cd /etc/pki/CA

    touch index.txt

    echo 01 > serial

    将签署请求发送给CA

      scp app.csr xxx.xxx.xxx.xxx()服务端):/etc/pki/CA/

    签发证书

    openssl ca -in app.csr -out CA/certs/app.crt -days 100

    将签署后的证书发回客户端

       scp /etc/pki/CA/certs/app.crt xxx.xxx.xxx.xxx(被颁发端):/root

    查看证书状态

      openssl ca -status 10

    查看吊销状态

      openssl ca -revoke newcerts/10.pem

    生成吊销列表

      openssl ca -gencrl -out crl.pem

  • 相关阅读:
    java编程思想概括(第二章)一切都是对象
    java编程思想概括(第六章)复用类
    .net程序在无.net环境下运行
    一个让人哭笑不得的触发器
    iReaper for android
    博易博客删除垃圾评论
    解决博易2.0版分页问题
    允许更新此预编译站点的作用
    java包的命名规则技巧
    简易拨号器iCall
  • 原文地址:https://www.cnblogs.com/Gmiaomiao/p/9069438.html
Copyright © 2020-2023  润新知