Authentication System

authentication(認證):用來確認通訊夥伴不是冒牌貨的技術
根據共享秘密鍵值認證
以c/r(challenge-response,挑戰回應)為主的系統
ex: LM(windows lan manager),chap,mschap,kdc,kerberos
架構如下:
 1,a向b傳一訊息
 2,b挑戰a,即將一亂數傳給a
 3,a用ab共享key將此亂數加密在傳給b,當b看到即確定對方是a
 4,a挑戰b,即將一亂數傳給b
 5,b用ab共享key將此亂數加密在傳給a,當a看到即確定對方是b
可防replay attack
可能被reflection attack(反射攻擊)擊敗,但可用HMAC解決
和陌生人交換鑰匙的方法可用diffie-hellman

…….

NTLM(nt lan manager)
微軟專屬,使用挑戰回應,單向認證,只允許伺服器對用戶進行身分識別,驗證速度較慢,不能跨網路驗證

attributeLMNTLM v1NTLM v2
password case sensitivenoyesyes
hash key length56bit+56bit  
password hash algorithmdes(ecb mode)md4md4
hash value length64bit+64bit128bit128bit
C/R key length56bit+56bit+16bit56bit+56bit+16bit128bit
C/R algorithmdes(ecb mode)des(ecb mode)hmac_md5
C/R value lengh64bit+64bit+64bit64bit+64bit+64bit128bit

NTLM and LM authentication
client  —authentication request—>  server
client  <—server-challenge-nonce—  server
client  —lm response – des(lm hash,nonce)—>   server
client  —ntlm response – des(unicode pwd,nonce)—>   server
client  <–authentication result—  server

LM(LAN Manager) hash steps  
1將password轉換成uppercase
2不足14 character的password會補上空白,超過則切掉
3將password從中間切成一半,
4分別對這2半encrypted
5把這2半的hash合在一起

……….

KDC(key distribution center,鍵值散佈中心認證法)
一個集中式的使用者帳號訊息資料庫
每個使用者和kdc都有一共享的鍵值,認證和議程鍵值管理皆透過kdc進行,但可能會遭遇重傳攻擊法
運作:
 1,A,Ka(B,Ks)>kdc:a向kdc要求與b通訊,與是送出用a的key加密的議程鍵值(Ks)給kdc
 2,Kb(A,Ks)>b:kdc用a的key打開,向b送出用b的key加密的議程鍵值(Ks)給b
 3,b用b的key打開後取得議程鍵值Ks,得知a想和b通訊
使用needham-schroeder認證協定:多方挑戰回應協定,可解決重傳攻擊法,但仍有小弱點
運作:a先和kdc協商要和b通訊後,a在和b進行挑戰回應等協商
使用otway-ress認證協定:needham-schroeder修改版,可解決小弱點
運作:a先傳一訊息給b,b在和kdc互相協商後,kdc在和a協商

………

用Kerberos進行認證
從needham-schroeder改變而來

kerberos4
MIT的athena計畫,讓有授權使用者在工作站可存取網路伺服端提供的服務(認證系統)
將認證的工作集中在一台特定的伺服器
較常用在distributed architecture(分散式架構)
使用傳統加密法來進行認證程序,加密法用非標準DES,傳導式密文區段串接模式PCBC提供確認性服務
AS(認證伺服端):將密碼儲存在集中式資料庫,減輕伺服端提供服務負擔,類似kdc
TGS(門票核准伺服端):將ticket(門票)發給被AS確認過的使用者,當要存取新服務時便用門票向TGS證明自己身份
門票最大壽命1280分鐘
領域:由Kerberos伺服端,多客戶端,多應用伺服器組成,不同領域可藉由tgs互通
運作方式:
 1.a會將名字傳給as,as會送回用a的key加密的議程鍵值(Ks)和tgs許可證(Ktgs(A,Ks))
 2.a收到後用a的key解開,取得議程鍵值(Ks)和tgs許可證(Ktgs(A,Ks))
 3,a向tgs要使用b伺服器的許可證,並用tgs許可證(Ktgs(A,Ks))証明是a
 4,tgs會給a二個可用來讓a及b伺服器溝通的議程鍵值Kab,一個只有a能開(Ks(B,Kab)),另一個只有b伺服器能開(Kb(A,Kab))
 5.a收到後將議程鍵值(Kb(A,Kab))給b伺服器並回應後,a和b伺服器即可溝通
 6,a若要和其他伺服器溝通只需在向tgs要與其他伺服器溝通的許可證即可

Kerberos5(解決第4版缺失)
為IETF的公開標準
可使用任何加密法
使用ASN.1和BER定義所有訊息結構
門票壽命不限
ps:
Windows 2000 Server後之Server,是根據RFC 1510實作Kerberos協定 

ps:
微軟的kerberos使用tcp/udp88

……………

802.1x 使用者認證
802.1x驗證和802.11驗證程序是獨立分開的。 802.1x標準為各種驗證和金鑰管理通訊協定提供架構
2001七月IEEE核可,目前無線網路上最理想的身分認證與密鑰管理協定
定義了連接埠架構式的網路存取控制

IEEE選擇了EAP(Extensible Authentication Protocol,可延伸驗證通訊協定)做為標準驗證機制
EAP是一種PPP點對點通訊協定架構的驗證技術,通常使用於點對點LAN 區段上
定義了EAPOL(EAP over LAN,LAN上的 EAP),這是一種封裝EAP訊息以便在Ethernet或無線LAN區段上傳送的方法

能將無法通過認證的使用者隔絕於網路之外,使其無法利用任何網路資源
以埠為基礎的認證機制,可結合後端RADIUS認證伺服器確認使用者身分
可避免Man-in-the-Middle(綁架攻擊)
利用動態WEP加密機制解決原本靜態WEP的問題

架構:
-Authenticator:AP(無線存取點)上的邏輯LAN連接埠,要求並且接受未受信任端網路節點的認證請求的實體。
-Supplicant:無線LAN網卡要求存取有線網路的邏輯LAN連接埠,並且需接受 Authenticator的認證稽核。
-PAE(Port Access Entity,連接埠存取實體):具有存取埠的一個實體,具有Authenticator, Supplicant或兩者的功能。
-Authentication Server:對Authenticator供身分認證服務的實體,可能與Authenticator存在同一主機內,但大多數的狀況下是一台獨立的伺服器。

功能:
802.1x 請求者通訊協定支援
EAP(可延伸驗證通訊協定)的支援 – RFC 2284

受支援的驗證方法:
MD5 – RFC2284,僅由認證伺服器認證無線網路使用者,使用者無法認證對方
EAP-TLS:RFC2716,RFC2246,windowsxp用,目前802.1x中以憑證為基礎的認證機制,能夠提供雙向認證機制
EAP-TTLS
Cisco LEAP(無線可輕微延伸的驗證通訊協定)
PEAP(保護的EAP)
EAP-SIM,EAP-FAST
支援Microsoft Windows XP、Microsoft Windows 2000

…………….

RADIUS(Remote Authentication Dial-in User Service,遠端認證撥接使用者服務)
許多ISP所使用的認證與記帳系統,撥入ISP的名稱和密碼會被傳到RADIUS伺服器,查看資訊是否正確,並授權ISP系統的存取
微軟EAP(extensible authentication protocol,可延伸驗證通訊協定)的實作

主要是負責AAA(authentication, authorization and accountng)的工作,如下
Authentication(驗證階段):根據本機資料庫驗證使用者名稱和密碼。驗證身份後,授權程序就會開始。
authorization(授權階段):決定是否允許某個存取資源的要求。IP 位址會被指派給 “撥號” 用戶端。
accounting(會計階段):為了趨勢分析、審核、階段時間記帳、或成本配置收集的資源使用資訊。

UDP上層協議,認証服務埠1812,記費服務埠1813
支援很多不同的用戶驗證機制:LDAP,chap,pap等
支援VSA(vendor specify attribute),即可定義廠商專用Attributes

RADIUS數據包的結構包括
Code:類型
ID:區分不同的訊息
Length:radius數據包長度
Authenticator:MD5加密使用的字符串
Attributes:具體內容,含type(Attribute具體含義)length(type長度)value(type的值)

… 

TACACS+(Terminal Access Controller Access Control System+)
前身是TACACS屬RFC 1492
具有AAA(Authentication、Authorization、Accounting)架構
一種安全控管的協定,負責控管安全的伺服器與網路設備間溝通存取控制的資訊。
當遠端使用者想要透過網路使用公司內部的資源時,必須先經過安全伺服器的檢查與放行後,才能夠在網路上取得被授權的資源

…………….

PAP(Password Authentication Protocol,密碼驗證通訊協定)
2way handshake,由客戶端提出
PAP是個不嚴謹的驗證協定,密碼是明碼,所以被竊取的機會很高
對於playback(播放)或trial-and-error(重複嘗試錯誤)攻擊無法防範,使得遠端節點易處於頻繁與定時登入攻擊控制之下
只運作一次,在初始連線時
運作過程:
1遠端使用者會重複的送出他的HOST NAME及密碼給你的ROUTER,直到被接受或者是斷線
2如果符合,你的ROUTER就會送出接受的回應

CHAP(challenge handshake authentication protocol,盤問交握式驗證協定)
3way handshake,由伺服端提出,
使用md5不可逆轉加密文字,可防止重送攻擊
會運作多次,在初始連線時和連線中會隨機向客戶端送出challenge(挑戰指令)驗證以避免第三者冒充客戶端
運作過程:
1你的ROUTER會先送個CHALLENGE信號給你
2收到這信號時,會用收到的CHALLENGE訊息跟你的密碼做HASH演算,然後回應出去
3目的端收到後,ROUTER再拿收到的訊息和他自己計算出來的結果做比對,然後再回應接受或拒絕

MS-CHAP
微軟遠端驗證用但並非每種ppp都支援,但對pptp有附加好處,使用MD4,和chap差不多
MS-CHAPv2
更安全的驗證

……………………….. 

拋棄式密碼系統進行認證
每一次要使用系統時便要求一個密碼
可解決被攔截,重送攻擊,繞過hash技術
RSA securID:使用硬體(卡片,密碼鍵盤)或軟體的驗證者,驗證者密碼每60秒改變一次
S/key:使用通關密語產生一次性密碼,但在傳輸資料時沒有隱密性

公共鍵值密碼法進行認證
以憑證為主的驗證
運作:
1,a向目錄伺服器取得b的公鑰
2,a用b的公鑰加密一亂數(Ra)傳給b,並向b要求通訊
3,b解開後向目錄伺服器取得a的公鑰,並將a的亂數(Ra)和b亂數(Rb)及議程鍵值(Ks)用a的公鑰加密在傳給a
4,a解開後看到亂數(Ra)證明對方是b,並將b的亂數(Rb)用議程鍵值(Ks)加密並傳給b
5,b解開後看到b的亂數(Rb)証明對方是a