linux下的加密解密学习
linux下的加密解密學習
加密/解密:
?? ?????加密協議:加密解密使用同一秘鑰:3des,aes
?? ?????公鑰加密:公鑰私鑰對
?? ??? ?數字簽名,密鑰交換
?? ??? ?
?? ??? ?RSA,DSA數據簽名算法(DSS數據簽名標準)
?? ?????單向加密:
?? ??? ?????md5,sha1,sha256,sh512(MD5輸出128bit,SHA1輸出160bit,SHA256輸出256bit)
?? ?????密鑰交換:
?? ??? ?????DH:Deffie-Hellman
?????????????具體過程參照下面的SSL握手
===================================================
????SSL:secure socket layer
?? ?????????ssl:sslv3現版本
?? ?????????IETF:tlsv1.0對位sslv3? tlsv1.2現在
ssl握手:
?? ?????????客戶端->服務端:客戶端自身支持的算法,請求服務器數字證書
?? ?????????服務端->客戶端:服務器端支持加密算法,發送數字證書(客戶端驗證信息后,數字證書中得到服務端公鑰,加密發送服務器)
????????????客戶端驗證數據:1.服務器名字與證書名字是否一致;2.用本地緩存的對應信任CA公鑰,解密證書,查看是否一致;3.檢察證書內容是否被篡改,單向加密碼驗證;4.看證書是否到期;5看證書是否到期
?? ???????? 客戶端->服務端端:加密數據發給客戶端,對稱秘鑰交換,之后對稱秘鑰加密通訊
????????????數字證書:
?????????????????? ?CA:簽發安全證書,確保數據安全性
?? ?
===============================================
openssl:
?? ?????????組成部分:
?? ??????????????? ?libcrypto:加密解密文件
?? ??????????????? ?libssl:ssl協議實驗
?? ??? ?????????????openssl:多用途命令行工具,自定義
????????????????gpg:pgp規范的實現
????openssl加密命令:
?? ?????????加密文件(對稱加密):
?? ??? ?????????????工具:openssl enc,gpg
?? ??? ?????????????算法:des,3des,aes,blowfish,twofish,idea,cast5
?? ??? ?????enc工具:
?? ??? ??? ?????????加密openssl enc -e -算法 -a -salt -in 加密文件 -out 輸出文件 ?
?? ??? ??????????? ?解密openssl enc -d -算法 -a -salt -in 加密文件 -out 輸出文件
?? ??? ??? ??? ??????????????????????? ?可通過openssl ?查看
?? ??? ??? ??? ??? ?????????????????????????????????????-a表示文本編碼輸出
?? ??? ??? ??? ??? ?????????????????????????????????????????????????-salt加隨機數
TEST:
?? ??? ????? 單向加密:
?? ??? ?????????????算法:md5,sha1
?? ?????? ????????? 工具:openssl dgst,md5sum,sha1sum,sha224sum,sha256sum,sha384sum,
????????????????????????????????sha512sum
?? ??? ??? ?????????openssl dgst -算法 PATH??此處算法為上述算法且不限于上述算法,但不同于加密算法
?? ??? ?????????????mac碼:用于表示數據完整性的值
?? ??? ??? ?????????????機制:CBC-MAC
?? ??? ??? ?????????????HMAC:md5或者sha1算法
?? ???
??????????????? 生成用戶密碼:
?? ??? ??? ?????????????openssl passwd -1 -salt 8位隨機數
?? ??? ??????????????? ?生成隨機數:openssl rand -hex 4
?? ?????????????公鑰加密:
?? ??? ?????????????????工具:gpg ,openssl rsautl
?? ?
?? ????????? ?? 生成密鑰對:
?? ??? ??? ?????????????操作過程:生成私鑰,從私鑰中提取公鑰
?? ??? ??? ??? ?????????????openssl genrsa -out PATH NUM_BITS
?? ??? ??? ?????????????????括號內的命令:通過打開一個子shell進程進行
?? ??? ??? ??? ?????????????????(umask 077;openssl genrsa -out PATH NUM_BITS)主要為了安全性考慮,子shell運行不影響原機環境
?? ??? ??? ?????????????從私鑰中提取公鑰:
?? ??? ??? ??? ?????????????openssl rsa -in PATH -pubout
?? ??? ??? ?????????????????????公鑰加密:完成秘鑰交換
?? ??? ??? ?????????????????????私鑰加密:完成身份驗證
????????
????????
?????????隨機數生成器:
?? ??? ?????????random(?安全系數較高), urandom
?? ??? ?????????熵池:保存硬件中斷產生的隨機數
?? ??? ?????????????????/dev/random:僅從熵池中返回隨機數,當熵池中的隨機數耗盡時,取隨機數的進程將會被阻塞;
?? ???????????????????? /dev/urandom:先從熵池中取隨機數,當熵池中的隨機耗盡時,就通過偽隨機數生成器生成隨機數;
?? ?????使用openssl構建私有CA:
?? ??? ?????????1.生成秘鑰
?? ??? ?????????2.生成自簽署簽名
????????????????????????(1) 私鑰用于簽發證書時,向證書添加數字簽名使用;
?? ??? ?????????????????(2) 證書:每個通信方都導入此證書至“受信任的證書頒發機構”;?? ??? ??????
????????????????? ????創建CA配置文件 :/etc/pki/tls/openssl.cnf (查看此文件可查看一下配置文件存放位置及相關信息)
?????????????????? ?? 工作目錄:/etc/pki/CA/
????????????????????? 1.建立私有秘鑰文件:/etc/pki/CA/private/cakey.pem
????????????????????????????(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
????????????????????? 2.生成自簽署簽名:從密鑰從提取公鑰及數字簽名證書到/etc/pki/tls/openssl.cnf指定的certificate指定位置
????????????????????????????# 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時才這么用;????
????????????????????????????
????????????????????3.提供輔助文件:提供幫助文件及輸入序列號
????????????????????????????????touch /etc/pki/CA/index.txt
?? ??? ??? ???????????????????? echo 01 > /etc/pki/CA/serial
????????????????????????????
????????????????分發證書:
????????????????????????
TEST:
????????????????Openssh:
????????????????????????ssh:secure?shell (監聽tcp/22) 用于取代talnet(明文傳輸,監聽tcp/23)
????????????????????????現在主流版本為V2
????????????????????????兩種驗證方式:
????????????????????????????1.用戶口令
????????????????????????????2.密鑰對驗證
????????Openssh:ssh開源軟件
????????????????????????sshd: 服務器
?? ??????????????????? ?ssh: 客戶端
?? ??? ?????????????????scp: 安全跨主機復制工具,基于ssh協議實現;
?? ??????????????????? ?sftp:安全ftp
????????????????????????服務器配置文件:sshd: /etc/ssh/sshd_config
?? ??? ?????????????????客戶端配置文件:ssh: /etc/ssh/ssh_config
????????基于密鑰認證:
?? ??? ??? ?在客戶端生成一對密鑰,私自己留存;公鑰通過私密方式保存至要登錄的遠程服務某用戶的家目錄的專用于ssh通信的文件;
?? ??? ??? ? ????生成秘鑰 :ssh-keygen -t rsa
?? ??? ????????? 傳輸秘鑰:ssh-copy-id -i ~/.ssh/id_rsa.put user@host
????????????????????????????????
????????scp遠程復制命令:
?? ??? ?????????push: scp [-rp] /path/from/somefile user@host:/path/to/somewhere
?? ??? ?????????pull: scp [-rp] user@host:/path/from/somefile /path/to/somewhere
????????????????????????????????-P?portnumber(一旦默認端口更改需加此參數)
????????
????????sshd服務器端的配置:
?? ??? ?????????/etc/ssh/sshd_config
?? ??? ??? ?????????directive value
?? ??? ??? ??? ?????????Port 22?? ??? ??? 監聽端口
?? ??? ??? ??? ?????????AddressFamily any? 監聽地址(通過那個地址對外提供服務)
?? ??? ??? ??? ?????????Protocol 2???????? 版本協議
?? ??? ??? ??? ?限制可登錄用戶:
?? ??? ??? ??? ??? ?????PermitRootLogin : 是否允許管理員直接登錄;
?? ??? ??? ??? ??? ?????AllowUsers user1 user2 ...允許登陸白名單
?? ??? ??? ??? ??? ?????AllowGroups grp1 grp2 ... 允許登陸組白名單
?? ??? ??? ??? ??? ?????DenyUsers user1 ...?????? 允許登陸黑名單
?? ??? ??? ??? ??? ?????DenyGroups grp1 ...?? ?? 允許登陸黑名單
?? ??? ??? ??? ?僅監聽需要監聽的IP地址:
?? ??? ??? ??? ??? ?????ListenAddress 0.0.0.0
????????????????最大允許登陸嘗試數:
????????????????????????MaxAuthTries 6
????????????????ssh登陸log日志:
????????????????????????/var/log/secure
轉載于:https://blog.51cto.com/610463479/1696934
總結
以上是生活随笔為你收集整理的linux下的加密解密学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转)Java中的private、pro
- 下一篇: Html5-Canvas实现简易的抽奖转