?
九.????
指令
cipher
說明:
cipher
就是加密算法的意思。
ssl
的
cipher
主要是對稱加密算法和不對稱加密算法的組合。
本指令是用來展示用于
SSL
加密算法的工具。它能夠把所有
openssl
支持的加密算法按照一定規(guī)律排列(一般是加密強度)。這樣可以用來做測試工具,決
定使用什么加密算法。
? ?
? ?
? ?
用法:
? ? openssl ciphers [-v] [-ssl2] [-ssl3] [-tls1] [cipherlist]
? ?? ???
? ? COMMAND OPTIONS
? ? -v
? ?
詳細列出所有符合的
cipher
的所有細節(jié)。列出該
cipher
使用的
ssl
的版本,公共密鑰交換算法,身份驗證方法,對稱加密算法以及哈希算法。還列出該算法是否可以出口。
? ?
算法出口?
趁這個機會可以給大家來點革命教育。米國的加密算法研究是世界上最先進的,其國家安全局
(NSA)
在這方面的研究水平已經(jīng)多次證明比
"
最先進水平
"
領(lǐng)先
10
到
15
年。他們的預算據(jù)說是每年
200
億美圓。他們的數(shù)學家比你知道的還多,他們還是全世界最大的計算機硬件買家。
DES
就是他們最先弄出來的。到了
70
年代,
IBM
也有人在實現(xiàn)室弄出這個算法。都弄出來
30
年了,還使用的這么廣泛。
? ?
該算法的最隱蔽的是一個叫
S
匣的東西,是一個常數(shù)矩陣。研究
DES
你就會知道這玩意。因為
NSA
和
IBM
都沒有給出這個
S
匣的解釋,所以大家都懷疑使用這個東西是否是
NSA
和
IBM
搞出來的后門?
? ?
一直到了
90
年代,才有倆個以色列人發(fā)現(xiàn)了原因,這個是為了對付一種叫什么微分密碼分析的破解法而如此設(shè)置的,對
S
匣的任何改動都將使微分密碼分析比較容易的將
DES
給
K
掉。
S
匣不僅不是后門,還是最大限度的增加了加密強度。
? ?
說遠了,大意就是:老米在這方面領(lǐng)先的可怕。但他們怕他們的研究成果給其他國家的人用,搞的自己也破解不了,那就麻煩了。所以他們用法律規(guī)定了,一定強度以上的加密算法禁止給其他國家用。那些加密強度很弱的就可以出口。
? ?
這個故事教育我們,為了中國的崛起,還有很多路要走吶。
? ?
如果沒有
-v
這個參數(shù),
很多
cipher
可能重復出現(xiàn),因為他們可以同時被不同版本的
SSL
協(xié)議使用。
? ?
? ???-ssl3
? ?
只列出
SSLv3
使用的
ciphers
? ???-ssl2
? ?
只列出
SSLv2
使用的
ciphers
? ? -tls1
? ?
只列出
TLSv1
使用的
ciphers
? ? -h, -?
? ?
打印幫助信息
? ? cipherlist
? ?
列出一個
cipher list
的詳細內(nèi)容。一般都這么用:
? ?openssl -v XXXXX
? ?
這個
XXXXX
就是
cipher list.
如果是空的話,那么
XXXXX
代表所有的
cipher.
? ?CIPHER LIST
的格式
? ?cipher list
由許多
cipher string
組成,由冒號,逗號或者空格分隔開。但一般最常用的是用冒號。
? ?cipher string
又是什么?
? ?
它可以僅僅包含一個
cipher,
比如
RC4-SHA.
? ?
它也可以僅僅包含一個加密算法,比如
SHA,
那就表示所有用到
SHA
的
cipher
都得列出來。
? ?
你還可以使用三個符號來捏合各種不同的
cipher,
做出
cipher string.
這三個符號是
+, -, !
。我想這個很好理解吧,
MD5+DES
表示同時使用了這倆種算法的
cipher
,
!SHA
就表示所有沒有有用到
SHA
的
cipher
,
IDEA-CBC
就表示使用了
IDEA
而沒有使用
CBC
的所有
cipher.
? ? openssl
還缺省的定義了一些通用的
cipher string,
有:
? ? DEFAULT:
缺省的
cipher list.
? ? ALL:
所有的
cipher
? ? HIGH, LOW, MEDIUM:
分別代表
高強度,中等強度和底強度的
cipher list.
具體一點就是對稱加密算法的
key
的長度分別是
>;128bit <128bit
和
==128bit
的
cipher.
? ? EXP, EXPORT, EXPORT40:
老米的壟斷體現(xiàn),前倆者代表法律允許出口的加密算法,包括
40bit, 56bit
長度的
key
的算法,后者表示只有
40bit
長度的
key
的加密算法。
? ? eNULL, NULL:
表示不加密的算法。
(
那也叫加密算法嗎?
)
? ? aNULL:
不提供身份驗證的加密算法。目前只有
DH
一種。該算法很容易被監(jiān)聽者,路由器等中間設(shè)備攻擊,所以不提倡使用。
? ?
? ?
下表列出了
SSL/TLS
使用的
cipher,
以及
openssl
里面如何表示這些
cipher.
? ? SSL v3.0 cipher suites OPENLLS
表示方法
? ?
? ???SSL_RSA_WITH_NULL_MD5 NULL-MD5
? ?
? ???SSL_RSA_WITH_NULL_SHA NULL-SHA
? ?
? ???SSL_RSA_EXPORT_WITH_RC4_40_MD5 EXP-RC4-MD5
? ?
? ???SSL_RSA_WITH_RC4_128_MD5 RC4-MD5
? ?
? ???SSL_RSA_WITH_RC4_128_SHA RC4-SHA
? ?
? ???SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 EXP-RC2-CBC-MD5
? ?
? ???SSL_RSA_WITH_IDEA_CBC_SHA IDEA-CBC-SHA
? ?
? ???SSL_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-DES-CBC-SHA
? ?
? ???SSL_RSA_WITH_DES_CBC_SHA DES-CBC-SHA
? ?
? ???SSL_RSA_WITH_3DES_EDE_CBC_SHA DES-CBC3-SHA
? ?? ???
? ???SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA Not implemented.
? ?
? ???SSL_DH_DSS_WITH_DES_CBC_SHA Not implemented.
? ?
? ???SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA Not implemented.
? ?
? ???SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA Not implemented.
? ?
? ???SSL_DH_RSA_WITH_DES_CBC_SHA Not implemented.
? ?
? ???SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA Not implemented.
? ?
? ???SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-DSS-DES-CBC-SHA
? ?
? ???SSL_DHE_DSS_WITH_DES_CBC_SHA EDH-DSS-CBC-SHA
? ?
? ???SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA EDH-DSS-DES-CBC3-SHA
? ?
? ???SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-RSA-DES-CBC-SHA
? ?
? ???SSL_DHE_RSA_WITH_DES_CBC_SHA EDH-RSA-DES-CBC-SHA
? ?
? ???SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA EDH-RSA-DES-CBC3-SHA
? ?
? ???
? ???SSL_DH_anon_EXPORT_WITH_RC4_40_MD5 EXP-ADH-RC4-MD5
? ?
? ???SSL_DH_anon_WITH_RC4_128_MD5 ADH-RC4-MD5
? ?
? ???SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA EXP-ADH-DES-CBC-SHA
? ?
? ???SSL_DH_anon_WITH_DES_CBC_SHA ADH-DES-CBC-SHA
? ?
? ???SSL_DH_anon_WITH_3DES_EDE_CBC_SHA ADH-DES-CBC3-SHA
? ?
? ???
? ?
? ???SSL_FORTEZZA_KEA_WITH_NULL_SHA Not implemented.
? ?
? ???SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA Not implemented.
? ?
? ???SSL_FORTEZZA_KEA_WITH_RC4_128_SHA Not implemented.
? ?
? ???
? ?
? ???TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA EXP1024-DES-CBC-SHA
? ?
? ???TLS_RSA_EXPORT1024_WITH_RC4_56_SHA EXP1024-RC4-SHA
? ?
? ???TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA EXP1024-DHE-DSS-DES-CBC-SHA
? ?
? ???TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA EXP1024-DHE-DSS-RC4-SHA
? ?
? ???TLS_DHE_DSS_WITH_RC4_128_SHA DHE-DSS-RC4-SHA
? ?
? ???
? ?
? ???
? ?
? ? TLS v1.0 cipher suites.
? ?
? ???TLS_RSA_WITH_NULL_MD5 NULL-MD5
? ?
? ???TLS_RSA_WITH_NULL_SHA NULL-SHA
? ?
? ???TLS_RSA_EXPORT_WITH_RC4_40_MD5 EXP-RC4-MD5
? ?
? ???TLS_RSA_WITH_RC4_128_MD5 RC4-MD5
? ?
? ???TLS_RSA_WITH_RC4_128_SHA RC4-SHA
? ?
? ???TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 EXP-RC2-CBC-MD5
? ?
? ???TLS_RSA_WITH_IDEA_CBC_SHA IDEA-CBC-SHA
? ?
? ???TLS_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-DES-CBC-SHA
? ?
? ???TLS_RSA_WITH_DES_CBC_SHA DES-CBC-SHA
? ?
? ???TLS_RSA_WITH_3DES_EDE_CBC_SHA DES-CBC3-SHA
? ?
? ???
? ?
? ???TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA Not implemented.
? ?
? ???TLS_DH_DSS_WITH_DES_CBC_SHA Not implemented.
? ?
? ???TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA Not implemented.
? ?
? ???TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA Not implemented.
? ?
? ???TLS_DH_RSA_WITH_DES_CBC_SHA Not implemented.
? ?
? ???TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA Not implemented.
? ?
? ???TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-DSS-DES-CBC-SHA
? ?
? ???TLS_DHE_DSS_WITH_DES_CBC_SHA EDH-DSS-CBC-SHA
? ?
? ???TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA EDH-DSS-DES-CBC3-SHA
? ?
? ???TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA EXP-EDH-RSA-DES-CBC-SHA
? ?
? ???TLS_DHE_RSA_WITH_DES_CBC_SHA EDH-RSA-DES-CBC-SHA
? ?
? ???TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA EDH-RSA-DES-CBC3-SHA
? ?
? ???
? ?
? ???TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 EXP-ADH-RC4-MD5
? ?
? ???TLS_DH_anon_WITH_RC4_128_MD5 ADH-RC4-MD5
? ?
? ???TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA EXP-ADH-DES-CBC-SHA
? ?
? ???TLS_DH_anon_WITH_DES_CBC_SHA ADH-DES-CBC-SHA
? ?
? ???TLS_DH_anon_WITH_3DES_EDE_CBC_SHA ADH-DES-CBC3-SHA
? ?
? ? NOTES
? ? DH
算法由于老米沒有允許人家使用,所有
openssl
都沒有實現(xiàn)之。
? ?
舉例時間:
? ?
詳細列出所有
openssl
支持的
ciphers,
包括那些
eNULL ciphers:
? ? openssl ciphers -v 'ALL:eNULL'
? ?
按加密強度列出所有加密算法
:
? ? openssl ciphers -v 'ALL:!ADHSTRENGTH'
? ?
詳細列出所有同時使用了
3DES
和
RSA
的
ciphers
? ? openssl ciphers -v '3DES:+RSA'