版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章信息認(rèn)證技術(shù)
3.1數(shù)字簽名技術(shù)
3.2身份識(shí)別技術(shù)3.3雜湊函數(shù)和消息完整性3.4認(rèn)證模式與認(rèn)證方式
3.5認(rèn)證的具體實(shí)現(xiàn)
3.6認(rèn)證碼
3.5.2認(rèn)證方式的實(shí)際應(yīng)用
目前實(shí)用的認(rèn)證方式有S/key防止竊聽和竊取,但實(shí)現(xiàn)有困難KerberosRadiusKerberos和Radius認(rèn)證方式都是在服務(wù)器和客戶機(jī)都支持相應(yīng)的認(rèn)證方式的條件下才能使用,因而需要復(fù)雜的設(shè)置。
1.S/key認(rèn)證方式
通過(guò)監(jiān)聽TCP/IP網(wǎng)絡(luò)中信息,可以獲得用戶登錄用的帳號(hào)和口令,被截獲的用戶帳號(hào)和口令有助于發(fā)動(dòng)對(duì)系統(tǒng)的攻擊。S/key是一個(gè)一次性口令系統(tǒng),可以用來(lái)對(duì)付這種類型的攻擊行為。
S/key認(rèn)證方式的特點(diǎn)使用S/key系統(tǒng)時(shí),網(wǎng)絡(luò)中傳送的帳戶和口令只使用一次后就銷毀。用戶使用的源口令永遠(yuǎn)也不會(huì)在網(wǎng)絡(luò)上傳輸,包括登錄時(shí)或其它需要口令的情形,這樣就可以保護(hù)用戶的帳戶和口令不會(huì)因此而被竊取。S/key系統(tǒng)的機(jī)制保護(hù)的是進(jìn)行身份鑒別時(shí)的安全性,并不保證信息在傳送過(guò)程中的保密性和完整性。
使用S/key類系統(tǒng)兩方面的操作
在客戶方,必須有方法產(chǎn)生正確的一次性口令。
在服務(wù)主機(jī)方必須能夠驗(yàn)證該一次性口令的有效性,并能夠讓用戶安全地修改源口令。
S/key認(rèn)證方式說(shuō)明一般的S/key系統(tǒng)是基于一些不可逆算法的(如MD4和MD5),也就是說(shuō)這一類算法如果擁有源數(shù)據(jù),正向計(jì)算出結(jié)果速度很快。但如果沒有源數(shù)據(jù)而試圖反向計(jì)算出源數(shù)據(jù),則目前來(lái)看基本上是不可能的。
用戶如何使用S/key系統(tǒng)(一)用戶在使用S/key系統(tǒng)時(shí),在計(jì)算機(jī)上對(duì)其口令進(jìn)行初始化,由計(jì)算機(jī)保存將該源口令按照選定的算法計(jì)算N次的結(jié)果。用戶自己在客戶端必須有能夠進(jìn)行計(jì)算的程序或工具。
用戶如何使用S/key系統(tǒng)(二)計(jì)算N-1次后形成本次口令,當(dāng)本次口令送給計(jì)算機(jī)時(shí),計(jì)算機(jī)將所得的口令通過(guò)該算法計(jì)算一次,并將結(jié)果與計(jì)算機(jī)保存的上一個(gè)結(jié)果比較,若相同,則身份驗(yàn)證通過(guò),而且將本次用戶的輸入保留,作為下一次用于比較的值。用戶在下一次計(jì)算口令時(shí),自動(dòng)將計(jì)算次數(shù)減1(第二次計(jì)算N-2次)。
用戶如何使用S/key系統(tǒng)(三)監(jiān)聽者也無(wú)法從所監(jiān)聽到的口令中得到用戶的源口令,同時(shí)他所監(jiān)聽到的信息也不能作為登錄用信息。在計(jì)算機(jī)內(nèi)部也不保存用戶的源口令,達(dá)到進(jìn)一步的口令安全。
S/key系統(tǒng)的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)實(shí)現(xiàn)原理簡(jiǎn)單缺點(diǎn)會(huì)給使用帶來(lái)一點(diǎn)麻煩(如口令使用一定次數(shù)后就需重新初始化)。依賴于某種算法的不可逆性的,算法也是公開的,當(dāng)有關(guān)于這種算法可逆計(jì)算研究有了新進(jìn)展時(shí),系統(tǒng)將被迫重新選用其它更安全的算法。
三種不同的密碼形式
第一種是通常使用的Unix風(fēng)格或Kerberos密碼,稱為Unixpassword;第二種是由S/key程序產(chǎn)生,然后被keyinit程序和登陸命令接受的一次性密碼;稱為one-timepassword;第三種密碼是由專門的密碼生成程序生成的秘密密碼,稱為secretpassword。秘密密碼與unixpassword毫無(wú)關(guān)系;他們也可能是一樣的,但并不推薦使用。
S/key和秘密密碼特點(diǎn)S/key和秘密密碼不象Unixpassword需要限制在8位以內(nèi),它們可能會(huì)更長(zhǎng)。一般都使用6到7位的長(zhǎng)度。另外,S/key系統(tǒng)操作完全獨(dú)立于unixpassword系統(tǒng)。
S/key兩個(gè)重要數(shù)據(jù)一個(gè)是以seed或key出名,包含兩個(gè)字母和五個(gè)數(shù)字。其他的被叫做iterationcount,在1到100之間。
S/key密碼生成S/key通過(guò)連接“種子”(seed)和秘密密碼來(lái)生成一次性密碼,然后通過(guò)反復(fù)計(jì)算多次應(yīng)用MD4hash,再把結(jié)果變成六個(gè)英文字。這六個(gè)英文字就是你的一次性密碼。
如果用戶提供的密碼的hash值與先前的密碼相一致,那用戶就通過(guò)了認(rèn)證;每個(gè)成功的登陸確保用戶和登陸程序保持同步之后,計(jì)算的次數(shù)就不斷減少。當(dāng)反復(fù)計(jì)算的降到1時(shí),S/key必須被重新初始化
S/key系統(tǒng)中的四個(gè)程序有四個(gè)程序被包含在S/key系統(tǒng)中。密碼程序接受一個(gè)反復(fù)計(jì)算數(shù),一個(gè)種子,和一個(gè)秘密密碼,然后產(chǎn)生一個(gè)一次性密碼。Keyinit程序被用來(lái)初始化S/key,然后改變密碼,反復(fù)計(jì)算數(shù)或種子;它不是接受一個(gè)秘密密碼,就是一個(gè)反復(fù)計(jì)算數(shù),種子和一次性密碼。Keyinfo程序會(huì)檢查文件,然后打印出被調(diào)用的當(dāng)前反復(fù)計(jì)算數(shù)和種子。最后,login和su程序包含了用于認(rèn)證S/key一次性密碼的必需的邏輯性。login程序也可以不使用unix密碼。
2Kerberos認(rèn)證系統(tǒng)
(1)概述
(2)Kerberos的認(rèn)證原理(3)Kerberos的技術(shù)特點(diǎn)(4)利用windos的安全技術(shù)配置kerboros認(rèn)證
(5)Unix(FreeBSD)中的Kerberos設(shè)置Kerberos是一種計(jì)算機(jī)網(wǎng)絡(luò)認(rèn)證協(xié)議,它允許某實(shí)體在非安全網(wǎng)絡(luò)環(huán)境下通信,向另一個(gè)實(shí)體以一種安全的方式證明自己的身份。它也指由麻省理工實(shí)現(xiàn)此協(xié)議,并發(fā)布的一套免費(fèi)軟件。它的設(shè)計(jì)主要針對(duì)客戶-服務(wù)器模型,并提供了一系列交互認(rèn)證-用戶和服務(wù)器都能驗(yàn)證對(duì)方的身份。Kerberos協(xié)議可以保護(hù)網(wǎng)絡(luò)實(shí)體免受竊聽和重復(fù)攻擊。Kerberos協(xié)議基于對(duì)稱密碼學(xué),并需要一個(gè)值得信賴的第三方。2Kerberos認(rèn)證系統(tǒng)
(1)概述
Kerberos認(rèn)證的核心算法為密碼學(xué)中的DES,鑒別模型為CBC模式;Kerberos協(xié)議是Needham-Schroeder協(xié)議的變型,目前通用版本為k5,是1994年公布的;Kerberos認(rèn)證起源于非法收集用戶口令的惡意攻擊,系統(tǒng)按照用戶名與口令對(duì)用戶進(jìn)行識(shí)別;Kerberos采用的是客戶機(jī)/服務(wù)器模型(以下簡(jiǎn)稱C/S)。(2)Kerberos的認(rèn)證原理
kerberos的實(shí)現(xiàn)過(guò)程1、請(qǐng)求票據(jù)-許可票據(jù):客戶c向Kerberos認(rèn)證中心(KDC)申請(qǐng)可以訪問票據(jù)中心TGS2、票據(jù)-票據(jù)許可3、請(qǐng)求服務(wù)器票據(jù)4、服務(wù)器票據(jù)5、請(qǐng)求服務(wù)
(3)Kerberos的技術(shù)特點(diǎn)
Kerberos是分布式認(rèn)證服務(wù),允許代表合法者的進(jìn)程或客戶在不通過(guò)網(wǎng)絡(luò)發(fā)送敏感消息的情況下來(lái)向驗(yàn)證者(應(yīng)用服務(wù)器)證實(shí)自己的身份,這樣可以保證C/S之間傳輸數(shù)據(jù)的完整性和保密性。
Kerberos的技術(shù)特點(diǎn)Kerberos時(shí)間戳(timestamp,減少基本認(rèn)證所需要發(fā)送消息的數(shù)目)、票據(jù)許可(ticket-granting,為后續(xù)認(rèn)證做準(zhǔn)備)交叉認(rèn)證(不同服務(wù)器見的認(rèn)證)Kerberos的安全性能分析(1/3)1、Kerberos在C/S間產(chǎn)生的通信會(huì)話是動(dòng)態(tài)的。按照時(shí)間戳的加入的可能性分析,這樣,C/S間會(huì)話的通信數(shù)據(jù),從一定程度上講是經(jīng)過(guò)加密的,也就是安全的。在一次會(huì)話結(jié)束時(shí),則銷毀該秘密密鑰。
Kerberos的安全性能分析(2/3)2、可以使用Strand域分析法分析Neuman-Stubblebine協(xié)議類中如同Kerberos的密鑰,但是結(jié)果表明,分布中心產(chǎn)生的類Kerberos密鑰匙和用戶申請(qǐng)的票據(jù)服務(wù)是有缺陷的。Kerberos的安全性能分析(3/3)3、Web快速增長(zhǎng)的現(xiàn)狀迫使管理計(jì)算機(jī)有能力每日處理大量的用戶姓名和密碼數(shù)據(jù)。執(zhí)行多Kerberos服務(wù)的環(huán)境模型就有新的特性與變化,這種變化是由于受到密碼技術(shù)或網(wǎng)絡(luò)因素的影響,自然會(huì)降低C/S的執(zhí)行效率。
Kerberos可以建立在PKI基礎(chǔ)之上,但需要客戶服務(wù)器端執(zhí)行一定操作。這樣在intranet的環(huán)境上,由于httpcookies的建立,會(huì)有安全隱患存在。
Kerberos的前景分析
Kerberos的一個(gè)重要應(yīng)用領(lǐng)域是電子商務(wù)。電子商務(wù)所能提供的必須是基于開放的分布式計(jì)算機(jī)環(huán)境的安全上的服務(wù),它對(duì)于公平的認(rèn)證信任要求是苛刻的。Kerberos的廣泛應(yīng)用價(jià)值不僅體現(xiàn)在網(wǎng)絡(luò)上,Kerberos同時(shí)可以在無(wú)線的地方性區(qū)域網(wǎng)絡(luò)
(WLANs)的不同的環(huán)境上提供相異的安全需求。
Kerberos的前景分析硬件的安全性能是計(jì)算機(jī)系統(tǒng)安全的前提,通常認(rèn)為操作系統(tǒng)的安全建立在硬件的安全基礎(chǔ)上并以此為發(fā)展。Kerberos的另一個(gè)應(yīng)用是可以將Kerberos與智能卡、操作系統(tǒng)整合,這種方案可以較好的指標(biāo)與實(shí)現(xiàn)。Kerberos同樣適用于小型動(dòng)態(tài)系統(tǒng)的認(rèn)證,可以利用其進(jìn)行輕量級(jí)的遠(yuǎn)程智能化控制,尤其是家庭舒適的遙控操作。
(4)利用windos的安全技術(shù)配置kerboros認(rèn)證
Kerberos認(rèn)證協(xié)議定義了客戶端和稱為密鑰分配中心KDC(KeyDistributionCenter)的認(rèn)證服務(wù)之間的安全交互過(guò)程。
Windows2000在每一個(gè)域控制器中應(yīng)用KDC認(rèn)證服務(wù),其域同Kerberos中的realm功能類似,具體可參考RFC1510協(xié)議。Windows2000中采用對(duì)Kerberos協(xié)議的支持的措施Kerberos客戶端使用基于SSPI的Windows2000安全提供者,初始Kerberos認(rèn)證同WinLogon的單次登錄進(jìn)行了集成KerberosKDC也同運(yùn)行在域控制器中的安全服務(wù)進(jìn)行了集成,并使用活動(dòng)目錄作為用戶和組的賬號(hào)數(shù)據(jù)庫(kù)。
利用windos的安全技術(shù)配置kerboros認(rèn)證用戶和KDC都知道用戶的口令,或從口令中單向產(chǎn)生的密鑰,并定義了一套客戶端、KDC和服務(wù)器之間獲取和使用Kerberos票據(jù)的交換協(xié)議。當(dāng)用戶初始化Windows登錄時(shí),KerberosSSP利用基于用戶口令的加密散列獲取一個(gè)初始Kerberos票據(jù)TGT,Windows2000把TGT存儲(chǔ)在與用戶的登錄上下文相關(guān)的工作站的票據(jù)緩存中。當(dāng)客戶端想要使用網(wǎng)絡(luò)服務(wù)時(shí),Kerberos首先檢查票據(jù)緩存中是否有該服務(wù)器的有效會(huì)話票據(jù)。如果沒有,則向KDC發(fā)送TGT來(lái)請(qǐng)求一個(gè)會(huì)話票據(jù),以請(qǐng)求服務(wù)器提供服務(wù)。
請(qǐng)求的會(huì)話票據(jù)也會(huì)存儲(chǔ)在票據(jù)緩存中,以用于后續(xù)對(duì)同一個(gè)服務(wù)器的連接,直到票據(jù)超期為止。票據(jù)的有效期由域安全策略來(lái)規(guī)定,一般為8個(gè)小時(shí)。如果在會(huì)話過(guò)程中票據(jù)超期,KerberosSSP將返回一個(gè)響應(yīng)的錯(cuò)誤值,允許客戶端和服務(wù)器刷新票據(jù),產(chǎn)生一個(gè)新的會(huì)話密鑰,并恢復(fù)連接利用windos的安全技術(shù)配置kerboros認(rèn)證客戶端、KDC和應(yīng)用服務(wù)器之間的關(guān)系
在初始連接消息中,Kerberos把會(huì)話票據(jù)提交給遠(yuǎn)程服務(wù),會(huì)話票據(jù)中的一部分使用了服務(wù)和KDC共享的密鑰進(jìn)行了加密。
客戶端、KDC和應(yīng)用服務(wù)器之間的關(guān)系服務(wù)器端的Kerberos有服務(wù)器密鑰的緩存拷貝,所以,服務(wù)器直接可以通過(guò)驗(yàn)證會(huì)話票據(jù)來(lái)認(rèn)證客戶端。在服務(wù)器端,采用Kerberos認(rèn)證系統(tǒng)的會(huì)話建立速度要比NTLM認(rèn)證快得多,因?yàn)槭褂肗TLM,服務(wù)器獲取用戶的信任書以后,還要與域控制器建立連接,來(lái)對(duì)用戶進(jìn)行重新認(rèn)證。
Kerberos會(huì)話票據(jù)
Kerberos會(huì)話票據(jù)中包含有一個(gè)唯一的、由KDC創(chuàng)建的、用于客戶端和服務(wù)器之間傳輸數(shù)據(jù)和認(rèn)證信息加密的會(huì)話密鑰。在Kerberos模型中,KDC是作為產(chǎn)生會(huì)話密鑰的可信第三方而存在的,這種形式更適合于分布式計(jì)算環(huán)境下的認(rèn)證服務(wù)。
(5)Unix(FreeBSD)中的Kerberos設(shè)置(1/3)
標(biāo)準(zhǔn)的Unix認(rèn)證用戶的過(guò)程用戶輸入口令,口令傳輸?shù)较到y(tǒng)程序中,由系統(tǒng)程序?qū)诹钸M(jìn)行加密,并與系統(tǒng)中的口令密文進(jìn)行比較來(lái)判斷口令是否正確。在這種方法中,如果要通過(guò)網(wǎng)絡(luò)認(rèn)證,就要將口令以明文形式在網(wǎng)絡(luò)中傳輸,因此就存在被竊聽的危險(xiǎn)。
(5)Unix(FreeBSD)中的Kerberos設(shè)置(2/3)當(dāng)前KerberosV認(rèn)證方式比較流行,Windows2000中采用了這種認(rèn)方式。但在FreeBSD中提供的是KerberosIV認(rèn)證方式。通常使用的加密算法為DES算法,經(jīng)實(shí)踐證明它是一種很有效加密算法,Unix上使用的密鑰長(zhǎng)度為56位,對(duì)于一般的安全性,加上選擇得當(dāng)?shù)目诹睿?6位的DES算法已夠用。
FreeBSD缺省使用MD5算法用作口令認(rèn)證。
(5)Unix(FreeBSD)中的Kerberos設(shè)置(3/3)Kerberos是一個(gè)網(wǎng)絡(luò)附加系統(tǒng)/協(xié)議,可以允許用戶通過(guò)一個(gè)安全服務(wù)器的服務(wù)來(lái)驗(yàn)證
他們自己。遠(yuǎn)程登陸,遠(yuǎn)程拷貝,系統(tǒng)間的相互文件拷貝和其他高風(fēng)險(xiǎn)任務(wù)的服務(wù)將被變得相當(dāng)安全和可控制。FreeBSD中設(shè)置Kerberos的
6個(gè)步驟
(1)建立初始資料庫(kù);(2)運(yùn)行Kerberos;(3)創(chuàng)建新的服務(wù)器文件;(4)定位數(shù)據(jù)庫(kù);(5)完整測(cè)試;(6)增添su權(quán)限(1)創(chuàng)建最初的數(shù)據(jù)庫(kù)創(chuàng)建最初的數(shù)據(jù)庫(kù)必須由Kerberos服務(wù)器來(lái)做。首先確定沒有舊的Kerberos數(shù)據(jù)庫(kù),還必須改變/etc/kerberosIV的目錄,然后只檢查下面出現(xiàn)的文件:
#cd/etc/kerberosIV#lsREADMEkrb.confkrb.realms創(chuàng)建最初的數(shù)據(jù)庫(kù)編輯krb.conf和krb.realms文件來(lái)定義Kerberos規(guī)則。在這個(gè)例子中,規(guī)則將是GRONDAR.ZA,服務(wù)器是grunt.grondar.za。編輯或創(chuàng)建krb.conf文件#catkrb.confGRONDAR.ZAGRONDAR.ZAgrunt.grondar.zaadminserverCS.BERKELEY.EDUATHENA.MIT.EDUATHENA.MIT.EDUATHENA.MIT.EDUATHENA.MIT.EDULCS.MIT.EDUTELECOM.MIT.EDUARC.NASA.GOV
在這個(gè)例子中其他規(guī)則沒有出現(xiàn)。第一行命名了這個(gè)系統(tǒng)工作的規(guī)則。其它行包含了規(guī)則/主機(jī)的記錄。每行的第一項(xiàng)就是一個(gè)規(guī)則,第二個(gè)是充當(dāng)一個(gè)keydistributioncenter的規(guī)則中的一臺(tái)主機(jī)。接在一個(gè)主機(jī)名后面的管理服務(wù)器的命令意味著主機(jī)也要提供一個(gè)管理數(shù)據(jù)庫(kù)服務(wù)器
添加grunt.grondar.za到GRONDAR.ZA,然后添加一個(gè)記錄把所有主機(jī)放在.grondar.za域中。krb.realms文件將被升級(jí):
#catkrb.realmsgrunt.grondar.zaGRONDAR.ZA.grondar.zaGRONDAR.ZA.CS.BERKELEY.EDU.MIT.EDUATHENA.MIT.EDU.ATHENA.MIT.EDU
經(jīng)準(zhǔn)備創(chuàng)建數(shù)據(jù)庫(kù)
這將需要運(yùn)行Kerberos服務(wù)器。執(zhí)行命令kdb_init:
#kdb_initRealmname[defaultATHENA.MIT.EDU]:GRONDAR.ZAYouwillbepromptedforthedatabaseMasterPassword.ItisimportantthatyouNOTFORGETthispassword.EnterKerberosmasterkey:
保存密匙
現(xiàn)在我們必須保存密匙,以便本地機(jī)器的服務(wù)器能夠得到加速。使用kstash命令:#kstashEnterKerberosmasterkey:CurrentKerberosmasterkeyversionis1.Masterkeyentered.BEWARE!上述步驟將保存加密過(guò)的主密碼并放在/etc/kerberosIV/master_key。
(2)運(yùn)行
Kerberos有兩個(gè)主要的數(shù)據(jù)需要被添加到以Kerberos確保安全的系統(tǒng)的數(shù)據(jù)庫(kù)中。它們的名稱是kpasswd和rcmd。這些程序允許其他系統(tǒng)改變Kerberos的密碼,然后象rcp,rlogin和rsh一樣運(yùn)行命令。
添加記錄
#kdb_editOpeningdatabase...EnterKerberosmasterkey:CurrentKerberosmasterkeyversionis1.Masterkeyentered.BEWARE!Previousordefaultvaluesarein[brackets],enterreturntoleavethesame,ornewvalue.Principalname:passwdInstance:grunt添加記錄<Notfound>,Create[y]?yPrincipal:passwd,Instance:grunt,kdc_key_ver:1NewPassword:<----enterRANDOMhereVerifyingpasswordNewPassword:<----enterRANDOMhereRandompassword[y]?yPrincipal'snewkeyversion=1Expirationdate(enteryyyy-mm-dd)[2000-01-01]?Maxticketlifetime(*5minutes)[255]?Attributes[0]?EditO.K.添加記錄Principalname:rcmdInstance:grunt<Notfound>,Create[y]?Principal:rcmd,Instance:grunt,kdc_key_ver:1NewPassword:<----enterRANDOMhereVerifyingpasswordNewPassword:<----enterRANDOMhereRandompassword[y]?Principal'snewkeyversion=1Expirationdate(enteryyyy-mm-dd)[2000-01-01]?Maxticketlifetime(*5minutes)[255]?Attributes[0]?EditO.K.Principalname:
<----nullentryherewillcauseanexit(3)創(chuàng)建新的服務(wù)器文件(1/4)現(xiàn)在必須分析在每臺(tái)機(jī)器上定義的服務(wù)的所有情況。利用ext_srvtab命令創(chuàng)建一個(gè)文件,并需通過(guò)安全方式被拷貝或移動(dòng)到每個(gè)Kerberos客戶端的/etc/kerberosIV目錄。這個(gè)文件必須在每個(gè)服務(wù)器和客戶機(jī)上出現(xiàn),上述Kerberos操作是很必須的。
創(chuàng)建新的服務(wù)器文件(2/4)#ext_srvtabgruntEnterKerberosmasterkey:CurrentKerberosmasterkeyversionis1.Masterkeyentered.BEWARE!Generating'grunt-new-srvtab'....創(chuàng)建新的服務(wù)器文件(3/4)這個(gè)命令只產(chǎn)生一個(gè)臨時(shí)文件,它必須被重命名為srvtab,以便所有的服務(wù)可以得到加速。使用mv命令把它移到最初的系統(tǒng)上:
#mvgrunt-new-srvtabsrvtab創(chuàng)建新的服務(wù)器文件(4/4)如果文件是針對(duì)客戶系統(tǒng)的,那網(wǎng)絡(luò)可能就會(huì)不安全,拷貝client-new-srvtab到設(shè)備后,應(yīng)通過(guò)安全的物理方式進(jìn)行傳輸。應(yīng)該查驗(yàn)剛才的文件確實(shí)在客戶機(jī)的/etc/kerberosIV目錄下,并把它重命名為srvtab,確定它是mode600:
#mvgrumble-new-srvtabsrvtab#chmod600srvtab(4)定位數(shù)據(jù)庫(kù)現(xiàn)在添加一些用戶記錄到數(shù)據(jù)庫(kù)。假設(shè)用戶USER要?jiǎng)?chuàng)建一個(gè)記錄,可以使用kdb_edit命令來(lái)完成:
#kdb_editOpeningdatabase...EnterKerberosmasterkey:
CurrentKerberosmasterkeyversionis1.Masterkeyentered.BEWARE!Previousordefaultvaluesarein[brackets],enterreturntoleavethesame,ornewvalue.Principalname:USER定位數(shù)據(jù)庫(kù)Instance:<Notfound>,Create[y]?yPrincipal:USER,Instance:,kdc_key_ver:1NewPassword:<----enterasecurepasswordhereVerifyingpasswordNewPassword:<----re-enterthepasswordherePrincipal'snewkeyversion=1Expirationdate(enteryyyy-mm-dd)[2000-01-01]?Maxticketlifetime(*5minutes)[255]?Attributes[0]?EditO.K.Principalname:
<----nullentryherewillcauseanexit(5)完整的數(shù)據(jù)測(cè)試
(1/4)首先啟動(dòng)Kerberos程序,如果沒有能夠正確地編輯/etc/rc.conf文件,那這將在重啟系統(tǒng)的時(shí)候自動(dòng)發(fā)生。Kerberos客戶機(jī)可以自動(dòng)從/etc/kerberosIV目錄下獲得他們所需要的數(shù)據(jù)。
完整的數(shù)據(jù)測(cè)試(2/4)#kerberos&KerberosserverstartingSleepforeveronerrorLogfileis/var/log/kerberos.logCurrentKerberosmasterkeyversionis1.Masterkeyentered.BEWARE!CurrentKerberosmasterkeyversionis1Localrealm:GRONDAR.ZA#kadmind-n&KADMServerKADM0.0AinitializingPleasedonotuse'kill-9'tokillthisjob,usearegularkillinsteadCurrentKerberosmasterkeyversionis1.Masterkeyentered.BEWARE!完整的數(shù)據(jù)測(cè)試(3/4)現(xiàn)在,使用命令kinit為用戶USER設(shè)置訪問許可:
%kinitjaneMITProjectAthena(grunt.grondar.za)KerberosInitializationfor“USER"Password:
%klistTicketfile:/tmp/tkt245Principal:jane@GRONDAR.ZAIssuedExpiresPrincipalApr3011:23:22Apr3019:23:22krbtgt.GRONDAR.ZA@GRONDAR.ZA完整的數(shù)據(jù)測(cè)試(4/4)利用kpasswd程序可以得到數(shù)據(jù)庫(kù)的驗(yàn)證,也可以使用passwd來(lái)檢查正在修改的密碼:
%passwdrealmGRONDAR.ZAOldpasswordforUSER:
NewPasswordforUSER:
VerifyingpasswordNewPasswordforUSER:
Passwordchanged.(6)添加su特權(quán)(1/4)Kerberos允許每個(gè)需要root權(quán)限的用戶分別設(shè)置獨(dú)立的supassword?,F(xiàn)在可以添加一個(gè)被用來(lái)驗(yàn)證su到root的id。使用kdb_edit,可以在Kerberos數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)記錄jane.root:
添加su特權(quán)(2/4)#kdb_editOpeningdatabase...EnterKerberosmasterkey:
CurrentKerberosmasterkeyversionis1.Masterkeyentered.BEWARE!Previousordefaultvaluesarein[brackets],enterreturntoleavethesame,ornewvalue.Principalname:USERInstance:root<Notfound>,Create[y]?y添加su特權(quán)(3/4)
Principal:USER,Instance:root,kdc_key_ver:1NewPassword:<----enteraSECUREpasswordhereVerifyingpasswordNewPassword:<----re-enterthepasswordherePrincipal'snewkeyversion=1Expirationdate(enteryyyy-mm-dd)[2000-01-01]?Maxticketlifetime(*5minutes)[255]?12<---Keepthisshort!Attributes[0]?EditO.K.Principalname:<----nullentryherewillcauseanexit#kinitUSER.rootMITProjectAthena(grunt.grondar.za)KerberosInitializationfor"jane.root"Password:添加su特權(quán)(4/4)現(xiàn)在,我們必須添加用戶到root的.klogin文件:
#cat/root/.kloginUSER.root@GRONDAR.ZA
現(xiàn)在設(shè)法執(zhí)行su:
%suPassword:
#klistTicketfile:/tmp/tkt_root_245Principal:USER.root@GRONDAR.ZAIssuedExpiresPrincipal3.6基于零知識(shí)證明的識(shí)別技術(shù)零知識(shí)證明的基本思想你向別人證明你知道某種事物或具有某種東西,而且別人并不能通過(guò)你的證明知道這個(gè)事物或這個(gè)東西,也就是不泄露你掌握的這些信息。零知識(shí)證明問題最小泄露證明(MinimumDisclosureproof)零知識(shí)證明(ZeroKnowledgeproof)。
3.6
零知識(shí)證明Alice:“我知道聯(lián)邦儲(chǔ)備系統(tǒng)計(jì)算機(jī)的口令”Bob:“不,你不知道”Alice:我知道Bob:你不知道Alice:我確實(shí)知道Bob:請(qǐng)你得證實(shí)這一點(diǎn)Alice:好吧,我告訴你。(她悄悄說(shuō)出了口令)Bob:太有趣了!現(xiàn)在我也知道了。我要告訴《華盛頓郵報(bào)》Alice:啊呀!零知識(shí)證明技術(shù)零知識(shí)證明技術(shù)可使信息的擁有者無(wú)需泄露任何信息就能夠向驗(yàn)證者或任何第三方證明它擁有該信息。零知識(shí)證明的基本協(xié)議Quisquater等人給出了一個(gè)解釋零知識(shí)證明的通俗例子,即零知識(shí)洞穴。
設(shè)P知道咒語(yǔ),可打開C和D之間的秘密門,不知道者都將走向死胡同中。ABCD例[Quisquater等1989]零知識(shí)證明的基本協(xié)議
(1)V站在A點(diǎn);
(2)P進(jìn)入洞中任一點(diǎn)C或D;
(3)當(dāng)P進(jìn)洞之后,V走到B點(diǎn);
(4)V叫P:(a)從左邊出來(lái),或(b)從右邊出來(lái);
(5)P按要求實(shí)現(xiàn)(以咒語(yǔ),即解數(shù)學(xué)難題幫助);
(6)P和V重復(fù)執(zhí)行(1)~(5)共n次。若A不知咒語(yǔ),則在B點(diǎn),只有50%的機(jī)會(huì)猜中B的要求,協(xié)議執(zhí)行n次,則只有2-n的機(jī)會(huì)完全猜中,若n=16,則若每次均通過(guò)B的檢驗(yàn),B受騙機(jī)會(huì)僅為1/65536最簡(jiǎn)單的零知識(shí)證明問題要求:假如P想說(shuō)服V,使V相信他確實(shí)知道n的因數(shù)p和q,但不能告訴V最簡(jiǎn)單的步驟:V隨機(jī)選擇一整數(shù)x,計(jì)算x4modn的值,并告訴PP求x2modn并將它告訴VV驗(yàn)證x4modnV知道求x2modn等價(jià)于n的因數(shù)分解,若不掌握n的因數(shù)p和q,求解很困難。Fiat-Shamir協(xié)議xvc
≡r2(s2)c≡r2s2c≡(rsc)2≡y2modn3.7認(rèn)證碼
認(rèn)證碼(MAC,MessagesAuthenticationCodes),是與密鑰相關(guān)的的單向散列函數(shù),也稱為消息鑒別碼或是消息校驗(yàn)和。MAC與單向散列函數(shù)一樣,但是還包括一個(gè)密鑰。不同的密鑰會(huì)產(chǎn)生不同的散列函數(shù),這樣就能在驗(yàn)證發(fā)送者的消息沒有經(jīng)過(guò)篡改的同時(shí),驗(yàn)證是由哪一個(gè)發(fā)送者發(fā)送的。
認(rèn)證碼1974年,Gilbert,MacWilliams,Sloane首次提出了認(rèn)證碼的概念,并用有限幾何構(gòu)造了認(rèn)證碼。80年代,Simmons等人系統(tǒng)地發(fā)展了認(rèn)證碼理論。一個(gè)沒有仲裁的認(rèn)證碼由三方組成:發(fā)送方、接受方和入侵者。發(fā)送方和接受方互相信任,敵手想欺騙他們,敵手知道整個(gè)認(rèn)證系統(tǒng),但不知道發(fā)方和收方所采用的秘密的編碼規(guī)則。
認(rèn)證碼的驗(yàn)證過(guò)程
認(rèn)證碼的驗(yàn)證過(guò)程
M是信息發(fā)送方要發(fā)送的消息,假設(shè)K是發(fā)送方和接受方共有的密鑰,其認(rèn)證碼標(biāo)記為MAC=CK(M),表示信息M在密鑰K作用下的Hash函數(shù)值,這個(gè)函數(shù)值是一個(gè)固定長(zhǎng)度的認(rèn)證符。
發(fā)送方將要發(fā)送的消息M和驗(yàn)證碼CK(M)一起發(fā)送給接受方,收方通過(guò)重新計(jì)算認(rèn)證碼CK(M)來(lái)實(shí)現(xiàn)對(duì)信息M和發(fā)送者的識(shí)別。
認(rèn)證碼的算法實(shí)現(xiàn)
二次同余操作探測(cè)碼(QCMDC)的算法實(shí)現(xiàn):
QCMDC認(rèn)證碼是一個(gè)很好的認(rèn)證實(shí)現(xiàn),不過(guò)目前該算法已經(jīng)被攻破。
IBC-hash的算法實(shí)現(xiàn)
由于上述算法中的每條消息都要用不同的密鑰做散列計(jì)算,因此,算法的安全性受到密鑰對(duì)長(zhǎng)度的制約。IBC-hash算法在實(shí)現(xiàn)上僅用于發(fā)送長(zhǎng)而不經(jīng)常用的消息。
信息鑒別算法描述
信息鑒別算法是一個(gè)ISO標(biāo)準(zhǔn)。
3.8PGP(PrettyGoodPrivacy)
—非常好的隱私性
PGP(PrettyGoodPrivacy)是一個(gè)基于RSA公鑰加密體系的郵件加密軟件。可以用它對(duì)郵件加密以防止非授權(quán)者閱讀,它還能對(duì)用戶的郵件加上數(shù)字簽名從而使收信人可以確信郵件是用戶發(fā)來(lái)的。它讓用戶可以安全地和從未見過(guò)的人通信,事先并不需要任何保密的渠道用來(lái)傳遞密鑰。它采用了:審慎的密鑰管理、一種RSA和傳統(tǒng)加密的雜合算法、用于數(shù)字簽名的郵件文摘算法、加密前壓縮,以及一個(gè)良好的人機(jī)工程設(shè)計(jì)等。它的功能強(qiáng)大,有很快的速度,而且其源代碼是免費(fèi)的。
3.7PGPPGP最初是由菲利浦.齊默爾曼(Philip.Zimmermann)開始編寫的、用于保護(hù)電子通信隱私的加密軟件。PGP也使用了RSA公開密鑰加密算法,它的第一版在1991年完成。隨后Zimmermann把它送給了一位朋友。這位朋友把PGP在國(guó)際互聯(lián)網(wǎng)上公布出來(lái)。短短的幾天之內(nèi),PGP系統(tǒng)就被世界各地的文件傳輸服務(wù)器相繼拷貝,傳播開去。
PGP軟件有3個(gè)主要的功能:(1)使用強(qiáng)大的IDEA加密算法對(duì)存儲(chǔ)在計(jì)算機(jī)上的文件加密。經(jīng)加密的文件只能由知道密鑰的人解密閱讀。(2)使用公開密鑰加密技術(shù)對(duì)電子郵件進(jìn)行加密。經(jīng)加密的電子郵件只有收件人本人才能解密閱讀。(3)使用公開密鑰加密技術(shù)對(duì)文件或電子郵件作數(shù)字簽名,鑒定人可以用起草人的公開密鑰鑒別真?zhèn)巍?.6.2PGP的密鑰管理PGP使用了4種類型的密鑰:一次性會(huì)話對(duì)稱密鑰、公鑰、私鑰和基于口令短語(yǔ)的對(duì)稱密鑰
(1)產(chǎn)生會(huì)話密鑰使用CAST-128本身來(lái)產(chǎn)生隨機(jī)的128-bit數(shù)字。將128-bit的密鑰和兩個(gè)做為明文的64-bit塊作為輸入,CAST-128用密碼反饋模式加密這兩個(gè)64-bit塊,并將密文塊連接起來(lái)形成128-bit的會(huì)話密鑰。兩個(gè)做為明文輸入到隨機(jī)數(shù)發(fā)生器的64-bit塊來(lái)自于128-bit的隨機(jī)數(shù)據(jù)流。這個(gè)隨機(jī)數(shù)據(jù)流的產(chǎn)生是以用戶的擊鍵為基礎(chǔ)的,擊鍵時(shí)間和健值用于產(chǎn)生隨機(jī)數(shù)據(jù)流。
(2)密鑰標(biāo)識(shí)符在PGP中,加密的消息與加密的會(huì)話密鑰一起發(fā)送給消息的接收者。會(huì)話密鑰是使用接收者的公鑰加密的,因此,只有接收者才能夠恢復(fù)會(huì)話密鑰,從而解密消息。如果接收者只有一個(gè)公鑰/私鑰對(duì),接收者就會(huì)自動(dòng)知道用哪個(gè)密鑰來(lái)解密會(huì)話密鑰。但如上所述,一個(gè)用戶可能擁有多個(gè)公鑰/私鑰對(duì),這此情況下,接收者如何知道會(huì)話密鑰是使用哪個(gè)公鑰加密的呢?一個(gè)簡(jiǎn)單的辦法就是:消息的發(fā)送者將加密會(huì)話密鑰的公鑰與消息一起傳過(guò)去,接收者驗(yàn)證收到的公鑰確實(shí)是自己的以后,進(jìn)行解密操作。但這樣做的會(huì)造成空間的浪費(fèi),因?yàn)镽SA的密鑰很大,可能是幾百個(gè)十進(jìn)行位組成。PGP的采用的解決辦法是為每個(gè)公鑰分配一個(gè)密鑰ID,并且很有可能這個(gè)密鑰ID在用戶ID內(nèi)是惟一的。與每個(gè)公鑰關(guān)聯(lián)的密鑰ID包含公鑰的低64位。也就是說(shuō),公鑰KUa的密鑰ID是(KUamod264)。這個(gè)長(zhǎng)度足以保證密鑰發(fā)生重復(fù)的概率非常小。PGP消息的格式
PGP系統(tǒng)PGP(PrettyGoodPrivacy)
私鑰環(huán)公鑰環(huán)2.密鑰環(huán)的使用(1)簽名消息:PGP使用發(fā)送者的用戶ID從私鑰環(huán)中檢索私鑰;PGP向用戶請(qǐng)求口令短語(yǔ)以恢復(fù)被加密的私鑰;用私鑰進(jìn)行簽名。(2)加密消息:PGP產(chǎn)生會(huì)話密鑰并加密消息;PGP使用接收者ID從公鑰環(huán)中檢測(cè)接收者的公鑰;創(chuàng)建消息的會(huì)話密鑰部分;
(3)解密消息:接收者使用接收到的消息中的會(huì)話密鑰部分中的密鑰ID字段在私鑰環(huán)來(lái)檢索私鑰;PGP提示接收者輸入口令短語(yǔ)以恢復(fù)私鑰;PGP用私鑰來(lái)恢復(fù)會(huì)話密鑰并解密消息;(4)認(rèn)證消息:PGP在消息的簽名部分中獲得發(fā)送者的密鑰ID,并用該ID在公鑰環(huán)中檢索發(fā)送者的公鑰;PGP恢復(fù)所傳輸?shù)南⒄?;PGP對(duì)接收到的消息計(jì)算消息摘要,并與接收到的消息摘要進(jìn)行比較以實(shí)現(xiàn)認(rèn)證。本章小結(jié)(1)
認(rèn)證活動(dòng)一直貫穿于人類的學(xué)習(xí)與生活:新生入學(xué)時(shí),學(xué)校要查看他們的入學(xué)錄取通知書,這是學(xué)校對(duì)于學(xué)生的認(rèn)證,以便識(shí)別你是張三而不是李四;去銀行取錢時(shí),要出示用戶的存折卡,一般還要輸入用戶的密碼,這是銀行對(duì)儲(chǔ)戶的認(rèn)證。上述情況都是認(rèn)證活動(dòng)在我們生活中的體現(xiàn)。簡(jiǎn)單說(shuō),信息認(rèn)證也是對(duì)我們現(xiàn)實(shí)世界的數(shù)字模擬。本章小結(jié)(2)中國(guó)政府的政令通常是以紅頭文件下發(fā)的,之所以有效力,是因?yàn)樯厦嬗姓墓?。但是,在網(wǎng)絡(luò)上怎么能夠保證其所公布的文件同樣是有效果的?信息的一個(gè)重要特征是可以復(fù)制,又有什么樣的例子可以說(shuō)明復(fù)制的文件是有法律效力的?網(wǎng)絡(luò)信息經(jīng)濟(jì)時(shí)代在給我們帶來(lái)快捷便利的同時(shí),也提出了新的挑戰(zhàn)。
本章小結(jié)(3)這些疑問直接導(dǎo)致了數(shù)字簽名和數(shù)字簽章法的誕生。對(duì)一份文件進(jìn)行簽名,不得不考慮文件的大小,重要的是,給驗(yàn)證帶來(lái)了一定的時(shí)間損耗。為了解決這個(gè)問題,我們引入了信息摘要的概念。信息摘要,也稱為數(shù)字指紋,是求取不定長(zhǎng)度(或是不超多一定字節(jié))的數(shù)字信息的雜湊函數(shù)。
本章小結(jié)(4)認(rèn)證的最終目的是識(shí)別有效的用戶,安全在一定意義上總要花費(fèi)一定的代價(jià)。我們總是希望能夠使用盡可能小的花費(fèi)實(shí)現(xiàn)最大程度(設(shè)計(jì)目標(biāo))的安全。這就需要我們選擇具體的實(shí)現(xiàn)方式,至于具體方式的選擇,應(yīng)該從實(shí)際情況,即安全的需要出發(fā)。
本章小結(jié)(5)我們講述了基于利用用戶信息的用戶名與口令、利用用戶本身屬性的DNA認(rèn)證、和利用用戶所擁有的物品的安全令牌和智能卡認(rèn)證的三種認(rèn)證形式;以及對(duì)于上述認(rèn)證形式實(shí)現(xiàn)綜合的雙要素認(rèn)證??紤]到認(rèn)證問題的具體實(shí)現(xiàn)與當(dāng)前的變化發(fā)展,本章還簡(jiǎn)要介紹了幾種有代表性的認(rèn)證方案:挑戰(zhàn)應(yīng)答式和利用智能卡的認(rèn)證實(shí)現(xiàn)和目前實(shí)用的S/key,Kerberos認(rèn)證方式,并對(duì)這兩種認(rèn)證做了具體闡述。
練習(xí)題
1.簡(jiǎn)述什么是數(shù)字簽名,什么是數(shù)字信封?2.如果有多于兩個(gè)人同時(shí)對(duì)數(shù)字摘要進(jìn)行簽名,我們稱為雙簽名。在安全電子交易協(xié)議(SET)中就使用到了這種簽名。想一想,這有什么意義,對(duì)應(yīng)我們的實(shí)際生活能有什么作用?3.本章講了幾種身份識(shí)別技術(shù),你能從實(shí)際生活中找到他們具體實(shí)現(xiàn)的對(duì)照嗎?能不能想到新的更好的例子?練習(xí)題4.雜湊函數(shù)可能受到哪幾種攻擊?你認(rèn)為其中最為重要的是哪一種?5.你能設(shè)計(jì)一種結(jié)合多種認(rèn)證方式的雙要素認(rèn)證嗎?對(duì)于理論環(huán)節(jié)給出具體算法。6.結(jié)合本書最后的Kerberos部分,請(qǐng)用Linux系統(tǒng)實(shí)現(xiàn),并在同學(xué)間展開討論,看看三種系統(tǒng):Windows,Unix和Linux間實(shí)現(xiàn)的具體區(qū)別
7.設(shè)想一下,如果你為你們學(xué)院設(shè)計(jì)了一個(gè)網(wǎng)站,出于安全與使用的角度,你能使用上我們?cè)诒菊轮袑W(xué)過(guò)的哪些安全原理?
認(rèn)證碼的驗(yàn)證過(guò)程
第四章散列函數(shù)與報(bào)文鑒別
4.1
鑒別概念
4.2鑒別函數(shù)4.3散列函數(shù)
★4.4MD5報(bào)文摘要算法★4.5安全散列算法SHA
★4.6報(bào)文鑒別碼
★4.1鑒別概念報(bào)文鑒別(MessageAuthentication)是防御網(wǎng)絡(luò)主動(dòng)攻擊的重要技術(shù)。在需要通過(guò)網(wǎng)絡(luò)進(jìn)行信息交換時(shí),會(huì)遇到以下攻擊:①
泄露:報(bào)文內(nèi)容被透露給沒有擁有合法密鑰的任何人或相關(guān)過(guò)程。②
通信量分析:發(fā)現(xiàn)通信雙方的通信方式。在面向連接的應(yīng)用中,連接的頻率和連接持續(xù)時(shí)間。在面向連接或無(wú)連接的環(huán)境中,通信雙方的報(bào)文數(shù)量和長(zhǎng)度。③
偽裝:以假的源點(diǎn)身份將報(bào)文插入網(wǎng)絡(luò)中。包括由敵方偽造一條報(bào)文卻聲稱它來(lái)自已授權(quán)的某個(gè)實(shí)體。另外,還包括由假的報(bào)文接收者對(duì)收到報(bào)文發(fā)回假確認(rèn),或者不予接受。④
內(nèi)容篡改:篡改報(bào)文的內(nèi)容,包括插入、刪除、調(diào)換及修改。⑤
序號(hào)篡改:對(duì)通信雙方報(bào)文序號(hào)的任何修改,包括插入、刪除和重排序。⑥
計(jì)時(shí)篡改:報(bào)文延遲或回放。對(duì)面向連接應(yīng)用,一個(gè)完整的會(huì)話或報(bào)文序列可以是在之前某些有效會(huì)話的回放,或者序列中的單個(gè)報(bào)文能被延遲或回放。對(duì)無(wú)連接應(yīng)用,單個(gè)報(bào)文能被延遲或回放。⑦
抵賴:終點(diǎn)否認(rèn)收到某報(bào)文或源點(diǎn)否認(rèn)發(fā)過(guò)某報(bào)文。報(bào)文鑒別:是證實(shí)收到的報(bào)文來(lái)自可信的源點(diǎn)且未被篡改的過(guò)程。(3、4、5、6)數(shù)字簽名:是一種防止源點(diǎn)或終點(diǎn)抵賴的鑒別技術(shù)。(3、4、5、6、7)Return4.2鑒別函數(shù)4.2.1報(bào)文加密4.2.2報(bào)文鑒別碼4.2.3散列函數(shù)4.2.1報(bào)文加密(1)常規(guī)加密考慮直接使用常規(guī)加密方法。通信的雙方A和B共享密鑰K,A使用密鑰K對(duì)發(fā)往B的報(bào)文M進(jìn)行加密。如果沒有其它人知道密鑰K,就能提供保密性。B也能確信收到的報(bào)文來(lái)自A。因?yàn)槌鼴外,A是惟一擁有密鑰K的,并可以構(gòu)建用K解密的密文。并且,不知道密鑰K的敵方不會(huì)知道如何改變密文來(lái)產(chǎn)生明文中期望的變化。所以,如果M恢復(fù),B知道M中的內(nèi)容末被任何人改動(dòng)。結(jié)論:常規(guī)加密提供保密性和鑒別。問題:如何知道已經(jīng)正確解密。即在通信的終點(diǎn)沒有自動(dòng)的方法來(lái)確定收到的報(bào)文是否是合法報(bào)文的密文。(2)公開密鑰加密具有保密性的公開密鑰加密:不提供鑒別,因?yàn)槿魏稳硕伎梢允褂肒Ub
加密一個(gè)報(bào)文發(fā)給B。EDMMKUbKRbEKUb(M)AB具有鑒別和簽名的公開密鑰加密:不提供保密性,因?yàn)槿魏稳硕伎梢允褂肁的公開密鑰解密并閱讀報(bào)文。和常規(guī)加密一樣,存在報(bào)文合法性問題。EDMMKRaKUaEKRa(M)AB具有機(jī)密性和鑒別及簽名的公開密鑰加密:加密/解密次數(shù)太多。仍存在報(bào)文合法性問題。解決上述問題的一種方法:強(qiáng)制明文具有某種結(jié)構(gòu),這種結(jié)構(gòu)易于識(shí)別、不能偽造。如:計(jì)算機(jī)網(wǎng)絡(luò)中采用的FCS(幀校驗(yàn)序列)。EMKRaKUaEKUb(EKRa(M))ABEDDMEKRa(M)KUbKRbReturn4.2.2報(bào)文鑒別碼原理:發(fā)送方使用一個(gè)密鑰和特定算法對(duì)明文產(chǎn)生一個(gè)短小的定長(zhǎng)數(shù)據(jù)分組,即MAC(報(bào)文鑒別碼),并將它附加在報(bào)文中。在接收方,使用相同的密鑰和算法對(duì)明文計(jì)算MAC,如果新的MAC與報(bào)文中的MAC匹配,那么:接收者確信報(bào)文未被更改過(guò)。接收者確信報(bào)文來(lái)自所期望的發(fā)送方。如果報(bào)文包含一個(gè)序號(hào),那么接收者確信該序號(hào)的正確性。MAC函數(shù):MAC=CK(M),MAC函數(shù)類似于加密過(guò)程,一個(gè)主要區(qū)別是MAC函數(shù)無(wú)需可逆。由于鑒別函數(shù)的這個(gè)特性,使得它比加密函數(shù)更不易破解。報(bào)文鑒別碼的基本用法:(1)MAC直接與明文連接后傳輸(鑒別;不加密)。MCKMCk(M)CK比較(2)MAC與明文連接后一起加密再傳輸。(鑒別;加密)(3)先加密,后生成鑒別碼,將MAC與密文連接傳輸。(鑒別;加密)CMK2EK2(M||Ck1(M))K2EDMCCk1(M)K1K1比較比較CMK2Ck1(EK2(M))K2EDMCK1K1Return4.2.3散列函數(shù)散列函數(shù)與報(bào)文摘要散列函數(shù)(hashfunction)類似報(bào)文鑒別碼,一個(gè)散列函數(shù)以一個(gè)變長(zhǎng)的報(bào)文作為輸入,產(chǎn)生一個(gè)定長(zhǎng)的散列碼H(M)作為輸出,H(M)通常又稱為報(bào)文摘要MD(MessageDigest)。散列碼(或MD)是報(bào)文所有比特的函數(shù)值,并具有差錯(cuò)檢測(cè)能力,即報(bào)文中任一比特或若干比特發(fā)生改變都將導(dǎo)致(新計(jì)算的)散列碼的改變。MD與MAC的區(qū)別:生成函數(shù)不同;是否需要密鑰(不需要密鑰)散列函數(shù)的使用方式使用常規(guī)加密方法對(duì)附加散列碼的報(bào)文進(jìn)行加密。(鑒別;加密)使用常規(guī)加密方法僅對(duì)散列碼進(jìn)行加密。(鑒別;不加密)HMKEK(H(M))比較KEDMHHMKEK(M||H(M))比較KEDMHH(M)(3)使用公開密鑰加密方法及發(fā)方的私有密鑰僅對(duì)散列碼進(jìn)行加密。(鑒別;不加密)(4)在(3)的基礎(chǔ)上增加保密功能。(鑒別;加密)HMKREKR(H(M))比較KUEDMH比較KEK(M||EKR(H(M)))KEDMHHMKREDKUEKR(H(M))(5)使用散列碼、公共秘密值的明文方案。(鑒別;不加密)(6)使用散列碼、公共秘密值的保密方案。(鑒別;加密)HM比較MHSS比較KEK(M||H(M||S))KEDMHHMSH(M||S)SReturn4.3散列函數(shù)散列函數(shù)可以用于報(bào)文的完整性鑒別,與加密技術(shù)配合使用可以對(duì)報(bào)文的起源進(jìn)行鑒別。此外還可以用于存儲(chǔ)文件的完整性檢驗(yàn)。散列函數(shù)將任意長(zhǎng)度的報(bào)文當(dāng)作自變量,結(jié)果產(chǎn)生規(guī)定長(zhǎng)度的報(bào)文摘要,可用如下函數(shù)形式表示:h=H(M)
其中M為變長(zhǎng)報(bào)文,H(M)為定長(zhǎng)的報(bào)文摘要MD。當(dāng)確信或已知報(bào)文值正確時(shí),報(bào)文摘要MD在源點(diǎn)被加到該報(bào)文上。接收端通過(guò)計(jì)算該報(bào)文的MD來(lái)鑒別該報(bào)文。由于散列函數(shù)是公開的,所以需要對(duì)其進(jìn)行保護(hù)。4.3.1對(duì)散列函數(shù)的要求使用散列函數(shù)的目的是為文件、報(bào)文或其它分組數(shù)據(jù)產(chǎn)生“指紋”,要用于報(bào)文鑒別。散列函數(shù)H必須具有如下性質(zhì):–H應(yīng)該能夠用于任何大小的數(shù)據(jù)塊。(實(shí)際應(yīng)用要求)–H應(yīng)當(dāng)生成一個(gè)固定長(zhǎng)度的輸出。–對(duì)任何給定的報(bào)文M,計(jì)算H(M)應(yīng)當(dāng)是容易的,不論是用硬件還是用軟件實(shí)現(xiàn)。–對(duì)于任何給定的代碼m,找出x使得H(x)=m,在計(jì)算上是不可行的。也就是說(shuō)散列函數(shù)的逆運(yùn)算H-1(m)=x在計(jì)算上是不可行的。這是散列函數(shù)的單向特性。–對(duì)于任何給定的數(shù)據(jù)塊x,找出y<>x,使H(y)=H(x),在計(jì)算上是不可行的。該特性保證了不同的報(bào)文不易得出相同的MD碼(防止生成替代報(bào)文)。弱抗沖突–尋找對(duì)任何的(x,y)對(duì)使得H(x)=H(y)在計(jì)算上不可行。強(qiáng)抗沖突4.3.2簡(jiǎn)單散列函數(shù)所有散列函數(shù)的操作都使用下列一般性原則。輸入(文件或報(bào)文)被視作長(zhǎng)度為n-bit的分組序列,輸入的處理方式是以迭代的方式每次處理一個(gè)分組,以產(chǎn)生一個(gè)l-bit的散列值。(l≤n)一個(gè)最簡(jiǎn)單的散列函數(shù)是每個(gè)分組按比特異或。 即:Ci=b1i
b2i…bmi
其中:Ci=第i比特的散列碼,1≤i≤
n m=輸入中n-bit分組數(shù)。Return4.4MD5報(bào)文摘要算法MD5報(bào)文摘要算法是由Rivest(即RSA中的R)提出的第5個(gè)版本的MD,此算法可對(duì)任意長(zhǎng)度的報(bào)文進(jìn)行計(jì)算,然后得出128位的MD代碼。其作用是將大容量信息在數(shù)字簽名前被“壓縮”成一種保密的格式。MD5算法曾經(jīng)是使用最普遍的安全散列算法,但近年來(lái)出現(xiàn)了針對(duì)該算法的可能攻擊手段。算法描述算法以任意長(zhǎng)度的報(bào)文作為輸入,產(chǎn)生一個(gè)128位的報(bào)文摘要作為輸出。輸入是按512位分組進(jìn)行處理。算法處理流程見圖。Y0Y1YqYL-1HMD5128512IVHMD5128512CV1HMD5128512CVqHMD5128512CVL-1MD512512512512報(bào)文100…0K-bitL×512填充1-512bit報(bào)文長(zhǎng)度Kmod264(1)計(jì)算報(bào)文長(zhǎng)度:將原始報(bào)文的長(zhǎng)度用64bit表示,如果初始長(zhǎng)度大于264
,則僅取低64位,這樣該域所包含的長(zhǎng)度值位初始報(bào)文長(zhǎng)度模264
的值。然后將其追加在報(bào)文的后面。(2)填充:在報(bào)文和長(zhǎng)度值之間填充1-512bit,對(duì)報(bào)文進(jìn)行填充使報(bào)文的長(zhǎng)度(比特?cái)?shù))與448模512同余(長(zhǎng)度=448mod512)。即填充后長(zhǎng)度為512的整數(shù)倍減去64。例如,如果報(bào)文是448bit長(zhǎng),那么將填充512bit形成960bit的報(bào)文。填充比特串的首位為1,后面均為0。必須填充。
將追加和填充后的報(bào)文分割成一個(gè)個(gè)512bit的數(shù)據(jù)塊(Y0,Y1,…Yq,…,YL-1,)。(3)初始化MD緩存。使用一個(gè)128bit的緩存來(lái)存放該散列函數(shù)的中間及最終結(jié)果。該緩存可表示為4個(gè)32bit的寄存器(A,B,C,D)。這些寄存器被初始化為如下32bit長(zhǎng)的整數(shù)(十六進(jìn)制表示):A=67452301B=EFCDAB89C=98BADCFED=10325476
這些值以小數(shù)在前的格式存儲(chǔ),即字的低位字節(jié)放在低地址字節(jié)上:字A:01234567字B:89ABCDEF字C:FEDCBA98字D:76543210
(4)處理512bit(16個(gè)字)報(bào)文分組序列。算法的核心是一個(gè)包含4個(gè)“循環(huán)”的壓縮函數(shù);這個(gè)模塊在前圖中標(biāo)識(shí)為HMD5,下圖說(shuō)明了它的邏輯。4個(gè)循環(huán)有相似的結(jié)構(gòu),但每次循環(huán)使用不同的原始邏輯函數(shù),分別表示為F,G,H和I。每一循環(huán)都以當(dāng)前的正在處理的512bit分組(Yq)和128bit的緩存值A(chǔ)BCD為輸入,然后更新緩存的內(nèi)容。HMD5四輪循環(huán)運(yùn)算是MD5的核心部分,下面是它的具體實(shí)現(xiàn)。將四個(gè)鏈接變量復(fù)制到另外四個(gè)變量中:A到a,B到b,C到c,D到d。主循環(huán)有四輪,每輪循環(huán)都很相似。每一輪進(jìn)行16次操作。每次操作對(duì)a、b、c和d中的其中三個(gè)作一次非線性函數(shù)運(yùn)算。每次操作中用到的四個(gè)非線性函數(shù)(每輪一個(gè))。F(X,Y,Z)=(X&Y)|((~X)&Z)G(X,Y,Z)=(X&Z)|(Y&(~Z))H(X,Y,Z)=X^Y^ZI(X,Y,Z)=Y^(X|(~Z))這里,&代表與,|代表或,~代表非,^代表異或。FF(a,b,c,d,Mj,s,ti)表示:a=b+((a+F(b,c,d)+Mj+ti)<<<s)GG(a,b,c,d,Mj,s,ti)表示:a=b+((a+G(b,c,d)+Mj+ti)<<<s)HH(a,b,c,d,Mj,s,ti)表示:a=b+((a+H(b,c,d)+Mj+ti)<<<s)II(a,b,c,d,Mj,s,ti)表示:a=b+((a+I(b,c,d)+Mj+ti)<<<s)這里,Mj表示報(bào)文的第j個(gè)子分組(從0到15),每一個(gè)循環(huán)還使用一個(gè)64元素表T[1…64]的四分之一,用ti表示,ti=4294967296*abs(sin(i))的整數(shù)部分,i的單位是弧度,(4294967296等于2的32次方)。<<<s表示32位參數(shù)循環(huán)左移s個(gè)比特。第一輪:MjstiFF(a,b,c,d,M0,7,0xd76aa478)FF(d,a,b,c,M1,12,0xe8c7b756)FF(c,d,a,b,M2,17,0x242070db)FF(b,c,d,a,M3,22,0xc1bdceee)FF(a,b,c,d,M4,7,0xf57c0faf)FF(d,a,b,c,M5,12,0x4787c62a)FF(c,d,a,b,M6,17,0xa8304613)FF(b,c,d,a,M7,22,0xfd469501)FF(a,b,c,d,M8,7,0x698098d8)FF(d,a,b,c,M9,12,0x8b44f7af)FF(c,d,a,b,M10,17,0xffff5bb1)FF(b,c,d,a,M11,22,0x895cd7be)FF(a,b,c,d,M12,7,0x6b901122)FF(d,a,b,c,M13,12,0xfd987193)FF(c,d,a,b,M14,17,0xa679438e)FF(b,c,d,a,M15,22,0x49b40821)第二輪:MjstiGG(a,b,c,d,M1,5,0xf61e2562)GG(d,a,b,c,M6,9,0xc040b340)GG(c,d,a,b,M11,14,0x265e5a51)GG(b,c,d,a,M0,20,0xe9b6c7aa)GG(a,b,c,d,M5,5,0xd62f105d)GG(d,a,b,c,M10,9,0x02441453)GG(c,d,a,b,M15,14,0xd8a1e681)GG(b,c,d,a,M4,20,0xe7d3fbc8)GG(a,b,c,d,M9,5,0x21e1cde6)GG(d,a,b,c,M14,9,0xc33707d6)GG(c,d,a,b,M3,14,0xf4d50d87)GG(b,c,d,a,M8,20,0x455a14ed)GG(a,b,c,d,M13,5,0xa9e3e905)GG(d,a,b,c,M2,9,0xfcefa3f8)GG(c,d,a,b,M7,14,0x676f02d9)GG(b,c,d,a,M12,20,0x8d2a4c8a)第三輪:MjstiHH(a,b,c,d,M5,4,0xfffa3942)HH(d,a,b,c,M8,11,0x8771f681)HH(c,d,a,b,M11,16,0x6d9d6122)HH(b,c,d,a,M14,23,0xfde5380c)HH(a,b,c,d,M1,4,0xa4beea44)HH(d,a,b,c,M4,11,0x4bdecfa9)HH(c,d,a,b,M7,16,0xf6bb4b60)HH(b,c,d,a,M10,23,0xbebfbc70)HH(a,b,c,d,M13,4,0x289b7ec6)HH(d,a,b,c,M0,11,0xeaa127fa)HH(c,d,a,b,M3,16,0xd4ef3085)HH(b,c,d,a,M6,23,0x04881d05)HH(a,b,c,d,M9,4,0xd9d4d039)HH(d,a,b,c,M12,11,0xe6db99e5)HH(c,d,a,b,M15,16,0x1fa27cf8)HH(b,c,d,a,M2,23,0xc4ac5665)第四輪:MjstiII(a,b,c,d,M0,6,0xf4292244)II(d,a,b,c,M7,10,0x432aff97)II(c,d,a,b,M14,15,0xab9423a7)II(b,c,d,a,M5,21,0xfc93a039)II(a,b,c,d,M12,6,0x655b59c3)II(d,a,b,c,M3,10,0x8f0ccc92)II(c,d,a,b,M10,15,0xffeff47d)II(b,c,d,a,M1,21,0x85845dd1)II(a,b,c,d,M8,6,0x6fa87e4f)II(d,a,b,c,M15,10,0xfe2ce6e0)II(c,d,a,b,M6,15,0xa3014314)II(b,c,d,a,M13,21,0x4e0811a1)II(a,b,c,d,M4,6,0xf7537e82)II(d,a,b,c,M11,10,0xbd3af235)II(c,d,a,b,M2,15,0x2ad7d2bb)II(b,c,d,a,M9,21,0xeb86d391)
第4次循環(huán)的輸出加到第1次循環(huán)的輸入(CVq)上產(chǎn)生CVq+1。相加是緩存中4個(gè)字分別與CVq中對(duì)應(yīng)的4個(gè)字以模232相加。(5)輸出。所有L個(gè)512bit的分組處理完成后,第L階段產(chǎn)生的輸出便是128bit的報(bào)文摘要。Return4.5安全散列算法SHA安全的散列算法(SHA)由美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)協(xié)會(huì)(NIST)提出,并作為聯(lián)邦信息處理標(biāo)準(zhǔn)在1993年公布;1995年又發(fā)布了一個(gè)修訂版稱為SHA-1。SHA-1算法輸入報(bào)文的最大長(zhǎng)度不超過(guò)264bit,產(chǎn)生的輸出是一個(gè)160位的報(bào)文摘要,輸入按512bit分組進(jìn)行處理。一個(gè)報(bào)文的總體處理過(guò)程與MD5相似。算法描述:計(jì)算報(bào)文長(zhǎng)度:將64位分組附加到報(bào)文后面,其值等于初始報(bào)文的位長(zhǎng)度。填充:與MD5相同,1-512位。初始化MD緩存:使用一個(gè)160位的緩存來(lái)存放散列函數(shù)的的中間及最終結(jié)果。該緩存可表示為5個(gè)32位的寄存器A、B、C、D、E。其初始值為:
A=67452301B=EFCDAB89C=98BADCFE
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《過(guò)敏性紫癜曹偉》課件
- 《代商務(wù)禮儀》課件
- 《確定市場(chǎng)調(diào)研目標(biāo)》課件
- 房屋租賃合同(2篇)
- 《硬盤使用前的處理》課件
- 2024年汽輪機(jī)油產(chǎn)品研發(fā)與技術(shù)轉(zhuǎn)移合作協(xié)議3篇
- 2025年鄭州貨運(yùn)從業(yè)資格證題庫(kù)
- 2025年昌都貨運(yùn)從業(yè)資格證考試模擬考試題庫(kù)下載
- 2024年混凝土構(gòu)件生產(chǎn)及安裝合同
- 2025年濟(jì)南道路運(yùn)輸從業(yè)人員從業(yè)資格考試
- 監(jiān)理公司各部門職責(zé)
- 253種中藥材粉末顯微鑒別主要特征
- 論辛棄疾詞作的愁情主題及其審美價(jià)值
- 新形勢(shì)下我國(guó)保險(xiǎn)市場(chǎng)營(yíng)銷的現(xiàn)狀、問題及對(duì)策
- LTE無(wú)線網(wǎng)絡(luò)優(yōu)化PPT課件
- 動(dòng)態(tài)血壓監(jiān)測(cè)在社區(qū)高血壓患者管理的意義
- 管道中英文對(duì)照表
- 240燈控臺(tái)_說(shuō)明書
- 新形勢(shì)下加強(qiáng)市場(chǎng)監(jiān)管局檔案管理工作的策略
- 例行檢查和確認(rèn)檢驗(yàn)程序
- 上海旅游資源基本類型及其旅游區(qū)布局特點(diǎn)(共5頁(yè))
評(píng)論
0/150
提交評(píng)論