zoukankan      html  css  js  c++  java
  • 系统安全-Man in the middleattack

    窃听VS加密(解决数据机密性)

    加密由两部分组成:算法&秘钥(算法要够复杂,秘钥要够安全)

    对称加密:(Symmetric encryption)

    采用单秘钥密码系统的加密方法,同一个秘钥可以同时用作信息的加密和解密,这种加密的方法称为对称加密,也称为单秘钥加密。

    需要对加密和解密使用相同秘钥的加密算法。由于其速度,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为秘钥加密。

      DES(Data Encryption Standard数据加密标准)

      3DES(Triple DES 三重DES)

      AES(Advanced Encryption Standard 高级加密标准)

    非对称加密:(Asymmetric Encryption)

    与堆成加密算法不同,非对称加密算法需要两个秘钥:公开秘钥(publickey)和私有秘钥(Privatekey).

    公开密钥和私有秘钥是一对,如果用公开秘钥对数据进行加密,只有用对应的私有秘钥才能解密。因为加密和解密使用的是两个不同的秘钥,所以这种算法叫做非对称加密算法。

      RSA

      DSA

    OpenSSL对称加密

    加密,使用des算法,秘钥123

    [root@localhost ~]# openssl enc -e -des -in /etc/passwd -out /tmp/passwd.des
    enter des-cbc encryption password:
    Verifying - enter des-cbc encryption password:
    [root@localhost ~]# ls /tmp/
    passwd.des
    ssh-P53EY0D3zGlr
    systemd-private-d68c3aab57b349cbbf9e8b38fb17b3c1-chronyd.service-XOpvAJ
    systemd-private-d68c3aab57b349cbbf9e8b38fb17b3c1-colord.service-yD8Vnd
    systemd-private-d68c3aab57b349cbbf9e8b38fb17b3c1-cups.service-1BpVhJ
    systemd-private-d68c3aab57b349cbbf9e8b38fb17b3c1-rtkit-daemon.service-QWm6Y0
    tracker-extract-files.1000
    vmware-root
    yum_save_tx.2018-11-13.14-35.1CMzyw.yumtx
    yum_save_tx.2018-11-15.11-01.WjmHL_.yumtx
    [root@localhost ~]# openssl enc -d -des -in /tmp/passwd.des  # 解密
    enter des-cbc decryption password:
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:999:997:User for polkitd:/:/sbin/nologin
    abrt:x:173:173::/etc/abrt:/sbin/nologin
    libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
    rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
    colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
    saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
    setroubleshoot:x:995:993::/var/lib/setroubleshoot:/sbin/nologin
    rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
    pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
    qemu:x:107:107:qemu user:/:/sbin/nologin
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    radvd:x:75:75:radvd user:/:/sbin/nologin
    chrony:x:994:990::/var/lib/chrony:/sbin/nologin
    tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
    geoclue:x:993:988:User for geoclue:/var/lib/geoclue:/sbin/nologin
    sssd:x:992:987:User for sssd:/:/sbin/nologin
    gdm:x:42:42::/var/lib/gdm:/sbin/nologin
    rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
    nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    gnome-initial-setup:x:991:986::/run/gnome-initial-setup/:/sbin/nologin
    avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    tcpdump:x:72:72::/:/sbin/nologin
    zhang:x:1000:1000:zhang:/home/zhang:/bin/bash
    alex:x:1001:1001::/home/alex:/bin/bash
    dhcpd:x:177:177:DHCP server:/:/sbin/nologin
    named:x:25:25:Named:/var/named:/sbin/nologin
    gluster:x:990:984:GlusterFS daemons:/var/run/gluster:/sbin/nologin
    unbound:x:989:983:Unbound DNS resolver:/etc/unbound:/sbin/nologin
    nginx:x:988:982:Nginx web server:/var/lib/nginx:/sbin/nologin
    mysql:x:1002:1002::/home/mysql:/bin/bash
    apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
    nagios:x:1003:1003::/home/nagios:/bin/bash
    dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin
    dovenull:x:987:981:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin
    [root@localhost ~]# 

    GnuPG(英文:GNU Privacy Guard,简称:GPG)是加密和数字签名的免费工具,大多数用于加密信息的传递。除了仅用密码加密 外,gpg最大的不同是提供了“公钥/私钥”对,利用“公钥”别人加密信息不再需要告知密码,发送密码信息。加密是单向的,只有“私钥”能解开密码。

    创建测试用户

    [root@localhost ~]# useradd user1
    [root@localhost ~]# echo "uplooking" | passwd --stdin user1
    更改用户 user1 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    [root@localhost ~]# useradd user2
    [root@localhost ~]# echo "uplooking" | passwd --stdin user2
    更改用户 user2 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    [root@localhost ~]# 

    user1生成非对称密钥对

    [root@localhost ~]# gpg --gen-key
    gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    请选择您要使用的密钥种类:
       (1) RSA and RSA (default)
       (2) DSA and Elgamal
       (3) DSA (仅用于签名)
       (4) RSA (仅用于签名)
    您的选择? 4
    RSA 密钥长度应在 1024 位与 4096 位之间。
    您想要用多大的密钥尺寸?(2048)1024
    您所要求的密钥尺寸是 1024 位
    请设定这把密钥的有效期限。
             0 = 密钥永不过期
          <n>  = 密钥在 n 天后过期
          <n>w = 密钥在 n 周后过期
          <n>m = 密钥在 n 月后过期
          <n>y = 密钥在 n 年后过期
    密钥的有效期限是?(0) 0
    密钥永远不会过期
    以上正确吗?(y/n)y
    
    You need a user ID to identify your key; the software constructs the user ID
    from the Real Name, Comment and Email Address in this form:
        "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
    
    真实姓名:Mr_zhang
    电子邮件地址:seven_nighter@163.com
    注释:测试用户
    您正在使用‘utf-8’字符集。
    您选定了这个用户标识:
        “Mr_zhang (测试用户) <seven_nighter@163.com>”
    
    更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?0
    更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?O
    您需要一个密码来保护您的私钥。
    
    我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
    鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
    gpg: /root/.gnupg/trustdb.gpg:建立了信任度数据库
    gpg: 密钥 66C27E23 被标记为绝对信任
    公钥和私钥已经生成并经签名。
    
    gpg: 正在检查信任度数据库
    gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
    gpg: 深度:0 有效性:  1 已签名:  0 信任度:0-,0q,0n,0m,0f,1u
    pub   1024R/66C27E23 2018-11-15
    密钥指纹 = 6E08 1D8D 121D 0BA9 A85B  8D33 650A 68D9 66C2 7E23
    uid                  Mr_zhang (测试用户) <seven_nighter@163.com>
    
    请注意这把密钥还不能用来加密,您必须先用“--edit-key”指令
    生成用于加密的子钥。
    [root@localhost ~]# 

    gnupg文件存放的位置

    [root@localhost ~]# ls .gnupg/
    gpg.conf  private-keys-v1.d  pubring.gpg  pubring.gpg~  random_seed  secring.gpg  S.gpg-agent  trustdb.gpg
    [root@localhost ~]# 

    查看已有的公钥

    [root@localhost ~]# gpg --list-keys
    /root/.gnupg/pubring.gpg
    ------------------------
    pub   1024R/66C27E23 2018-11-15
    uid                  Mr_zhang (测试用户) <seven_nighter@163.com>
    
    [root@localhost ~]# 

    查看已有私钥

    [root@localhost ~]# gpg --list-secret-keys
    /root/.gnupg/secring.gpg
    ------------------------
    sec   1024R/66C27E23 2018-11-15
    uid                  Mr_zhang (测试用户) <seven_nighter@163.com>
    
    [root@localhost ~]# 

    user1将自己的公钥导出(测试错误)

    user2将user1的秘钥导入*(测试出现问题)

    测试出现问题,下次遇到了补充,目前跳过,或者自行百度。。

    篡改VSHASH(数据的完整性)

    hash 哈希 单向散列算法,生成hash值校验文件的完整性

    1. 原信息不改相同的hash算法得到的值固定不变
    2. 不管原始信息多长多短hash值的长度是固定不变
    3. hash算法是无穷集合和又穷集合的映射(不可逆)

    MD5 Message-Digest Algorithm 5 (信息-摘要算法)

    [root@localhost ~]# md5sum /etc/passwd
    a1bc53700e0405b407f7db3fc61acd3c  /etc/passwd
    [root@localhost ~]# 

    sha1 Secure Hash ALgorithm(安全哈希算法)

    [root@localhost ~]# sha1sum /etc/passwd
    0061fa61324f7616dee6e8d0f09e7ada7ca8b849  /etc/passwd
    [root@localhost ~]# 

    伪装VS CA

    HTTPS基本原理 

    1.web服务器,生成非对称加密密钥对(web公钥,web私钥)

    2.web服务器使用web身份信息+web公钥 生成web服务器的证书请求,并将证书请求发送给CA服务器

    3.CA服务器使用CA的私钥对web服务器的证书请求进行数字签名得到web服务器的数字证书,并将web服务器的数字证书颁发给web服务器。

    4.client访问web服务器,请求https链接,下载web数字证书

    5.client下载CA数字证书(CA身份信息+CA公钥,由上一级CA颁发,也可自签名颁发),验证web数字证书(CA数字证书中有CA公钥,web数字证书是使用CA私钥签名的)

    6.client与web协商对称加密算法,client生成对称加密秘钥并使用web公钥加密,发送给web服务器,web服务器使用web私钥解密

    7.使用对称加密秘钥传输数据,并校验数据的完整性。

     构建私有的CA机构

    HTTPD+OpenSSL = HTTPS

    配置CA服务器  

    1.配置CA,生成CA自己的公钥私钥,私钥CA对自己进行证书自签名(用脚本生成)

    配置web服务器  

    web生成自己的私钥

    生成证书请求(使用身份表示+公钥)

    将证书请求发送给CA

    CA服务器对证书请求进行数字签名

    将签名后的数字证书颁发给web

    配置web支持ssl实现https

    ··········································

    配置https工作之后都是采用的阿里云生成的,然后在nginx中做配置,,之前采用iis的方式弄过一个,写过word,不过找不到了。。很简单。没什么难度,需要可自行百度。。

  • 相关阅读:
    day6心得
    安卓下拉刷新和上拉加载的具体实例
    安卓下拉刷新空间SwipeRefreshLayout的基本使用
    fresco的使用教程
    封装安卓的okhttp
    handler更新ui线程的基本用法
    安卓recyclerview的基本使用
    安卓轮播组件
    自定义toolbar教程
    原生toolbar基本使用教程
  • 原文地址:https://www.cnblogs.com/52-qq/p/9963637.html
Copyright © 2011-2022 走看看