[IT-Security-1] 授權機制 Authentication and Key Agreement
Authentication and Key Agreement
Notes from RWTH Aachen University course
“IT security 1” Wintersemester 2019/20
professor: Meyer, Ulrike Michaela
- Authentication protocol的目標
- 正確性(Correctness): A可以向B成功認證他的身份
- 不可轉移性(Resistance against transferability): B不能重複使用A的身份向C證明自己
- 不可偽造(Resistance against impersonation): C執行protocol後向B證明自己是A的機率很小
- Password-Based Authentication
- 用hash儲存使用者的password
使用者輸入password後找hash值
hash需要有pre-image resistant - Dictionary Attack
- Offline attack
- 先預計算字典裡所有的字的hash
- 若拿到password file則比對所有的hash得到preimage
- Online attack
- 無法取得password file
- 攻擊者要一個一個測字典裡的字
攻擊有可能都存在,針對個人或所有用戶
- Dictionary Attack的解法
- 使用salt( \(h(\text{salt,pwd})\) ),並在password file中儲存salt
- 使用相同密碼的使用者會有不同的hash值
- offline attack需要更多空間或無法precompute
- Default password attack
- Mirai(日文「未來」) Botnet
- 對使用預設帳號密碼的物聯網裝置植入病毒,植入之後繼續搜尋其他IP位址
- Challenge-response authentication
- 流程:
- Bob向Alice傳送一 Challenge value (a random value)
- Alice回傳 \(\text{Response=}f(\) \(\text{key}\)\(\text{, challenge)}\)
- Alice向Bob證明自己有secret key,而不用直接傳送secret key
- Example: Lamport’s One-Time Passwords
- \(h\) 是hash function
- Alice選擇一個隨機seed \(S\),並計算
\(h(S)=S_1,\\h(S_1)=h^2(S)=S_2,...,\\h(S_{n-1})=h^n(S)=S_n\) - Alice提供 \(P_0=S_n\) 給Bob
則接下來的使用順序是 \(P_1=S_{n-1},P_2=S_{n-2}\)
- 若Bob傳送 Challenge \(k\)
則Alice回傳 \(P_k\) - Bob驗證是否 \(h(P_k)=P_{k-1}\)
- Small \(k\) attack:
- 因為Bob傳送的 \(k\) 沒有被授權(authenticated)
- 攻擊者偽造一個 \(m\)\(, m>k\),傳給Alice
- Alice回傳 \(P_m\)
攻擊者再回傳 \(P_k\) - 因為 \(h^{m-k}(P_m)=P_k\)
- Building Blocks for Unilateral(單方面) Authentication
- \(E_k(\text{timestamp,ID}_A)\)
- \(E_k(\text{RAND})\) (\(\text{RAND}\)是Alice給的)
- \(MAC_k(\text{timestamp,ID}_A),\text{timestamp}\)
- \(MAC_k(\text{RAND})\) (\(\text{RAND}\)是Alice給的)
- Bob的資訊包含在訊息中(key)
- Bob指定收件人(用Alice的對稱式或非對稱式key)
- Building Blocks for Mutual(雙方) Authentication
- \(R_B\) 是另一個random number
- Alice傳送\(R_A\)給Bob
Bob傳回 \(E_K(R_A,R_B)\)給Alice
Alice傳回 \(E_K(R_B,R_A)\)給Bob - Alice傳送\(R_A\)給Bob
Bob傳回 \(MAC_K(R_A,R_B),\) \(R_B\)給Alice
Alice傳回 \(MAC_K(R_B,R_A)\)給Bob
- 將 \(R_A,R_B\) 一起加密/計算\(MAC\) 以避免chosen plain text攻擊
- Using Public Key Encryption
- 單方面authenticate
- Alice傳送 \(h(R)\)\(,ID_B,E_B(h(R),ID_B)\)
假設Bob知道\(h(R)\)且不會破解此\(h(R)\) - Bob回傳 \(R\)
- 互相authenticate
- (假設雙方還不知道彼此public key)
- Bob傳送 \(R_B\) 給Alice
- Alice回傳 \(Cert_A,R_A,B,Sign_A(R_A,R_B,B)\)
- Bob回傳 \(Cert_B,A,Sign_B(R_B,R_A,A)\)
\(B,A\)是Alice跟Bob的public key(!?)
留言
- 正確性(Correctness): A可以向B成功認證他的身份
- 不可轉移性(Resistance against transferability): B不能重複使用A的身份向C證明自己
- 不可偽造(Resistance against impersonation): C執行protocol後向B證明自己是A的機率很小
- 用hash儲存使用者的password
使用者輸入password後找hash值
hash需要有pre-image resistant - Dictionary Attack
- Offline attack
- 先預計算字典裡所有的字的hash
- 若拿到password file則比對所有的hash得到preimage
- Online attack
- 無法取得password file
- 攻擊者要一個一個測字典裡的字
攻擊有可能都存在,針對個人或所有用戶
- Dictionary Attack的解法
- 使用salt( \(h(\text{salt,pwd})\) ),並在password file中儲存salt
- 使用相同密碼的使用者會有不同的hash值
- offline attack需要更多空間或無法precompute
- Offline attack
- Default password attack
- Mirai(日文「未來」) Botnet
- 對使用預設帳號密碼的物聯網裝置植入病毒,植入之後繼續搜尋其他IP位址
- Mirai(日文「未來」) Botnet
- 流程:
- Bob向Alice傳送一 Challenge value (a random value)
- Alice回傳 \(\text{Response=}f(\) \(\text{key}\)\(\text{, challenge)}\)
- Alice向Bob證明自己有secret key,而不用直接傳送secret key
- Example: Lamport’s One-Time Passwords
- \(h\) 是hash function
- Alice選擇一個隨機seed \(S\),並計算
\(h(S)=S_1,\\h(S_1)=h^2(S)=S_2,...,\\h(S_{n-1})=h^n(S)=S_n\) - Alice提供 \(P_0=S_n\) 給Bob
則接下來的使用順序是 \(P_1=S_{n-1},P_2=S_{n-2}\)
- 若Bob傳送 Challenge \(k\)
則Alice回傳 \(P_k\) - Bob驗證是否 \(h(P_k)=P_{k-1}\)
- Small \(k\) attack:
- 因為Bob傳送的 \(k\) 沒有被授權(authenticated)
- 攻擊者偽造一個 \(m\)\(, m>k\),傳給Alice
- Alice回傳 \(P_m\)
攻擊者再回傳 \(P_k\) - 因為 \(h^{m-k}(P_m)=P_k\)
- Building Blocks for Unilateral(單方面) Authentication
- \(E_k(\text{timestamp,ID}_A)\)
- \(E_k(\text{RAND})\) (\(\text{RAND}\)是Alice給的)
- \(MAC_k(\text{timestamp,ID}_A),\text{timestamp}\)
- \(MAC_k(\text{RAND})\) (\(\text{RAND}\)是Alice給的)
- Bob的資訊包含在訊息中(key)
- Bob指定收件人(用Alice的對稱式或非對稱式key)
- Building Blocks for Mutual(雙方) Authentication
- \(R_B\) 是另一個random number
- Alice傳送\(R_A\)給Bob
Bob傳回 \(E_K(R_A,R_B)\)給Alice
Alice傳回 \(E_K(R_B,R_A)\)給Bob - Alice傳送\(R_A\)給Bob
Bob傳回 \(MAC_K(R_A,R_B),\) \(R_B\)給Alice
Alice傳回 \(MAC_K(R_B,R_A)\)給Bob
- 將 \(R_A,R_B\) 一起加密/計算\(MAC\) 以避免chosen plain text攻擊
- Using Public Key Encryption
- 單方面authenticate
- Alice傳送 \(h(R)\)\(,ID_B,E_B(h(R),ID_B)\)
假設Bob知道\(h(R)\)且不會破解此\(h(R)\) - Bob回傳 \(R\)
- 互相authenticate
- (假設雙方還不知道彼此public key)
- Bob傳送 \(R_B\) 給Alice
- Alice回傳 \(Cert_A,R_A,B,Sign_A(R_A,R_B,B)\)
- Bob回傳 \(Cert_B,A,Sign_B(R_B,R_A,A)\)
\(B,A\)是Alice跟Bob的public key(!?)
留言
Key Establishment
- 如果沒有session key,則上述的building block都無效
- 可以保障兩個授權的雙方仍在communicating
- Key Establishment Protocols
- 先建立一個shared secret key
- 可分為
- Key transport protocols
- 被建立的key可以被安全的傳送
- Key agreement protocols
- example: Diffie-Hellman
- Motivation
- 給定一定key,如果不被攻擊的話密文有限
- 減少暴露時間及資訊量
- 避免長期儲存大量secret key
- 建立使用者的獨立通道
- Key Establishment該有的特質
- key freshness
- Key control
- Efficiency
- Third party requirements
- perfect forward secrecy
如果long-term signature keys被破解不會影響到以前的session key - vulnerable to a known-key attack
若過去的session key被破解,會影響到未來的session key或有辦法假冒他人 - Key Establishment Protocols的性質
- Implicit key authentication
一方知道除了被授權的另一方之外可以取得特定secret key - Key confirmation
一方知道有另一個人(不一定被授權)可以擁有特定secret key - Explicit key authentication
implicit key authentication+key confirmation - Authenticated key establishment
一protocol提供implicit key authentication
- Key Transport
- A和B用對稱式加密,加密session key \(SK\)
- 若需要key freshness,可以用Nonce
- B傳遞Nonce \(N_B\) 給A
- A回傳\(E_K(SK,N_A,N_B)\)
- 如果沒有session key,則上述的building block都無效
- 可以保障兩個授權的雙方仍在communicating
- Key Establishment Protocols
- 先建立一個shared secret key
- 可分為
- Key transport protocols
- 被建立的key可以被安全的傳送
- Key agreement protocols
- example: Diffie-Hellman
- Key transport protocols
- Motivation
- 給定一定key,如果不被攻擊的話密文有限
- 減少暴露時間及資訊量
- 避免長期儲存大量secret key
- 建立使用者的獨立通道
- Key Establishment該有的特質
- key freshness
- Key control
- Efficiency
- Third party requirements
- perfect forward secrecy
如果long-term signature keys被破解不會影響到以前的session key - vulnerable to a known-key attack
若過去的session key被破解,會影響到未來的session key或有辦法假冒他人 - Key Establishment Protocols的性質
- Implicit key authentication
一方知道除了被授權的另一方之外可以取得特定secret key - Key confirmation
一方知道有另一個人(不一定被授權)可以擁有特定secret key - Explicit key authentication
implicit key authentication+key confirmation - Authenticated key establishment
一protocol提供implicit key authentication
- Implicit key authentication
- Key Transport
- A和B用對稱式加密,加密session key \(SK\)
- 若需要key freshness,可以用Nonce
- B傳遞Nonce \(N_B\) 給A
- A回傳\(E_K(SK,N_A,N_B)\)
Key transport
- First attempt
- server \(S\) 有跟 \(A,B\) 的key \(k_{SA},k_{SB}\)
- 若 \(A\) 想要建立與 \(B\) 的溝通通道 (即取得\(k_{AB}\))
- 步驟:
- \(A\) 對 \(S\) 請求 \(A,B\) 的key
- \(S\) 給 \(A\) \(E_{K_{AS}}(K_{AB})\) 及 \(E_{K_{BS}}(K_{AB})\)
- \(A\) 再把 \((E_{K_{BS}}(K_{AB}),A)\) 傳給 \(B\)
- \(B\) 用自己的 \(K_{BS}\) 解密得到 \(K_{AB}\)
- Second attempt
- 步驟:
2. \(S\) 給 \(A\) \(E_{K_{AS}}(K_{AB},B)\) 及 \(E_{K_{BS}}(K_{AB},A)\) (加入 \(A,B\) 的identity)
- Probelm:
- 攻擊者如果獲得以前的session key \(k_{AB}'\)
- 並且記錄以前的訊息
- 攻擊者可以使 \(A,B\) 再用同一把broken session key
- 此protocol易受replay攻擊
- Third attempt(Needham-Schroeder Protocol)
- 用 Nonce 對抗replay攻擊
- 步驟:
- \(A\) 對 \(S\) 請求 \(A,B\) 的key,並給一個 Nonce \(N_A\)
- \(S\) 回傳 \(E_{k_{AS}}(k_{AB},B,N_A,\)\(E_{k_{BS}}(k_{AB},A)\)\()\)
- \(A\) 將 \(E_{k_{BS}}(k_{AB},A)\) 傳給 \(B\)
- \(B\) 傳 \(E_{AB}(N_B)\) 給 \(A\)
- \(A\) 回傳 \(E_{AB}(N_B-1)\)
- Probelm:
- 若攻擊者知道old session key
- 可以破解步驟3,並且用 \(k_{AB}'\) 與\(B\)溝通
- Fourth attempt
- 步驟:
3. \(B\) 傳 Nonce \(N_B\) 給 \(A\)
4. \(A\) 回傳 \(E_{k_{BS}}(k_{AB},A,\)\(N_B\)\()\)
- First attempt
- server \(S\) 有跟 \(A,B\) 的key \(k_{SA},k_{SB}\)
- 若 \(A\) 想要建立與 \(B\) 的溝通通道 (即取得\(k_{AB}\))
- 步驟:
- \(A\) 對 \(S\) 請求 \(A,B\) 的key
- \(S\) 給 \(A\) \(E_{K_{AS}}(K_{AB})\) 及 \(E_{K_{BS}}(K_{AB})\)
- \(A\) 再把 \((E_{K_{BS}}(K_{AB}),A)\) 傳給 \(B\)
- \(B\) 用自己的 \(K_{BS}\) 解密得到 \(K_{AB}\)
- Second attempt
- 步驟:
2. \(S\) 給 \(A\) \(E_{K_{AS}}(K_{AB},B)\) 及 \(E_{K_{BS}}(K_{AB},A)\) (加入 \(A,B\) 的identity)
- Probelm:
- 攻擊者如果獲得以前的session key \(k_{AB}'\)
- 並且記錄以前的訊息
- 攻擊者可以使 \(A,B\) 再用同一把broken session key
- 此protocol易受replay攻擊
- Third attempt(Needham-Schroeder Protocol)
- 用 Nonce 對抗replay攻擊
- 步驟:
- \(A\) 對 \(S\) 請求 \(A,B\) 的key,並給一個 Nonce \(N_A\)
- \(S\) 回傳 \(E_{k_{AS}}(k_{AB},B,N_A,\)\(E_{k_{BS}}(k_{AB},A)\)\()\)
- \(A\) 將 \(E_{k_{BS}}(k_{AB},A)\) 傳給 \(B\)
- \(B\) 傳 \(E_{AB}(N_B)\) 給 \(A\)
- \(A\) 回傳 \(E_{AB}(N_B-1)\)
- Probelm:
- 若攻擊者知道old session key
- 可以破解步驟3,並且用 \(k_{AB}'\) 與\(B\)溝通
- Fourth attempt
- 步驟:
3. \(B\) 傳 Nonce \(N_B\) 給 \(A\)
4. \(A\) 回傳 \(E_{k_{BS}}(k_{AB},A,\)\(N_B\)\()\)
Key Agreement
- Based on public key cryptography
- Diffie-Hellman Key Agreement
- 可用對稱式鑰匙或公鑰對公開變數授權
- Based on symmetric keys
- 對Nonce授權
- 用Nonce或long term shared secret進行Hash產生session key
ReadingsKaufman Chapters 9, 10, and 11The basic challenge response protocols are standardized inISO/IEC 9798D. Florencio, C. Herley: “A LargeScale Study of Web Password Habits”, 2007A. Rabkin: “Personal knowledge questions for fallback authentication: Security questions in the era of Facebook”, 2008Boyd, Mathuria: Protocols for Authentication and Key Establishment, 2003
- Based on public key cryptography
- Diffie-Hellman Key Agreement
- 可用對稱式鑰匙或公鑰對公開變數授權
- Diffie-Hellman Key Agreement
- Based on symmetric keys
- 對Nonce授權
- 用Nonce或long term shared secret進行Hash產生session key
Kaufman Chapters 9, 10, and 11
The basic challenge response protocols are standardized in
ISO/IEC 9798
D. Florencio, C. Herley: “A LargeScale Study of Web Password Habits”, 2007
A. Rabkin: “Personal knowledge questions for fallback authentication: Security questions in the era of Facebook”, 2008
Boyd, Mathuria: Protocols for Authentication and Key Establishment, 2003
留言
張貼留言