国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

DNSSEC原理、配置與部署

2011-11-09 06:41段海新
中國(guó)教育網(wǎng)絡(luò) 2011年6期
關(guān)鍵詞:數(shù)字簽名公鑰域名

文/段海新

DNSSEC原理、配置與部署

文/段海新

DNSSEC是為解決DNS欺騙和緩存污染而設(shè)計(jì)的一種安全機(jī)制。本文概要介紹DNSSEC的背景、工作原理以及在BIND上的配置,最后介紹它在國(guó)際上的部署情況和可能對(duì)互聯(lián)網(wǎng)安全機(jī)制的影響。本刊將分兩期刊載。

DNSSEC的背景和目的

域名系統(tǒng)(Domain Name System,DNS)是一些“太單純、太幼稚”的互聯(lián)網(wǎng)先驅(qū)者設(shè)計(jì)的,它像互聯(lián)網(wǎng)的其他協(xié)議或系統(tǒng)一樣,在一個(gè)可信的、純凈的環(huán)境里可以運(yùn)行得很好。但是今天的互聯(lián)網(wǎng)環(huán)境異常復(fù)雜,充斥著各種欺詐、攻擊,DNS協(xié)議的脆弱性也就浮出水面。對(duì)DNS的攻擊可能導(dǎo)致互聯(lián)網(wǎng)大面積的癱瘓,這種事件在國(guó)內(nèi)外都屢見(jiàn)不鮮。

DNS作為互聯(lián)網(wǎng)最重要的基礎(chǔ)設(shè)施之一,它的安全問(wèn)題一直被互聯(lián)網(wǎng)研究和工程領(lǐng)域廣為關(guān)注,但是有一種普遍存在的攻擊卻始終沒(méi)有解決,即DNS的欺騙和緩存污染問(wèn)題。DNS安全擴(kuò)展(DNS Security Extension, 即DNSSEC)主要是為了解決這一問(wèn)題而提出的。因此,在介紹DNSSEC的原理之前有必要簡(jiǎn)單介紹DNS欺騙和緩存污染攻擊的原理。

DNS欺騙攻擊和緩存污染

用戶在用域名訪問(wèn)某一個(gè)網(wǎng)站時(shí),用戶的計(jì)算機(jī)一般會(huì)通過(guò)一個(gè)域名解析服務(wù)器(Resolver Server,也稱遞歸服務(wù)器(Recursive Server))把域名轉(zhuǎn)換成IP地址。解析服務(wù)器一般需要查詢根域名服務(wù)器(root)、頂級(jí)域名服務(wù)器(TLD)、 權(quán)威域名服務(wù)器(Authoritative Server),通過(guò)遞歸查詢的方式最終獲得目標(biāo)服務(wù)器的IP地址,然后交給用戶的計(jì)算機(jī)(如圖1所示)。

在上述任何一個(gè)請(qǐng)求/應(yīng)答的過(guò)程中,攻擊者都可以假冒應(yīng)答方(根、頂級(jí)域、權(quán)威域或解析服務(wù)器)給請(qǐng)求方發(fā)送一個(gè)偽造的響應(yīng),其中包含一個(gè)錯(cuò)誤的IP地址。發(fā)送請(qǐng)求的用戶計(jì)算機(jī)或者解析服務(wù)器很天真地接受了偽造的應(yīng)答,導(dǎo)致用戶無(wú)法訪問(wèn)正常網(wǎng)站,甚至可以把IP重定向到一個(gè)偽造的網(wǎng)站上去。由于正常的DNS解析使用UDP協(xié)議而不是TCP協(xié)議,偽造DNS的響應(yīng)報(bào)文比較容易。如果攻擊者可以監(jiān)聽(tīng)上述過(guò)程中的任何一個(gè)通信鏈路,這種攻擊就易如反掌。

更加糟糕的是,由于DNS緩存(Cache)的作用,這種錯(cuò)誤的記錄可以存在相當(dāng)一段時(shí)間(比如幾個(gè)小時(shí)甚至幾天),期間所有使用該域名解析服務(wù)器的用戶都無(wú)法訪問(wèn)真正的服務(wù)器。

DNSSEC的目標(biāo)、歷史和意義

上述攻擊能夠成功的原因是DNS 解析的請(qǐng)求者無(wú)法驗(yàn)證它所收到應(yīng)答信息的真實(shí)性。DNSSEC給解析服務(wù)器提供了防止受騙的武器,即一種可以驗(yàn)證應(yīng)答信息真實(shí)性和完整性的機(jī)制。利用密碼技術(shù),域名解析服務(wù)器可以驗(yàn)證它所收到的應(yīng)答(包括域名不存在的應(yīng)答)是否來(lái)自于真實(shí)的服務(wù)器,或者是否在傳輸過(guò)程中被篡改過(guò)。

盡管從原理上來(lái)說(shuō)DNSSEC并不復(fù)雜,但是從1997年第一個(gè)有關(guān)DNSSEC的標(biāo)準(zhǔn)RFC 2065發(fā)布至今已經(jīng)十多年了,直到最近一兩年才有了一定的進(jìn)展。1999年IETF對(duì)DNSSEC標(biāo)準(zhǔn)進(jìn)行了修訂,并推出RFC 2535,但這次修訂很快被證明是失敗的。直到2005年,一個(gè)可用的DNSSEC標(biāo)準(zhǔn)才制定出來(lái)RFC 4033-4035,目前主流域名服務(wù)軟件(如BIND )實(shí)現(xiàn)的也是這一版本。2008年,IETF又發(fā)布了一個(gè)NSEC3 RFC5155標(biāo)準(zhǔn),以提高DNSSEC隱私保護(hù)能力。 隨著DNSSEC的推廣,也許還會(huì)有一些新的問(wèn)題和新的修訂,DNSSEC標(biāo)準(zhǔn)仍在發(fā)展過(guò)程中。

盡管DNSSEC的目標(biāo)僅限于此(即不保護(hù)DNS信息的保密性和服務(wù)的可用性),但是DNSSEC的成功部署對(duì)互聯(lián)網(wǎng)的安全還有其他好處,比如提高電子郵件系統(tǒng)的安全性,甚至可以把DNS作為一個(gè)公鑰基礎(chǔ)設(shè)施(PKI)。

本文所介紹的DNSSEC工作原理基于RFC 4033-4035,關(guān)于DNS工作原理、配置和數(shù)字簽名技術(shù)超出了本文的范圍,感興趣的讀者可以參考。

DNSSEC原理

簡(jiǎn)單的說(shuō),DNSSEC依靠數(shù)字簽名保證DNS應(yīng)答報(bào)文的真實(shí)性和完整性。權(quán)威域名服務(wù)器用自己的私有密鑰對(duì)資源記錄(Resource Record, RR)進(jìn)行簽名,解析服務(wù)器用權(quán)威服務(wù)器的公開(kāi)密鑰對(duì)收到的應(yīng)答信息進(jìn)行驗(yàn)證。如果驗(yàn)證失敗,表明這一報(bào)文可能是假冒的,或者在傳輸過(guò)程、緩存過(guò)程中被篡改了。 RFC 4033概要介紹了DNSSEC所提供的安全功能并詳細(xì)介紹了相關(guān)的概念,下面通過(guò)一個(gè)簡(jiǎn)化的實(shí)例介紹DNSSEC的工作原理 。

如圖2所示,一個(gè)支持DNSSEC的解析服務(wù)器(RFC4033中Security-Aware Resolver)向支持DNSSEC的權(quán)威域名服務(wù)器(Security-Aware Name Server)請(qǐng)求域名www.test.net.時(shí),它除了得到一個(gè)標(biāo)準(zhǔn)的A記錄(IP地址)以外,還收到一個(gè)同名的RRSIG記錄,其中包含test.net這個(gè)授權(quán)域的數(shù)字簽名,它是用test.net.的私有密鑰來(lái)簽名的。為了驗(yàn)證這一簽名的正確性,解析服務(wù)器可以再次向test.net的域名服務(wù)器查詢響應(yīng)的公開(kāi)密鑰,即DNSKEY資源記錄。然后解析服務(wù)器就可以用其中的公鑰驗(yàn)證上述記錄的真實(shí)性與完整性。

解析服務(wù)器如何保證它所獲得的test.net.返回的公開(kāi)密鑰(DNSKEY記錄)是真實(shí)的而不是假冒的呢?盡管test.net.在返回公開(kāi)密鑰記錄的同時(shí),也返回對(duì)這個(gè)公鑰的數(shù)字簽名,但是,攻擊者同樣可以同時(shí)偽造公開(kāi)密鑰和數(shù)字簽名兩個(gè)記錄而不被解析者發(fā)現(xiàn)。

與基于X509的PKI體系一樣,DNSSEC也需要一個(gè)信任鏈,必須有一個(gè)或多個(gè)開(kāi)始就信任的公鑰(或公鑰的散列值),在RFC 4033中稱這些初始信任的公開(kāi)密鑰或散列值為“信任錨(Trust anchors)”。信任鏈中的上一個(gè)節(jié)點(diǎn)為下一個(gè)節(jié)點(diǎn)的公鑰散列值進(jìn)行數(shù)字簽名,從而保證信任鏈中的每一個(gè)公鑰都是真實(shí)的。理想的情況下(DNSSEC全部部署),每個(gè)解析服務(wù)器只需要保留根域名的服務(wù)器的DNSKEY就可以了。

在上面的例子中,假設(shè)解析服務(wù)器開(kāi)始并不信任test.net.的公開(kāi)密鑰, 它可以到test.net.的上一級(jí)域名服務(wù)器net.那里查詢test.net.的DS(Delegation Signer, 即DS RR)記錄,DS RR中存儲(chǔ)的是test.net. 公鑰的散列值(比如用MD5算法計(jì)算得到的128比特?cái)?shù)據(jù),再用base64編碼得到的一個(gè)字符串)。假設(shè)解析服務(wù)器由管理員手工配置了.net的公鑰(即Trust Anchor),它就可以驗(yàn)證test.net.公鑰(DNSKEY)的正確與否了。

DNSSEC的資源記錄

為了實(shí)現(xiàn)資源記錄的簽名和驗(yàn)證,D N S S E C增加了四種類型的資源記錄:RRSIG(Resource Record Signature)、DNSKEY(DNS Public Key)、DS(Delegation Signer)、NSEC(Next Secure)。前三種記錄已經(jīng)在上面的實(shí)例中提到了,NSEC記錄是為響應(yīng)某個(gè)資源記錄不存在而設(shè)計(jì)的。具體的說(shuō)明參見(jiàn)RFC 4034,本文概要介紹如下。

DNSKEY記錄

DNSKEY資源記錄存儲(chǔ)的是公開(kāi)密鑰,下面是一個(gè)DNSKEY的資源記錄的例子:

其中256是標(biāo)志字段(flag),它是一個(gè)16比特的數(shù),如果第7位(左起為第0位。這一位是區(qū)密鑰(Zone Key)標(biāo)志, 記為ZK)為1,則表明它是一個(gè)區(qū)密鑰,該密鑰可以用于簽名數(shù)據(jù)的驗(yàn)證,而且資源記錄的所有者(example.com.)必須是區(qū)的名字。第十五稱為安全入口點(diǎn)(Security Entry Point,SEP)標(biāo)志,將在下面介紹。

下一個(gè)字段“3”是協(xié)議(protocol)字段,它的值必須是3,表示這是一個(gè)DNSKEY,這是為了與以前版本DNSSEC兼容而保留下來(lái)的。其他的值不能用于DNSSEC簽名的驗(yàn)證。

下一個(gè)字段“5”是算法(Algorithm)字段,標(biāo)識(shí)簽名所使用的算法的種類。其中常用的幾種:1:RSA/MD5; 3:DSA/SHA-1; 5 RSA/SHA-1。

最后括號(hào)中的是公開(kāi)密鑰(Public Key)字段,它的格式依賴于算法字段。

在實(shí)踐中,權(quán)威域的管理員通常用兩個(gè)密鑰配合完成對(duì)區(qū)數(shù)據(jù)的簽名。一個(gè)是Zone-Signing Key(ZSK),另一個(gè)是Key-Signing Key(KSK)。ZSK用于簽名區(qū)數(shù)據(jù),而KSK用于對(duì)ZSK進(jìn)行簽名。這樣做的好處有二:

(1)KSK的密鑰簽名的數(shù)據(jù)量很少,被破解(即找出對(duì)應(yīng)的私鑰)概率很小,因此可以設(shè)置很長(zhǎng)的生存期。這個(gè)密鑰的散列值作為DS記錄存儲(chǔ)在上一級(jí)域名服務(wù)器中而且需要它的數(shù)字簽名,較長(zhǎng)的生命周期可以減少密鑰更新的工作量。

(2)ZSK簽名的數(shù)據(jù)量比較大,因而破解的概率較大,其生存期應(yīng)該小一些。因?yàn)橛辛薑SK的存在,ZSK可以不必放到上一級(jí)的域名服務(wù)中,減少了管理的開(kāi)銷(xiāo)。

RRSIG記錄

為保證模擬結(jié)果的可靠性,對(duì)光滑管從0.5~2.0m/s的入口流速進(jìn)行模擬,由于研究流體為無(wú)相變流體在光滑管管內(nèi)作強(qiáng)制流動(dòng),可將模擬得到的摩擦系數(shù)fA與Blasius公式計(jì)算理論值對(duì)比[9],從而判定模擬結(jié)果的可靠性。結(jié)果如表2所示。

RRSIG資源記錄存儲(chǔ)的是對(duì)資源記錄集合(RRSets)的數(shù)字簽名。下面是對(duì)一個(gè)A記錄簽名后得到的RRSIG記錄:

從第五個(gè)字段(“A”)開(kāi)始各字段的含義如下:

類型覆蓋(The Type Covered Field):表示這個(gè)簽名覆蓋什么類型的資源記錄,本例中是A。

算法:數(shù)字簽名算法,同DNSKEY記錄的算法字段;本例中5表示RSA/SHA-1。

標(biāo)簽數(shù)量(The Labels Field):被簽名的資源域名記錄所有者(host.example.com.)中的標(biāo)簽數(shù)量,如本例中為3,*.example.com.為2,“.”的標(biāo)簽數(shù)量為0。

接下來(lái)的幾個(gè)字段分別是被簽名記錄的TTL、有效期結(jié)束時(shí)間、開(kāi)始時(shí)間。

2642是密鑰標(biāo)簽(Key Tag),它是用對(duì)應(yīng)公鑰數(shù)據(jù)簡(jiǎn)單疊加得到的一個(gè)16比特整數(shù)。如果一個(gè)域有多個(gè)密鑰時(shí)(如一個(gè)KSK、一個(gè)ZSK),Key Tag可以和后面的簽名者字段(example.com.)共同確定究竟使用哪個(gè)公鑰來(lái)驗(yàn)證簽名。

DS(Delegation Signer)記錄存儲(chǔ)DNSKEY的散列值,用于驗(yàn)證DNSKEY的真實(shí)性,從而建立一個(gè)信任鏈。不過(guò),與DNSKEY存儲(chǔ)在資源記錄所有者所在的權(quán)威域的區(qū)文件中不同,DS記錄存儲(chǔ)在上級(jí)域名服務(wù)器(Delegation)中,比如example.com的DS RR存儲(chǔ)在.com的區(qū)中。

下面是一個(gè)DS記錄的實(shí)例:

DS 之后的字段依次是密鑰標(biāo)簽(Key Tag)、算法和散列算法(1代表 SHA-1)。后面括號(hào)內(nèi)的內(nèi)容是dskey.example.com.密鑰SHA-1計(jì)算結(jié)果的16進(jìn)制表示。Example.com必須為這個(gè)記錄數(shù)字簽名,以證實(shí)這個(gè)DNSKEY的真實(shí)性。

NSEC記錄

NSEC記錄是為了應(yīng)答那些不存在的資源記錄而設(shè)計(jì)的。為了保證私有密鑰的安全性和服務(wù)器的性能,所有的簽名記錄都是事先(甚至離線)生成的。服務(wù)器顯然不能為所有不存在的記錄事先生成一個(gè)公共的“不存在”的簽名記錄,因?yàn)檫@一記錄可以被重放(Replay);更不可能為每一個(gè)不存在的記錄生成獨(dú)立的簽名,因?yàn)樗恢烙脩魧?huì)請(qǐng)求怎樣的記錄。

在區(qū)數(shù)據(jù)簽名時(shí),NSEC記錄會(huì)自動(dòng)生成。比如在vpn.test.net和xyz.test.net之間會(huì)插入下面的這樣兩條記錄:

其中NSEC記錄包括兩項(xiàng)內(nèi)容:排序后的下一個(gè)資源記錄的名稱(xyz.test.net.)以及vpn.test.net.這一名稱所有的資源記錄類型(A、RRSIG、NSEC),后面的RRSIG記錄是對(duì)這個(gè)NSEC記錄的數(shù)字簽名。

在用戶請(qǐng)求的某個(gè)域名在vpn和xyz之間時(shí),如www.test.net.,服務(wù)器會(huì)返回域名不存在,并同時(shí)包括 vpn.test.net的NSEC記錄。

DNSSEC對(duì)現(xiàn)有DNS協(xié)議的修改

由于新增DNS資源記錄的尺寸問(wèn)題,支持D N S S E C的域名服務(wù)器必須支持EDNS0(RFC2671),即允許DNS報(bào)文大小必須達(dá)到1220字節(jié)(而不是最初的512字節(jié)),甚至可以是4096字節(jié)。

DNSSEC在報(bào)文頭中增加了三個(gè)標(biāo)志位:

(1)DO(DNSSEC OK, 參見(jiàn)RFC3225):支持DNSSEC的解析服務(wù)器在它的DNS查詢報(bào)文中,必須把DO標(biāo)志位置1,否則權(quán)威域服務(wù)器認(rèn)為解析器不支持DNSSEC就不會(huì)返回RRSIG等記錄。

(2)AD (Authentic Data):AD是認(rèn)證數(shù)據(jù)標(biāo)志,如果服務(wù)器驗(yàn)證了DNSSEC相關(guān)的數(shù)字簽名,則置AD位為1,否則為0。這一標(biāo)志位一般用于自己不做驗(yàn)證的解析器(non-validating security-aware resolvers)和它所信任的遞歸解析服務(wù)器(securityaware recursive name server)之間,用戶計(jì)算機(jī)上的解析器自己不去驗(yàn)證數(shù)字簽名,遞歸服務(wù)器給它一個(gè)AD標(biāo)志為1的響應(yīng),它就接受驗(yàn)證結(jié)果。這種場(chǎng)景只有在它們之間的通信鏈路比較安全的情況下才安全,比如使用了IPSEC和TSIG。

(3)CD (Checking Disabled): 關(guān)閉檢查標(biāo)志位用于支持DNSSEC驗(yàn)證功能的解析器(validating security-aware resolver)和遞歸域名服務(wù)器之間,解析器在發(fā)送請(qǐng)求時(shí)把CD位置1,服務(wù)器就不再進(jìn)行數(shù)字簽名的驗(yàn)證而把遞歸查詢得到的結(jié)果直接交給解析器,由解析器自己驗(yàn)證簽名的合法性。

最后,支持驗(yàn)證的DNSSEC 解析器對(duì)它所收到的資源記錄的簽名(RRSIG),必須能夠區(qū)分以下四種結(jié)果:

(1)安全的(secure):解析器能夠建立到達(dá)資源記錄簽名者的信任鏈,并且可以驗(yàn)證數(shù)字簽名的結(jié)果是正確的。

(2)不安全的(insecure):解析器收到了一個(gè)資源記錄和它的簽名,但是它沒(méi)有到達(dá)簽名者的信任鏈,因而無(wú)法驗(yàn)證。

(3)偽造的(Bogus):解析器有一個(gè)到資源記錄簽名者的信任鏈,但是簽名驗(yàn)證是錯(cuò)的??赡苁且?yàn)槭艿焦袅?,也可能是管理員配置錯(cuò)誤。

(4)不確定(Indeterminate):解析器無(wú)法獲得足夠的DNSSEC 資源記錄,因而不能確定用戶所請(qǐng)求的資源記錄是否應(yīng)該簽名。(待續(xù))

(作者單位為清華大學(xué)信息網(wǎng)絡(luò)工程研究中心)

猜你喜歡
數(shù)字簽名公鑰域名
基于正交拉丁方理論的數(shù)字簽名分組批量驗(yàn)證
交通運(yùn)輸行業(yè)數(shù)字簽名系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)分析
淺析計(jì)算機(jī)安全防護(hù)中數(shù)字簽名技術(shù)的應(yīng)用
Combosquatting域名搶注的測(cè)量研究
一種基于混沌的公鑰加密方案
神奇的公鑰密碼
如何購(gòu)買(mǎi)WordPress網(wǎng)站域名及綁定域名
P2X7 receptor antagonism in amyotrophic lateral sclerosis
掌握方法用好數(shù)字簽名
破解HFEM公鑰密碼方案