國際網路

有關ICANN root server KSK rollover 近況說明

今天我們要來聊一下ICANN root server KSK rollover,這是一個牽涉到整個Internet安全及穩定的重大議題,不過在進入這個議題之前我們先談一下DNS及DNSSEC,因為KSK是架構在DNS及DNSSEC的基礎上,沒有這些基礎就不會有KSK這個議題。

DNS運作架構

DNS伺服器主要分為兩種,權威伺服器(Authoritative Server),例如.TW或各單位如台大ntu.edu.tw這個網域名稱的DNS伺服器,裡面放有ntu.edu.tw的zone file。另一類是快取伺服器(Cache Server),例如中華電信的168.95.1.1或Google的8.8.8.8,會將查詢過的Domain Name給cache起來以提供下次有人要查相同資料時可以快速回應,如果快取伺服器中沒有的資料或是資料的時間已超過TTL(Time To Live)就會出去查詢。

什麼是DNSSEC

DNSSEC(DNS Security Extensions)是DNS資料的安全認證機制,利用非對稱金鑰的技術對DNS資料進行簽章,DNSSEC是一種往下相容現有DNS協定的方式,任何DNS的查詢/回覆/錯誤/流程沒有任何改變,只是在DNSSEC模式下額外提供資料進行驗證的機制。DNSSEC的機制中有兩種非對稱金鑰,KSK(Key Signing Key)和ZSK(Zone Signing Key),這兩種KEY的目的不同,從他們的名稱就可以很明顯看得出來,ZSK是用來針對zone file內容進行簽章,KSK僅用來對ZSK簽章,這樣區分的方式有很大的好處,因為DNSSEC是由root DNS一層一層往下驗證下來的,所以任一層KEY的更換都要通知上一層進行指向調整,分成KSK和ZSK之後,只有KSK更換需要調整上一層DNS的DS(Delegation Signer),ZSK的更換只要KSK對ZSK重新作一次簽章就可以了。

DNSSEC Key rollover

不管是ZSK或KSK的更換(rollover)都有一定的步驟,無法直接更換,因為Cache Server可能已經cache舊的KEY了,當查到新的KEY簽出來的簽章資料就會驗證不通過。所以rollover大致上會有下列幾個步驟,步驟1:在DNS中公布新的KEY,步驟2:同時使用新的及舊的KEY簽章,步驟3:僅使用新的KEY簽章,步驟4:將舊的KEY自DNS中移除。關鍵在步驟2,這時不管Cache server中的KEY是新的或是舊的,都可以順利驗證成功,而KSK rollover就是利用這段時間至上一層DNS更換DS。每一個步驟都要維持一定的時間,例如步驟2更換DS完成後不能直接進入步驟3,因為有些Cache Server已經cache住舊的DS了,所以一般會維持原本TTL兩倍的時間之後才會進入下一個步驟以確保所有Cache Server中的資料中都已經是新的了。而這次root DNS的KSK rollover可能會牽涉到部份的人工作業,所以新舊KSK併存的時間長達數個月。

什麼人會受影響?

如前述是Cache Server作DNSSEC驗證,所以如果你是Cache DNS server的管理者又啟用DNSSEC驗證的話,那你就要注意這次的KSK更換。其實在DNSSEC的標準制定過程中已經有考慮到root server的KSK rollover,在RFC5011 Automated Updates of DNS Security (DNSSEC) Trust Anchors已經有定義DNS server如何進行root DNS KSK rollover,以常用的DNS軟體BIND來說要在9.7(含)以上才有支援DNSSEC,同時也有支援RFC5011,但要完整支援且能自動更換新的KSK要到9.9(含)以上,所以如果你啟用DNSSEC的Cache Server BIND版本是9.7或9.8的話,就要注意這次的root DNS KSK rollover。如果版本是9.6(含)以下的,因為不支援DNSSEC,所以不受影響。

我受影響了,我要怎麼調整

首先在更新前要提醒你二件很重要的事,(1)備份舊設定檔資料,(2)root DNS新的KSK目前還沒生效,新下載的設定檔中有包含新舊兩把KSK,請直接取代原本的設定檔,不要去動新設定檔裡面的內容。

步驟1:更換root DNS KSK設定檔

請至https://ftp.isc.org/isc/bind9/keys/9.11/bind.keys.v9_11下載,這個檔是BIND設定檔格式,可以直接替換原本的設定檔。

至於要被替換的設定檔依不同的作業系統可能位置不一樣,RedHat 6或CentOS 6可能是在/etc/named.root.key,RedHat 7或CentOS 7可能是在/etc/trusted-key.key,Debian或Ubuntu可能是在/etc/bind/bind.keys。如果到找不到,請從named.conf及所有的include檔去找。找到後請用剛下載的檔案取代原本的設定檔。

步驟2:載入新的設定檔

請使用指令rndc reconfig重新載入設定檔,這樣新的設定才會生效。

時程表

root DNS KSK rollover是一個連續作業,而不是單一事件,預計將在2018年3月完成。新的公鑰已於2017年3月發佈在http://data.iana.org/root-anchors/。下面是切換過程中的一些時間點。請注意,由於操作考慮,這些日期可能會更改,事實上你在ICANN網站也會看到不同版本的時間表,下列的時間已依ICANN最新發布的時間作調整:

2016年10月:在ICANN的HSM(hardware Security Module)設備中生成新的KSK
2017年3月:在IANA網站上發布新的KSK
2017年7月:在root DNS中發布新的KSK
2017年10月:新舊兩把KSK同時使用
2018年1月:撤銷舊的KSK,僅用新的KSK
2018年3月:從DNS中移除舊的KSK並完成KSK切換過程
2018年8月:從HSM設備中移除舊的KSK

如果root DNS KSK rollover過程中有任何問題或預知下一階段可能導致問題,上述的時間點就會作調整以維持Internet穩定性,因此在整個程序完前請持續關注本中心網站以了解root DNS KSK rollover的發展。

財團法人台灣網路資訊中心,100臺北市羅斯福路二段9號4樓之2
TEL:886-2-23411313,FAX:886-2-2396-8832,版權聲明,禁止未經授權轉貼節錄