作者 主題: One-Time Password(From FreeBSD Handbook10.5 - S/Key)  (閱讀 3029 次)

0 會員 與 1 訪客 正在閱讀本文。

lonestar

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料

各位好.
最近小弟正在研讀FreeBSD Handbook 10.5節(S/Key),但有一疑惑百思不得其解,希望有人能為小弟解惑.
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/skey.html
根據其說法,Onetime password的產生是:

                               iteration count
"Seed" + "secret key" -------------------------> "One-Time Password"


但從10.5.2節的角度來看,卻變得有些奇怪??

                  iteration count
"Seed" + "One-Time Password" -----------------------> "secret password"

為什麼這麼說呢??因為如果server沒有算出"secret password" ,那麼下一次的login,
server要怎麼產生出供比對的One-Time Password,但若如此,如果有人用sniffer竊聽,
那不是就和沒用One-Time Password一樣了嗎??
(因為他一樣可以得到"Seed","One-Time Password","iteration count"
並解出"secret password",再由"secret password"+"Seed"+"iteration count"
猜出下一次的"One-Time Password")

請各位幫忙檢視小弟觀念上是否有錯誤.
謝謝:)

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17047
    • 檢視個人資料
    • http://www.study-area.org
One-Time Password(From FreeBSD Handbook10.5 - S/Key)
« 回覆 #1 於: 2002-10-05 11:15 »
OTP 不的密碼只會用一次,因此才稱 one time 。

當產生 OTP 的時侯,會獲得序號及密碼,且彼此成對。
當要進行驗證時,提示序號,回答密碼。
下次提問下一須號,再回下一密碼.....

若是用 sniffer 來抓,抓了也沒用,因為下次不再用了。
除非,對方能盜取您的  password list 。
就算被盜,也無防,再產生新的 list 就好,那舊的就無效了。

若是不知被盜,那,細心的話也能知到。因為,您要記得當前的序號,若下次提問的序號竟跳了幾行,那,應該知道發生甚麼事情了....

lonestar

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
One-Time Password(From FreeBSD Handbook10.5 - S/Key)
« 回覆 #2 於: 2002-10-05 17:05 »
NETMAN 您好:

我的疑惑在於"secret key"是否可由"Seed"+"Ireation count"+"OTP"來逆解,
不然為什麼在10.5.2 Insecrue Connection Initialization中,只需傳回
"Seed","Ireation count","OTP" ,而Server卻能在您下次login時產生正確的"OTP
來進行比對.(因為我並未告知server我的secret key).

若上述為真,那麼"Seed"+"Ireation count"+"secret key" ==> "OTP" 成立,且
"Seed"+"Ireation count"+"OTP" == > "secret key" 亦成立,那麼OTP不就失去它
的作用了嗎?(任何人都能用sniffer抓到"Seed","Ireation count","OTP"並解出
"secret key",那就隨他玩了)

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17047
    • 檢視個人資料
    • http://www.study-area.org
One-Time Password(From FreeBSD Handbook10.5 - S/Key)
« 回覆 #3 於: 2002-10-06 01:01 »
OTP 應是應用 one way hash 的演算法來產生密文。
只要 seed 一致,然後對相同的明文進行相同 hash ,就肯定得出相同的密文。
若是前三者其一不一致,那結果肯定不一致。

OPT 因為是 list 的關係,按 serial 進行 one time 比對則可。

lonestar

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
One-Time Password(From FreeBSD Handbook10.5 - S/Key)
« 回覆 #4 於: 2002-10-06 19:37 »
嗯...我想可能是我說的不夠明白^^!!!
稍微整理一下:

Q1. "secret key"是否可由"Seed"+"Ireation count"+"OTP"來逆解??

Q2 若1答案為"是",那麼OTP就失去它原本的用意了.
     若答案為否,在10.5.2 Insecrue Connection Initialization中,只告知server "Seed","Ireation count","OTP",server從何得知下一次的OTP??

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17047
    • 檢視個人資料
    • http://www.study-area.org
One-Time Password(From FreeBSD Handbook10.5 - S/Key)
« 回覆 #5 於: 2002-10-06 21:20 »
1) 不可逆解,但可以比對結果。我建議到 google 找  one way hash 看看。

2) serial