国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SSH安全通信與端口轉(zhuǎn)發(fā)(一)

chunquedong / 2638人閱讀

摘要:博文參考概述所有業(yè)務(wù)的正常運(yùn)轉(zhuǎn),離不開(kāi)一個(gè)安全的運(yùn)行環(huán)境,系統(tǒng)安全性直接關(guān)系到業(yè)務(wù)穩(wěn)定可靠以及可用性,本章就介紹一些系統(tǒng)安全相關(guān)的話題。

博文參考
https://segmentfault.com/a/1190000010312601
概述
所有業(yè)務(wù)的正常運(yùn)轉(zhuǎn),離不開(kāi)一個(gè)安全的運(yùn)行環(huán)境,系統(tǒng)安全性直接關(guān)系到業(yè)務(wù)穩(wěn)定、可靠、以及可用性,本章就介紹一些系統(tǒng)安全相關(guān)的話題。
加密基礎(chǔ)概念 安全的目標(biāo):
    保密性:confidentiality

    完整性:integrity

    可用性:availability
攻擊類型:
    威脅保密性的攻擊:竊聽(tīng),通信量分析

    威脅完整性的攻擊:更改,偽裝,重放,否認(rèn)

    威脅可用性的攻擊:拒絕服務(wù)(DoS)
為了完成安全的目標(biāo)用到的解決方案
    技術(shù):加密和解密               

            加密和解密:

                傳統(tǒng)加密方法:替代加密方法,置換加密方法

                現(xiàn)代加密方法:現(xiàn)代塊加密方法

    服務(wù):用于低于攻擊的服務(wù),也就是為了上述安全目標(biāo)而特地設(shè)計(jì)的安全服務(wù)

            服務(wù):

                認(rèn)證機(jī)制

                訪問(wèn)控制機(jī)制
對(duì)稱加密
    對(duì)稱加密:加密和解密使用同一個(gè)秘鑰;但加密算法和解密算法可能不同

    工作過(guò)程為:

        發(fā)送者將發(fā)送的數(shù)據(jù)利用秘鑰,使用加密的算法加密成明文,發(fā)送給對(duì)方;接收方收到加密的數(shù)據(jù)后,利用同一個(gè)秘鑰,和解密的算法,將數(shù)據(jù)由密文解密成明文

    常見(jiàn)的對(duì)稱加密算法:

            DES:Data Encryption Standard,56位秘鑰

            3DES:Triple DES

            AES:Advanced Encryption Standard,支持128位、192位、256位、384位秘鑰

            Blowfish

            Twofish

            RC6

            CAST5

    對(duì)稱加密特性:

        <1>加密解密使用同一個(gè)秘鑰

        <2>將原始數(shù)據(jù)分隔成為固定大小塊,逐個(gè)進(jìn)行加密

    對(duì)稱加密的缺陷:

        <1>秘鑰過(guò)多

        <2>秘鑰分發(fā)困難

        <3>數(shù)據(jù)來(lái)源無(wú)法確認(rèn)
公鑰加密(非對(duì)稱加密):秘鑰分為公鑰和與之配對(duì)的私鑰
    公鑰:公鑰從私鑰中提取產(chǎn)生,可以公開(kāi)給所有人;pubkey

    私鑰:通過(guò)工具創(chuàng)建,私鑰只能使用則自己留存,必須保證其私密性,secret key

    特點(diǎn):用公鑰加密的數(shù)據(jù),只能使用與之配對(duì)的私鑰解密;反之,用私鑰加密的數(shù)據(jù)只能用與之配對(duì)的公鑰解密

    用途:

        數(shù)字簽名:主要在于讓接收方確認(rèn)發(fā)送方的身份。將數(shù)據(jù)用單項(xiàng)加密(MD5、SHA)算法,得出來(lái)的特征碼,用自己的私鑰進(jìn)行加密,這就是數(shù)字簽名

        秘鑰交換:發(fā)送方用對(duì)方的公鑰加密一個(gè)對(duì)稱加密的秘鑰,并發(fā)送給對(duì)方,以實(shí)現(xiàn)秘鑰交換

        數(shù)據(jù)加密:一般很少用公鑰加密發(fā)送的數(shù)據(jù)本身,因?yàn)楣€加密的加密效率很低,因此一般用對(duì)稱秘鑰加密要發(fā)送的數(shù)據(jù)本身

    公鑰機(jī)密的工作模式:

        模式一:公鑰加密,私鑰解密

                B將數(shù)據(jù)發(fā)送給A,B就拿A的公鑰對(duì)數(shù)據(jù)進(jìn)行加密,然后將加密后的數(shù)據(jù)發(fā)送給A,那此時(shí),加密后的數(shù)據(jù)只能被A的私鑰進(jìn)行解密,因此,即使有第三方拿到加密的數(shù)據(jù),也無(wú)法完成解密,只有A自己有自己的私鑰,因此實(shí)現(xiàn)了數(shù)據(jù)的保密性

        模式二:私鑰加密,公鑰解密

                A用自己的私鑰加密一份數(shù)據(jù)給B,加密后的數(shù)據(jù)只能被A的公鑰進(jìn)行解密,因此,如果有第三方拿到加密后的數(shù)據(jù),是能夠解密的,因?yàn)锳的公鑰是公開(kāi)的,任何人都可以拿到,因此可以解密

                但此種方式的作用,并不是真正拿來(lái)加密數(shù)據(jù),而是用來(lái)進(jìn)行身份驗(yàn)證(數(shù)字簽名),也就是說(shuō),A用自己的私鑰加密一段數(shù)據(jù)(數(shù)據(jù)不是要發(fā)送的數(shù)據(jù)本身,而是要加密數(shù)據(jù)利用單向加密算法得出來(lái)的特征碼),然后發(fā)送給B,B拿A的私鑰進(jìn)行解密,能夠解密成功,就證明發(fā)送方一定是A,因?yàn)橹挥蠥的公鑰能解開(kāi)A的私鑰;一旦解開(kāi)數(shù)據(jù)后,得到的就是要發(fā)送數(shù)據(jù)的特征碼,等后面真正發(fā)送數(shù)據(jù)后,可以利用該段特征碼,來(lái)驗(yàn)證數(shù)據(jù)的完整性

    公鑰加密的常用的算法:

        RSA:既能實(shí)現(xiàn)數(shù)字簽名,也能實(shí)現(xiàn)加解密

        DSA:有時(shí)也被稱為DSS,數(shù)字簽名標(biāo)準(zhǔn)。僅能實(shí)現(xiàn)數(shù)字簽名,不能實(shí)現(xiàn)加解密
單向加密:只能加密,不能解密。僅能提取數(shù)據(jù)的特征碼
    特性:

        定長(zhǎng)輸出:無(wú)論原始數(shù)據(jù)多大,得出的特征碼都是固定長(zhǎng)度的

        雪崩效應(yīng):原始數(shù)據(jù)的微小改變,將導(dǎo)致特征碼的巨大變化

    功能:主要用來(lái)實(shí)現(xiàn)驗(yàn)證數(shù)據(jù)的完整性

    常見(jiàn)的單向加密算法:

        MD5:Message Digest 5  消息摘要,5版本。128bit定長(zhǎng)輸出

        SHA1:Secure Hash Algorithm 1,160位定長(zhǎng)輸出

        SHA224、SHA256、SHA384、SHA512
秘鑰交換:IKE(Internet Key Exchange)
    常見(jiàn)的交換算法:

        公鑰加密:用對(duì)方的公鑰加密對(duì)稱秘鑰,這樣對(duì)方就能以自己的私鑰解開(kāi),從而獲得對(duì)稱加密的秘鑰

        DH(Deffie-Hellman)算法:

                <1> A: a,p 協(xié)商生成公開(kāi)的整數(shù)a, 大素?cái)?shù)p
                    B: a,p
                <2> A:生成隱私數(shù)據(jù) x, (x

A:計(jì)算得出 ( a^y%p) ^x = a^xy%p, 生成為密鑰 B:計(jì)算得出 ( a^x%p) ^y = a^xy%p, 生成為密鑰

加密通信的雙方的通信過(guò)程展示

   A有一段數(shù)據(jù)要發(fā)送給B,A就用單向加密的算法計(jì)算出數(shù)據(jù)的特征碼,而后A用自己的私鑰加密這段特征碼,生成數(shù)字簽名,至此能夠保證數(shù)據(jù)的完整性(通過(guò)比對(duì)特征碼),和身份驗(yàn)證(數(shù)字簽名),但是不能保證數(shù)據(jù)的保密性,因?yàn)閿?shù)據(jù)本身還沒(méi)被加密。

        因此,A會(huì)繼續(xù)在原有數(shù)據(jù)和數(shù)字簽名的基礎(chǔ)上,生成一個(gè)一次性的對(duì)稱加密秘鑰,然后利用對(duì)稱加密算法結(jié)合秘鑰,去加密原有數(shù)據(jù)和數(shù)字簽名。然后,A用B的公鑰,對(duì)對(duì)稱加密的秘鑰進(jìn)行加密,并附加到之前利用對(duì)稱加密算法生成的數(shù)據(jù)的后面,然后發(fā)送給B

        當(dāng)B收到數(shù)據(jù)后,就用B自己的私鑰解密附加在后面的對(duì)稱加密的秘鑰,從而得到了對(duì)稱加密的秘鑰(這就完成了秘鑰交換,實(shí)際是雙方都知道了對(duì)稱加密的秘鑰的過(guò)程就是秘鑰交換),然后利用對(duì)稱加密的秘鑰進(jìn)一步解開(kāi)數(shù)據(jù)和數(shù)字簽名,然后利用A的公鑰解開(kāi)數(shù)字簽名,得到數(shù)據(jù)本身的特征碼,然后利用同樣的單項(xiàng)加密算法,計(jì)算出收到的數(shù)據(jù)的特征碼,然后比對(duì)特征碼,從而驗(yàn)證數(shù)據(jù)的完整性
中間人攻擊:
    以上通信過(guò)程中還是有一個(gè)嚴(yán)重的漏洞,就是當(dāng)A和B鍵從來(lái)沒(méi)進(jìn)行過(guò)通信,那么A怎么獲知B的公鑰,或者B怎么獲知A的公鑰。假設(shè)當(dāng)A沒(méi)B的公鑰時(shí),向B發(fā)送請(qǐng)求,要求獲知B的公鑰,但是此時(shí),如果有第三方C獲取到請(qǐng)求后,冒充自己就是B,然后將C自己的公鑰發(fā)送給A,A就認(rèn)為C就是B。而C又會(huì)冒充自己是A,向B進(jìn)行通信,從而也獲取了真正B的公鑰,而此后A和B通信的過(guò)程中,就都會(huì)交由C,數(shù)據(jù)的安全性就無(wú)從保障。這種情況就是中間人攻擊
CA和證書(shū)的基礎(chǔ)概念 PKI:Public Key Infranstructure公鑰基礎(chǔ)設(shè)施
    由四個(gè)部分組成:

        簽證機(jī)構(gòu):CA機(jī)構(gòu)

        注冊(cè)機(jī)構(gòu):RA,相當(dāng)于CA的派出機(jī)構(gòu),用于接收注冊(cè)申請(qǐng)

        證書(shū)吊銷列表:CRL

        證書(shū)存取庫(kù):CB
CA的作用
    CA:保證通信雙方,能夠可靠的拿到對(duì)方的公鑰(避免中間人攻擊),而設(shè)定的雙方都信任的第三方可信機(jī)構(gòu)

        A將自己的公鑰提請(qǐng)給CA,CA經(jīng)過(guò)特殊的防偽處理后,將處理后的A的公鑰發(fā)送給A,處理過(guò)后的A的公鑰就稱之為CA證書(shū)。以后,如果B如果請(qǐng)求要A的公鑰,那么A就將CA證書(shū)發(fā)送給B,當(dāng)B拿到證書(shū)后,不會(huì)立馬就任何該證書(shū),而是要驗(yàn)證該證書(shū)是否是合法的,還要驗(yàn)證是否是B信任的CA機(jī)構(gòu)頒發(fā)的,驗(yàn)證完了之后,才會(huì)認(rèn)可

    CA證書(shū)一般會(huì)包含:提請(qǐng)證書(shū)的人的名稱,提請(qǐng)人的公鑰,證書(shū)有效期,然后CA機(jī)構(gòu)會(huì)用自己的私鑰,加密以上的一整段數(shù)據(jù)的特征碼,然后將加密后的特征碼(也就是數(shù)字簽名)附加在數(shù)據(jù)之后,這個(gè)整體就是CA證書(shū)

    CA證書(shū)后面有CA機(jī)構(gòu)用CA機(jī)構(gòu)自己的私鑰對(duì)證書(shū)內(nèi)容部分的特征碼加密的數(shù)據(jù),通信方要解開(kāi)此數(shù)字簽名就需要用到CA自身的公鑰,但是如何獲取到CA機(jī)構(gòu)自己的公鑰,如果直接申請(qǐng),那么此時(shí)又會(huì)存在中間人攻擊的可能,因此,一般是CA機(jī)構(gòu)會(huì)給自己發(fā)一個(gè)CA證書(shū),然后獲取CA自身的證書(shū),一般不能通過(guò)網(wǎng)絡(luò)發(fā)送,因此一般情況下,是線下交易
CA證書(shū)格式:
    X.509,定義證書(shū)結(jié)構(gòu)和認(rèn)證協(xié)議的標(biāo)準(zhǔn),在X.509的標(biāo)準(zhǔn)中,定義了證書(shū)需要具備的結(jié)構(gòu):

        版本號(hào):是X.509的v1還是v2還是v3版本

        序列號(hào):CA機(jī)構(gòu)所發(fā)出的證書(shū)的序列號(hào)

        簽名算法ID:證書(shū)所使用的算法

        發(fā)行者的名稱:CA機(jī)構(gòu)自己的名稱

        證書(shū)有效期限

        主體名稱:提請(qǐng)CA證書(shū)的用戶的名稱

        主體公鑰:

        發(fā)行者的唯一標(biāo)識(shí):CA機(jī)構(gòu)的ID

        主體的唯一標(biāo)識(shí):提請(qǐng)者的ID

        擴(kuò)展信息

        發(fā)行者的簽名:CA機(jī)構(gòu)利用自己的私鑰對(duì)以上內(nèi)容的特征碼加密,生成的數(shù)字簽名,將數(shù)字簽名附加在證書(shū)內(nèi)容之后,作為證書(shū)的一部分
ssl協(xié)議和openssl命令 SSL協(xié)議:SSL和TLS
    SSL:安全套接字層,由Netscape發(fā)布于1994年,分為V1.0、V2.0、V3.0但由于其版權(quán)屬于Netscape公司,且各版本均被爆出有協(xié)議漏洞,因此使用的不多

    TLS:Transport Layer Security,傳輸層安全,是國(guó)際互聯(lián)網(wǎng)工程師協(xié)會(huì)發(fā)布的類似于SSL的協(xié)議,其分為V1.0、V1.1、V1.2、V1.3的版本,使用較多的是V1.2的版本
TLS的分層設(shè)計(jì):
    <1>最底層:基礎(chǔ)算法的原語(yǔ)的實(shí)現(xiàn),如AES、RSA、MD5

    <2>向上一層:各種算法的實(shí)現(xiàn),也就是算法的具體實(shí)現(xiàn)的方式

    <3>再向上一層:組合算法實(shí)現(xiàn)的半成品

    <4>最高層:用各種組件拼裝而成的各種成品密碼學(xué)協(xié)議軟件;
SSL協(xié)議的開(kāi)源實(shí)現(xiàn):OpenSSL
    OpenSSL由三部分組成:

        libencrypt庫(kù):加密解密庫(kù),專用于實(shí)現(xiàn)加密解密功能,主要由開(kāi)發(fā)人員使用

        libssl庫(kù):用于實(shí)現(xiàn)ssl安全通信機(jī)制的庫(kù),主要由開(kāi)發(fā)人員使用

        openssl多用途命令行工具:openssl
SSL會(huì)話的主要的三步:
    客戶端向服務(wù)器端所要并驗(yàn)證證書(shū)(證書(shū)里面有服務(wù)器端的公鑰信息);

    雙方協(xié)商生成對(duì)稱秘鑰;

    雙方采用對(duì)稱秘鑰,進(jìn)行加密通信的過(guò)程

    會(huì)話過(guò)程后,進(jìn)行斷開(kāi)
在SSL會(huì)話之前開(kāi)始之前的雙方Handshake Protocol,SSL握手階段的執(zhí)行流程
    也就是雙方在正式開(kāi)始SSL會(huì)話之前的通信前商量加密算法和生成會(huì)話秘鑰階段的詳細(xì)過(guò)程介紹,(以HTTPS協(xié)議為例)       

    <1>第一階段:client-hello

        客戶端向服務(wù)器端發(fā)送:

        支持的協(xié)議版本,如:tls1.2

        客戶端生成一個(gè)隨機(jī)數(shù),用于稍后生成對(duì)稱秘鑰

        支持的加密算法,比如AES、RSA、SHA

        支持的壓縮算法

    <2>第二階段:server-hello

        服務(wù)器端向客戶端發(fā)送:

        確認(rèn)使用的加密通信的協(xié)議版本,如tls1.2

        生成一個(gè)隨機(jī)數(shù),用于稍后生成對(duì)稱秘鑰

        確認(rèn)使用的加密算法

        向客戶端發(fā)送服務(wù)器證書(shū)

        如果有必要,有可能會(huì)向客戶端索要客戶端的證書(shū)(如:當(dāng)客戶端請(qǐng)求的是網(wǎng)銀頁(yè)面時(shí))

    <3>第三階段:客戶端收到服務(wù)器端的server-hello后給出的回應(yīng)

        驗(yàn)證服務(wù)器證書(shū),如果沒(méi)問(wèn)題,則通過(guò)解密證書(shū)獲取到服務(wù)器的公鑰;

        驗(yàn)證的內(nèi)容:

                發(fā)證機(jī)構(gòu):驗(yàn)證發(fā)證機(jī)構(gòu)是否是可信的,也就是驗(yàn)證證書(shū)簽名(CA的數(shù)字簽名)

                證書(shū)的完整性,也是驗(yàn)證證書(shū)的數(shù)字簽名里面的解密出來(lái)的特征碼

                證書(shū)的持有者:驗(yàn)證證書(shū)里面的持有者是否與要訪問(wèn)的頁(yè)面是一致的

                證書(shū)有效期

                證書(shū)是否被吊銷

        發(fā)送以下信息給服務(wù)器端:

                一個(gè)隨機(jī)數(shù),用于生成對(duì)稱秘鑰

                編碼變更通知:表示隨后的信息都將用雙方商定的加密方法和秘鑰發(fā)送

                客戶端握手結(jié)束通知:表示客戶端在正式通信前的握手階段結(jié)束

    <4>第四階段:服務(wù)器端

        收到客戶端發(fā)來(lái)的最后一個(gè)隨機(jī)數(shù)后,利用含此隨機(jī)數(shù)在內(nèi)的一共三個(gè)隨機(jī)數(shù)生成對(duì)稱秘鑰;

        向客戶端發(fā)送以下信息:

                編碼變更通知:表示隨后的信息都將用雙方商定的加密方法和秘鑰發(fā)送

                服務(wù)器端握手結(jié)束通知:表示服務(wù)器端握手階段已經(jīng)結(jié)束
基于SSL的通信的實(shí)現(xiàn)過(guò)程整理總結(jié):
    A、B雙方要進(jìn)行通信時(shí):A為客戶端,B為服務(wù)器端

    <1>A發(fā)送hello信息給B,B接收后,發(fā)送hello信息給A,此時(shí)為雙方建立通信前的確認(rèn),需要協(xié)商雙方真正通信時(shí)所用到的加密算法,包括單向加密、對(duì)稱加密、公鑰加密、秘鑰交換用的方法

    <2>A請(qǐng)求B的證書(shū),B于是將自己的證書(shū)(CA處理后的公鑰)發(fā)送給A

            一般情況下,客戶端不會(huì)有證書(shū)提供給服務(wù)器端,因?yàn)橐环矫媸亲C書(shū)的使用費(fèi)使得客戶端不會(huì)去用,另一方面客戶端訪問(wèn)服務(wù)器端的時(shí)候,一般不會(huì)驗(yàn)證客戶端的身份,比如訪問(wèn)某網(wǎng)站,網(wǎng)站不會(huì)要求客戶端有證書(shū)才響應(yīng)內(nèi)容給客戶端,而客戶端是要驗(yàn)證服務(wù)器端的證書(shū)的,因?yàn)闉榱朔乐乖L問(wèn)的網(wǎng)站的正確性,防止釣魚(yú)網(wǎng)站等。

            但有時(shí)服務(wù)器端也會(huì)驗(yàn)證客戶端的證書(shū),比如當(dāng)客戶端訪問(wèn)的是網(wǎng)銀頁(yè)面的時(shí)候,會(huì)驗(yàn)證證書(shū),當(dāng)我們?nèi)ャy行開(kāi)通網(wǎng)銀的時(shí)候,一般會(huì)有個(gè)加密狗之類的東西,其實(shí)里面存儲(chǔ)的就是用戶自己的ca證書(shū),只是一般該ca證書(shū)的頒發(fā)機(jī)構(gòu)不是市面上公認(rèn)的CA機(jī)構(gòu),而是銀行自己建的一個(gè)CA簽發(fā)機(jī)構(gòu),僅對(duì)自己銀行內(nèi)部有效

    <3>A收到B的證書(shū)后,驗(yàn)證B的證書(shū),如果驗(yàn)證沒(méi)有問(wèn)題

    <4>A驗(yàn)證B的證書(shū)沒(méi)問(wèn)題后,生成一個(gè)隨機(jī)數(shù),作為對(duì)稱加密的秘鑰,A利用雙方之前協(xié)商的秘鑰交換算法(假設(shè)為公鑰加密),則將此秘鑰用B的公鑰加密后發(fā)送給B

    <5>B收到A發(fā)送過(guò)來(lái)的密文的秘鑰后,利用自己的私鑰,解密得出對(duì)稱加密的秘鑰,然后利用對(duì)稱加密的秘鑰和之前協(xié)商的對(duì)稱加密的算法,給A發(fā)送A所請(qǐng)求的數(shù)據(jù),進(jìn)行正常數(shù)據(jù)的發(fā)送

    <6>當(dāng)正常的數(shù)據(jù)傳輸完成后,A(客戶端)請(qǐng)求通信斷開(kāi),服務(wù)器也斷開(kāi),然后通信終止
openssl命令
    openssl命令行工具有眾多子命令,主要分為三類:

        標(biāo)準(zhǔn)命令:enc、ca、req、genrsa…

        消息摘要命令(dgst子命令相關(guān))

        加密命令(enc子命令相關(guān))

    <1>使用openssl命令行工具完成對(duì)稱加密:

        工具:openssl enc子命令

        支持的算法:aes、des、3des等

        enc命令的用法:

            openssl enc -CIPHERNAME -e|d -in /PATH/TO/FILE -out /PATH/TO/FILE 

            選項(xiàng)解釋:

                -CIPHERNAME:加密的算法的名稱,可通過(guò)openssl –help查看所支持的加密算法的名稱

                -e|d:-e表示加密,-d表示解密

                -in /PATH/TO/FILE  要加密的文件

                -out /PATH/TO/FILE  加密后的文件

                -pass STRING  表示對(duì)稱加密的秘鑰是什么

                -a|-base64   表示以base64文本格式進(jìn)行編碼,如果不指定,可能是以二進(jìn)制格式進(jìn)行編碼

            如對(duì)/testdir/file1進(jìn)行對(duì)稱加密:

                openssl enc -des3 -e -a -salt -in /testdir/file1 -out /testdir/jmfile1  輸入后回車,會(huì)要求輸入對(duì)稱加密的秘鑰,輸入完成,即可完成加密

                        -des3表示采用des3的加密算法,-a表示以base64文本格式進(jìn)行編碼,-salt表示加點(diǎn)雜質(zhì)

            解密上面加密的文件:

                openssl enc -des3 -d -a -salt -in /testdir/jmfile1 -out /testdir/file2  輸入后回車,會(huì)要求輸入對(duì)稱加密的秘鑰,輸入完成,即可完成解密
[root@localhost ~]# echo "1 2 3 4 5" > f1
[root@localhost ~]# cat f1 #原始文件
1 2 3 4 5
[root@localhost ~]# openssl enc -des3 -e -a -salt -in f1 -out f1.m
enter des-ede3-cbc encryption password: #使用3des對(duì)稱加密算法,對(duì)原始文件進(jìn)行加密,輸入對(duì)稱加密的秘鑰
Verifying - enter des-ede3-cbc encryption password:
[root@localhost ~]# cat f1.m  #加密后文件內(nèi)容
U2FsdGVkX1+C+zxYYZ2mnH/Jhae8XNmly3SzFVeT738=

[root@localhost ~]# openssl enc -des3 -d -a -salt -in f1.m -out f2
enter des-ede3-cbc decryption password: #解密,要求輸入加密時(shí)使用的對(duì)稱加密秘鑰
[root@localhost ~]# cat f2 #解密文件
1 2 3 4 5

<2>單向加密

        工具:openssl dgst、md5sum、sha1sum、sha256sum…

        用法:

            md5sum /PATH/TO/FILE

            sha1sum /PATH/TO/FILE

            openssl dgst -md5|-sha1… /PATH/TO/FILE
[root@localhost ~]# md5sum f1
9f96ef92fe742165873c313662f1f2b8  f1
[root@localhost ~]# openssl dgst -md5 f1
MD5(f1)= 9f96ef92fe742165873c313662f1f2b8
[root@localhost ~]# sha1sum f1
63b956989fab15e957086b98295ca0cdd69eb0b7  f1
[root@localhost ~]# openssl dgst -sha1 f1
SHA1(f1)= 63b956989fab15e957086b98295ca0cdd69eb0b7
[root@localhost ~]# sha512sum f1
cc7818f71e5669a72d45c9563a59e4db18ed899982eab1f884c4c4a58a7f0b63b5f4d750c1caa88e1cfff311a0cb7776f831b8af3beb3bf2cc7a73fe761f0c7e  f1
[root@localhost ~]# openssl dgst -sha512 f1
SHA512(f1)= cc7818f71e5669a72d45c9563a59e4db18ed899982eab1f884c4c4a58a7f0b63b5f4d750c1caa88e1cfff311a0cb7776f831b8af3beb3bf2cc7a73fe761f0c7e
只要原始文件沒(méi)有發(fā)生改變,使用同種加密算法計(jì)算出來(lái)的特征碼一定一樣

<3>生成用戶密碼的命令:

        工具:passwd、openssl passwd

        例如:

        openssl passwd -1 -salt 12345然后回車,會(huì)提示要求輸入密碼,輸入完成后,即可生成加密后的密碼

            -1  表示使用md5方式加密

            -salt STRING表示生成密碼時(shí)加入的雜質(zhì)的內(nèi)容

            -salt后面加的雜質(zhì)的內(nèi)容可以用隨機(jī)數(shù)生成,生成隨機(jī)數(shù)可以用openssl的子命令生成

                    openssl passwd -1 -salt `openssl rand -hex 4` 
[root@localhost ~]# openssl passwd -1 -salt "abcde"
Password: 
$1$abcde$OmqJ.85QGvaLaaHqbRijw1
#-1表示使用MD5的加密算法,加入的雜質(zhì)為abcde,然后輸入密碼,就生成基于MD5加密后的加密字符串
[root@localhost ~]# openssl passwd -1 -salt `openssl rand -hex 4`
Password: 
$1$d7dc4cfb$DA8Cq0zbnt0P2afb4X6zs1
#使用openssl自帶的生成隨機(jī)字符串工具作為加密雜質(zhì)

<4>openssl生成隨機(jī)數(shù):

        工具:openssl rand

        用法:openssl rand [-out FILE] [-base64] [-hex] NUM

            -out FILE  表示將生成的隨機(jī)數(shù)保存在某個(gè)文件中

            -base64  表示使用base64編碼,生成的隨機(jī)數(shù)后面可能會(huì)有=,要去掉=后才是真正的隨機(jī)數(shù)

            -hex  表示使用十六進(jìn)制數(shù)字編碼

            NUM  表示生成隨機(jī)字符串的長(zhǎng)度

        如:

            openssl rand -base64 10

            表示生成一個(gè)10個(gè)字節(jié)的隨機(jī)數(shù),采用base64編碼格式進(jìn)行輸出

            openssl rand -hex 10

            輸出10個(gè)字節(jié)的16進(jìn)制字節(jié)長(zhǎng)度的隨機(jī)數(shù),相當(dāng)于輸出20個(gè)字符

        Linux上的隨機(jī)數(shù)生成器:

            /dev/random:僅從熵池中返回隨機(jī)數(shù),當(dāng)隨機(jī)數(shù)用盡,會(huì)阻塞后續(xù)請(qǐng)求隨機(jī)數(shù)的應(yīng)用

            /dev/urandom:從熵池中返回隨機(jī)數(shù),隨機(jī)數(shù)用盡,會(huì)利用軟件生成偽隨機(jī)數(shù),不會(huì)阻塞。偽隨機(jī)數(shù)不安全

            熵池中隨機(jī)數(shù)的來(lái)源:

                硬盤(pán)I/O中斷時(shí)間間隔

                鍵盤(pán)I/O中斷時(shí)間間隔
[root@localhost ~]# openssl rand -hex 5
76ebc802ee
[root@localhost ~]# openssl rand -base64 5
Vmn4PbI=
[root@localhost ~]# openssl rand -hex 10
95faaee7d3ba04d588ae
[root@localhost ~]# openssl rand -hex 10
add09e02712965f5b064

<5>openssl實(shí)現(xiàn)公鑰加密:

        加密解密:

                支持的算法:RSA、ELGamal

                工具:openssl rsautl

        數(shù)字簽名:

                支持的算法:RSA、DSA、ELGamal

                工具:openssl rsautl

        秘鑰交換

                支持的算法:DH、RSA

        生成私鑰:(公鑰一般不需要生成,而是自動(dòng)的會(huì)從私鑰中提取產(chǎn)生)

            openssl genrsa 512|768|1024|2048…表示生成一個(gè)長(zhǎng)度為512、768…位的私鑰

            openssl genrsa 1024 > /PATH/TO/FILE  表示生成一個(gè)1024位的私鑰保存到文件中

            openssl genrsa 1024 -out /PATH/TO/FILE 也表示生成一個(gè)1024位的私鑰保存到文件中

        生成的私鑰文件,不能讓其他人訪問(wèn),因此一般要將私鑰文件的權(quán)限變成600,為了簡(jiǎn)化步驟,可以直接在生成私鑰時(shí)就定義其權(quán)限,如:

            (umask 077;openssl genrsa 1024 -out /PATH/TO/FILE)

            用了小括號(hào),相當(dāng)于在一個(gè)子shell中運(yùn)行,因此此時(shí)的子shell的umask設(shè)置僅對(duì)子shell生效

        從私鑰中提取公鑰:一般不用手工提取

            openssl rsa -in /PATH/TO/私鑰文件  -pubout

            表示從私鑰文件中提取出公鑰
[root@localhost ~]# openssl genrsa 1024 #利用rsa算法生成1024位私鑰
Generating RSA private key, 1024 bit long modulus
......++++++
.......++++++
e is 65537 (0x10001)
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDJOWuZALVnZa+E2pdJV5IOkJUZQ6gomne6OS3Jh4FqYEv4tHRg
MJ6szKLvX4ZNYdabGwqlrTLiWhC4rEKhlgD+RnEREObhCGhbjhffkcLgqg9UFg2h
Hu7pN9p/ecUr2YNQZO8+BdoXgvkSK8KwHudmin4M3NhfZxpH49dXje5xGQIDAQAB
AoGBAJL23g/0RYlL6iJU6DOHwsPicxLtqA5nqtQW2Mscrbd8t1/gpDJwsCMynjnI
AbXYpD3KRT91vPk2oInQPiX4AaZpJLAJTVnfv7kZv6f0RtGLdCJF/onsjLse9yuE
eWon+MkK6UMOU8fYCtWwfCQvTp5pTWgXPrTALpeRiPsTLv6BAkEA6nZQZIgXgVDf
RzLN65MT5Awy/CVBj793HPXlvTgRt722Sn+efT2T9ZxHUcnLBRUWnUN7WrGbYf51
V9g8k+Fk0QJBANu1eWKHTNtFoG9NlqcmkG/ffTtMcnneWZ3QdhjLg6Xgh+z+nhYf
+zvWwhguG5D6opdyeQ1Zbk63b009ty43+ckCQQCN6SzBnIm1kLCEFKEEjBIG/sdB
TH+BNR8wXTk/rRc0QlR6hQH1xfavO3cDbwM9wUTdzQF1pHhq+Kwnjk8kJtFxAkB4
/HjoeesnwDK1t/si9oiJIn+6vME5POkKj3XI96D6IieXqSpyso/NhtiBKjrB3lLU
pRPl9v5YWIjw9vA9glOJAkBgWRDjR5aiCJxMh5mKplxPtoCdiAobyNgQi8Aux6eR
wlHwOW7y20hgjcmytj29ZvabZhPKw7FM/QkAJ6+iPAeS
-----END RSA PRIVATE KEY-----
[root@localhost ~]# openssl genrsa 1024 > f1 #將私鑰重定向到某個(gè)文件中
Generating RSA private key, 1024 bit long modulus
.................................................................++++++
......++++++
e is 65537 (0x10001)
[root@localhost ~]# cat f1
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDEAFnlfWWmLZs4kCA3nakGAJL5QBNVyzHBkL+MzzBOE7uDyzxU
4WS58uCpQw8pZShZIdR5SaUlwneYfVw37rJgu2M67Q58IamuQvab37DPDJ2XfxW8
eTRH6/tjwqs71tE5/8O8zIUBWNaSIZvS0xkrEmG/DyXPibpF3QvuPZYinwIDAQAB
AoGBAJMv7FJRM8dyUjFM0lTRmb9/KN/yhVKVL707dQ1J/e10Fgnn0luvk1Osl5ek
Wztr0rv0krmuW02a1vL1mQ4Lu3lkIz+m99D+YCKzZRjCOl1loQi70TMIOX+jRRsq
08kGw8zxvPFjhCn90SO68/9x5+K8m2VD177aZ/ePEu6LNN/hAkEA+8h/YtsdeiK5
RAYf1w3A1urTjV92izRrKwhIEdT+evzRICTg0RjX3MWP4BoDZFw/+Obyq/7jnMro
WrXX/bxPcQJBAMdIsWfnVP0cCU+Q9yvMr7dg+Pct5uCfizVZQZcoEAn3gGnYUkqo
F885jDlyJrTldPDtQv/qIvFY0vO+4wnNqw8CQQCIBz+DWhwn00DCloh3OE/6DO50
j6HM/Wn02smNEMTYD2SweBwZ+9ELzpS3n3Y7r3dEcwmikNfJ6vnzoBDsXeORAkAX
DiPoH21Hsxyopd7SpGWX05I6FodlaU/TpjXeZPYmEQo8NJigpn3KrZ+5balouDsl
PG3J6a6NOXd+V5EwqyilAkAfYKS+6OWE3jRV5vu0YFzUt3c0dYqgT2rlCTWAFNjd
MJX1YVZi7c3XrxcRhbakzgqW1du/1Z2ySebWKz+lkP4H
-----END RSA PRIVATE KEY-----
[root@localhost ~]# openssl genrsa -out f1 1024 #利用rsa算法生成1024位私鑰,保存某文件中,注意公鑰的長(zhǎng)度,要寫(xiě)在保存文件之后。
Generating RSA private key, 1024 bit long modulus
..........................++++++
...................................................++++++
e is 65537 (0x10001)
[root@localhost ~]# cat f1
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQC6amq8ptKmEhF4JIbN9+RVc8WOaLPMuIbZ+l7kDcKZq1K8W4QX
Ur07w0U6zDzGFcykqYhyCn8+eiF/OxqPOnqlibgoPwg9jwtuYJGZN5MvkNmQMniv
dyY1ThkAF/hDowbmY4aputAzJ9glduWpGBwp0/xgFIPnP8fGk/nB9P6wfQIDAQAB
AoGAPwNDyzs0z1AiOZNXQf4+X6g/qlC4HkZtxvb75mjEU/92excQQnYEY1QxbZum
G2s4/pwT9ECaHHtaIVDQPIQO+pwuHyKnBLa8+AkYl04aUAYVDwaBbSBONEsFGVIa
xpZH3c1lugBdweBLchhvJyzv9f1R5LUQe2ZDK0FuOaVNFwECQQDcnOmzbmr0g3GG
Z/xrYVlQOTSSxkNf7Bw1MJZpkArLv4Dy/9DPHHEsIxsHOk/76m6J519qluaYTxqu
fRgTdOU9AkEA2FFA3uUMSE1puHJLihZVCk/wQCKcssdFTtXNwPzwka71y0UW0EVi
NN75FJrueGjXzmw0Lk8hdvDwt47RMzIsQQJAH36XLnJ4+mc5ccKumnXPVlCUXM/J
FoySilVhY7iYkfXI5uf2W1roHTD1ztZYTNJu7WkGiiT4zo2cdYSOR1jM0QJBAL08
N7fGQDxwHHBS7GpcpwBidhZlMRfk42jX+Ss/G2UW3cd5JUAFsqf194hjEQMdFM1s
Mynf57KZjLvHoJNc7QECQFVzZFAL6wUobFUI7WreU3qELC2MbN9uxgYAbzJXX0mx
f2awbPIJ4brvilS5u/f61+enDITl6+VPJvXwSjTVJi0=
-----END RSA PRIVATE KEY-----
[root@localhost ~]# (umask 066;openssl genrsa -out ff 512)
Generating RSA private key, 512 bit long modulus
.............++++++++++++ #rsa算法生成512私鑰,保存文件中,權(quán)限600
.........................................++++++++++++
e is 65537 (0x10001)
[root@localhost ~]# ll ff
-rw-------. 1 root root 497 Jul 20 01:40 ff
[root@localhost ~]# cat ff
-----BEGIN RSA PRIVATE KEY-----
MIIBPAIBAAJBAOF2ErTafwojYWAo99h73Pk6hKUe8frO+edoVAUpZYaIHvqLeJIY
EEdnBkqkatiKMXihwQXtM6WIqDwtfLJjy3kCAwEAAQJBAJbHE7OG+7aX+qMIQtev
3hN+ov6aN1F34YB0MNxS1uakGB16GD+qbUzKxXzWzcvruc1sfAfwAwr+uRXQ+CVy
UVECIQD58RKUdjh04rOW0Ao6WmBRl0cl2JXEA83rYwYSjVGk4wIhAObtGGkoK7K3
GwS1Gq0lxLixKfQlHf1jJnIOh2H6BRjzAiAhguwd0bgCG/8+QkiMyF9PsTvN3DtA
W845OD6xMBd5RwIhANMDqKC+sl+Wbjv4+a1qq75RNZMBL8xRA9qJaDChdHL9AiEA
0WSA38W0INfBHknOUf+nphr01ismlGSvaSTzfEMdXQQ=
-----END RSA PRIVATE KEY-----
[root@localhost ~]# openssl rsa -in ff -pubout
writing RSA key  #手動(dòng)從文件中提取公鑰
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOF2ErTafwojYWAo99h73Pk6hKUe8frO
+edoVAUpZYaIHvqLeJIYEEdnBkqkatiKMXihwQXtM6WIqDwtfLJjy3kCAwEAAQ==
-----END PUBLIC KEY-----
[root@localhost ~]# openssl rsa -in ff -pubout -out ff
writing RSA key  #私鑰中提取公鑰,提取公鑰保存指定文件中,私鑰一樣,提出的公鑰也一樣。
[root@localhost ~]# cat ff
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOF2ErTafwojYWAo99h73Pk6hKUe8frO
+edoVAUpZYaIHvqLeJIYEEdnBkqkatiKMXihwQXtM6WIqDwtfLJjy3kCAwEAAQ==
-----END PUBLIC KEY-----

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/40637.html

相關(guān)文章

  • SSH安全通信端口轉(zhuǎn)發(fā)(二)

    摘要:但是,還能夠?qū)⑵渌丝诘木W(wǎng)絡(luò)數(shù)據(jù)通過(guò)鏈接來(lái)轉(zhuǎn)發(fā),并且自動(dòng)提供了相應(yīng)的加密及解密服務(wù)。而與此同時(shí),如果工作環(huán)境中的防火墻限制了一些網(wǎng)絡(luò)端口的使用,但是允許的連接,也能夠通過(guò)將端口轉(zhuǎn)發(fā)來(lái)使用進(jìn)行通訊端口轉(zhuǎn)發(fā)能夠提供兩大功能加 博文參考 http://www.178linux.com/48542 https://segmentfault.com/a/1190000010279082 利用op...

    hidogs 評(píng)論0 收藏0
  • SSH安全通信端口轉(zhuǎn)發(fā)(二)

    摘要:但是,還能夠?qū)⑵渌丝诘木W(wǎng)絡(luò)數(shù)據(jù)通過(guò)鏈接來(lái)轉(zhuǎn)發(fā),并且自動(dòng)提供了相應(yīng)的加密及解密服務(wù)。而與此同時(shí),如果工作環(huán)境中的防火墻限制了一些網(wǎng)絡(luò)端口的使用,但是允許的連接,也能夠通過(guò)將端口轉(zhuǎn)發(fā)來(lái)使用進(jìn)行通訊端口轉(zhuǎn)發(fā)能夠提供兩大功能加 博文參考 http://www.178linux.com/48542 https://segmentfault.com/a/1190000010279082 利用op...

    BicycleWarrior 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

chunquedong

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<