DNSSEC─數位簽章與 EDNS0

有鑑於網路使用的安全,ICANN在2002年成立了安全與穩定諮詢委員會(The Security and Stability Advisory Committee),主導網路安全技術的發展策略與討論。並且自2006年起在每一次的ICANN會議議程中為頂級國碼域名社群安排一整天的技術日探討網路使用的安全,最近這幾年ICANN積極地推廣DNSSEC並強調DNSSEC對於網路使用安全的重要性,並籲請各頂級國碼域名的管理單位可以盡早導入DENSSEC的技術,以確保網路的使用安全,本文即在介紹DNSSEC中的兩個技術:數位簽章與EDNS0。

1.數位簽章
DNSSEC 的整個運作原理其實很簡單,說穿了,只是 DNS + 數位簽章,所以想了解 DNSSEC 之前,我們先來了解一下數位簽章的運作方式,數位簽章的運作流程如圖。

首先我們有兩台電腦(電腦A與電腦B),他們之間透過 Internet 來傳遞資料,而電腦A與B之間如何知道資料一定是來自對方呢?首先電腦A產生了一對鑰匙,一對有兩把鑰匙,一把稱為 private key(私有鑰匙),另一把是 public key(公有鑰匙),私有鑰匙是不對外公開的,沒有任何人可以取得這把鑰匙,而公有鑰匙則相反,所有人都可以取得。而這兩把鑰匙有一個特性,就是私有鑰匙所加密後的資料,只有公有鑰匙能開,亦反之。如果用公有鑰匙加密的資料,公有鑰匙本身也無法開啟。

當電腦A要傳遞訊息給B時(如圖虛線以上),他會對要傳遞資料作簽署的動作,先將原始資料作雜湊演算法,再把得到的雜湊值用私有鑰匙作加密,會產生另一筆資料叫『數位簽章』,在此並不是對原始資料作加密,而是產生新的加密資料出來,這裡不要搞混喔,這時資料就可以傳遞給 B 電腦了,傳遞時會把數位簽章及原始資料一同傳遞過去,所以B 電腦會取得兩份資料,這時 B 電腦就要開始作驗證動作了。

B 電腦接收到資料後(如圖虛線以下),若是不支援數位簽章的驗證,則他還是可以取得原始的資料,而電腦 B 要進行驗證的時候,會先去 A 電腦取得公有鑰匙,接者把原始資料作雜湊演算法的動作,得到雜湊值,並且把數位簽章用公有鑰匙解開,得到電腦A的雜湊值,比對兩個雜湊值是否一樣,就可驗證來源是否為A電腦。

當資料被竄改時,B電腦所取得的雜湊值就會不一樣,如此達到資料驗證的效果。如果B電腦想要傳資料給A電腦,則可以用相反地公有鑰匙作加密,就只有A電腦可以打得開喔!

2.DNSSEC 跟數位簽章有什麼關係?
所以 DNSSEC 是什麼呢?也就是在 DNS Server 產生一對鑰匙,將所有的 DNS 資料都用私有鑰匙做『數位簽章』,當解析器查詢 DNS 資料的時候,就利用公開鑰匙來進行驗證,以確保資料是正確的,但並不是當資料要傳出去的時候才進行做加密,這樣對 DNS 的回應時間來說可能會延遲喔,所以在產生 zone file 的時候就已經把數位簽章資料都完成了,才由 DNS伺服器載入這些資料。

DNSSEC 的查詢模式依舊是原來 DNS 的查詢方法,只是在不同情況下,提供了資料驗證的方法,譬如說正確回應時的數位簽章、上下層授權的驗證、負面回應的驗證方法等,但每種資料查詢與回應的方式皆沒有改變。

3.EDNS0
傳統 DNS 傳輸是透過 UDP port 53 的封包,UDP 封包本身的限制大小是 512 bytes,在傳統的 DNS 是足夠使用的。DNSSEC 因為納入了數位簽章的功能,變成原本 UDP 的封包要包含數位簽章的資料,不敷使用。能夠解決此問題最好的方法就是使用 EDNS0,它可以將 UDP 封包擴展到 4,096 bytes 的大小,這樣的大小才能容納 DNSSEC 的資料傳輸。

EDNS0 的流程是由 DNS 用戶端發起的,當解析器可以接受 EDNS0 的封包時,就會在封包的 Additional 區段放入一個 『opt』 資訊傳遞給 Server,表示自己支援 EDNS0,而 DNS Server 收到 DNS 封包後看到 Additional 區段有『opt』 資訊,就會知道用戶端有支援 EDNS0 封包,在 Server 產生回應封包後也會在 Additional 區段加入『opt』資訊表示這是 EDNS0 封包,所以如果你有觀察 DNSSEC 的 Additional 區段,你發現回應數目會 + 1,這表示是 EDNS0 封包喔!雖然是 EDNS0 封包,可是不代表這是 DNSSEC 封包,在 EDNS0 中有一個 bit: DO 被設定為 1 的時候,才代表這是 DNSSEC 封包喔。以下是一般查詢的範例,請注意紅色資訊與 ADDITIONAL 的數目。

[haway@vhost ~]$ dig +dnssec cl. ns

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19204
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 7

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096

;; QUESTION SECTION:
;cl.                            IN      NS

;; ANSWER SECTION:
[省略]

;; ADDITIONAL SECTION:
a.nic.cl.               13825   IN      A       200.1.121.10
cl-ns.anycast.pch.net.  77489   IN      A       204.61.216.30
sns-pb.isc.org.         10788   IN      A       192.5.4.1
sns-pb.isc.org.         17272   IN      AAAA    2001:500:2e::1
sns-pb.isc.org.         10788   IN      RRSIG   A 5 3 43200 20110314233210 20110212233210 26982 isc.org. Dttbfl+C1HsnR704HjHYW5bLMJ7quX3ftrUKIoRU2y9z4FMjrEi8jkhH AXR9B1Xi0oDq7l81P33DGgunOOE9hkF04Wi4SVB3iGXCgkvMehwkfCJT XOWuBJzPFFOeVZLR3ruDMUYNJ0DuI1tj6rC6zFICA5NafhldBGoX7i5j Ujk=

sns-pb.isc.org.         17272   IN      RRSIG   AAAA 5 3 43200 20110314233210

 

歡迎參加3/28 TWNIC 2011 網際網路趨勢研討會IPv6 Workshop
IPv4位址枯竭因應與相關建議
亞太網路資訊中心 (APNIC) 處理第2階段IPv4申請之審核步驟
TWNIC 2011年新一代網際網路協定教育訓練3月課程
TWNIC 2011年度網路安全教育訓練課程預告
拒作默默無聞的無名網站─輕鬆將部落格變成個人專屬網站
TWNIC寬頻網路使用調查
台灣網路基礎建設概要
.tw域名統計調查
IP統計查詢
www server累計數量統計
全球IP位址與AS號碼每月統計表
TWNIC IPv4位址核發記錄(100年1/26~100年2/25)