課堂上傳紙條如何防範中間人攻擊?
例如人肉 RSA 啥的……
中間人攻擊是一個密碼學、網路和信息安全的專有名詞,希望外行答主們不要理解錯意思了……
這個我比較有經驗啊,,,,
首先第一種方案就是排除中間人,直接建立點對點連接,例如直接將紙條從空中拋送過去,順便還能鍛煉自己的投籃水平,為以後進入國家隊作準備。缺點就是如果隔太遠這種方式丟包率太大了。
第二種方案就是只使用可信網關連接,在自己與目標之間只請求自己信得過的哥們兒姐們兒進行傳遞。
如果必須在惡劣的情況下進行安全的數據傳遞,那麼有如下幾個技巧:
1、CDMA(碼分多址),將一段信息拆分成兩份,再從不同渠道傳遞,這是非常簡單的一種加密方式。例如把要說的話寫成一行,再從中間橫向撕開。目標收到兩份信息後,再拼接起來進行解密。其具有加密解密簡便易行的優點。但是有一些字即使從中間撕開通過上下文也能判斷出來大致意思。所以這還需要其他輔助加密方式,後面談到。
請注意CDMA技術完全不是這個意思,僅為搞笑
2、TD-SCDMA(時分同步碼分多址),將一份信息拆分傳遞時,應當等目標安全收到一半信息後,再進行第二次傳輸。這樣老師截獲完整信息的可能性將大大降低。
請注意TD-SCDMA技術完全不是這個意思,僅為搞笑
3、Scrambler(隨機擾碼),在字裡行間插入一些不可解讀的字元,例如原文是:
放學後到學校後面的小樹林等我,加入隨機擾碼後:
放魅學後蒙到學贊校後翠面的小澧樹林等齷我
由於隨機擾碼的存在,即使得到一半的紙條,也很難通過上下文推測出原文。
4、跳板技術,有時候為了避免老師發現通信鏈路的存在,不應建立直接的鏈路,例如你要傳到左上角的女孩手裡,則應先向右傳,通過多級代理跳板,讓老師無法發現通信的源頭和目標。
5、Token-Ring(令牌環網),事實上由於跳板技術需要很多人參與,有時候你無法說服所有人,這時候可以組成令牌環網,把需要傳遞紙條的男女同學組成一個令牌環網,按照既定的環路,有序的傳輸,例如一個典型的令牌環網像是這樣,你是A需要傳遞消息給G,A-B-C-D-E-F-G,也就是你先傳給B,然後B給C,如此。同時F也有消息要傳遞給B,則採用環路的形式,F-G-H-I-A-B,也就是說F的紙條傳遞給G,G再傳遞給H,H傳給I,I傳給你,你再將它給B。這樣整個令牌環網的每個節點都可以獲益於環網的信息傳遞,老師完全無法得知紙條的源和目節點。
此處僅利用了令牌環網的拓撲結構
6、MultiLink(多重鏈路),有時候鏈路的節點可能會臨時性癱瘓(被老師叫起來回答問題)或者變得非常不安全(老師站在旁邊),所以建立網路時任何兩個節點之間不能只有唯一的鏈路,需要有多個備選的鏈路方案。
7、TTL(存活時間),在長時間的傳輸過程中,紙條被老師發現的可能性將增大。所以可以約定紙條如果在N個節點傳遞之後仍然無法抵達目標,則應由該節點直接銷毀。
聲明:
以上出現的專有名詞,僅為博君一樂,不代表此種技術真正的實現原理和方式,切記切記。
這個需要的作為專業人士登場了,清清嗓子,嗯!
首先,反對目前排名前幾名的答案,尤其是lovny同學以及Rix tox 同學的方法(註:為了提高B格)
作為一個當年專註上課傳紙條並且後來大學投身信息安全方向的孩子,很有必要向大家想進行一些科(zhuang)普(bi)教(zhi)育(dao)在搞清楚怎麼辦之前,有幾個問題是首先要搞清楚的
1 什麼是中間人攻擊?
當主機A、和機B通信時,都由主機C來為其「轉發」,而A、B之間並沒有真正意思上的直接通信,他們之間的信息傳遞同C作為中介來完成,但是A、B卻不會意識到,而以為它們之間是在直接通信。這樣攻擊主機在中間成為了一個轉發器,C可以不僅竊聽A、B的通信還可以對信息進行篡改再傳給對方,C便可以將惡意信息傳遞給A、B以達到自己的目的。
通俗點兒說,就是你A通過你的好基友/小夥伴C向你的早戀對象B傳小紙條,結果你的好基友/小夥伴C居然偷看你們的文字內容,甚至偽造你們傳遞的紙條,比如你給B寫了一張紙條:
放學一塊走,我們一起去吃麻辣燙,然後散會兒步回家,千萬別給老師看見了
然後C獲取了你的消息之後寫了這樣的一張小紙條轉發給B的:
放學我去玩PS2,你自己回家吧
然後你的小女友B看了之後自然很傷心,回復:
你不是答應過我要陪我回家的嗎,為什麼要自己去玩遊戲
結果C卻自己重新寫了一張小紙條給你:
不,我要和小明一起去吃飯!
於是,你的傷心欲絕,你的小女友也是,你們之間產生了深刻的誤會卻雙方改不知情,最後你的小夥伴成功橫刀奪愛,你卻一無所知。
好的,看來你應該對什麼是中間人攻擊已經有了一個大概的了解了。
2 課堂上你具有什麼樣的條件?
所以什麼回答封口蠟的同學可以退下了,你要是在課堂上又是點火又是玩蠟燭的,妥妥要被請家長的啊
回答直接傳遞的同學也可以退下了,要知道距離稍微遠一點兒的情況下,直接拋投帶來的風險就遠大於中間人攻擊帶來的風險了!
不過,計算器還是可以有的!畢竟在課堂上搞搞數學運算一般還是比較安全的。
好的,下面開始正式的【小紙條防中間人攻擊教程】
其實,這個問題分為兩個部分
1 確認對方身份,同時交換密鑰,也就是確認文字內容的確是發自發紙條的人而不是中間人
2 加密解密,也就是讓紙條的內容中間人看不懂,而對方卻能解密後看懂
針對1 確認身份,有幾個方法
1 也就是最簡單的——通過字體和簽名來判斷。也就是數字簽名
不過這個在實際的操作上有個難點,也就是有的時候字對於非專業人士不是非常好識別,尤其是如果字比較丑,丑得又比較平庸的話...
2 特徵值
找一個雙方都知道且第三方不知道的問題作為識別碼
當然,為了防止中間人攻擊,你需要有點兒技巧。
栗子1
你知道她的生日是6(a)月20(b)日你的生日是5(c)月3(d)日,【而中間人不知道至少是不完全知道】
然後你的第一張紙條就可以這樣提問了:
請回復我兩個數字
第一個數
你的生日的月份數乘上我的生日日期數加上你的生日日期數乘上她的生日月月份數(ad+bc)
第二個數
回復1-4這四個數中的一個x,我們就取abcd中第x大的數作為我們的密碼(對稱通信密鑰)
好的,如果你最後收到的第一個數字是118話那你就可以肯定身份了,同時也獲得了第二個數字2,也就是加密密鑰6,這樣即使中間人看到了所有的內容,依然無法知道你們通訊的密鑰是什麼,而如果他篡改了當中的信息,則會立刻被識破
栗子2
你家的門牌號是83她家的門牌號是62,,【而中間人完全不知道】
類似的,第一個紙條你可以這樣寫
請回復我兩個數字
第一個數
請回復我們的門牌號的乘積
第二個數
回復1或者是0中的一個數,如果是0的話則以這兩個數字中的偶數為加密密鑰,如果是1的話則以奇數為加密密鑰。
推斷也同上,一個數字用於身份判斷,一個數字用戶密鑰交換
當然,值得注意的是,有一個原則務必在上課前確定好,那就是無論如何不能將密鑰在紙面上寫出來,這樣防止中間人通過更改表達方式的途徑來騙取密鑰。
2 好的,現在你們已經擁有了一個安全密鑰了,現在你所需要做的就是利用這個安全密鑰來加密解密了。這裡的加密解密實際上就是一個演算法。
有很多很多演算法可以用來借鑒,為了方便考慮,舉幾個安全性相對而言不是那麼高的但是課堂上傳紙條絕對夠用的栗子:
栗子1 簡單易懂間隔取字法
放學一塊走,我們一起去吃麻辣燙(請原諒我偷懶縮短一下內容...)
使用的加密密鑰是6
於是我們從頭開始每6取一個字(包括符號),同時在原句中劃掉。到頭後循環回來。
大致的過程應該是
原文:放學一塊走,我們一起去吃麻辣燙
密文:,
原文:放學一塊走我們一起去吃麻辣燙
密文:,吃
原文:放學一塊走我們一起去麻辣燙
密文:,吃一
原文:放學塊走我們一起去麻辣燙
.....
於是,你最後得到的密文就成為了:
,吃一起學一塊燙麻去辣走放們我
解密方法反推之就可以
栗子2 萬能的二進位選字法
放學一塊走,我們一起去吃麻辣燙,然後散會兒步回家,千萬別給老師看見了
使用的加密密鑰為你家的門牌號83
首先,將門牌號轉化為二進位
1010011
然後,加密開始,漢字和二進位數字分列兩行,一一對應,然後1就取,0就不取
為了方便演示,我在word裡面排了一下版截了個圖放上來,其實在紙上做這些運算還是蠻方便的
於是你最後得到了密文:放一,我學走起去塊一辣燙們麻吃
解密的方法也就是按照加密方法逆推
如果還想增加加密強度,還可以考慮對密文再進行一輪加密,當然解密的難度也會隨之有所提高。
考慮到實際的情況,以上的加密方法都沒有將漢字轉化為諸如二進位編碼之類進行處理,基本上都是基於漢字的排序變化
無論如何加密,對於短文字的加密效果都是很糟糕的,因為很容易通過漢字本身去拼湊內容!
比如如果你的紙條內容是 好的呀 ,無論怎麼改變漢字排序,別人都會輕易的知道被加密的內容。但是這樣的加密方法對於長原文而言在限定的條件下還是可行的。
密碼學,或者說是信息安全領域當中有個基本原則——信息的生存周期小於破譯周期,對於一堂課來說一個50字左右的密文針對沒有專業計算設備的用戶已經完全可以達到加密效果了。
同時這樣的加密價值還體現在針對有一定長度的文字上面,尤其是具有一定的判斷語句上面。比如說「今天放學我們一起吃飯,然後一起寫作業,不去打球也不去玩遊戲了了。」通過加密之後就無法獲取準確信息了!
---------------------------2月2日補充-增加校驗機制---------------------------------
感謝 @朱晉玄 的提醒,在之前的方法都只是針對信息傳輸的安全性,也就是不會被破譯,但是可能存在有中間人在不知道真實信息的情況下讓傳輸的信息產生變化從而達到干擾信息的目的,比如將早上的早改成晚上的晚,比如把數字9改成數字8等。對於這樣的問題,就需要使用到密碼學中的另外一個知識了:校驗碼。
這裡給出兩個類型的可以用於這種條件的校驗碼方案,只做例子,當中的具體參數都是可以用於配製的
1 通過拼音聲調設置校驗碼
我們決定將第一聲對應數字1,第二聲對應數字2,第三聲對應數字3,第四聲對應數字4,輕聲對應數字0,將每3個字(標點符號不算)設為一個最小單元,計算小單元總對於數字的綜合寫在每第三個字後面,作為效驗碼【數字同理,如69理解為 六九兩個漢字標註音調,為了方便區分校驗碼和數字之間的區別,可以考慮採用一定的特殊寫法區分,本文的示例為增加下劃線】
增加了效驗碼之後的原文就變成了
放學一7塊走,我10們一起7去吃麻7辣燙
然後再對新的原文進行加密
加密之後改變任意一個字,只要音調改變了驗證碼就會不相符
如果想要提高檢驗的精度還可以增加驗證碼的取的頻率
這個的缺點就是如果攻擊者發現了驗證的方法可以通過修改為相同聲調的字來實現躲避驗證碼,因此從安全性的角度而言比較推薦下面的驗證方法
2 通過筆畫數置校驗碼
其實很簡單,就是上面的驗證邏輯從聲調改為了字的筆畫數,如果是數字的話就直接取數字本事作為筆畫數。
這樣的好處是很難被攻擊(因為相同筆畫的漢字畢竟找起來還是很麻煩的),壞處是....數筆畫還是有點兒麻煩的,以至於我決定不在這裡放栗子了!
以上兩種方法都可以視作拋磚引玉,希望大家主要還是領會精神,尤其是這個效驗碼的思想
-------------------------------2月2日補充完畢----------------------------------------
總結:
課堂上傳紙條防中間人攻擊約等於在不安全的通信網路上確認對方身份同時進行安全的信息傳輸,幾個重要的點是
1 確認對方的身份(使用的方法:身份認證機制,數字簽名方法)
2 在不可靠的網路上傳輸可靠密鑰(參考方法:Diffie-Hellman_百度百科)
3 使用密鑰進行加密解密
2月2日補充,這裡的加密解密嚴格來說包括兩個方面,一個是保障傳輸內容的安全性(即不被破譯),另外一個是保障傳輸內容的有效性(即不被篡改)
關於題主在題目中補充的 RSA 之類的非對稱加密方法,在這個「課堂,學生,有限條件,有限知識」的情況下幾乎是不可能辦到的,單單漢字轉編碼這一步就足夠了..
我居然已經這麼一本正經的回答了這麼多了!!
上課期間,小明的心又蠢蠢欲動了,想和小美說點悄悄話,但是小明與小美相隔很遠,只能給小美傳紙條以解相思之情。
如果字條赤裸裸地寫著「我愛你,就像老鼠愛大米!」之類,中間傳紙條的同學會偷看到,甚至有惡作劇的同學會把小明的紙條扔掉,重新寫一張「狐狸精,今日絕交,再也不理你了!」,轉交給小美,小美氣的發抖,轉頭狠狠地瞪了小明一眼,小明卻一臉無辜,小美寫好了紙條:哼,懶得理你!
中途又被替換掉了,到小明手中已經變成:豬頭三,有多遠滾多遠!
小明一下子從夢中驚醒,驚出一身冷汗,第二天小明送給了小美一本密碼本,上面有漢字與代碼的對照表,「親愛的,以後給你傳紙條,我用代碼寫,你查密碼本,這樣就沒有人知道我們在聊些什麼了好嗎?」 ,小美捶了小明一下:壞蛋,就你鬼點子多!
密碼本
我 6743
愛 12BC
你 65DA
就 A123
像 7312
老 8356
鼠 89FD
愛 12BC
大 2276
米 98EB
小明用右邊的代碼寫紙條,小美收到紙條查密碼本,會顯示成左邊的漢字。
惡作劇的同學不明所以,無法下手,即使重新寫一張紙條,也用代碼模仿寫,不一定有意義,比如只篡改最後一個字:
我 6743
愛 12BC
你 65DA
就 A123
像 7312
老 8356
鼠 89FD
愛 12BC
大 2276
炮 9036
想必老鼠是不會愛大炮的,小美很容易知道這不符合邏輯,肯定假紙條。
這裡的關鍵是密碼本,一旦密碼本泄露,惡作劇的同學就可以破譯並篡改紙條。
中間人攻擊
二戰期間,英美聯軍為了破譯德國的軍事情報,一直監聽德軍電台,發現每天某個時刻總有固定長度的消息(加密)從德軍軍事基地發出,後來抓到了德軍俘虜得知那是天氣預報,於是情報部門根據當天的天氣實際情況,然後在對照截獲的天氣預報消息,得到了部分密碼,當德軍使用同樣密碼本再加密其他軍事情報時,可以根據已知的部分密碼,解密軍事情報。
如果小明寫的情話里有小美、小明落款時,
小 0045
美 2233
明 6677
那麼別人就會推理出這個對應關係,然後用這個對應關係來解密其他部分消息。
應對措施密碼本只使用一次!這是目前最安全的加密方式,但意味著有多少位元組的數據,就要有多少位元組的密碼本,密碼本太龐大了,目前常用的加密密鑰是儘可能隨機,但無法完全避免密鑰重複使用的情況。
高票答案根本和密碼學一點關係也沒有,為了防止大量知乎讀者誤入信息安全歧途,少說幾句以正試聽。(同樣也是大年初一手機碼字著實不易)。
第一個概念,必須理解解決目前信息安全的主要手段在於應用層,不在網路層,鏈路層和物理層。所以高票答案抖機靈都抖到了那幾層,明顯誤導。
第二個概念,明確man in the middle attack中間人攻擊到底有哪些攻擊目標。基本可明確的有,(1)竊聽,可理解內容,(2)偽造,製造原本不存在的內容,讓對方信以為真(3)重放,搜集所有雙方通信信息,通過在時間上和順序上的虛假組合,讓對方誤認其身份,或者錯誤理解雙方通信本意。
第三,針對這些攻擊目標,可採取的防禦措施。一般有幾種(1)加密,保證數據傳輸中不可理解(2)簽名,確保雙方的身份(3)消息摘要,確保數據完整性(4)時間戳和隨機數,防重放攻擊(5)加鹽,防止傳輸過程中通過消息格式獲得額外攻擊優勢。
要把這五種手段(可能還沒有想全)綜合起來,基本可以達到基本的防中間人攻擊的目標。但是如果考慮到實際應用,可能需要考慮的東西更多。這也是為啥,工程中的安全協議基本沒幾年都會被攻破的原因,因為剛開始的攻擊方式和攻擊目標沒有考慮到。
上述五種安全手段,都可以找到相應的原始化技術手段加以模擬,先賣個關子,等我晚上拜年回來再更新。
============此處更新線========================
加密,紙條這個東西,
(1)用非對稱密碼也是可以,陷門函數一般可以比喻成一個帶有鎖和投遞孔的盒子,所謂加密可以意味著A方先拿到B方一個帶有鎖和投遞孔的盒子,然後把處理過的消息用投遞孔塞到盒子里,把裝有紙條的盒子傳給B方。B方用鎖打開盒子,即可實現解密。
(2)用對稱密碼也可以,方法肯定不能用分組密碼的方法,人沒有辦法計算,或者說太麻煩。流密碼倒是容易得多,雙方約定一本圖書,表示從哪一頁哪一行開始作為起始點,然後把紙條內容都寫成拼音,和圖書內容上的字母做加法取26位余,這個也是我曾經看過的一本著名的小說《蝴蝶夢》(也是恐怖大師希區柯克赴美首部電影哦)的諜戰故事。
1942年底,軸心國北非軍團和反法西斯盟軍在各自最高統帥隆美爾和蒙哥馬利的指揮下,於埃及的阿拉曼地區展開決戰,隆美爾戰敗,隨後,德意軍隊被圍殲於突尼西亞。曾一路凱歌的德國非洲軍團為何突然土崩瓦解了呢?原來,這次名將對決的勝負早在此前的一場諜戰中就已經註定了。蒙哥馬利在阿拉曼戰役中取得勝利,很大程度上是他通過諜報機構給隆美爾不斷設計圈套的結果。
《蝴蝶夢》中的密碼
「康多爾小組」是德國的一個間諜組織,1942年5月到達開羅,負責人是約翰?厄普勒,在其行李箱中有一本英文版的《蝴蝶夢》,而「康多爾小組」的密碼就是根據這本小說編成的。使用破譯時根據日期和對應的頁碼來串聯文字,這種方法使用簡單而安全。
厄普勒落腳之後,馬上開始尋找當地能信任的朋友。他在一家酒吧里認識了埃及的阿拉伯反英分子、舞女法赫米,她很快就透露,她的情人是在英國總司令部工作的史密斯少校,而她常常趁史密斯熟睡時,竊取他皮包里的機密文件。為方便聯絡,厄普勒在尼羅河岸邊靠近法赫米住所的地方租了一艘遊艇,並把工作地點搬到了遊艇上。
事情似乎異常順利,此後一個月里,隆美爾收到了不少來自「康多爾小組」提供的有價值的情報,為此他讚揚了厄普勒。得意忘形的厄普勒於是試圖尋找更多情報線索。
1942年6月中旬,厄普勒經常穿著英國上尉制服,到新聞記者經常進出的俱樂部和酒吧收集最新的英軍情報。但他攜帶的埃及貨幣已經用完了,由於埃及仍然屬於英國實質上的殖民地,因此他認為英鎊仍是合法貨幣,就用英鎊結賬(商家可以到英國軍需處用英鎊兌換埃及貨幣)。接著,厄普勒結識了一個自稱為葉維特的酒吧姑娘,還用英鎊給她買了大量高級的香檳酒,然後把她帶回遊艇。
厄普勒犯了兩個致命的錯誤:首先是大量使用英鎊,這在平時或許並不會引人注意,可在戰時的緊張時刻,這樣做無疑留下了致命的線索――普通人此時弄不到這麼多英鎊;其次是那個叫葉維特的姑娘,她實際上是為英國情報局工作的猶太間諜,通過厄普勒的德國口音和多得驚人的鈔票推斷他很可能是條「大魚」。
幾天後,趁厄普勒和助手蒙卡斯特爾呼呼大睡,葉維特在一個小房間里發現了一張書桌,上面有一本《蝴蝶夢》,旁邊還有一些便條,上面是方格和6個字母組成的字組。作為間諜,她意識到這可能是某種形式的密碼,於是她打開書,把「用過」的頁碼和便條紙上每一行的第一組密碼抄下來,然後迅速離開了遊艇。破解《蝴蝶夢》
與此同時,隆美爾的無線電情報連遭英軍襲擊,倖存的兩名情報兵被俘並被送到埃及開羅,在他們的帆布包里有一本《蝴蝶夢》,這立即引起了審訊者的懷疑:一個德國人讀一本英文書幹什麼?經審查發現,這本書是在葡萄牙買的,上面還殘留著鉛筆痕迹的葡萄牙文,雖然已被橡皮擦去,但仍然隱約可見。
於是,駐開羅的英國情報人員打電報給英國情報局葡萄牙里斯本分部,查詢最近是否有人在那裡的書店裡買了兩本或兩本以上《蝴蝶夢》。因為葡萄牙只有幾家英文書店,所以查訪起來相當容易,一星期之內便查明:德國助理武官的妻子不久前在一家書店買了6本《蝴蝶夢》。顯然,《蝴蝶夢》正被作為一種密碼使用。但是誰在使用呢?俘虜怎麼也不肯開口。
此時,英國軍需官提供了另一個線索:他在兌換貨幣時發現,一名「英國上尉」在埃及塔爾夫俱樂部付酒錢,用的英鎊是德國精心製作的假鈔,這名「英國上尉」正是厄普勒。英國情報人員經過多次跟蹤,找到了厄普勒和他的助手蒙卡斯特爾所在的遊艇。
8月10日下午,英國人包圍了遊艇。厄普勒和助手蒙卡斯特爾都在船上,他們對意外似乎早有準備。當英國人從甲板上衝過來時,厄普勒把襪子卷為球狀,扔向試圖衝上甲板的士兵,英國人以為是手榴彈。於是趴下來躲避。這使蒙卡斯特爾有了充足的時間,他潛入艙底,打開暗門,把一架收發報機、一本《蝴蝶夢》和所有電報底稿都扔到尼羅河裡,然後躍進尼羅河,企圖水遁。
不過蒙卡斯特爾並沒能逃走,當他浮出水面時,被守候多時的英國人抓住了,而厄普勒也在遊艇上束手就擒。
而前面提到的猶太女間諜葉維特向英國情報部門提供了她抄下的頁碼,還有厄普勒和蒙卡斯特爾發報用的主要密碼組。她的筆記儘管不完全,但足以使英國情報人員破譯《蝴蝶夢》的密碼。至此,英國人掌握了「康多爾小組」發報的全部材料,並「恢復」向德國情報機關發報。這樣一來,隆美爾的重要秘密情報來源被英軍控制了,而不知情的他卻依然信任來自開羅的情報。事實證明,這場諜戰的結果改變了北非戰爭的進程。美夢正酣,隆美爾中計
此時的隆美爾正準備發動對英軍的攻勢,他認為英軍在埃及精心構築的阿拉曼防線南端兵力薄弱,正是一個突破口。於是,他決定在此衝破英軍防線,然後迂迴消滅英軍主力。計劃好後,隆美爾開始偷偷把軍隊向南部集結,並在北面留下了一些假坦克和卡車,以迷惑英軍的空中偵察。
這個計劃著實巧妙,可是隆美爾並不知道,此時德軍密電碼系統已經被盟國掌握,隆美爾發出的電報希特勒還沒收到,就已經擺在蒙哥馬利的辦公桌上了。而德國人之前破譯的英美密電碼卻已被更換,源源不斷得到的其實是假情報。
蒙哥馬利通過情報部門得知隆美爾的戰略意圖後,決定將計就計,引誘隆美爾上鉤,但不是要阻止他發動攻勢,而是盡量鼓勵他在阿拉曼防線南端發動攻勢,使其裝甲部隊完全陷入埃及南部沙漠中。為此,蒙哥馬利讓英國情報人員以「康多爾小組」的名義給隆美爾發了一封電報,說在阿拉曼防線南端的拉吉爾地區,英軍防守薄弱,正在等待援軍,正是突破英軍整個阿拉曼防線的最佳地點。
為了使隆美爾堅定進攻計劃,蒙哥馬利還命令繪圖員繪製了一張假地圖,上面標明拉吉爾地區是一片「硬地」,便於裝甲部隊行動,然後設法將假地圖送到德國人手裡。隆美爾獲得地圖後,深信不疑,終於在作戰地圖上註明了拉吉爾地區的「硬地」符號,將此選為主攻路線。夢醒時分,折戟北非
1942年8月30日深夜,隆美爾下令進攻,試圖通過突襲,一舉突破英軍防線。但是,在德軍進攻的道路上,到處都是新布設的地雷。當德軍工兵進入雷區,為裝甲部隊掃清道路時,英國空軍又來了,一顆接一顆的照明彈將隆美爾一長串的裝甲部隊照得通亮,緊接著,大批轟炸機向德軍坦克部隊投下了雨點般的高爆炸彈。
德軍付出了巨大的代價才突破了英軍的雷區。第二天,德、英兩國的裝甲部隊展開了激烈交火。隆美爾逐漸發現,英軍的裝甲部隊居然是原來的3倍!而地圖上的「硬地」實際上是一大片沙漠,且流動性極大,變幻莫測。德軍的幾十輛坦克、裝甲車、半履帶車、卡車在流沙中東倒西歪地掙扎前進。當車上的人下來,想去推動車輛時,英國皇家空軍的幾個中隊的戰鬥機飛來,毫不留情地轟炸和掃射他們。
夜幕降臨時,沙漠里到處都是被燒毀的德國車輛。烏黑的油煙像長長的柱子直上雲天,玫瑰色落日籠罩下的沙漠漫無邊際――德軍已完全沒有藏身之地。
9月4日,損失慘重、後援被斷的隆美爾被迫下達了總撤退的命令。此役德軍共傷亡4800人,損失50輛坦克和78門大炮。這些損失對於隆美爾是非常嚴重的,因為隆美爾在消耗戰中不能像英國人那樣很快得到增援,這也意味著他失去了在非洲取勝的最後籌碼。事後,隆美爾沮喪地說:「英國統帥部早就知道了我們的作戰意圖。」與此同時,蒙哥馬利早已甩開隆美爾,回到了自己的司令部,準備之後的反攻去了,因為他相信自己的假情報已經讓「沙漠之狐」乖乖就範了。
(3)古典密碼
古典密碼最常見的是凱撒密碼,完全沒有辦法應對詞頻攻擊,一點也不好玩。好玩的是
Scytale,我不清楚別人怎麼叫,我一直都叫它棍子加密法。具體解釋可參見維基百科:Scytale
這個東西需要保證通信雙方的棍子粗細長度完全一致,才能夠得到一致的結果。A方B方買根限量版的一對棍狀物體,紙條那麼一卷啊,偷看都不怕。簽名
在紙條這種介質上面,重新用陷門函數對紙條內容做簽名,人真沒有辦法做。能夠借鑒的是中國古代的虎符制度。可參考百度百科:虎符(中國古代調兵兵符)
虎符為中國古代帝王授予臣屬兵權和調發軍隊的信物。銅製、虎形、分左右兩半,有子母口可以相合。右符留存中央,左符在將領之手。王若派人前往調動軍隊,就需帶上右符,持符驗合,軍將才能聽命而動,軍隊不執行執皇帝金符節者行兵令,除皇帝親臨現場調兵。它盛行於戰國、秦、漢時期。但歷史上也有很多沒有虎符而成功發兵的情況,尤其是西漢前期的藩國最為猖獗,劉邦滅諸異姓王后制定的藩國須有漢朝虎符才能發兵的制度對藩王們的兵許可權製作用甚小。例如西漢呂太后死後齊王劉襄的起兵叛亂[1],漢文帝時濟北王劉興居的起兵叛亂[2],以及漢景帝時吳楚七國之亂[3],養兵練兵者皆為藩王,故藩王們都能輕鬆發兵。傳世的有秦新郭虎符等。
我們只能在紙條介質上想辦法,比如每次通信用的紙條,是某頁作業紙的一半,另外一半保留在接收方手上,A用紙條發了消息,B除了看消息,還需要比對發來的紙條是不是能和自己手上保留的另外半頁紙嚴絲合縫的對在一起,是的話,才能驗證A的身份。
=============先更新的這兒,還要給孩子講故事============================
時間戳或者隨機數,我個人更加傾向於時間戳。很簡單的應用就是,每次紙條後要附加有消息發送時的年月日小時分鐘信息,這樣做的好處就是防止中間人複製了昨天的紙條內容,來欺騙今天的通信雙方。
加鹽,因為很有可能A男和B女通信,無非就是情感上那點事情。如果中間人有背景知識,發現A男B女已經眉來眼去一大堆,突然A男神色忐忑給B女發個紙條,即使內容完全不知道,也能猜出和表白有關。那B女傳回來的紙條,如果同意了,往往是「郎有情妾有意」之類一長段一長段的衷腸傾訴,如果不同意,一個字「滾」就可以結束對話。那麼中間人通過紙條長度,也能明白表白是否成功。所以,必須在紙條內容上加鹽,保證紙條長度一定要超過一定長度,如果長度不夠,可以加上一大堆一大堆的廢話,這些廢話就可以看成是加鹽。但是,必須保證每次說的廢話完全不一樣,否則加鹽操作也失敗了。Enigma機被破譯,也和傻逼德國通信員每天有固定的廢話,給了英國人密碼分析的可能。WEP協議被破譯,也和消息頭內容固定有關係。
消息摘要,密碼學中是用單向函數,這個在紙條裡面沒法用。有一種簡單方法,類似於這種單向函數。就是一段話中,比如「白日依山盡,黃河入海流」,統計每個字聲母出現的個數,做完的摘要大致為B1H3J1L1R2S1Y1。
當然,在防止中間人攻擊的實際紙條設計中,還涉及到另外一種應用。就是所有上述內容的編碼。必須保證所有的數據採用一種方式編碼,有統一的方法和格式,使得通信雙方理解數據格式的類型和內容。如果出現了控制位和數據位的混疊,可能還需要使用光傳輸或乙太網傳輸中的透明傳輸的概念。
好了,說了這麼多,如果要進行一次成功的防中間人攻擊紙條傳輸,最簡單的方式是如下:
編碼格式:中文漢字無標點符號,格式為:「正文」+「鹽」+「加鹽數據」+「時」「時間戳」+「摘」+「消息摘要」
信息正文:白日依山盡,黃河入海流。
加鹽數據:王大媽家裡有條狗
時間戳:大年初二下午十四點三十七分
消息摘要:是對「白日依山盡黃河入海流鹽王大媽家裡有條狗時大年初二下午十四點三十七分摘」的消息摘要,結果為白一吃一大三福一貴一火三角二柳二夢一糯一曲一軟三神六騰一我二小一意三正一(用相對應聲母字代替所選聲母)。
那麼完整要發送的消息是:
白日依山盡黃河入海流鹽王大媽家裡有條狗時大年初二下午十四點三十七分摘白一吃一大三福一貴一火三角二柳二夢一糯一曲一軟三神六騰一我二小一意三正一
接下來,把完整的消息寫在事先已經撕好的紙條上——紙別忘了是一人一半,接下來好比對哦。
接著,發送方拉出預先接收方給他的,已經上了鎖的帶投遞孔的盒子,把紙條塞進盒子里,然後把盒子讓任何人送給接收方,基本上常見的中間人攻擊方式都能夠防禦了。
但是細想起來,還有各種中間人的攻擊方式在上述通信中無法防禦:
拒絕服務攻擊:中間人給盒子加把鎖,盒子無法打開,相當於紙條傳情業務中斷。
暴力破解攻擊:盒子和鎖的強度是有限制的,把鎖撬開很容易,或者暴力破壞盒子很容易。當然這種方法也可以很容易防禦,換更堅固的盒子和鎖。移到加密領域,就是更換演算法或者提高密鑰長度。
權威攻擊:傳個小紙條弄出個大盒子傳來遞去,老師和家長不參與進來才算見了鬼了。就算他們看不到紙條中的內容,但是這事情還不會上綱上線使勁批判一下,就算沒事情也按有事情先清理整頓一下,這對通信雙方的殺傷力都是極其巨大的。
有件事印象非常深刻
高三一堂自習課,班主任數學老師坐鎮,我個高坐最後一排,寫了個紙條,上面寫著一個不理解的問題,是化學題目,寫著不會就往前傳,當時我成績還不錯,啊我記得特別清楚,我這一列上有兩個不太偏科的課代表,一個語文還有一個啥課代表來著,有一個同桌是數學課代表,成績都特別好,其他的幾乎沒有一個成績差的,所以心裡想著總有一個人會吧
結果就是,班主任接到了紙條,給化學老師打了個電話,化學老師過來針對這個問題上了半節課…………
我講這個是想告訴你們,身正不怕影子斜
直接扔到老師臉上,一般老師都會直接把上面的話念給你想要告訴的人
把中間人變成機器,比如遙控汽車。
- Alice 把紙條存進盒子,掛上一把自己的鎖,經 Bob 的手傳給 Carol。
- Bob 和 Carol 都打不開。
- Carol 給盒子也掛上一把自己的鎖,經過 Bob 傳回 Alice。
- Bob 和 Alice 都打不開。
- 但是 Alice 隨即解開自己的鎖,再次經 Bob 傳給 Carol。
- Bob 打不開。
- 但是 Carol 解開了自己的鎖,打開盒子,最後收到了紙條。
上述傳紙條的流程,每次都經過中間人 Bob 但他無法攔截信息。
是不是簡(ma)單(fan)易(si)懂(le)?
核心人員人手準備一份密碼本,涵蓋所有與課程無關的核心詞句(不推薦使用單字密碼,編譯時間過長,不適合用於四十分鐘的課堂)。例如:放學、別走、你大爺等等。
現在我們要傳遞一個信息,在紙條上寫R23、T2、H12、A10,通過節點傳遞或直接空投皆可。注意存在被其他核心人員截獲信息的風險,可以定時小範圍更新密碼本加以規避信息泄漏,不同的圈子採用不一樣的密碼本,也便於塑造你絕對核心(老槍)的地位。
於是當妹子收到你的紙條,一核對密碼本:
今晚要不要來我家寫作業?很有意思的問題
通信協議已經確定了,是傳紙條這種公開協議,每一個節點都有打開紙條的方法和許可權,攻擊者很容易充當節點——所以我們不信任任何節點
依賴於使用雙方都事先溝通好的特殊的紙張(別人買不到這種紙,就像是模仿不到數據包的構造法)、特殊的筆跡(簽名),可以做到完整性和不可抵賴性
但是,雙方溝通密鑰的形式一定要保證機密,如果你也用通信的方式來溝通密鑰(甚至不加密),別人可以直接換一張紙和對方說,那種紙買不到了,我們以後換這種吧,以後你的所有包都攔下來丟掉,對方就被欺騙了
要做到保密性,只有用端對端加密,紙條從你手中出去,就是密文的,不靠協議頭,不靠簽名,內容就做對稱加密,對方有解密密鑰。
加密的方式有很多種,由於條件簡陋,一般就是用「古典加密演算法」。但是福爾摩斯用生動形象的故事告訴了我們,當中間人採集信息樣本量越大的時候,有越大的機會破解你的加密演算法。
於是一種高能的密文傳輸方式就來了:
明文寫一些帶有順序的干擾信息,讓他人看了無價值,卻能讓收件人知道該通信的序號。密文用澱粉溶液寫,對方使用碘液塗,顯形後不可逆。這種化學反應多彩多樣,你們還可以定期用見面這種方式更換方程式,並校驗序號。在密碼被破解之前,同時具備了完整性、可用性、保密性、不可抵賴性。
你以為點對點就能保證安全了嗎?
上高中時,我跟死黨a一直想坐同桌,但班主任一直沒應允。
a上課時給我遞來一張條:
「我愛你!萬水千山也不能阻擋我追趕你的腳步。」
我倆都是直男,只是都酷愛惡搞。
我看了一眼條,想都不想,就遞給了旁邊一位女生「a給你的」——客觀來說,她長得不差,只是體重是我們加一起的兩倍。
該女生大喜過望,不斷向a拋媚眼,a獨自在風中凌亂……
反正初中我和某死黨傳紙條採用的防範方案是:加密。
密鑰分配已經在私下裡完成,而且採用認證和加密分開的形式(分開的兩套加密方案)。流程是首先發出密鑰並確認身份,經過身份認證無誤再進行通信。
中間由於可以有多個可信賴網關可以選擇,所以在發送之前首先要選擇最佳網關,一般的策略是依據日常交流中確定下來的「關係」來進行的。不過有時候也會為了保證效率而選擇別的網關。不過這個不是重點,我主要說說驗證及加密我們是怎麼想出來的。
初中的時候班級裡面傳紙條非常嚴重,一般發生在一些不是很重要的課程上面(比如「勞動技術」)。因為和關係比較好、話題比較多的哥們都坐得比較遠(女生同理,老師為了防止上課講話才發明的方案),所以就開始傳紙條,一開始是女生傳得比較多,後來我們男生上課也覺得物料得很,也就開始傳紙條。當然一開始都是寫啥就是啥,就是所謂的明文傳輸。結果有一天一個姐們的紙條發送錯誤掉到兩排之間的走道上,正好被老師看見撿走,然後發送端被拉出去進行「伺服器計劃改造」了,這個時候我覺得有必要讓老師完全不知道寫得是什麼,這樣她就算抓到我,我也不怕泄漏,反正「計劃改造」我可以以「條件不足」不執行。
但是幾個哥們中只有一個現在在浙大讀研的哥們很贊同我的想法,而且他首先相處了「間隔加密」和藏頭加密兩種形式:
間隔加密:老師很壞→老是師從很崩壞者
藏頭加密:老師很壞→老人,師說,很牛,壞蛋
我們私下裡確認了加密方式,但是沒傳傳居然就被人看出來了,一個應該是負責中轉的妹子還嘲諷我們,說我們故意把紙條寫得很怪異,但是她們幾下就看出來了。這個時候我才知道原來中轉站一直在偷偷備份過站的信息……於是那個哥們告訴我換一種方式,算是間隔加密的改進版,原本間隔都是一個,他改成了間隔在「二、三」波動的形式。而且為了混淆,我們還特意把無意義的加密欄位也寫得有點東西。
間隔加密改進:老師很壞→老(你這)師(們都哈)很(真部)壞(笨懂呵)
效果拔群在於,那個曾經破掉我們初步加密的妹子居然問我們你們這個寫得是啥,感覺到勝利者之喜悅的我們心滿意足,於是決定搞得更複雜一些繼續裝逼。堅持加密但是明文傳送密鑰:反正她們get不到點。
帶密鑰的加密:老師很壞→三心二意,老你們天師其實很真的地壞很笨
三心二意、朝三暮四、一心二用是我們比較經常用的,因為類似「九牛一毛」和「五顏六色」太麻煩了,沒幾個字的紙條得擴寫半天,「信息冗餘度太高」。後來我們還搞出了雙重加密,以一層加密是對密鑰的,第二層是對信息的,而第一層加密密鑰還是明文傳送,但是我們把第一層密鑰、第二層密鑰、加密密文寫在一起,讓他們找不到規律。
雙重加密:老師很壞→一心二用三顆心卻有兩番意所在老你們天師其實很真的地壞很笨
不過這段時間出了一個問題,有一天我們裝逼正開心的時候,忽然傳過來一個紙條,完全沒有加密,結果我回復了……後來才發現,這TM根本不是給我傳的,是因為某個中轉站逗逼了,結果後面幾個中轉站按照「要求」XJB往前,結果給到我手裡了,我還很認真地回復了。這個時候我和他說了這個事情,於是決定加上簽名進行認證。不過把自己的名字寫進去也不好,被老師撿到了很尷尬,於是我們私下裡各自給自己定了一個暗號,我和他都姓吳,所以我們就把信拆開,一個放頭,一個放尾:
帶認證:老師很壞→口一心二用三顆心卻有兩番意所在老你們天師其實很真的地壞很笨天
當然,這一切隨著後來他變成我斜後桌漸漸放棄,不過……真的還懷念那個時候那種寫得字條別人看不懂的神級裝逼感覺……太TM爽了……
PS:因為裝逼過度,我們的紙條被某些不懷好意的中轉站撕掉過好幾次………………
來個跑題的回答。。。
我有倆逗比朋友,明明就坐在一起,還要傳紙條!這都不是關鍵,關鍵是她們傳的紙條上什麼都不寫!!就學微信的語音畫三撇,打個紅點!然後傳過去,看著對方戳一下紅點。就特么自動語音播放了╮(╯▽╰)╭完了,還把播放過的用黑筆塗了。得多特么無聊的人才能做出這種事啊!!!
so easy~ 我記得我小學時候是這樣辦的,找兩塊紙板,在相同位置上分散扣上許多洞洞。想傳紙條的時候在紙板後邊墊張白紙,在洞洞里寫內容,然後拿走紙板,這時候白紙上分散寫有你的內容了,在空白處隨便寫點什麼,使語句不通順,傳過去後,對面人拿紙板蓋住,洞洞里就是內容了。剪短點,用我們軟工的話來說就是加密和解碼演算法是固定的。
初二的時候為了傳紙條專門自創了一套文字。
這套文字只有四個人知道如何使用。
如圖:額。。。
可信節點(鐵哥們)
混淆協議加obfs(把紙條夾在參考書里遞過去)
區域網互傳(坐在那人的旁邊)
證書認證(在信上貼個小綠鎖的標籤封口)
端對端加密(直接把信寫成亂碼)
當然還有終極大招:肉身翻牆(直接等下課之後面對面嘰嘰喳喳)不知道題主打算保護confidentiality 還是 integrity。
如果是保密性。讓接收方MM手算任何複雜的加密解密都是不人道的,所以應該使用可信任節點來進行通信。可以仿照tor的反向加密原理,將紙條層層打包,路徑中的每個節點打開最外面一層紙條,從而知道下一步將紙條傳給哪個節點。而MM回信的時候可以使用另外一條通信線路。這樣即使一個節點被compromised,敵方也只能得到一半信息。
如果是完整性加保密性,假設MM英文很好,使用最簡單的平移字母加密,和MM事先約定好一個簡單的hash演算法和seed,利用hash chain來生成不同的key。大大增加破解難度。
蟹妖。
如果不藉助電子計算手段,手算RSA加密的方式其實很不現實,只要key length稍微長一點,你手算一節課也未必能把密文算出來;但是如果key length太短別人只要藉助計算機做個質因數分解就能破解了。非對稱加密演算法的安全性都是依賴於計算機對非多項式時間複雜度計算能力的不足而起到作用的。然而對於我們人類而言,純粹的計算已經非常困難,手動用計算機演算法進行加密通訊簡直就是天方夜譚,所以我們完全可以另闢蹊徑。
既然題主強調了以傳紙條為通訊方式,那麼我們的媒介就用該回歸到最傳統的紙張。其實這個問題在很早以前就已經有了解決方法,最安全有效的方式大家都應該有所了解——封口蠟。
這個方法很古老,雖然咱不可能在課堂上點根蠟燭裝信封,但是卻很有啟發意義。被蠟粘上的紙張不易被完好的揭下,如果直接撕開會損壞紙張,這樣收信人就能從信封的完好程度察覺出來。當然有種方式可以完好的揭下紙張——加熱。為了防止這種攻擊,人們在蠟上面蓋章,加熱後蠟會變形,如果沒有授權的印章則無法重塑一個封口蠟,收件人也可以通過對印章的合法性檢驗中察覺到泄密的可能。
那麼如何在課堂上用類似的方法給紙條進行密封呢?我想到了一個方法,但是應該還有更好的,歡迎補充。你需要一卷單面膠或雙面膠和一個信封,膠紙一定要用粘性大的,信封如果沒有現成的話可以疊一個。我在一些精品店見到過一些紙牌大小的信封,很適合傳紙條用,也很便宜。
首先用膠紙把裝好信件的信封封口:
(雙面膠)
(單面膠)
完後你只要再優雅地在封口處簽上你的大名即可:
這樣你的信件基本上就很安全了。如果你打算長期用這種方式的話我建議你可以買一些封口貼:
你可以事先在每張貼紙上籤好名字,然後你就可以重複使用一個信封,每次傳遞就用一個貼紙封口,收件人每次又會把貼紙撕開,但是互不影響,又比較節省。=====2 Feb 2014 Update=====
@劉嘯宇 的評論讓我對這個方法進行了一些反思。
這個方法如果從加密的角度來說,並不是一個非對稱秘鑰交換的過程,相反,這是一個對稱加密方法。由於是在真實的生活環境中,秘鑰的交換可以在下課後私下進行,沒有如互聯網這樣的中間媒介的潛在安全威脅。這個私鑰正是簽名、貼紙的特徵,而且這些特徵的現實時空唯一性——在同學們共同上課的一定時間地點範圍內無法進行有效的模仿和複製。通過將這些特徵加入信任鏈,在課堂上擁有中間媒介(同學A君,B醬,C萌...)的情況下通過加密(貼紙)和簽名(真的簽名),能夠做到身份驗證的信任機制。
反對樓上觀點。
還繞過中間人,還拋物線。
依稀記得那是一個晴朗的下午,老師集體備課。
紙條寫好,揉成一團兒,用力向目標進軍,在空中真的划了一道完美的拋物線。
忽聽身後有人敲門窗,是校長!
他直直的看著我說:來,小伙兒,你出來
推薦閱讀: