[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















留言
張貼留言