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