乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      關(guān)于OpenSSL..

       sailorhzr 2012-04-05
      關(guān)于OpenSSL..

      OpenSSL包含一個命令行工具用來完成OpenSSL庫中的所有功能,更好的是,它可能已經(jīng)安裝到你的系統(tǒng)中了。
      OpenSSL是一個強大的安全套接字層密碼庫,Apache使用它加密HTTPS,OpenSSH使用它加密SSH,但是,你不應(yīng)該只將其作為一個庫來使用,它還是一個多用途的、跨平臺的密碼工具。
      這里簡單說一下OpenSSL的背景,在OpenSSL之前,叫做ssleay,它是一個由Eric A.Young編寫的SSL工具,它不斷改進(jìn)最終變成了OpenSSL,與NCSA的HTTPd變成Apache服務(wù)器的過程非常類似,今天,OpenSSL支持多種加密算法和協(xié)議。
      OpenSSL有許多的特征,而且還有SSL客戶端和服務(wù)端特征,OpenSSL還有:
      ◆美國聯(lián)邦政府NIST FIPS 140-2一級評估確認(rèn)
      ◆TLS,下一代SSL協(xié)議
      ◆X.509密鑰和證書的生成
      ◆X.509證書權(quán)力
      ◆S/MIME加密
      ◆文件加密和粉碎
      ◆打亂UNIX密碼
      ◆9個不同的商業(yè)密碼硬件設(shè)備
      ◆密碼性能測試
      ◆36個命令
      ◆6個消息摘要算法
      ◆9個密碼算法
      ◆多個加密協(xié)議
      盡管OpenSSL很復(fù)雜,但是大量的復(fù)雜性可以被避免的,本文剩下的部分將集中在易于使用的特征上,在shell代碼中僅僅需要幾行就可以了。
      本文使用與我早期編寫的GnuPG Hacks文章一致的小結(jié)標(biāo)題,以便于比較OpenSSL和GnuPG。
      入門
      首先,確認(rèn)一下OpenSSL已經(jīng)安裝并處于你的路徑之下,許多Linux發(fā)行版,甚至一下小的發(fā)行版,都包括了OpenSSL,通常,OpenSSL處于/usr/bin/下。
      在所有的例子中,shell提示符都是$。
      第一步,輸入:
      $Content$nbsp;openssl version
      注意這里在version選項前是沒有破折號的。
      你應(yīng)該看到類似下面這樣的輸出:
      OpenSSL 0.9.7d 17 Mar 2004
      準(zhǔn)確的版本號,日期和其他可能不同的細(xì)節(jié),寫本文的時候,目前的版本是OpenSSL0.98a,我們正在使用的例子能工作在大部分OpenSSL版本下。
      如果你只輸入了openssl,沒有附加任何的參數(shù),你將得到下面這樣的提示符:
      OpenSSL>
      如果是這樣,只需要輸入quit或按Ctrl-C即可安全地退出,它OpenSSL內(nèi)部命令行提示符,它沒有命令行編輯功能,也沒有明確的幫助功能,但是,如果你輸入一個它不認(rèn)識的命令,它會列出一個可用的命令列表。
      二進(jìn)制文件保護(hù)
      二進(jìn)制文件典型地用于使用MIME的電子郵件,如果你的電子郵件軟件不支持MIME,如大多數(shù)命令行電子郵件客戶端,你將被uuencode困擾,你可以使用基于64位編碼的OpenSSL,復(fù)雜的MIME協(xié)議也使用的是64位編碼,但是它不能直接兼容MIME。
      要使用64位編碼打包二進(jìn)制文件成文本文件,輸入:
      $Content$nbsp;openssl base64 < filename.bin > filename.txt
      要打開64位編碼的文本文件,輸入:
      $Content$nbsp;openssl base64 -d < filename.txt > filename.bin
      注意OpenSSL不會關(guān)心文件擴(kuò)展名。
      OpenSSL與GnuPG或MIME不一樣,它還能對短字符串進(jìn)行編碼,如下:
      $Content$nbsp;echo “The Linux Journal” | openssl base64
      VGhlIExpbnV4IepvdXJuYWwK
      解碼:
      $Content$nbsp;echo “VGhlIExpbnV4IEpvdXJuYWwK” | openssl base64 -d
      The Linux Journal
      注意-d選項,它意味著解碼。
      更好的校驗和
      sum和cksum是傳統(tǒng)的UNIX校驗程序,它們工作得很好,只要你不需要跨平臺兼容或安全,你也不用擔(dān)憂會出現(xiàn)2個完全不同的文件有相同的校驗和值。
      盡管Linux系統(tǒng)經(jīng)常安裝了md5sum,MD5算法遭受了一個相對較新的漏洞,現(xiàn)在不應(yīng)該使用它。如果它已經(jīng)安裝了,應(yīng)該使用更安全的sha1sum,但是,一些版本只能同時對一個文件進(jìn)行打亂,一些不能處理標(biāo)準(zhǔn)輸入或者有其他的不足,如果你運行這些程序遇到了問題或者你想有一致的、比較知名的、具有良好跨平臺的軟件,建議考慮OpenSSL。
      OpenSSL打亂輸出格式與GnuPG有一點不同,但是數(shù)字是相同的,OpenSSL格式總是要鑒定使用的算法,并總是輸出一個小寫的無空白的十六進(jìn)制的字符串,你會發(fā)現(xiàn)這種格式更容易使用。
      這里有一些例子:
      $Content$nbsp;openssl sha1 filename
      SHA1(filename)= e83a42b9bc8431a6645099be50b6341a35d3dceb
      $Content$nbsp;openssl md5 filename
      MD5(filename)= 26e9855f8ad6a5906fea121283c729c4
      在我早前的文章“GnuPG Hacks”中,上面的例子使用了一個包括字符串“The Linux Journal”的文件,注意這個字符串沒有句號。
      如果你復(fù)雜這些結(jié)果時遇到了問題,這里提供一個帶ASCII注釋的十六進(jìn)制的表示,注意新行末尾是vi自動加上去的:
      OpenSSL與GnuPG不一樣,它沒有SHA-512加密算法,但是OpenSSL有MD2,MD4,MDC2,這些都是舊的算法了,只是為了保持向后兼容,和MD5一樣,現(xiàn)在它們都不應(yīng)該拿來使用。
      快速整潔的加密
      盡管這不是OpenSSL的強項,但它也能加密文件,靈活的OpenSSL做這件事要比GnuPG復(fù)雜一些。
      OpenSSL默認(rèn)選項比較少,因此要使用更多的選項,也有許多算法可供選擇,一些算法如DES和RC4-40,只是為了向后兼容,現(xiàn)在不應(yīng)該再拿來使用了,你應(yīng)該使用強壯的算法如bf(它是Blowfilsh算法的簡稱)和-aes-128-cbc(它是美國NIST高級加密標(biāo)準(zhǔn)—AES,運行在CBS模式下使用128位密鑰)。
      這里有一個例子:
      $Content$nbsp;openssl enc -aes-128-cbc < filename > filename.aes-128-cbc
      enter aes-128-cbc encryption password:
      Verifying – enter aes-128-cbc encryption password:
      與GnuPG一樣,OpenSSL要求提供2次密語,并且不會回顯到屏幕上。
      解密也比GnuPG更復(fù)雜一點:
      $Content$nbsp;openssl enc -d -aes-128-cbc -in filename.aes-128-cbc > filename
      enter aes-128-cbc decryption password:
      注意例子中的-d參數(shù),它意味著解密。
      OpenSSL與GnuPG不一樣,不能自動檢查文件的類型或者使用了什么算法也不知道、也不清楚加密文件使用的密鑰的長度和模式。你需要自己保存一個跟蹤記錄,在我的例子中,我將這些信息放在文件擴(kuò)展名里了,OpenSSL不能為你管理文件和文件擴(kuò)展名,你不得不指出輸出數(shù)據(jù)寫入的位置。
      如果你沒有指定正確的算法,OpenSSL可能輸出一堆垃圾信息也可能產(chǎn)生一個看不懂的數(shù)字,無論怎樣,沒有正確的給出選項,你的數(shù)據(jù)就不能正確地解密。
      密語
      在我們更進(jìn)一步之前,我們應(yīng)該先討論一下密語的重要性,在大多數(shù)加密系統(tǒng)中,密語是保存了其他機密的秘密,它通常是最薄弱的點,因此,創(chuàng)建一個強壯的密語是很重要的,但是這也很困難,除非你有好用的工具,使用OpenSSL你就能快速地創(chuàng)建一個強壯的密語。
      一個對密語簡單的指導(dǎo)就是長度與優(yōu)勢的比較表,8個字符不夠長(表1),目標(biāo)是創(chuàng)建一個保密性強的而且你又能記住的其他人又不知道的密語,不能靠猜或最后偶爾發(fā)現(xiàn)。
      表1 密碼和密語被破解的估計時間強度比較,注意:破解時間是比較粗糙的。
      產(chǎn)生一個密語
      OpenSSL能創(chuàng)建非常強壯的隨機密語:
      $Content$nbsp;openssl rand 15 -base64
      wGcwstkb8Er0g6w1+Dm+
      如果你運行了這個例子,你的輸出將與這里的輸出不同,因為密語是隨機產(chǎn)生的。
      第一個參數(shù)15是產(chǎn)生的二進(jìn)制字節(jié)數(shù),第二個參數(shù)-base64指出那些二進(jìn)制字節(jié)應(yīng)該用基于64位字符編碼,對于15字節(jié)而言,輸出總是20個字符,加上一個新行字符。
      基于64位字符設(shè)定了只由大寫和小寫的字母A-Z,數(shù)字1-9和3個標(biāo)點字符:加號、斜線號和等號。這是一個有意的字符限制設(shè)置,更復(fù)雜的字符設(shè)置不是必需的,僅僅增加一個額外的字符使得安全變得不同,例如:一個8位字符完全可打印的ASCII密碼大約與一個9位字符基于64位字符編碼的密碼強度相當(dāng)。
      盡管可以使用openssl rand快速生成密語,但是專業(yè)的密語生成器生成強壯的并容易記憶的密語,我強烈推薦使用它。
      加密密碼
      還有一些事情是GnuPg不能做的,OpenSSL內(nèi)置了一個命令用來創(chuàng)建加密的linux密碼,就象/bin/passwd一樣。
      跳過這個段落避免陷入鉆牛角尖的密碼術(shù),盡管通常叫做加密,linux密碼實際上使用的是MD5或舊的UNIX密碼打亂機制(基于DES加密算法),這就允許linux不知道你的密碼,即使你提供了正確的密碼讓它知道了。當(dāng)你設(shè)置你的密碼時,linux打亂你的密碼并保存在/etc/shadow中,當(dāng)你登陸時,linux提取你輸入的密碼并再打亂一次,再與保存在/etc/shadow中的進(jìn)行比較,如果匹配你提供的就是正確的密碼,你就能登陸,如果不匹配,你也不清楚密碼是好多了,因為存儲的是打亂后的數(shù)據(jù),計算機也不會知道你的密碼是好多,反正你是不能登陸進(jìn)去的。
      這就是為什么打亂你自己的密碼有用了,假設(shè)你在另一個計算機上需要一個新密碼,或許它是一個新賬號或你忘記了舊的密碼讓管理員給你重設(shè)密碼,如果你能親自告訴管理員,那么沒有問題,但是如果管理員不在怎么辦呢?或許你從來都沒有和管理員見過面,你怎么傳輸你的新密碼?電子郵件是不安全的,電話可能要好一點,郵寄一封信可能要好幾天(可能會有其他安全問題),傳真機,文本消息和大多數(shù)紙張上的東西是不安全的。
      更糟糕的是,你可能不信任那個管理員,當(dāng)然,管理員通常就是root,但是其他人可能知道你的密碼,或許你象在其他機器上使用相同的密碼,并且你也不信任那些機器的管理員。
      因此,使用下面的方法:
      $Content$nbsp;openssl passwd -1
      Password:
      Verifying – Password:
      $1$zmUy5lry$aG45DkcaJwM/GNlpBLTDy0
      輸入2次密碼,它不會回顯的,如果你有多個帳戶,就運行多次上面的命令,輸出的內(nèi)容就是密碼加密后的結(jié)果,由于采用的是隨機加密,每次運行結(jié)果都是不一樣的,即使密碼是相同的。
      在我的例子中,密碼打亂后是這樣的:
      $1$zmUy5lry$aG45DkcaJwM/GNlpBLTDy0
      你的密碼打亂后可能與這里完全不同,除了開頭的$1$。
      打亂后的密碼【譯者注:實際上通常我們叫做hash值】就能用于電子郵件、傳真、文本消息甚至通過電話交談傳輸給管理員了,管理員據(jù)此可以重新設(shè)置你的密碼hash值。
      在管理員收到你的密碼hash值后,它可以手動修改/etc/shadow或使用chpasswd命令,后面需要一個臨時的新文件,叫做newpassword,你的登陸Id和密碼hash值象這樣:
      LoginidHere:$1$ywrU2ttf$yjm9OXTIBnoKJLQK2Fw5c/
      這個文件可以包括多行,為其他帳戶提供類似的功能。
      然后,管理員作為root登陸運行:
      chpasswd –encrypted < newpassword
      現(xiàn)在,新密碼已經(jīng)設(shè)置好了,一旦你登陸后立即修改你的密碼是個好主意,除非你使用的是一個強壯的密語,這是因為密碼hash值,一旦暴露,就成為離線強制破解的對象,除非這個密碼是真的很長。
      這個設(shè)置密碼的方法是相當(dāng)安全的,例如:使用這個技術(shù),某個人能獲取到密碼hash值,創(chuàng)建一個賬號,并知道登陸id和主機名,但是只有原先創(chuàng)建這個用戶的人才知道密碼,即使這個賬號的密碼hash值發(fā)布在雜志上也不用擔(dān)心。
      順便說一下,那個hash值對應(yīng)的密碼是完全隨機的基于64位字符編碼的28位長,因此要破解它是非常困難的,但是請注意,不要用那些密碼已經(jīng)公布出來的hash值創(chuàng)建賬號,如:
      HXzNnCTo8k44k8v7iz4ZkR/QWkM2
      密碼和hash值象下面這樣創(chuàng)建:
      $Content$nbsp;openssl rand 21 -base64
      HXzNnCTo8k44k8v7iz4ZkR/QWkM2
      $Content$nbsp;openssl passwd -1 HXzNnCTo8k44k8v7iz4ZkR/QWkM2
      這些例子使用MD5密碼hash值,目前通用的linux系統(tǒng)都是這樣,如果你需要使用舊的UNIX系統(tǒng)hash值,只需要去掉-1參數(shù),例如:
      $Content$nbsp;openssl passwd
      Password:
      Verifying – Password:
      xcx7DofWC0LpQ
      最后這個密碼hash值的密碼是:TheLinux
      密碼基準(zhǔn)測試
      OpenSSL支持的許多算法使得它非常合適于密碼基準(zhǔn)測試,這對于比較相同硬件情況下不同算法的性能很有用,并且,它內(nèi)置了一個基準(zhǔn)測試命令。
      openssl speed命令,默認(rèn)情況下,在每個單獨支持的模式和選項下運行每個單獨的算法,使用不同的數(shù)據(jù)大小,不同的大小是重要的因為算法啟動過頭了。
      完整運行speed需要花費大約6分鐘時間,不考慮硬件的性能,產(chǎn)生29行摘要124行性能數(shù)據(jù)。
      但是,注意加密算法的性能嚴(yán)重依賴特定的工具,對于高性能,OpenSSL在x86系統(tǒng)代碼中有幾個算法。其他結(jié)構(gòu)如ia64,SPARC和x86-64,沒有什么系統(tǒng)代碼,沒有列出的架構(gòu)更沒有了,系統(tǒng)代碼放在OpenSSL源代碼目錄:crypto/*/asm,表2和表3節(jié)選了在3個不同的系統(tǒng)上的速度報告。
      表2 hash和塊密碼性能(每秒使用1024字節(jié)塊的數(shù)量是1000字節(jié))
      表3 公鑰加密性能

      學(xué)習(xí)更多
      這僅僅是OpenSSL命令行功能的一個樣本。在OpenSSL網(wǎng)站上有更多的文檔,也有幾個郵件列表提供技術(shù)支持。
      OpenSSL使用c/c++編寫的,但是它已經(jīng)被移植到其他語言上去了,包括Ruby,而其,在2006年三月通過了FIPS140-2一級評估,使得OpenSSL稱為一個新的在企業(yè)和政府加密領(lǐng)域的競爭者。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多