紅軍密碼編譯技術
⑴ 誰會莫爾斯密碼
莫爾斯電碼是美國人莫爾斯於1844年發明的。 歷史 最早的摩爾斯電碼是一些表示數字的點和劃。數字對應單詞,需要查找一本代碼表才能知道每個詞對應的數。用一個電鍵可以敲擊出點、劃以及中間的停頓。 雖然摩爾斯發明了電報,但他缺乏相關的專門技術。他與Alfred Vail簽定了一個協議,讓他幫自己製造更加實用的設備。Vail構思了一個方案,通過點、劃和中間的停頓,可以讓每個字元和標點符號彼此獨立地發送出去。他們達成一致,同意把這種標識不同符號的方案放到摩爾斯的專利中。這就是現在我們所熟知的美式摩爾斯電碼,它被用來傳送了世界上第一條電報。 這種代碼可以用一種音調平穩時斷時續的無線電信號來傳送,通常被稱做連續波(Continuous Wave),縮寫為CW。它可以是電報電線里的電子脈沖,也可以是一種機械的或視覺的信號(比如閃光)。 一般來說,任何一種能把書面字元用可變長度的信號表示的編碼方式都可以稱為摩爾斯電碼。但現在這一術語只用來特指兩種表示英語字母和符號的摩爾斯電碼:美式摩爾斯電碼被使用了在有線電報通信系統;今天還在使用的國際摩爾斯電碼則只使用點和劃(去掉了停頓)。 電報公司根據要發的信的長度收費。商業代碼精心設計了五個字元組成一組的代碼,做為一個單詞發送。比如:BYOXO ("Are you trying to crawl out of it?";LIOUY ("Why do you not answer my question?",;AYYLU ("Not clearly coded, repeat more clearly."。這些五個字元的簡語可以用摩爾斯電碼單獨發送。在網路用辭中,我們也會說一些最常用的摩爾斯商用代碼。現在仍然在業余無線電中使用的有Q簡語和Z簡語:他們最初是為報務員之間交流通信質量、頻率變更、電報編號等信息服務的。 1838年1月8日,Alfred Vail展示了一種使用點和劃的電報碼,這是摩爾斯電碼前身。 作為一種信息編碼標准,摩爾斯電碼擁有其他編碼方案無法超越的長久的生命。摩爾斯電碼在海事通訊中被作為國際標准一直使用到1999年。1997年,當法國海軍停止使用摩爾斯電碼時,發送的最後一條消息是:「所有人注意,這是我們在永遠沉寂之前最後的一聲吶喊」! 莫爾斯電碼由點(.)、劃(-)兩種符號按以下原則組成: 1,一點為一基本信號單位,每一劃的時間長度相當於3點的時間長度。 2,在一個字母或數字內,各點、各劃之間的間隔應為兩點的長度。 3,字母(數字)與字母(數字)之間的間隔為7點的長度。 A .- B -... C -.-. D -.. E . F ..-. G --. H .... I .. J .--- K -.- L .-.. M -- N -. O --- P .--. Q --.- R .-. S ... T - U ..- V ...- W .-- X -..- Y -.-- Z --.. 1 .---- 2 ..--- 3 ...-- 4 ....- 5 ..... 6 -.... 7 --... 8 ---.. 9 ----. 0 ----- ? ..--.. / -..-. () -.--.- - -....- . .-.-.- 還有一種表示莫爾斯密碼的方法:將旗子向左劃表示一橫,向右表示一點。這種方法已經沒多少人知道了。 幾種常見密碼形式: 1、柵欄易位法。 即把將要傳遞的信息中的字母交替排成上下兩行,再將下面一行字母排在上面一行的後邊,從而形成一段密碼。 舉例:盜用阿洗一個例子^^ TEOGSDYUTAENNHLNETAMSHVAED 解: 將字母分截開排成兩行,如下 T E O G S D Y U T A E N N H L N E T A M S H V A E D 再將第二行字母分別放入第一行中,得到以下結果 THE LONGEST DAY MUST HAVE AN END. 2、愷撒移位密碼。 也就是一種最簡單的錯位法,將字母表前移或者後錯幾位,例如: 明碼表:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密碼表:DEFGHIJKLMNOPQRSTUVWXYZABC 這就形成了一個簡單的密碼表,如果我想寫frzy(即明文),那麼對照上面密碼表編成密碼也就是iucb(即密文)了。密碼表可以自己選擇移幾位,移動的位數也就是密鑰。 3、進制轉換密碼。 比如給你一堆數字,乍一看頭暈暈的,你可以觀察數字的規律,將其轉換為10進制數字,然後按照每個數字在字母表中的排列順序,拼出正確字母。 舉例:110 10010 11010 11001 解: 很明顯,這些數字都是由1和0組成,那麼你很快聯想到什麼?二進制數,是不是?嗯,那麼就試著把這些數字轉換成十進制試試,得到數字6 18 26 25,對應字母表,破解出明文為frzy,呵呵~ 4、字母頻率密碼。 關於詞頻問題的密碼,我在這里提供英文字母的出現頻率給大家,其中數字全部是出現的百分比: a 8.2 b 1.5 c 2.8 d 4.3 e 12.7 f 2.2 g 2.0 h 6.1 i 7.0 j 0.2 k 0.8 l 4.0 m 2.4 n 6.7 o 7.5 p 1.9 q 0.1 r 6.0 s 6.3 t 9.1 u 2.8 v 1.0 w 2.4 x 0.2 y 2.0 z 0.1 詞頻法其實就是計算各個字母在文章中的出現頻率,然後大概猜測出明碼表,最後驗證自己的推算是否正確。這種方法由於要統計字母出現頻率,需要花費時間較長,本人在此不舉例和出題了,有興趣的話,參考《跳舞的小人》和《金甲蟲》。 5、維熱納爾方陣。 上面所說的頻率分析,很容易破解較長篇幅的密文,於是維熱納爾繼承前人的經驗,創造出了這個維熱納爾方陣,從而克服了詞頻分析輕易能夠破解密碼的弊端,成為一種較為強大的密碼編譯形式。 a b c d e f g h i j k l m n o p q r s t u v w x y z 1 B C D E F G H I J K L M N O P Q R S T U V W X Y Z A 2 C D E F G H I J K L M N O P Q R S T U V W X Y Z A B 3 D E F G H I J K L M N O P Q R S T U V W X Y Z A B C 4 E F G H I J K L M N O P Q R S T U V W X Y Z A B C D 5 F G H I J K L M N O P Q R S T U V W X Y Z A B C D E 6 G H I J K L M N O P Q R S T U V W X Y Z A B C D E F 7 H I J K L M N O P Q R S T U V W X Y Z A B C D E F G 8 I J K L M N O P Q R S T U V W X Y Z A B C D E F G H 9 J K L M N O P Q R S T U V W X Y Z A B C D E F G H I 10 K L M N O P Q R S T U V W X Y Z A B C D E F G H I J 11 L M N O P Q R S T U V W X Y Z A B C D E F G H I J K 12 M N O P Q R S T U V W X Y Z A B C D E F G H I J K L 13 N O P Q R S T U V W X Y Z A B C D E F G H I J K L M 14 O P Q R S T U V W X Y Z A B C D E F G H I J K L M N 15 P Q R S T U V W X Y Z A B C D E F G H I J K L M N O 16 Q R S T U V W X Y Z A B C D E F G H I J K L M N O P 17 R S T U V W X Y Z A B C D E F G H I J K L M N O P Q 18 S T U V W X Y Z A B C D E F G H I J K L M N O P Q R 19 T U V W X Y Z A B C D E F G H I J K L M N O P Q R S 20 U V W X Y Z A B C D E F G H I J K L M N O P Q R S T 21 V W X Y Z A B C D E F G H I J K L M N O P Q R S T U 22 W X Y Z A B C D E F G H I J K L M N O P Q R S T U V 23 X Y Z A B C D E F G H I J K L M N O P Q R S T U V W 24 Y Z A B C D E F G H I J K L M N O P Q R S T U V W X 25 Z A B C D E F G H I J K L M N O P Q R S T U V W X Y 26 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 以上就是維熱納爾方陣,它由明碼表(第一行的字母)、密碼表(下面26行)和密鑰組成,下面我舉個例子說明。 舉例: 密鑰:frzy 密碼:qfuc 解:第一個字母,看以f開頭第五行,對應明碼表查找q字母所標示的字母為l。以此類推找出後面字母。所得明文為love。 一些新興的密碼形式: 1、利用鍵盤 無論是計算機鍵盤,還是手機鍵盤,都是出密碼的好工具哦,可以用錯位、或者排列形狀等。使用手機鍵盤和這個同理。另外手機鍵盤還可以在鍵盤的字母上做文章,例如你可以用51表示字母j,用73表示字母r等。 舉例: r4a6 這個密碼利用計算機鍵盤,將明文字母分別向上移動一個位置,得到密文。破解結果為frzy。 852 74123 74123698 74269 78974123456 7412369 這排數字是不是很暈?其實很簡單,對照小鍵盤,依次打這些字母,看組成的形狀就行了。答案是I L O V E U。
⑵ 二戰德國謎密密碼
英納格瑪(ENGMA)是由德國發明家亞瑟·謝爾比烏斯(ArthurScherbius),被譽為「超級密碼」,並使密碼編譯從人工手寫時代跨越到了機器操作時代。並且為德國在二戰時期的密碼加密做了不小的貢獻。
英納格瑪(ENGMA)又稱恩格尼碼,在所有用於軍事和外交的密碼里,最著名的恐怕應屬第二次世界大戰中德國方面使用的ENIGMA(讀作「恩尼格瑪」,意為「謎」)。
(2)紅軍密碼編譯技術擴展閱讀
恩格尼碼的誕生:
直到第一次世界大戰結束為止,所有密碼都是使用手工來編碼的。直截了當地說,就是鉛筆加紙的方式。在我國,郵電局電報編碼和解碼直到很晚(大概是上個世紀八十年代初)還在使用這種手工方法。
手工編碼的方式給使用密碼的一方帶來很多的不便。首先,這使得發送信息的效率極其低下。明文(就是沒有經過加密的原始文本)必須由加密員人工一個 一個字母地轉換為密文。
考慮到不能多次重復同一種明文到密文的轉換方式(這很容易使敵人猜出這種轉換方式),和民用的電報編碼解碼不同,加密人員並不能把 轉換方式牢記於心。轉換通常是採用查表的方法,所查表又每日不同,所以解碼速度極慢。
而接收密碼一方又要用同樣的方式將密文轉為明文。其次,這種效率的低 下的手工操作也使得許多復雜的保密性能更好的加密方法不能被實際應用,而簡單的加密方法根本不能抵擋解密學的威力。
解密一方當時正值春風得意之時,幾百年來被認為堅不可破的維吉耐爾(Vigenere)密碼和它的變種也被破解。而無線電報的發明,使得截獲密文易如反掌。無論是軍事方面還是民用商業方面都需要一種可靠而又有效的方法來保證通訊的安全。
1918年,德國發明家亞瑟.謝爾比烏斯(Arthur Scherbius)和他的朋友理查德.里特(Richard Ritter)創辦了謝爾比烏斯和里特公司。這是一家專營把新技術轉化為應用方面的企業,很象現在的高新技術公司,利潤不小,可是風險也很大。
謝爾比烏斯 負責研究和開發方面,緊追當時的新潮流。他曾在漢諾威和慕尼黑研究過電氣應用,他的一個想法就是要用二十世紀的電氣技術來取代那種過時的鉛筆加紙的加密方 法。
亞瑟.謝爾比烏斯 謝爾比烏斯發明的加密電子機械名叫ENIGMA,在以後的年代裡,它將被證明是有史以來最為可K的加密系統之一,而對這種可K性的盲目樂觀,又使它的使用者遭到了滅頂之災。
⑶ 在第二次世界大戰中世界電報密碼的名字
莫爾斯電碼
莫爾斯電碼是美國人莫爾斯於1844年發明的。
摩爾斯電碼的歷史
最早的摩爾斯電碼是一些表示數字的點和劃。數字對應單詞,需要查找一本代碼表才能知道每個詞對應的數。用一個電鍵可以敲擊出點、劃以及中間的停頓。
雖然摩爾斯發明了電報,但他缺乏相關的專門技術。他與Alfred Vail簽定了一個協議,讓他幫自己製造更加實用的設備。Vail構思了一個方案,通過點、劃和中間的停頓,可以讓每個字元和標點符號彼此獨立地發送出去。他們達成一致,同意把這種標識不同符號的方案放到摩爾斯的專利中。這就是現在我們所熟知的美式摩爾斯電碼,它被用來傳送了世界上第一條電報。
這種代碼可以用一種音調平穩時斷時續的無線電信號來傳送,通常被稱做連續波(Continuous Wave),縮寫為CW。它可以是電報電線里的電子脈沖,也可以是一種機械的或視覺的信號(比如閃光)。
一般來說,任何一種能把書面字元用可變長度的信號表示的編碼方式都可以稱為摩爾斯電碼。但現在這一術語只用來特指兩種表示英語字母和符號的摩爾斯電碼:美式摩爾斯電碼被使用了在有線電報通信系統;今天還在使用的國際摩爾斯電碼則只使用點和劃(去掉了停頓)。
電報公司根據要發的信的長度收費。商業代碼精心設計了五個字元組成一組的代碼,做為一個單詞發送。比如:BYOXO ("Are you trying to crawl out of it?";LIOUY ("Why do you not answer my question?",;AYYLU ("Not clearly coded, repeat more clearly."。這些五個字元的簡語可以用摩爾斯電碼單獨發送。在網路用辭中,我們也會說一些最常用的摩爾斯商用代碼。現在仍然在業余無線電中使用的有Q簡語和Z簡語:他們最初是為報務員之間交流通信質量、頻率變更、電報編號等信息服務的。
1838年1月8日,Alfred Vail展示了一種使用點和劃的電報碼,這是摩爾斯電碼前身。
作為一種信息編碼標准,摩爾斯電碼擁有其他編碼方案無法超越的長久的生命。摩爾斯電碼在海事通訊中被作為國際標准一直使用到1999年。1997年,當法國海軍停止使用摩爾斯電碼時,發送的最後一條消息是:「所有人注意,這是我們在永遠沉寂之前最後的一聲吶喊」!
莫爾斯電碼由點(.)、劃(-)兩種符號按以下原則組成:
1,一點為一基本信號單位,每一劃的時間長度相當於3點的時間長度。
2,在一個字母或數字內,各點、各劃之間的間隔應為兩點的長度。
3,字母(數字)與字母(數字)之間的間隔為7點的長度。
A .-
B -...
C -.-.
D -..
E .
F ..-.
G --.
H ....
I ..
J .---
K -.-
L .-..
M --
N -.
O ---
P .--.
Q --.-
R .-.
S ...
T -
U ..-
V ...-
W .--
X -..-
Y -.--
Z --..
1 .----
2 ..---
3 ...--
4 ....-
5 .....
6 -....
7 --...
8 ---..
9 ----.
0 -----
? ..--..
/ -..-.
() -.--.-
- -....-
. .-.-.-
還有一種表示莫爾斯密碼的方法:將旗子向左劃表示一橫,向右表示一點。這種方法已經沒多少人知道了。
幾種常見密碼形式:
1、柵欄易位法。
即把將要傳遞的信息中的字母交替排成上下兩行,再將下面一行字母排在上面一行的後邊,從而形成一段密碼。
舉例:
TEOGSDYUTAENNHLNETAMSHVAED
解:
將字母分截開排成兩行,如下
T E O G S D Y U T A E N N
H L N E T A M S H V A E D
再將第二行字母分別放入第一行中,得到以下結果
THE LONGEST DAY MUST HAVE AN END.
2、愷撒移位密碼。
也就是一種最簡單的錯位法,將字母表前移或者後錯幾位,例如:
明碼表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密碼表:DEFGHIJKLMNOPQRSTUVWXYZABC
這就形成了一個簡單的密碼表,如果我想寫frzy(即明文),那麼對照上面密碼表編成密碼也就是iucb(即密文)了。密碼表可以自己選擇移幾位,移動的位數也就是密鑰。
3、進制轉換密碼。
比如給你一堆數字,乍一看頭暈暈的,你可以觀察數字的規律,將其轉換為10進制數字,然後按照每個數字在字母表中的排列順序,拼出正確字母。
舉例:110 10010 11010 11001
解:
很明顯,這些數字都是由1和0組成,那麼你很快聯想到什麼?二進制數,是不是?嗯,那麼就試著把這些數字轉換成十進制試試,得到數字6 18 26 25,對應字母表,破解出明文為frzy,呵呵~
4、字母頻率密碼。
關於詞頻問題的密碼,我在這里提供英文字母的出現頻率給大家,其中數字全部是出現的百分比:
a 8.2 b 1.5 c 2.8 d 4.3
e 12.7 f 2.2 g 2.0 h 6.1
i 7.0 j 0.2 k 0.8 l 4.0
m 2.4 n 6.7 o 7.5 p 1.9
q 0.1 r 6.0 s 6.3 t 9.1
u 2.8 v 1.0 w 2.4 x 0.2
y 2.0 z 0.1
詞頻法其實就是計算各個字母在文章中的出現頻率,然後大概猜測出明碼表,最後驗證自己的推算是否正確。這種方法由於要統計字母出現頻率,需要花費時間較長,本人在此不舉例和出題了,有興趣的話,參考《跳舞的小人》和《金甲蟲》。
5、維熱納爾方陣。
上面所說的頻率分析,很容易破解較長篇幅的密文,於是維熱納爾繼承前人的經驗,創造出了這個維熱納爾方陣,從而克服了詞頻分析輕易能夠破解密碼的弊端,成為一種較為強大的密碼編譯形式。
a b c d e f g h i j k l m n o p q r s t u v w x y z
1 B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
2 C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
3 D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
4 E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
5 F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
6 G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
7 H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
8 I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
9 J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
10 K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
11 L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
12 M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
13 N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
14 O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
15 P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
16 Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
17 R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
18 S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
19 T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
20 U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
21 V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
22 W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
23 X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
24 Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
25 Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
26 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
以上就是維熱納爾方陣,它由明碼表(第一行的字母)、密碼表(下面26行)和密鑰組成,下面我舉個例子說明。
舉例:
密鑰:frzy
密碼:qfuc
解:第一個字母,看以f開頭第五行,對應明碼表查找q字母所標示的字母為l。以此類推找出後面字母。所得明文為love。
一些新興的密碼形式:
1、利用鍵盤
無論是計算機鍵盤,還是手機鍵盤,都是出密碼的好工具哦,可以用錯位、或者排列形狀等。使用手機鍵盤和這個同理。另外手機鍵盤還可以在鍵盤的字母上做文章,例如你可以用51表示字母j,用73表示字母r等。
舉例:
r4a6
這個密碼利用計算機鍵盤,將明文字母分別向上移動一個位置,得到密文。破解結果為frzy。
852 74123 74123698 74269 78974123456 7412369
這排數字是不是很暈?其實很簡單,對照小鍵盤,依次打這些字母,看組成的形狀就行了。答案是I L O V E U。
2、字母形狀
如hep poo6。這個你可以從手機里打出來,然後把手機倒過來看,形成了密碼的明文,good day。
⑷ 軟體加密與解密的前言
隱蔽軟體(surreptitious software)是近十年來計算機安全研究領域新興的一個分支。在隱蔽軟體的研究過程中不僅需要借鑒計算機安全方面的技術,還會用到計算科學其他領域的大量技術,如密碼學、隱寫術、數字水印、軟體量度(software metric)、逆向工程以及編譯器優化等。我們使用這些技術來滿足在計算機程序中安全存儲秘密信息的需求,盡管這些需求的表現形式千差萬別、各不相同。本書中「秘密」一詞的意思比較廣,書中所介紹技術(代碼混淆、軟體水印和指紋、防篡改技術以及軟體「胎記」等)的使用目的是防止他人剽竊軟體中的智力成果。比如,軟體中使用指紋技術可以用來跟蹤軟體是否被盜版,代碼混淆技術能夠加大攻擊者逆向分析軟體的難度,而防篡改技術則可以使別人很難製作軟體的破解版,等等。
好了,現在我們來講講為什麼需要閱讀本書,誰使用隱蔽軟體以及本書將會涵蓋哪些內容。
為什麼閱讀本書
與傳統的安全研究不同,隱蔽軟體不關心如何使計算機免於計算機病毒入侵,它關心的是計算機病毒的作者是如何防止他人分析病毒的!同樣,我們也不關心軟體到底有沒有安全漏洞,我們關心的是如何隱蔽地在程序中加入一些只有在程序被篡改時才會執行的代碼。密碼學研究領域中,被加密數據的安全性依賴於加密密鑰的隱秘性,而我們現在研究的恰恰是如何隱藏密鑰。軟體工程中有大量的軟體量度技術,以確保程序結構良好,本書中將使用同樣的技術使程序復雜難讀。本書中描述的很多技術都是基於編譯器優化技術研究開發的演算法的,但是編譯優化的目的是使編譯器生成個頭盡量小、運行速度盡量快的程序,而使用本書中介紹的一些技術卻會使生成的程序個頭又大,執行起來又慢。最後,傳統的數字水印和隱寫術是想辦法把要隱藏的信息藏到圖像、音頻、視頻甚至純文本文件中,而隱蔽軟體則是把需要隱藏的信息藏到計算機代碼中。
那麼,為什麼要閱讀本書呢?為什麼要了解一種不能防止計算機被病毒或者蠕蟲攻擊的安全技術?為什麼要學習一種只會讓代碼體積變大而執行速度變慢的編譯優化技術?為什麼要把精力花在一種違反了密碼學基本前提(即密鑰是不可能被攻擊者獲得的)的密碼學分支上呢?
回答是,傳統的計算機安全和密碼學研究成果有時並不能解決實際工作中遇到的且亟待解決的安全問題。比如,在本書中將展示如何使用軟體水印技術防止軟體盜版。軟體水印是在程序中嵌入的唯一標識(類似信用卡的卡號或者版權聲明),通過這個標識,程序的某個副本就和你(程序的作者)或者客戶聯系在了一起。要是你發現市場上在賣自己軟體的盜版光碟,就可以通過在盜版軟體中提取的水印追查製作這個盜版軟體的母版 當初是哪個傢伙從你這里買走的。當給合作商提供新開發的游戲的測試版時,你也可以在測試版中加上數字水印。要是你感覺有人泄露了你的代碼,就能(從眾多的合作商中)找出肇事者,並把他送上法庭。
又比如,在程序的新版本中加上了某個新的演算法,你當然不希望競爭對手也得到這個演算法,並把它加到他們的軟體中。這時,你就可以去混淆程序,使之盡可能變得復雜難懂,使競爭對手逆向分析軟體時效率很低。而如果確實懷疑某人剽竊了你的代碼,本書也會教你如何使用軟體「胎記」證實你的懷疑。
再比如,你的程序中包含有某段不能為人所知的代碼,並且你想確保沒有這段代碼程序就不能正常運行。例如,你肯定不希望黑客修改程序中的軟體使用許可驗證代碼,或者可用於解密數字版權管理系統中mp3文件的密鑰。第7章將討論多種防篡改技術,確保受到篡改的程序停止正常運行。
聽說你把密鑰放在可執行文件里了?這主意實在太糟糕了!以往的經驗告訴我們,任何類似「不公開,即安全」 的做法最終都將以失敗告終,而且不管在程序中怎樣隱藏密鑰,最終它都逃不出一個足夠頑強的逆向分析人員的手心。當然,必須承認你的做法也還是對的。本書中介紹的所有技巧都不能保證軟體能永遠免於黑客的毒手。不必保證某個東西永遠處於保密的狀態,也不必保證程序永遠處於不可能被篡改的狀態,更不需要保證代碼永遠不會被剽竊。除非這個研究領域有什麼重大的突破,否則能指望的只是延緩對方的攻擊。我們的目標就是把攻擊者的攻擊速度減緩到足夠低,使他感到攻擊你的軟體十分痛苦或要付出過高的代價,從而放棄攻擊。也可能攻擊者很有耐心地花了很長時間攻破了你的防禦,但這時你已經從這個軟體中賺夠了錢,或者已經用上了更新版本的代碼(這時他得到的東西也就一錢不值了)。
比方說,你是一個付費頻道的運營商,用戶通過機頂盒來觀看你提供的電視節目。每個機頂盒都是帶有標簽的——在代碼的某個位置上存放了分配給每個用戶的唯一標識(ID),這樣你就可以根據用戶的繳費情況決定是允許還是拒絕某個特定用戶觀看頻道里的節目。可是現在有一個黑客團伙找到並且反匯編了這段代碼,發現了計算用戶ID的演算法,並且在網上以低廉的價格把修改用戶ID的方法賣給了網民。這時你該怎麼辦呢?你也許想到了使用防篡改的智能卡,不過這玩意兒並不像看上去那麼難破解,這將在第11章中講解。或者你可能想到要混淆代碼,使之更難以被分析。或者你也可以使用防篡改技術使程序一被修改就自動停止運行。更有可能,你會混合使用上述各種技巧來保護代碼。但是盡管使用了所有技術,你還必須要知道並且必須接受,你的代碼仍然可能被破解,秘密仍會泄露(在這個案例里就是機頂盒裡的用戶ID仍然會被篡改)這一事實。怎麼會這樣呢?這只是因為「不公開,既安全」這個想法在根本上就存在漏洞。不過既然本書中介紹的所有技術都不能給你一個「完美並且長期的安全保證」,那麼為什麼還要使用這些技術,為什麼還要買這樣一本書呢?答案很簡單,代碼能頂住黑客攻擊的時間越長,訂閱頻道的客戶就越多,同時升級機頂盒的周期也就越長,這樣你賺到的錢和省下的錢也就越多。
就這么簡單。
誰使用隱蔽軟體
很多知名的公司都對隱蔽軟體有濃厚的興趣。事實上很難真正掌握有關技術在實踐中具體被使用的程度(因為大多數公司在如何保護自己的代碼一事上絕對是守口如瓶的),但是我們還是可以根據他們專利的申請和擁有情況把他們對隱蔽軟體的感興趣程度猜個八九不離十。微軟公司擁有多個關於軟體水印[104,354]、代碼混淆[62,62,69,69,70,70,180,378]和軟體「胎記」[364]技術的專利。Intertrust公司擁有大量與數字版權管理技術相關的組合式專利,包括代碼混淆和代碼防篡改專利。2004年,在微軟與Intertrust之間的馬拉松式官司落下了帷幕之後,微軟向Intertrust支付了高達4.4億美元的專利使用費,才獲得了後者所有的專利使用許可。同年,微軟也開始與PreEmptive Solution公司開展商業合作[250],從而把PreEmptive Solution開發的identifier obfuscator(PreEmptive solution公司在該工具中擁有專利[351])加到了Visual Studio的工具集里。而普渡大學科研成果的副產品Arxan,因其獨創的防篡改演算法專利[24,305]而成功地開辦了一家公司。蘋果公司擁有一個代碼混淆方面的專利,估計是用於保護其iTune軟體的。Convera,一家從英特爾公司獨立出來的企業,則著力研究應用於數字版權管理的代碼防篡改技術[27,268-270]。從加拿大北方電信公司中分離出來的Cloakware公司也是這個領域里最成功的企業之一。該公司擁有他們稱為「白盒加密」的專利[67,68,182],即把加密演算法和密鑰藏到程序代碼中。2007年12月,Cloakware公司被一家主營付費電視業務的荷蘭公司Irdeto以7250萬美元的價格收購。即使是相對的後來者Sun Microsystem也已經提交了一些代碼混淆領域的專利申請。
Skype的VoIP客戶端也使用了類似Arxan[24]、英特爾[27]及本書中將要提到的[89]代碼混淆和防篡改技術進行了防逆向工程加固。對於Skype公司來說,保護其客戶端的完整性無疑是極其重要的,因為一旦有人成功逆向分析了其客戶端軟體,解析出Skype所使用的網路協議,黑客們就能寫出廉價的能與Skype軟體進行正常通信的程序(這樣的話,人們就沒有必要一定用Skype)。所以保持網路協議不公開則有助於Skype擁有一個龐大的用戶群,這大概也是2005年易貝公司以26億美元收購Skype的原因吧。實際上,使用隱蔽軟體技術還使Skype公司贏得了足夠多的時間,進而成為了VoIP技術的領軍企業。即使這時Skype的協議被分析出來了(這一點黑客們確實也做到了,詳見7.2.4節),黑客們也拿不出一個能夠撼動Skype市場地位的類似軟體了。
學術研究者從多種角度對隱蔽軟體技術進行了研究。一些擁有編譯器和程序語言研究背景的研究者,比如我們,會很自然地加入這一領域的研究,因為涉及代碼轉換的絕大多數演算法都會涉及靜態分析的問題,而這一問題則是編譯優化技術的研究者再熟悉不過的了。盡管以前,密碼學研究者大多不屑於研究「不公開,即安全」的問題,但最近一些密碼學研究人員已經開始把密碼學的相關技術應用於軟體水印以及發現代碼混淆技術的局限性上了。來自多媒體水印、計算機安全和軟體工程方面的研究人員也已經發表了很多關於隱蔽軟體的文章。遺憾的是,由於沒有專門的刊物、學術會議(供研究人員相互之間進行交流),這一領域的研究進展被大大延緩了。事實上,為了使這些研究成果能被傳統的學術會議和期刊接受,研究人員在不停地努力著,現在仍在努力。目前已經發表過隱蔽軟體研究成果的學術會議有POPL(Principles of Programming Languages,程序設計原理)上的ACM專題研討會、信息隱藏研討會、IEEE的軟體工程研討會、高級密碼學會議(CRYPTO)、ISC(Information Security Conference,信息安全大會)以及其他一些關於數字版權管理的學術會議。隨著隱蔽軟體這一領域的研究越來越成為學術研究的主流,我們有望擁有專門針對於隱蔽軟體的期刊、專題討論會甚至是研討會,只是可惜目前為止這一切都還沒有實現。
軍方也在隱蔽軟體上花了很多精力(和納稅人的錢)。比如,Cousot公司擁有的軟體水印演算法[95]專利就歸屬於世界上第九大國防工程承包商法國Thales集團。下面是一段引自最新的(2006)美軍招標文件[303]中有關AT(anti-tamper)技術 研究的文字。
現在,所有的美軍項目執行部門(PEO)和項目管理方(PM)在設計和實現有關系統時,必須在系統中使用軍隊和國防部制定的AT策略。嵌入式軟體現代武器系統的核心,是被保護的最重要技術之一。AT技術能夠有效地保證這些技術不被他國(人)逆向工程分析利用。僅僅由標准編譯器編譯生成而不加AT技術防護的代碼是很容易被逆向分析的。在分析軟體時,逆向工程分析人員會綜合使用諸如調試器、反編譯器、反匯編器等很多工具,也會使用各種靜態和動態分析技巧。而使用AT技術的目的就是使逆向工程變得更為困難,進而防止美國在技術領域的優勢被他國竊取。今後還有必要向部隊的PEO和PM提供更有用、更有效並且多樣化的AT工具集……研發AT技術的目的在於提供一個能夠抗逆向工程分析的高強度殼 ,從而最大限度地遲滯敵方對被保護軟體的攻擊。這樣美國就有機會維持其在高科技領域的優勢或者減緩其武器技術泄密的速度。最終,美軍就能繼續保持其技術優勢,進而保證其軍備的絕對優勢。
這份招標文件來自於美軍導彈和空間程序(設計部門),專注於實時嵌入式系統的保護。我們有理由相信產生這份招標文件的原因是,美軍擔心射向敵方的導彈由於種種原因落地後未能爆炸,使敵方有機會接觸到嵌入在導彈中負責引導導彈飛臨目標上空的控制軟體。
下面是另一段引自美國國防部[115]的文字。
進行主動式軟體保護 (SPI)是國防部的職責之一,它必須開發和部署相關的保護技術,以保證含有國防武器系統關鍵信息的計算機程序的安全。SPI提供的是一種全新的安全防護方法,它並不(像傳統的安全技術那樣)保護計算機或者網路的安全,而只是加強計算機程序自身的安全。這種新方法能顯著提升國防部的信息安全情況。SPI的適用范圍很廣,從台式機到超級計算機上面所有的程序都能使用SPI技術予以保護。它是(軟體保護技術中)完整的一層,是「縱深防禦」的一個範例。SPI技術是對網路防火牆、物理安全等傳統安全技術的一個補充,但是其實現並不依賴於這些傳統的安全設備。現在SPI技術被部署在選定的HPC中心和150多家國防部機關以及其他由商業公司參與建設和維護的軍事基地。廣泛地部署SPI技術將會有效地增強美國和美國國防部對關鍵應用技術的保護。
.上面這段話說明了什麼?它說明美國國防部不僅關心導彈會不會掉到敵方領土上去,還關心在自己的安全系數和性能都很高的計算機中心運行的軟體的安全。事實上,竊密和反竊密是防間諜機關和情報部門之間永恆的主題。比方說,一架戰斗機上的某個程序需要更新一下,這時我們很可能就是用一台筆記本電腦連接到這架戰斗機上進行更新操作。但是萬一這台筆記本電腦不慎遺失了,或者乾脆就被其他國家政府使用某種方法控制了,就像電影里常演的那樣,這時會有什麼情況發生呢?對方會馬上把相關的代碼拿去做逆向工程分析,並把分析的結果用於改進其戰斗機中所使用的軟體。更有甚者,對方會悄悄地在你的軟體中加上一個特洛伊木馬,並讓飛機在特定的時間里從天上掉下來。如果我們不能絕對保證上述這一幕100%不可能發生的話,隱蔽軟體至少可以作為安全防禦的最後一道防線(至少還能做到事後的責任追究)。例如,飛機中的軟體可以用有權訪問相關軟體的人的ID做一個指紋簽名。要是哪天,在其他國家的戰斗機上發現了這些代碼,就可以立即對這些代碼進行逆向分析,並進一步推算出誰是泄密事件的元兇。
什麼?我聽見你說,為什麼我要對政府之間和商業巨頭之間如何保護它們各自的秘密感興趣呢?如果黑客破解了這些軟體,他們也不過是通過自己的勞動換取一些微薄的利益而已啊。話雖如此,但是這些保護技術給你 帶來的好處最終還是大於它給商業巨頭帶來的好處。理由是,對你來說,法律形式的保護措施(如專利、商標和版權)只有當你擁有足夠的財力,能在法庭上把對方告倒的時候才會管用。換而言之,即使你認為某家大公司通過破解你的代碼,剽竊了一個極有「錢途」的主意,你也無力通過那種馬拉松式的官司在法庭上告倒微軟,除非你有足夠的經濟實力能在這種財力的比拼中熬出頭 。而在本書中討論的保護技術(比如代碼混淆和防篡改技術)則既廉價又好用,中小型企業和商業巨頭均可使用。而且如果這時你去告這家大公司的話,也可以用水印或者軟體「胎記」等技術,在法庭上當場拿出代碼被剽竊的真憑實據來。
最後不得不簡單地提一下另一類極其擅長使用隱蔽軟體的人——壞蛋們。病毒的作者已經能非常成功地利用代碼混淆的技術偽裝病毒的代碼,使之逃避殺毒軟體的檢測了。值得一提的是,人們使用這些技術(如保護DVD、游戲和有線電視)時經常被黑客破解,而黑客使用這些技術(如構建惡意軟體)時,人們卻很難抗擊。
本書內容
隱蔽軟體研究的目的是發明能夠盡可能遲滯對手(逆向工程分析)進度,同時又盡可能地減少因為使用該技術,而在程序執行時增加的計算開銷的演算法。同時也需要發明一種評估技術,使我們可以說「在程序中使用了演算法A之後,相對於原先的程序,黑客攻破新程序需要多花T個單位的時間,而新程序增加的性能開銷是0」,或者最低限度我們也應該可以說「相對於演算法B,使用演算法A保護的代碼更難被攻破」。特別要強調一下,隱蔽軟體研究尚處於嬰兒期,雖然我們在書中會把相關的保護演算法和評估演算法全都介紹給大家,但是這門藝術的現狀卻還並不理想(到時候你可不能太失望啊)。
在本書中,我們試圖把當前所有有關隱蔽軟體的研究成果組織起來系統化地介紹給讀者。我們力爭每章內容涵蓋一種技術,並描述這一技術的應用領域以及目前可用的演算法。第1章將給出隱蔽軟體這個領域的一些基本概念;第2章用對抗性演示的模式介紹黑客逆向分析軟體時常用的工具和技巧,然後針對這些工具和技巧介紹如何防範黑客的攻擊;第3章詳細講述黑客和軟體保護方用於分析計算機程序的技術;第4章、第5章和第6章分別介紹與代碼混淆有關的演算法;第7章介紹與防篡改技術相關的演算法;第8章和第9章分別介紹與水印相關的演算法;第10章介紹與軟體「胎記」相關的演算法;第11章講述基於硬體設備的軟體保護技術。
如果你是位企業管理人員,只是對隱蔽軟體的研究現狀和這些技術怎麼應用到你的項目中感興趣,那麼只要閱讀第1章和第2章就夠了。如果你是位擁有編譯器設計背景的研究人員,那麼建議直接跳到第3章開始閱讀。但是之後的章節還是最好順序閱讀。這是因為……呃,還是舉個例子吧,介紹水印技術的章節中會用到在代碼混淆章節中介紹的知識。當然在本書撰寫過程中,我們還是盡量使各章內容都能獨立成章的,所以(如果你擁有一些背景知識)偶爾跳過那麼一兩章也未嘗不可。如果你是一位工程師,想要使用有關技術加固你的軟體,那麼強烈建議你仔仔細細地閱讀第3章的所有內容,如果有條件的話,還應該再搞幾本編譯原理方面的教材惡補一下「程序靜態分析」的知識。然後你就可以隨意跳到感興趣的章節去閱讀了。如果你是名大學生,把本書作為一門課程的教材來閱讀,那麼就應該一頁一頁地完整閱讀本書,期末別忘了做好復習。
希望本書能夠做到兩件事情。首先,希望能向你,親愛的讀者,證明代碼混淆、軟體水印、軟體「胎記」和防篡改等技術里有大量妙不可言的想法,值得你花點時間去學習,而且這些技術也可以用來保護軟體。其次,希望本書能把本領域內當前所有有用的信息匯集在一起,從而為隱蔽軟體的深入研究提供一個良好的起點。
Christian Collberg和Jasvir Nagra
2009年2月2日(土撥鼠日)
P.S.實際上寫作這本書還有第三個目的。要是在閱讀本書時,你突然靈光閃現,冒出一個絕妙的主意,進而激發了你投身於隱蔽軟體研究的雄心壯志,那麼,親愛的讀者,我這第三個目的就算是達到了。請把你的新演算法告訴我們,我們將把它加到本書的下一版里!
⑸ 易語言編譯的軟體怎麼加密碼(註:這個密碼可以修改)
.版本 2
.子程序 __啟動窗口_創建完畢
.局部變數 輸入的數據, 文本型, , , 對方輸入的密碼
.如果 (輸入框 (「請輸入密碼:」, 「提示」, 「」, 輸入的數據, ) = 真) ' 判斷對方是否按確認鍵
.如果真 (輸入的數據 ≠ 「123456」) ' 如果輸入的數據不是你定的密碼的話就結束,是的話就沒什麼了
信息框 (「密碼錯誤」, 0, 「提示」)
結束 ()
.如果真結束
.否則
結束 () ' 對方按的是取消鍵,結束程序
.如果結束
以密碼為123456為例
⑹ 詳細說一下關於二戰時的美軍的納瓦霍密碼
納瓦霍密碼:「風語者」的神秘武器
「鳥語」引發奇想
美軍遭遇珍珠港襲擊後,被迫對日宣戰。但交戰初期,美軍的密碼屢被日軍破譯,致使其在戰場上吃盡了苦頭。就在美軍高層為此焦急萬分的時候,1942年初的一天,位於洛杉磯的美國海軍辦公室來了一位自稱菲利浦·約翰斯頓的美國白人。他提出了一個十分大膽的建議———徵召美國最大的印第安部落納瓦霍人入伍,使用納瓦霍人的語言編制更加安全可靠的密碼。
約翰斯頓之所以能夠提出這個構想,是因為他從小就跟隨父親———一位長期在印第安人保護地傳教的牧師,在納瓦霍人聚居區生活,所以對納瓦霍人和他們的語言非常熟悉。而在當時,納瓦霍語對部落外的人來說,無異於「鳥語」。因為這種語言口口相傳,沒有文字,其語法、聲調、音節都非常復雜,沒有經過專門的長期訓練,根本不可能弄懂它的意思。根據當時的資料記載,通曉這一語言的非納瓦霍族人全球不過30人,而其中沒有一個是日本人。極具軍事頭腦的約翰斯頓認為,如果用納瓦霍語編制軍事密碼將非常可靠而且無法破譯。
美國海軍認定這是一件「了不起的事」,立即答應協助約翰斯頓實現這一構想。1942年2月28日,在聖迭戈的艾略特兵營,約翰斯頓找來4名納瓦霍人進行演示試驗。在演示前,對此十分感興趣的美國太平洋艦隊上將克萊登·沃格將軍親自寫出6段戰爭中常用的信息,其中一條是「預期敵人會使用坦克和俯沖轟炸機在黎明時攻擊」。按照納瓦霍語,信息被逐字逐句地翻譯為「敵人坦克-俯沖轟炸機 -預計-攻擊-早晨」,其他5條信息也被熟練地翻譯出來。這給沃格將軍留下了深刻的印象。一周後,沃格專門致函美國海軍陸戰隊司令,建議為太平洋艦隊兩棲作戰部隊招募200名納瓦霍人。不過,這項大膽的計劃也遭到了一些人的反對。他們擔心納瓦霍密碼不能適應繁多的幾乎是數不盡的軍事活動,因為軍事術語在納瓦霍語中的確比較匱乏。但是,經過一番爭論之後,招募納瓦霍密碼戰士的計劃還是被通過了。於是,神秘的「鳥語」開始登上大雅之堂。
無敵密碼」誕生
1942年5月5日,首批29名納瓦霍人被徵召入伍。他們在加利福尼亞聖迭戈的新兵訓練營中和通訊人員一起設計了最初的納瓦霍密碼。這種密碼由211個字組成,大部分為納瓦霍詞,也摻雜了一些新詞彙,這是為了彌補納瓦霍語中軍事術語的不足。例如,「戰斗機」被稱為「達-哈-提-西」,納瓦霍語意為「嗡嗡叫的鳥 」;「俯沖轟炸機」被稱為「幾尼」,意為「小鷹」。另外,密碼戰士還設計了一個系統,用來與英語26個字母相對應。例如,字母A為「沃-拉-其」,意為「螞蟻(ant)」;字母E為「迪茲」,意為「麋鹿(elk)」。另外,針對那些沒有能夠列入211個密碼的詞語,他們根據納瓦霍語專門創建了一個大約500個常用軍事術語的詞彙表以便用來對照拼讀。
納瓦霍人很快便顯示出記憶密碼和在戰時傳遞信息的能力。他們成功地從飛機或坦克等移動目標上傳遞密碼。計劃取得了極大的成功。隨後,另外200名納瓦霍人也於1942年7月20日被徵召入伍。1942年10月2日,約翰斯頓也被徵召入伍,並被授予上士軍銜,專門負責訓練納瓦霍密碼戰士。可是,就在約翰斯頓躊躇滿志地實施他的大膽計劃的時候,一個細心的密碼員發現,由於納瓦霍語中沒有的詞的對照表重復使用頻率太高,根據這些詞語,納瓦霍密碼幾乎不用費什麼勁就能被破譯。為解決這一問題,約翰斯頓和一些技術專家把對照表的26個字母增加為44個,使得那些常用的字母如E、T、A、O等有了多種選擇餘地。例如字母A除了原來的「沃-拉-其(螞蟻)」外,還可以叫作「比-拉-沙納(蘋果apple)」和「 齊-尼赫(斧子axe)」。這樣一來,其破譯難度大大增加。被美軍稱為「無敵密碼」的納瓦霍密碼終於誕生了。
作戰南太平洋
到1943年4月,第二批200名納瓦霍人完成了訓練,而此時,第一批納瓦霍密碼戰士即「風語者」已經隨海軍陸戰隊在南太平洋上作戰了。很快,納瓦霍密碼就在實戰中發揮了重要作用。特別是在攻佔硫磺島一役中,6名「風語者」使用神秘的納瓦霍密碼及時准確地為美軍傳遞信息情報。在戰斗開始的前兩天,他們通宵工作,沒有一刻休息。整個戰役中,他們共接發了800多條消息,沒有出現任何差錯。日本人盡管能夠截獲這些情報,但對這些近乎「天書」的文字感到束手無策,而當時美軍已經破譯了日軍的密碼。不久,美軍便很輕易地攻下了戰略要地硫磺島。負責聯絡的霍華德·康納上校曾感慨地說:「如果不是納瓦霍人,如果沒有納瓦霍密碼,美國海軍將永遠攻佔不了硫磺島。」參與硫磺島戰役的拉爾夫 ·斯托其上尉在一份報告中稱,納瓦霍密碼是「最簡便、最快速和最可靠」的密碼,「日本人的腦袋都要想破了,但我們幾乎不用擔心泄密會發生」。
出色的實戰成績吸引美國海軍決定更大規模地徵召納瓦霍人入伍。他們曾經設想以每月50人的速度再徵召303名納瓦霍人,但這並不是一項簡單的工作。因為,那些被招募的納瓦霍戰士也逐漸成為其他部隊的「寶貝」。為此,海軍陸戰隊不得不把名額削減到每月25人,甚至試圖從其他部隊索要納瓦霍新兵,但這些努力並未獲得完全成功。由於「風語者」供應不足,這嚴重影響了美國海軍的通訊工作。盡管如此,因為納瓦霍密碼既保密又很少失誤,仍然逐漸成為美軍最信賴最鍾愛的密碼。
如今隨著現代科技的發展,納瓦霍密碼可能已經算不上高明,但它走過的那段光輝歷程將永遠不會被忘記。(
⑺ 漢字如何使用摩斯密碼編譯
一是直接發拼音,二是用不同組合的數字代替漢語的意思,三是拍發英文的縮寫。(摩爾斯碼就是由「·」和「—」組成,不同的組合組成數字或字母,比劃目前是沒有,太費勁了,畢竟是外國發明的)
⑻ 什麼是密碼編譯晶元
有些設備接收的信號是加密信號,就需要解密晶元解密。比如衛星信號接收。
⑼ 下表是一張密碼編譯對照表. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 密碼12代表字母B
由題意知,每個字母代表兩位數密碼,即字母所處的位置,第一個數字是指行數,第二個數字是指列數, 所以,密碼12-35-54代表單詞為:BOX; 單詞SEVEN所編譯成的密碼是:44-15-52-15-34. 故答案為:BOX,44-15-52-15-34. |