系統安全-Man in the middleattack

竊聽VS加密(解決數據機密性)

加密由兩部分組成:算法&祕鑰(算法要夠複雜,祕鑰要夠安全)mysql

 

對稱加密:(Symmetric encryption)ios

採用單祕鑰密碼系統的加密方法,同一個祕鑰能夠同時用做信息的加密和解密,這種加密的方法稱爲對稱加密,也稱爲單祕鑰加密。nginx

須要對加密和解密使用相同祕鑰的加密算法。因爲其速度,對稱性加密一般在消息發送方須要加密大量數據時使用。對稱性加密也稱爲祕鑰加密。web

  DES(Data Encryption Standard數據加密標準)redis

  3DES(Triple DES 三重DES)算法

  AES(Advanced Encryption Standard 高級加密標準)sql

非對稱加密:(Asymmetric Encryption)數據庫

與堆成加密算法不一樣,非對稱加密算法須要兩個祕鑰:公開祕鑰(publickey)和私有祕鑰(Privatekey).apache

公開密鑰和私有祕鑰是一對,若是用公開祕鑰對數據進行加密,只有用對應的私有祕鑰才能解密。由於加密和解密使用的是兩個不一樣的祕鑰,因此這種算法叫作非對稱加密算法。安全

  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,不過找不到了。。很簡單。沒什麼難度,須要可自行百度。。

相關文章
相關標籤/搜索