相信當過兵的朋友們都還記得,部隊中晚上是禁止隨意走動的。但是話說人有三急,有時候晚上起來上個廁所,也是膀胱無力人之常情。在正常的情況下,只要一離開寢室,就會有人 (這個人叫安全士官) 大聲問道:「站住、口令、誰。」唯有正確答出當天的通關密語 (口令),才有可能全身而退,不然被當做匪諜一槍擊斃也只能自認倒楣了。軍隊透過這樣的安全機制來避免有心份子混入部隊當中,只是這樣的安全機制夠安全嗎?在由李連杰所主演電影「龍門飛甲」中,有一段類似的情節,我們先來看看。
話說由李連杰所演出的趙懷安,因為常與政府做對所以受到西廠的追捕。在一次的誤會當中,西廠官兵前往龍門客棧準備捕捉趙懷安。但是西廠所追捕的趙懷安,原來只是一個愛慕他的女生所假冒。而龍門客棧這個地方,也因為傳說埋藏了稀世珍寶,所以除了官兵之外,還有不少亡命之徒投宿在此。而這些亡命之徒當中,有一個人竟然長得跟西廠的頭目 (督主) 相當神似,故事也就因此有了變化...
男主角趙懷安,跟後面要講的劇情無關,純粹是看在李連杰的面子上才放這張照片。
臨時出現的亡命二人組,書生樣的「風裡刀」外貌神似督主。
西廠的官兵一看,嚇到不知所措。
亡命之徒果然見過世面,馬上就發現西廠官兵的異常反應。
「風裡刀」最厲害的就是那張嘴,所以馬上前往官兵的房間套話。
雙方僵持不下。
西廠也不是那麼笨 (至少目前還不笨),早偷偷派了人回去確認是不是真貨。
嘍囉不忘多拍幾下督主的馬屁。
督主就是督主,馬上想到一個餿主意妙計,那就是他要冒充「風裡刀」混進去搞破壞。
嘍囉想到一個辨別真假督主的方式,那就是用密語。
密語是「龍門飛甲」。
對「便知真假」。
嘍囉回到龍門客棧,先用密語確認督主的身分。
果然是假冒的,但是真督主有令不可打草驚蛇。
這是督主假扮的「風裡刀」,果然很像 (根本就是同一個人演的)。
督主又出現了,這次是真是假?
對方搶先一步說出密語的前半部。
搶答失敗。
只好硬著頭皮講出另一半的密語。
被擺道了。
剛剛是假的督主。
這次換督主的手下大將來認證說密語。
實在被騙太多次了,已經惱羞成怒。
不管三七二十一,放就對啦。
囉嘍在督主提出喬裝臥底的計策時,很聰明的想到了利用密語來辨識真假督主。不過百密終有一疏,他們忘了約定誰要講上半部,誰又要講下半部。所以聰明的「風裡刀」在猜測到「龍門飛甲」可能是密語之後採用先聲奪人的策略,不待西廠官兵開口就搶先說出「龍門飛甲」,迫使西廠官兵只能說出密語的下半部。
回到部隊的例子,又有什麼樣問題呢?當安全士官大聲問道:「站住、口令、誰。」時,任何知道口令的人,都可以假冒成其他人。原因很簡單,因為整個部隊都是使用同一個口令,因此就失去了可稽核性 (Accoutability)。除了可以利用其他人的身分上廁所,這種機制還有一個問題,那就是如何確認安全士官真的是安全士官?因為「站住、口令、誰。」是一個固定的詢問方式,所以知道這句話並不能確保安全士官的身分,這樣情況我們稱之為單向的身分驗證。相對於單向的身分驗證,當然還有所謂的雙向驗證。
以我們經常使用的電子商務網站來看,通常使用各式各樣的網站憑證來做為 SSL 加密之用,這就是一種單向身分驗證的應用 (註一)。網站憑證可以確保 (至少在理論上是如此) 使用者連結的網站是他所預期的,而不是連到一個假冒的釣魚網站。對於一般的電子商務網站,單向驗證或許已經足夠,但是對其他更重要的服務而言,雙向驗證就是不可或缺的了。這些服務包含網路銀行、政府機關各項服務 (如報稅) 等。雙向驗證除了網站憑證之外,使用者也必須擁有個人的憑證 (如自然人憑證、工商憑證等) 才可以進行訊息的溝通。透過雙向驗證,不但使用者可以確認網站的真實性,網站也可以確認使用者的身分。在保護資料安全性的同時,也提供了高度可靠的可稽核性與不可否認性。
註一:一般的電子商務網路會透過帳號/密碼進行使用者的身分驗證,也可以算是一種雙向驗證。然而這是兩種機制的混合使用,與我後面提到使用憑證做到雙向驗證是不一樣的作法,在安全強度上也有所不同。