安全與加密-使用gpg實現加密與解密
加密和解密使用同一個密鑰
常見的算法:
DES,3DES,AES,Blowfish,Twofish,IDEA,RC6,CAST5
? 特性:
1、加密、解密使用同一個密鑰,效率高
2、將原始數據分割成固定大小的塊,逐個進行加密
? 缺陷:
1、密鑰過多
2、密鑰分發
3、數據來源無法確認
非對稱加密算法
公鑰加密:密鑰是成對出現
? 公鑰:公開給所有人;public key
? 私鑰:自己留存,必須保證其私密性;secret key
? 特點:用公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然
功能:
? 數字簽名:主要在於讓接收方確認發送方身份
? 對稱密鑰交換:發送方用對方的公鑰加密一個對稱密鑰後發送給對方
? 數據加密:適合加密較小數據
? 缺點:密鑰長,加密解密效率低下
常見的算法:
RSA(加密,數字簽名),
DSA(數字簽名),
ELGamal
來查看本機系統中ssh中的密鑰都長啥樣呢。pub結尾的就是公鑰,key結尾的就是私鑰
#ls /etc/ssh/
ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub
ssh_config ssh_host_dsa_key ssh_host_key ssh_host_rsa_key
查看系統中密碼加密算法
#authconfig --test|grep password
shadow passwords are enabled
password hashing algorithm is sha512
常見加密算法工具
md5: 128bits、 sha1: 160bits、 sha224
sha256、 sha384、 sha512
? 常用工具
md5sum
sha1sum
sha512sum
openssl
gpg
? rpm -V
需要先導入光盤中的GPG-KEY:
#rpm --import /dvd/RPM-GPG-KEY-CentOS-6
或安裝好的系統的
#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#rpm -K /dvd/Packages/kernel-2.6.32-696.el6.x86_64.rpm
/dvd/Packages/kernel-2.6.32-696.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
可以利用加密算法對文件進行計算以便發現是否被篡改
md5sum --check 保存的計算結果文件
#sha512sum --check file.sum
b: FAILED
sha512sum: WARNING: 1 of 1 computed checksum did NOT match
使用gpg實現對稱加密與解密
? 對稱加密file文件
#gpg -c sshd_config
輸入2次密碼之後,會生成一個sshd_config.gpg
#file sshd_config.gpg
sshd_config.gpg: data
解密此加密過的file,輸入正確的密碼即可
-o 是指定輸出位置,必須放在前面。
#gpg -o /tmp/sshd -d sshd_config.gpg
使用gpg工具實現非對稱公鑰加密與解密
#gpg --gen-key
gpg (GnuPG) 2.0.14; Copyright (C) 2009 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.
Please select what kind of key you want: 選擇加密方式
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.選擇加密長度
What keysize do you want? (2048) 默認回車
Requested keysize is 2048 bits
Please specify how long the key should be valid.選擇密鑰有效期
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 1y
Key expires at Sun 13 Jan 2019 08:02:46 PM CST
Is this correct? (y/N) y 是否確認以上信息
GnuPG needs to construct a user ID to identify your key.
Real name: gpg 保存一個名字
Name must be at least 5 characters long 至少需要5個字符
Real name: gpg-key-a
Email address: [email protected] 郵件地址
Comment: 備註
You selected this USER-ID:
"gpg-key-a <[email protected]>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O 保存是O
再接輸入2次密碼
然後,加密過程就根據加密長度,會讓你隨機輸入字符,總這就是你不斷的敲東西啦。可以開多個終端窗口,批量發送信息。挺有意思的。
這個操作在圖形界面下只需要動動鼠標就好了
生成了一對密鑰。
#ls ~/.gnupg/
gpg.conf private-keys-v1.d pubring.gpg pubring.gpg~ random_seed secring.gpg trustdb.gpg
pubring.gpg 公鑰
secring.gpg 私鑰
#gpg -k
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/4CBA6F6A 2018-01-13 [expires: 2019-01-13]
uid gpg-key-a <[email protected]>
sub 2048R/215FAF14 2018-01-13 [expires: 2019-01-13]
導出公鑰
#gpg -a --export -o gpg-a-pubkey
在另外一個系統導入公鑰
#gpg --import gpg-a-pubkey
#gpg -k 能看到導入的公鑰
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/4CBA6F6A 2018-01-13 [expires: 2019-01-13]
uid gpg-key-a <[email protected]>
sub 2048R/215FAF14 2018-01-13 [expires: 2019-01-13]
加密文件
#gpg -e -r gpg-key-a gpg.conf -r 是指定加密的公鑰名
回到導出公鑰的主機,執行解密
#gpg -d gpg.conf.gpg
成功
總結,用你的公鑰來加密文件,只有你的私鑰才能解密。安全性提高。
安全與加密-使用gpg實現加密與解密