科學 · 資訊科技

保安編碼器


sd_key

今日收到匯豐銀行寄來的「保安編碼器」。這個像鎖匙扣一樣的東西,據稱可以改善網上銀行的安全性。用法是這樣的:首先以平日的用戶名及密碼登入匯豐銀行的個人理財主頁,然後選擇「啟動您的保安編碼器」。這時輸入編碼器背面編號,再在編碼器上按鍵一次,編碼器會給出一個六位數字。把這個數字輸入電腦,便完成了啟動程序。以後登入網上銀行,都必須輸入編碼器顯示的數字。這個數字有時限,舊的編碼不能重覆使用。因此,要登入網上銀行,必須有編碼器在手。

這個編碼器,明顯沒有透過無線網絡跟銀行網站有任何聯系,那麼它是怎樣運作的呢?為甚麼銀行方面會接受這個編碼器的編碼呢?這樣有趣的問題很值得研究。上網搜尋了一下,沒有找到有關這個編碼器的工作原理。於是,為了明白這個東西的來龍去脈,我做了兩組簡單實驗:

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

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

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

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

由是觀之,只要編碼器沒有落入別人手中,其安全性是很高的。雖然六位數字的編碼只有 106 即一百萬種可能性,但要在十秒時限內用盲力來試這一百萬個編號是不可能的。其次,即使某人破解或掌握了編碼器中隨機數產生器的數學式,但由於不知道第一次啟動那一刻種入到伺服器的初始條件,所以還是不可能產生出適合的編碼。最後,即使編碼器為他人所獲,還得配合傳統的密碼來使用,其安全性無論如何也不會比以前低。

如果上述對於編碼器原理的猜想正確,那麼其內置時鐘的準確度便變得很關鍵。銀行伺服器上那個時鐘,可以按照香港天文台的原子鐘來調校時間。但一般像編碼器這類小型電子儀器,其內置時鐘不會很準確,日子久了會像電子跳字錶一樣產生時間差。而編碼時限是十秒,如果編碼器的時鐘跟銀行時鐘相差太多,會令編碼過期或提早產生,兩種情況同樣會使登入錯誤。不過,在其電池壽命時間內出現這種大規模誤差的機會不高,所以應該還是很可靠的。

4 thoughts on “保安編碼器

  1. 您好!
    對於閱讀閣下在Oct. 2005,有關匯豐銀行保安編碼器的文章,已有初步瞭解.
    在下仍有一事不明,為什麼我在登入網頁之前,事先記錄了一個保安編碼,而待稍後時間使用,都會出現錯誤的信息,這樣做和我登入網頁之後才按編碼有甚麼分別?
    懇請賜教! 謝謝

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s