December 8,2005

Security Device


下午從SSTL的研究室裡拿到所謂的「Security device」,
一個像是鑰匙圈一樣的東西,
辦公室人員並且通知我們說以後登入伺服器系統,都得利用這個產生密碼。
說明書看了半天才知道是怎麼使用的....

首先以平日的用戶名及密碼登入伺服器主頁,然後啟動這個小玩意。
這時輸入產生器的背面編號,然後在產生器上按鍵一次,
小小的螢幕上會給出一個六位數字。
把這個數字輸入電腦,便完成了啟動程序。
以後登入伺服器主機,都必須輸入密碼器顯示的數字。
這個密碼有時間限制,而我們當初所設定的密碼不能同時使用。
因此,以後要登入主機處理東西或者存取資料,都必須有這個鑰匙圈在手。



這個小玩意,明顯沒有透過USB或者任何傳輸系統連結主機,那麼它是怎樣運作的呢?
這樣有趣的問題讓我覺得有點興奮。
問了SSTL的資料安全部門相關人員,都找不到有關這個玩具的原理。
於是,為了明白這個東西的來龍去脈,我做了兩組簡單實驗:

一、重覆登入了幾次,每次按指示在密碼器上按鍵,輸入新的密碼,都能成功登入。
故意更改其中一個數字,則會導致登入錯誤。

二、密碼會隨時間改變。經過反覆實驗,密碼機每隔十秒產生新的密碼。
換句話說,在十秒內無論按鍵多少次,密碼器都會產生相同的密碼。
不過,每次按鍵,密碼產生器會有大約一秒鐘的延遲,所以十秒內也只能按幾次。
如果以舊密碼登入,同樣會造成登入錯誤。
換句話說,每個密碼的有效期只有十秒。

因此,密碼器與伺服器必能在不互相接觸的情況下,
以某一特定方法測知登入時所需的正確密碼。
一個合理的推斷是:密碼器內有一個時鐘,
以按鍵那一刻的時間作為隨機種子,
然後以某一種加密的的random number generator產生六位數字的密碼。

同時在伺服器那一端也做了相同的計算,不過情況應該會卻比較複雜。
由於密碼器不論何時產生出來的密碼,都有足十秒時限,
而伺服器卻只能以登入時間來計算密碼,
所以如果在按鍵的那一刻,密碼器產生 123456 這一密碼,
而伺服器在一秒後卻已轉到下一個密碼 456789 去,
那麼以 123456 來登入,必然還是會登入錯誤。
為了解決這個問題,銀行伺服器必須接受 123456 或 456789 兩個密碼的任何一個,
也就是即過去十秒鐘內密碼器所能產生出來的兩個密碼之一。
而為了限制一個密碼器只能登入一個使用者帳號,
伺服器那一邊的程式,還必須依靠第一次啟動密碼器時的那個密碼,
來進行某種初始化程序 (initialization),設定某個初始條件 (initial condition),
才能產生出跟密碼器吻合的密碼。
這樣,隨機選中正確密碼的機會率是一百萬份之二,或即五十萬份之一,
恐怕還遠低於遺失密碼器的機率。

夠無聊了吧....連發一個鑰匙圈給我,都會讓我想這麼多東西....

Posted by revonch at 樂多Roodo! │09:41 │回應(6)零與一的閒聊
樂多分類:日記/一般 工具:編輯本文
Ads by Roodo! 
回應文章
剛剛去找了一下資料,這個應該是 "two-factor authentication"的一種應用吧....最近挺常在資料安全或者網路交易平台上看到的新名詞。
Posted by YC at December 8,2005 09:56
可是, 難道沒有可能密碼器和 server 端的時間是不一致的嗎?
密碼器是用電池的嗎? 那如果密碼器沒電了, 要怎麼辦?
電池裝上去之後, 它就自己會抓到目前的時間, 然後產生新密碼嗎?

呵呵, 不會無聊啊, 我覺得聽起來就很有趣耶.
換成我應該也會拿來測試著玩吧. :)
Posted by 喵咪 at December 8,2005 11:37
呵呵,後來真的忍不住,寫信去問了這個廠商,
也跟姚老大討論了一下之後確認....
這個小玩具需要配合時間去產生密碼,
時間的正確程度預估在一年內誤差不會超過一秒鐘....
所以在換電池的時候只要設定正確時間,
就可以避免因為兩端時間不同所產生的密碼不一致問題....

好玩耶
Posted by YC at December 8,2005 19:56
所以說, 時間一定要對.
如果說你在換電池的時候, 設定的時間剛好和 server 的時間不一樣, 那這小玩具所產生的密碼就會和 server 端不一樣, 那你就永遠無法登入, 是這樣嗎?

那, 所以, 不同的單位去買這東西, 它裡面的 encode 的演算法或是計算方式應該也都不一樣囉? 不然, 我拿別人買的 SecurID, 就可以到你們家 server 登入... 這樣也怪怪的...

那, 密碼器和 server 的時間誤差可以允許是多少呢? 1秒? 完全不能有誤差? 你要不要去把密碼器的時間改一改來玩看看... 看差個一兩秒會怎樣... :p

SecurID 這東西我以前就聽過, 只是一直不知道它是做什麼的...
這樣一研究... 好玩耶...
Posted by 喵咪 at December 12,2005 15:42
今天看到以下的這篇報導
http://udn.com/NEWS/STOCK/STO8/3168460.shtml

這東西原來也可以配合網路銀行做密碼驗證啊...

害我想來去匯豐開戶來玩看看. 哈哈.
Posted by 喵咪 at February 18,2006 00:32
這東西據說正明叫做 OTP, one time password.
http://demonchang.blogspot.com/2007/04/work-fsmotp.html
Posted by Flora at April 13,2007 22:08