![物聯(lián)網(wǎng)信息安全 課件 第2章 信息認證技術2_第1頁](http://file4.renrendoc.com/view14/M0B/0D/1A/wKhkGWaE6JuAUMkEAAEnAJP3Dzk256.jpg)
![物聯(lián)網(wǎng)信息安全 課件 第2章 信息認證技術2_第2頁](http://file4.renrendoc.com/view14/M0B/0D/1A/wKhkGWaE6JuAUMkEAAEnAJP3Dzk2562.jpg)
![物聯(lián)網(wǎng)信息安全 課件 第2章 信息認證技術2_第3頁](http://file4.renrendoc.com/view14/M0B/0D/1A/wKhkGWaE6JuAUMkEAAEnAJP3Dzk2563.jpg)
![物聯(lián)網(wǎng)信息安全 課件 第2章 信息認證技術2_第4頁](http://file4.renrendoc.com/view14/M0B/0D/1A/wKhkGWaE6JuAUMkEAAEnAJP3Dzk2564.jpg)
![物聯(lián)網(wǎng)信息安全 課件 第2章 信息認證技術2_第5頁](http://file4.renrendoc.com/view14/M0B/0D/1A/wKhkGWaE6JuAUMkEAAEnAJP3Dzk2565.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三章信息認證技術
3.1數(shù)字簽名技術
3.2身份識別技術3.3雜湊函數(shù)和消息完整性3.4認證模式與認證方式
3.5認證的具體實現(xiàn)
3.6認證碼
3.5.2認證方式的實際應用
目前實用的認證方式有S/key防止竊聽和竊取,但實現(xiàn)有困難KerberosRadiusKerberos和Radius認證方式都是在服務器和客戶機都支持相應的認證方式的條件下才能使用,因而需要復雜的設置。
1.S/key認證方式
通過監(jiān)聽TCP/IP網(wǎng)絡中信息,可以獲得用戶登錄用的帳號和口令,被截獲的用戶帳號和口令有助于發(fā)動對系統(tǒng)的攻擊。S/key是一個一次性口令系統(tǒng),可以用來對付這種類型的攻擊行為。
S/key認證方式的特點使用S/key系統(tǒng)時,網(wǎng)絡中傳送的帳戶和口令只使用一次后就銷毀。用戶使用的源口令永遠也不會在網(wǎng)絡上傳輸,包括登錄時或其它需要口令的情形,這樣就可以保護用戶的帳戶和口令不會因此而被竊取。S/key系統(tǒng)的機制保護的是進行身份鑒別時的安全性,并不保證信息在傳送過程中的保密性和完整性。
使用S/key類系統(tǒng)兩方面的操作
在客戶方,必須有方法產(chǎn)生正確的一次性口令。
在服務主機方必須能夠驗證該一次性口令的有效性,并能夠讓用戶安全地修改源口令。
S/key認證方式說明一般的S/key系統(tǒng)是基于一些不可逆算法的(如MD4和MD5),也就是說這一類算法如果擁有源數(shù)據(jù),正向計算出結果速度很快。但如果沒有源數(shù)據(jù)而試圖反向計算出源數(shù)據(jù),則目前來看基本上是不可能的。
用戶如何使用S/key系統(tǒng)(一)用戶在使用S/key系統(tǒng)時,在計算機上對其口令進行初始化,由計算機保存將該源口令按照選定的算法計算N次的結果。用戶自己在客戶端必須有能夠進行計算的程序或工具。
用戶如何使用S/key系統(tǒng)(二)計算N-1次后形成本次口令,當本次口令送給計算機時,計算機將所得的口令通過該算法計算一次,并將結果與計算機保存的上一個結果比較,若相同,則身份驗證通過,而且將本次用戶的輸入保留,作為下一次用于比較的值。用戶在下一次計算口令時,自動將計算次數(shù)減1(第二次計算N-2次)。
用戶如何使用S/key系統(tǒng)(三)監(jiān)聽者也無法從所監(jiān)聽到的口令中得到用戶的源口令,同時他所監(jiān)聽到的信息也不能作為登錄用信息。在計算機內部也不保存用戶的源口令,達到進一步的口令安全。
S/key系統(tǒng)的優(yōu)缺點
優(yōu)點實現(xiàn)原理簡單缺點會給使用帶來一點麻煩(如口令使用一定次數(shù)后就需重新初始化)。依賴于某種算法的不可逆性的,算法也是公開的,當有關于這種算法可逆計算研究有了新進展時,系統(tǒng)將被迫重新選用其它更安全的算法。
三種不同的密碼形式
第一種是通常使用的Unix風格或Kerberos密碼,稱為Unixpassword;第二種是由S/key程序產(chǎn)生,然后被keyinit程序和登陸命令接受的一次性密碼;稱為one-timepassword;第三種密碼是由專門的密碼生成程序生成的秘密密碼,稱為secretpassword。秘密密碼與unixpassword毫無關系;他們也可能是一樣的,但并不推薦使用。
S/key和秘密密碼特點S/key和秘密密碼不象Unixpassword需要限制在8位以內,它們可能會更長。一般都使用6到7位的長度。另外,S/key系統(tǒng)操作完全獨立于unixpassword系統(tǒng)。
S/key兩個重要數(shù)據(jù)一個是以seed或key出名,包含兩個字母和五個數(shù)字。其他的被叫做iterationcount,在1到100之間。
S/key密碼生成S/key通過連接“種子”(seed)和秘密密碼來生成一次性密碼,然后通過反復計算多次應用MD4hash,再把結果變成六個英文字。這六個英文字就是你的一次性密碼。
如果用戶提供的密碼的hash值與先前的密碼相一致,那用戶就通過了認證;每個成功的登陸確保用戶和登陸程序保持同步之后,計算的次數(shù)就不斷減少。當反復計算的降到1時,S/key必須被重新初始化
S/key系統(tǒng)中的四個程序有四個程序被包含在S/key系統(tǒng)中。密碼程序接受一個反復計算數(shù),一個種子,和一個秘密密碼,然后產(chǎn)生一個一次性密碼。Keyinit程序被用來初始化S/key,然后改變密碼,反復計算數(shù)或種子;它不是接受一個秘密密碼,就是一個反復計算數(shù),種子和一次性密碼。Keyinfo程序會檢查文件,然后打印出被調用的當前反復計算數(shù)和種子。最后,login和su程序包含了用于認證S/key一次性密碼的必需的邏輯性。login程序也可以不使用unix密碼。
2Kerberos認證系統(tǒng)
(1)概述
(2)Kerberos的認證原理(3)Kerberos的技術特點(4)利用windos的安全技術配置kerboros認證
(5)Unix(FreeBSD)中的Kerberos設置Kerberos是一種計算機網(wǎng)絡認證協(xié)議,它允許某實體在非安全網(wǎng)絡環(huán)境下通信,向另一個實體以一種安全的方式證明自己的身份。它也指由麻省理工實現(xiàn)此協(xié)議,并發(fā)布的一套免費軟件。它的設計主要針對客戶-服務器模型,并提供了一系列交互認證-用戶和服務器都能驗證對方的身份。Kerberos協(xié)議可以保護網(wǎng)絡實體免受竊聽和重復攻擊。Kerberos協(xié)議基于對稱密碼學,并需要一個值得信賴的第三方。2Kerberos認證系統(tǒng)
(1)概述
Kerberos認證的核心算法為密碼學中的DES,鑒別模型為CBC模式;Kerberos協(xié)議是Needham-Schroeder協(xié)議的變型,目前通用版本為k5,是1994年公布的;Kerberos認證起源于非法收集用戶口令的惡意攻擊,系統(tǒng)按照用戶名與口令對用戶進行識別;Kerberos采用的是客戶機/服務器模型(以下簡稱C/S)。(2)Kerberos的認證原理
kerberos的實現(xiàn)過程1、請求票據(jù)-許可票據(jù):客戶c向Kerberos認證中心(KDC)申請可以訪問票據(jù)中心TGS2、票據(jù)-票據(jù)許可3、請求服務器票據(jù)4、服務器票據(jù)5、請求服務
(3)Kerberos的技術特點
Kerberos是分布式認證服務,允許代表合法者的進程或客戶在不通過網(wǎng)絡發(fā)送敏感消息的情況下來向驗證者(應用服務器)證實自己的身份,這樣可以保證C/S之間傳輸數(shù)據(jù)的完整性和保密性。
Kerberos的技術特點Kerberos時間戳(timestamp,減少基本認證所需要發(fā)送消息的數(shù)目)、票據(jù)許可(ticket-granting,為后續(xù)認證做準備)交叉認證(不同服務器見的認證)Kerberos的安全性能分析(1/3)1、Kerberos在C/S間產(chǎn)生的通信會話是動態(tài)的。按照時間戳的加入的可能性分析,這樣,C/S間會話的通信數(shù)據(jù),從一定程度上講是經(jīng)過加密的,也就是安全的。在一次會話結束時,則銷毀該秘密密鑰。
Kerberos的安全性能分析(2/3)2、可以使用Strand域分析法分析Neuman-Stubblebine協(xié)議類中如同Kerberos的密鑰,但是結果表明,分布中心產(chǎn)生的類Kerberos密鑰匙和用戶申請的票據(jù)服務是有缺陷的。Kerberos的安全性能分析(3/3)3、Web快速增長的現(xiàn)狀迫使管理計算機有能力每日處理大量的用戶姓名和密碼數(shù)據(jù)。執(zhí)行多Kerberos服務的環(huán)境模型就有新的特性與變化,這種變化是由于受到密碼技術或網(wǎng)絡因素的影響,自然會降低C/S的執(zhí)行效率。
Kerberos可以建立在PKI基礎之上,但需要客戶服務器端執(zhí)行一定操作。這樣在intranet的環(huán)境上,由于httpcookies的建立,會有安全隱患存在。
Kerberos的前景分析
Kerberos的一個重要應用領域是電子商務。電子商務所能提供的必須是基于開放的分布式計算機環(huán)境的安全上的服務,它對于公平的認證信任要求是苛刻的。Kerberos的廣泛應用價值不僅體現(xiàn)在網(wǎng)絡上,Kerberos同時可以在無線的地方性區(qū)域網(wǎng)絡
(WLANs)的不同的環(huán)境上提供相異的安全需求。
Kerberos的前景分析硬件的安全性能是計算機系統(tǒng)安全的前提,通常認為操作系統(tǒng)的安全建立在硬件的安全基礎上并以此為發(fā)展。Kerberos的另一個應用是可以將Kerberos與智能卡、操作系統(tǒng)整合,這種方案可以較好的指標與實現(xiàn)。Kerberos同樣適用于小型動態(tài)系統(tǒng)的認證,可以利用其進行輕量級的遠程智能化控制,尤其是家庭舒適的遙控操作。
(4)利用windos的安全技術配置kerboros認證
Kerberos認證協(xié)議定義了客戶端和稱為密鑰分配中心KDC(KeyDistributionCenter)的認證服務之間的安全交互過程。
Windows2000在每一個域控制器中應用KDC認證服務,其域同Kerberos中的realm功能類似,具體可參考RFC1510協(xié)議。Windows2000中采用對Kerberos協(xié)議的支持的措施Kerberos客戶端使用基于SSPI的Windows2000安全提供者,初始Kerberos認證同WinLogon的單次登錄進行了集成KerberosKDC也同運行在域控制器中的安全服務進行了集成,并使用活動目錄作為用戶和組的賬號數(shù)據(jù)庫。
利用windos的安全技術配置kerboros認證用戶和KDC都知道用戶的口令,或從口令中單向產(chǎn)生的密鑰,并定義了一套客戶端、KDC和服務器之間獲取和使用Kerberos票據(jù)的交換協(xié)議。當用戶初始化Windows登錄時,KerberosSSP利用基于用戶口令的加密散列獲取一個初始Kerberos票據(jù)TGT,Windows2000把TGT存儲在與用戶的登錄上下文相關的工作站的票據(jù)緩存中。當客戶端想要使用網(wǎng)絡服務時,Kerberos首先檢查票據(jù)緩存中是否有該服務器的有效會話票據(jù)。如果沒有,則向KDC發(fā)送TGT來請求一個會話票據(jù),以請求服務器提供服務。
請求的會話票據(jù)也會存儲在票據(jù)緩存中,以用于后續(xù)對同一個服務器的連接,直到票據(jù)超期為止。票據(jù)的有效期由域安全策略來規(guī)定,一般為8個小時。如果在會話過程中票據(jù)超期,KerberosSSP將返回一個響應的錯誤值,允許客戶端和服務器刷新票據(jù),產(chǎn)生一個新的會話密鑰,并恢復連接利用windos的安全技術配置kerboros認證客戶端、KDC和應用服務器之間的關系
在初始連接消息中,Kerberos把會話票據(jù)提交給遠程服務,會話票據(jù)中的一部分使用了服務和KDC共享的密鑰進行了加密。
客戶端、KDC和應用服務器之間的關系服務器端的Kerberos有服務器密鑰的緩存拷貝,所以,服務器直接可以通過驗證會話票據(jù)來認證客戶端。在服務器端,采用Kerberos認證系統(tǒng)的會話建立速度要比NTLM認證快得多,因為使用NTLM,服務器獲取用戶的信任書以后,還要與域控制器建立連接,來對用戶進行重新認證。
Kerberos會話票據(jù)
Kerberos會話票據(jù)中包含有一個唯一的、由KDC創(chuàng)建的、用于客戶端和服務器之間傳輸數(shù)據(jù)和認證信息加密的會話密鑰。在Kerberos模型中,KDC是作為產(chǎn)生會話密鑰的可信第三方而存在的,這種形式更適合于分布式計算環(huán)境下的認證服務。
(5)Unix(FreeBSD)中的Kerberos設置(1/3)
標準的Unix認證用戶的過程用戶輸入口令,口令傳輸?shù)较到y(tǒng)程序中,由系統(tǒng)程序對口令進行加密,并與系統(tǒng)中的口令密文進行比較來判斷口令是否正確。在這種方法中,如果要通過網(wǎng)絡認證,就要將口令以明文形式在網(wǎng)絡中傳輸,因此就存在被竊聽的危險。
(5)Unix(FreeBSD)中的Kerberos設置(2/3)當前KerberosV認證方式比較流行,Windows2000中采用了這種認方式。但在FreeBSD中提供的是KerberosIV認證方式。通常使用的加密算法為DES算法,經(jīng)實踐證明它是一種很有效加密算法,Unix上使用的密鑰長度為56位,對于一般的安全性,加上選擇得當?shù)目诹睿?6位的DES算法已夠用。
FreeBSD缺省使用MD5算法用作口令認證。
(5)Unix(FreeBSD)中的Kerberos設置(3/3)Kerberos是一個網(wǎng)絡附加系統(tǒng)/協(xié)議,可以允許用戶通過一個安全服務器的服務來驗證
他們自己。遠程登陸,遠程拷貝,系統(tǒng)間的相互文件拷貝和其他高風險任務的服務將被變得相當安全和可控制。FreeBSD中設置Kerberos的
6個步驟
(1)建立初始資料庫;(2)運行Kerberos;(3)創(chuàng)建新的服務器文件;(4)定位數(shù)據(jù)庫;(5)完整測試;(6)增添su權限(1)創(chuàng)建最初的數(shù)據(jù)庫創(chuàng)建最初的數(shù)據(jù)庫必須由Kerberos服務器來做。首先確定沒有舊的Kerberos數(shù)據(jù)庫,還必須改變/etc/kerberosIV的目錄,然后只檢查下面出現(xiàn)的文件:
#cd/etc/kerberosIV#lsREADMEkrb.confkrb.realms創(chuàng)建最初的數(shù)據(jù)庫編輯krb.conf和krb.realms文件來定義Kerberos規(guī)則。在這個例子中,規(guī)則將是GRONDAR.ZA,服務器是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
在這個例子中其他規(guī)則沒有出現(xiàn)。第一行命名了這個系統(tǒng)工作的規(guī)則。其它行包含了規(guī)則/主機的記錄。每行的第一項就是一個規(guī)則,第二個是充當一個keydistributioncenter的規(guī)則中的一臺主機。接在一個主機名后面的管理服務器的命令意味著主機也要提供一個管理數(shù)據(jù)庫服務器
添加grunt.grondar.za到GRONDAR.ZA,然后添加一個記錄把所有主機放在.grondar.za域中。krb.realms文件將被升級:
#catkrb.realmsgrunt.grondar.zaGRONDAR.ZA.grondar.zaGRONDAR.ZA.CS.BERKELEY.EDU.MIT.EDUATHENA.MIT.EDU.ATHENA.MIT.EDU
經(jīng)準備創(chuàng)建數(shù)據(jù)庫
這將需要運行Kerberos服務器。執(zhí)行命令kdb_init:
#kdb_initRealmname[defaultATHENA.MIT.EDU]:GRONDAR.ZAYouwillbepromptedforthedatabaseMasterPassword.ItisimportantthatyouNOTFORGETthispassword.EnterKerberosmasterkey:
保存密匙
現(xiàn)在我們必須保存密匙,以便本地機器的服務器能夠得到加速。使用kstash命令:#kstashEnterKerberosmasterkey:CurrentKerberosmasterkeyversionis1.Masterkeyentered.BEWARE!上述步驟將保存加密過的主密碼并放在/etc/kerberosIV/master_key。
(2)運行
Kerberos有兩個主要的數(shù)據(jù)需要被添加到以Kerberos確保安全的系統(tǒng)的數(shù)據(jù)庫中。它們的名稱是kpasswd和rcmd。這些程序允許其他系統(tǒng)改變Kerberos的密碼,然后象rcp,rlogin和rsh一樣運行命令。
添加記錄
#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)建新的服務器文件(1/4)現(xiàn)在必須分析在每臺機器上定義的服務的所有情況。利用ext_srvtab命令創(chuàng)建一個文件,并需通過安全方式被拷貝或移動到每個Kerberos客戶端的/etc/kerberosIV目錄。這個文件必須在每個服務器和客戶機上出現(xiàn),上述Kerberos操作是很必須的。
創(chuàng)建新的服務器文件(2/4)#ext_srvtabgruntEnterKerberosmasterkey:CurrentKerberosmasterkeyversionis1.Masterkeyentered.BEWARE!Generating'grunt-new-srvtab'....創(chuàng)建新的服務器文件(3/4)這個命令只產(chǎn)生一個臨時文件,它必須被重命名為srvtab,以便所有的服務可以得到加速。使用mv命令把它移到最初的系統(tǒng)上:
#mvgrunt-new-srvtabsrvtab創(chuàng)建新的服務器文件(4/4)如果文件是針對客戶系統(tǒng)的,那網(wǎng)絡可能就會不安全,拷貝client-new-srvtab到設備后,應通過安全的物理方式進行傳輸。應該查驗剛才的文件確實在客戶機的/etc/kerberosIV目錄下,并把它重命名為srvtab,確定它是mode600:
#mvgrumble-new-srvtabsrvtab#chmod600srvtab(4)定位數(shù)據(jù)庫現(xiàn)在添加一些用戶記錄到數(shù)據(jù)庫。假設用戶USER要創(chuàng)建一個記錄,可以使用kdb_edit命令來完成:
#kdb_editOpeningdatabase...EnterKerberosmasterkey:
CurrentKerberosmasterkeyversionis1.Masterkeyentered.BEWARE!Previousordefaultvaluesarein[brackets],enterreturntoleavethesame,ornewvalue.Principalname:USER定位數(shù)據(jù)庫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ù)測試
(1/4)首先啟動Kerberos程序,如果沒有能夠正確地編輯/etc/rc.conf文件,那這將在重啟系統(tǒng)的時候自動發(fā)生。Kerberos客戶機可以自動從/etc/kerberosIV目錄下獲得他們所需要的數(shù)據(jù)。
完整的數(shù)據(jù)測試(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ù)測試(3/4)現(xiàn)在,使用命令kinit為用戶USER設置訪問許可:
%kinitjaneMITProjectAthena(grunt.grondar.za)KerberosInitializationfor“USER"Password:
%klistTicketfile:/tmp/tkt245Principal:jane@GRONDAR.ZAIssuedExpiresPrincipalApr3011:23:22Apr3019:23:22krbtgt.GRONDAR.ZA@GRONDAR.ZA完整的數(shù)據(jù)測試(4/4)利用kpasswd程序可以得到數(shù)據(jù)庫的驗證,也可以使用passwd來檢查正在修改的密碼:
%passwdrealmGRONDAR.ZAOldpasswordforUSER:
NewPasswordforUSER:
VerifyingpasswordNewPasswordforUSER:
Passwordchanged.(6)添加su特權(1/4)Kerberos允許每個需要root權限的用戶分別設置獨立的supassword。現(xiàn)在可以添加一個被用來驗證su到root的id。使用kdb_edit,可以在Kerberos數(shù)據(jù)庫中創(chuàng)建一個記錄jane.root:
添加su特權(2/4)#kdb_editOpeningdatabase...EnterKerberosmasterkey:
CurrentKerberosmasterkeyversionis1.Masterkeyentered.BEWARE!Previousordefaultvaluesarein[brackets],enterreturntoleavethesame,ornewvalue.Principalname:USERInstance:root<Notfound>,Create[y]?y添加su特權(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特權(4/4)現(xiàn)在,我們必須添加用戶到root的.klogin文件:
#cat/root/.kloginUSER.root@GRONDAR.ZA
現(xiàn)在設法執(zhí)行su:
%suPassword:
#klistTicketfile:/tmp/tkt_root_245Principal:USER.root@GRONDAR.ZAIssuedExpiresPrincipal3.6基于零知識證明的識別技術零知識證明的基本思想你向別人證明你知道某種事物或具有某種東西,而且別人并不能通過你的證明知道這個事物或這個東西,也就是不泄露你掌握的這些信息。零知識證明問題最小泄露證明(MinimumDisclosureproof)零知識證明(ZeroKnowledgeproof)。
3.6
零知識證明Alice:“我知道聯(lián)邦儲備系統(tǒng)計算機的口令”Bob:“不,你不知道”Alice:我知道Bob:你不知道Alice:我確實知道Bob:請你得證實這一點Alice:好吧,我告訴你。(她悄悄說出了口令)Bob:太有趣了!現(xiàn)在我也知道了。我要告訴《華盛頓郵報》Alice:啊呀!零知識證明技術零知識證明技術可使信息的擁有者無需泄露任何信息就能夠向驗證者或任何第三方證明它擁有該信息。零知識證明的基本協(xié)議Quisquater等人給出了一個解釋零知識證明的通俗例子,即零知識洞穴。
設P知道咒語,可打開C和D之間的秘密門,不知道者都將走向死胡同中。ABCD例[Quisquater等1989]零知識證明的基本協(xié)議
(1)V站在A點;
(2)P進入洞中任一點C或D;
(3)當P進洞之后,V走到B點;
(4)V叫P:(a)從左邊出來,或(b)從右邊出來;
(5)P按要求實現(xiàn)(以咒語,即解數(shù)學難題幫助);
(6)P和V重復執(zhí)行(1)~(5)共n次。若A不知咒語,則在B點,只有50%的機會猜中B的要求,協(xié)議執(zhí)行n次,則只有2-n的機會完全猜中,若n=16,則若每次均通過B的檢驗,B受騙機會僅為1/65536最簡單的零知識證明問題要求:假如P想說服V,使V相信他確實知道n的因數(shù)p和q,但不能告訴V最簡單的步驟:V隨機選擇一整數(shù)x,計算x4modn的值,并告訴PP求x2modn并將它告訴VV驗證x4modnV知道求x2modn等價于n的因數(shù)分解,若不掌握n的因數(shù)p和q,求解很困難。Fiat-Shamir協(xié)議xvc
≡r2(s2)c≡r2s2c≡(rsc)2≡y2modn3.7認證碼
認證碼(MAC,MessagesAuthenticationCodes),是與密鑰相關的的單向散列函數(shù),也稱為消息鑒別碼或是消息校驗和。MAC與單向散列函數(shù)一樣,但是還包括一個密鑰。不同的密鑰會產(chǎn)生不同的散列函數(shù),這樣就能在驗證發(fā)送者的消息沒有經(jīng)過篡改的同時,驗證是由哪一個發(fā)送者發(fā)送的。
認證碼1974年,Gilbert,MacWilliams,Sloane首次提出了認證碼的概念,并用有限幾何構造了認證碼。80年代,Simmons等人系統(tǒng)地發(fā)展了認證碼理論。一個沒有仲裁的認證碼由三方組成:發(fā)送方、接受方和入侵者。發(fā)送方和接受方互相信任,敵手想欺騙他們,敵手知道整個認證系統(tǒng),但不知道發(fā)方和收方所采用的秘密的編碼規(guī)則。
認證碼的驗證過程
認證碼的驗證過程
M是信息發(fā)送方要發(fā)送的消息,假設K是發(fā)送方和接受方共有的密鑰,其認證碼標記為MAC=CK(M),表示信息M在密鑰K作用下的Hash函數(shù)值,這個函數(shù)值是一個固定長度的認證符。
發(fā)送方將要發(fā)送的消息M和驗證碼CK(M)一起發(fā)送給接受方,收方通過重新計算認證碼CK(M)來實現(xiàn)對信息M和發(fā)送者的識別。
認證碼的算法實現(xiàn)
二次同余操作探測碼(QCMDC)的算法實現(xiàn):
QCMDC認證碼是一個很好的認證實現(xiàn),不過目前該算法已經(jīng)被攻破。
IBC-hash的算法實現(xiàn)
由于上述算法中的每條消息都要用不同的密鑰做散列計算,因此,算法的安全性受到密鑰對長度的制約。IBC-hash算法在實現(xiàn)上僅用于發(fā)送長而不經(jīng)常用的消息。
信息鑒別算法描述
信息鑒別算法是一個ISO標準。
3.8PGP(PrettyGoodPrivacy)
—非常好的隱私性
PGP(PrettyGoodPrivacy)是一個基于RSA公鑰加密體系的郵件加密軟件??梢杂盟鼘︵]件加密以防止非授權者閱讀,它還能對用戶的郵件加上數(shù)字簽名從而使收信人可以確信郵件是用戶發(fā)來的。它讓用戶可以安全地和從未見過的人通信,事先并不需要任何保密的渠道用來傳遞密鑰。它采用了:審慎的密鑰管理、一種RSA和傳統(tǒng)加密的雜合算法、用于數(shù)字簽名的郵件文摘算法、加密前壓縮,以及一個良好的人機工程設計等。它的功能強大,有很快的速度,而且其源代碼是免費的。
3.7PGPPGP最初是由菲利浦.齊默爾曼(Philip.Zimmermann)開始編寫的、用于保護電子通信隱私的加密軟件。PGP也使用了RSA公開密鑰加密算法,它的第一版在1991年完成。隨后Zimmermann把它送給了一位朋友。這位朋友把PGP在國際互聯(lián)網(wǎng)上公布出來。短短的幾天之內,PGP系統(tǒng)就被世界各地的文件傳輸服務器相繼拷貝,傳播開去。
PGP軟件有3個主要的功能:(1)使用強大的IDEA加密算法對存儲在計算機上的文件加密。經(jīng)加密的文件只能由知道密鑰的人解密閱讀。(2)使用公開密鑰加密技術對電子郵件進行加密。經(jīng)加密的電子郵件只有收件人本人才能解密閱讀。(3)使用公開密鑰加密技術對文件或電子郵件作數(shù)字簽名,鑒定人可以用起草人的公開密鑰鑒別真?zhèn)巍?.6.2PGP的密鑰管理PGP使用了4種類型的密鑰:一次性會話對稱密鑰、公鑰、私鑰和基于口令短語的對稱密鑰
(1)產(chǎn)生會話密鑰使用CAST-128本身來產(chǎn)生隨機的128-bit數(shù)字。將128-bit的密鑰和兩個做為明文的64-bit塊作為輸入,CAST-128用密碼反饋模式加密這兩個64-bit塊,并將密文塊連接起來形成128-bit的會話密鑰。兩個做為明文輸入到隨機數(shù)發(fā)生器的64-bit塊來自于128-bit的隨機數(shù)據(jù)流。這個隨機數(shù)據(jù)流的產(chǎn)生是以用戶的擊鍵為基礎的,擊鍵時間和健值用于產(chǎn)生隨機數(shù)據(jù)流。
(2)密鑰標識符在PGP中,加密的消息與加密的會話密鑰一起發(fā)送給消息的接收者。會話密鑰是使用接收者的公鑰加密的,因此,只有接收者才能夠恢復會話密鑰,從而解密消息。如果接收者只有一個公鑰/私鑰對,接收者就會自動知道用哪個密鑰來解密會話密鑰。但如上所述,一個用戶可能擁有多個公鑰/私鑰對,這此情況下,接收者如何知道會話密鑰是使用哪個公鑰加密的呢?一個簡單的辦法就是:消息的發(fā)送者將加密會話密鑰的公鑰與消息一起傳過去,接收者驗證收到的公鑰確實是自己的以后,進行解密操作。但這樣做的會造成空間的浪費,因為RSA的密鑰很大,可能是幾百個十進行位組成。PGP的采用的解決辦法是為每個公鑰分配一個密鑰ID,并且很有可能這個密鑰ID在用戶ID內是惟一的。與每個公鑰關聯(lián)的密鑰ID包含公鑰的低64位。也就是說,公鑰KUa的密鑰ID是(KUamod264)。這個長度足以保證密鑰發(fā)生重復的概率非常小。PGP消息的格式
PGP系統(tǒng)PGP(PrettyGoodPrivacy)
私鑰環(huán)公鑰環(huán)2.密鑰環(huán)的使用(1)簽名消息:PGP使用發(fā)送者的用戶ID從私鑰環(huán)中檢索私鑰;PGP向用戶請求口令短語以恢復被加密的私鑰;用私鑰進行簽名。(2)加密消息:PGP產(chǎn)生會話密鑰并加密消息;PGP使用接收者ID從公鑰環(huán)中檢測接收者的公鑰;創(chuàng)建消息的會話密鑰部分;
(3)解密消息:接收者使用接收到的消息中的會話密鑰部分中的密鑰ID字段在私鑰環(huán)來檢索私鑰;PGP提示接收者輸入口令短語以恢復私鑰;PGP用私鑰來恢復會話密鑰并解密消息;(4)認證消息:PGP在消息的簽名部分中獲得發(fā)送者的密鑰ID,并用該ID在公鑰環(huán)中檢索發(fā)送者的公鑰;PGP恢復所傳輸?shù)南⒄?;PGP對接收到的消息計算消息摘要,并與接收到的消息摘要進行比較以實現(xiàn)認證。本章小結(1)
認證活動一直貫穿于人類的學習與生活:新生入學時,學校要查看他們的入學錄取通知書,這是學校對于學生的認證,以便識別你是張三而不是李四;去銀行取錢時,要出示用戶的存折卡,一般還要輸入用戶的密碼,這是銀行對儲戶的認證。上述情況都是認證活動在我們生活中的體現(xiàn)。簡單說,信息認證也是對我們現(xiàn)實世界的數(shù)字模擬。本章小結(2)中國政府的政令通常是以紅頭文件下發(fā)的,之所以有效力,是因為上面有政府的公章。但是,在網(wǎng)絡上怎么能夠保證其所公布的文件同樣是有效果的?信息的一個重要特征是可以復制,又有什么樣的例子可以說明復制的文件是有法律效力的?網(wǎng)絡信息經(jīng)濟時代在給我們帶來快捷便利的同時,也提出了新的挑戰(zhàn)。
本章小結(3)這些疑問直接導致了數(shù)字簽名和數(shù)字簽章法的誕生。對一份文件進行簽名,不得不考慮文件的大小,重要的是,給驗證帶來了一定的時間損耗。為了解決這個問題,我們引入了信息摘要的概念。信息摘要,也稱為數(shù)字指紋,是求取不定長度(或是不超多一定字節(jié))的數(shù)字信息的雜湊函數(shù)。
本章小結(4)認證的最終目的是識別有效的用戶,安全在一定意義上總要花費一定的代價。我們總是希望能夠使用盡可能小的花費實現(xiàn)最大程度(設計目標)的安全。這就需要我們選擇具體的實現(xiàn)方式,至于具體方式的選擇,應該從實際情況,即安全的需要出發(fā)。
本章小結(5)我們講述了基于利用用戶信息的用戶名與口令、利用用戶本身屬性的DNA認證、和利用用戶所擁有的物品的安全令牌和智能卡認證的三種認證形式;以及對于上述認證形式實現(xiàn)綜合的雙要素認證。考慮到認證問題的具體實現(xiàn)與當前的變化發(fā)展,本章還簡要介紹了幾種有代表性的認證方案:挑戰(zhàn)應答式和利用智能卡的認證實現(xiàn)和目前實用的S/key,Kerberos認證方式,并對這兩種認證做了具體闡述。
練習題
1.簡述什么是數(shù)字簽名,什么是數(shù)字信封?2.如果有多于兩個人同時對數(shù)字摘要進行簽名,我們稱為雙簽名。在安全電子交易協(xié)議(SET)中就使用到了這種簽名。想一想,這有什么意義,對應我們的實際生活能有什么作用?3.本章講了幾種身份識別技術,你能從實際生活中找到他們具體實現(xiàn)的對照嗎?能不能想到新的更好的例子?練習題4.雜湊函數(shù)可能受到哪幾種攻擊?你認為其中最為重要的是哪一種?5.你能設計一種結合多種認證方式的雙要素認證嗎?對于理論環(huán)節(jié)給出具體算法。6.結合本書最后的Kerberos部分,請用Linux系統(tǒng)實現(xiàn),并在同學間展開討論,看看三種系統(tǒng):Windows,Unix和Linux間實現(xiàn)的具體區(qū)別
7.設想一下,如果你為你們學院設計了一個網(wǎng)站,出于安全與使用的角度,你能使用上我們在本章中學過的哪些安全原理?
認證碼的驗證過程
第四章散列函數(shù)與報文鑒別
4.1
鑒別概念
4.2鑒別函數(shù)4.3散列函數(shù)
★4.4MD5報文摘要算法★4.5安全散列算法SHA
★4.6報文鑒別碼
★4.1鑒別概念報文鑒別(MessageAuthentication)是防御網(wǎng)絡主動攻擊的重要技術。在需要通過網(wǎng)絡進行信息交換時,會遇到以下攻擊:①
泄露:報文內容被透露給沒有擁有合法密鑰的任何人或相關過程。②
通信量分析:發(fā)現(xiàn)通信雙方的通信方式。在面向連接的應用中,連接的頻率和連接持續(xù)時間。在面向連接或無連接的環(huán)境中,通信雙方的報文數(shù)量和長度。③
偽裝:以假的源點身份將報文插入網(wǎng)絡中。包括由敵方偽造一條報文卻聲稱它來自已授權的某個實體。另外,還包括由假的報文接收者對收到報文發(fā)回假確認,或者不予接受。④
內容篡改:篡改報文的內容,包括插入、刪除、調換及修改。⑤
序號篡改:對通信雙方報文序號的任何修改,包括插入、刪除和重排序。⑥
計時篡改:報文延遲或回放。對面向連接應用,一個完整的會話或報文序列可以是在之前某些有效會話的回放,或者序列中的單個報文能被延遲或回放。對無連接應用,單個報文能被延遲或回放。⑦
抵賴:終點否認收到某報文或源點否認發(fā)過某報文。報文鑒別:是證實收到的報文來自可信的源點且未被篡改的過程。(3、4、5、6)數(shù)字簽名:是一種防止源點或終點抵賴的鑒別技術。(3、4、5、6、7)Return4.2鑒別函數(shù)4.2.1報文加密4.2.2報文鑒別碼4.2.3散列函數(shù)4.2.1報文加密(1)常規(guī)加密考慮直接使用常規(guī)加密方法。通信的雙方A和B共享密鑰K,A使用密鑰K對發(fā)往B的報文M進行加密。如果沒有其它人知道密鑰K,就能提供保密性。B也能確信收到的報文來自A。因為除B外,A是惟一擁有密鑰K的,并可以構建用K解密的密文。并且,不知道密鑰K的敵方不會知道如何改變密文來產(chǎn)生明文中期望的變化。所以,如果M恢復,B知道M中的內容末被任何人改動。結論:常規(guī)加密提供保密性和鑒別。問題:如何知道已經(jīng)正確解密。即在通信的終點沒有自動的方法來確定收到的報文是否是合法報文的密文。(2)公開密鑰加密具有保密性的公開密鑰加密:不提供鑒別,因為任何人都可以使用KUb
加密一個報文發(fā)給B。EDMMKUbKRbEKUb(M)AB具有鑒別和簽名的公開密鑰加密:不提供保密性,因為任何人都可以使用A的公開密鑰解密并閱讀報文。和常規(guī)加密一樣,存在報文合法性問題。EDMMKRaKUaEKRa(M)AB具有機密性和鑒別及簽名的公開密鑰加密:加密/解密次數(shù)太多。仍存在報文合法性問題。解決上述問題的一種方法:強制明文具有某種結構,這種結構易于識別、不能偽造。如:計算機網(wǎng)絡中采用的FCS(幀校驗序列)。EMKRaKUaEKUb(EKRa(M))ABEDDMEKRa(M)KUbKRbReturn4.2.2報文鑒別碼原理:發(fā)送方使用一個密鑰和特定算法對明文產(chǎn)生一個短小的定長數(shù)據(jù)分組,即MAC(報文鑒別碼),并將它附加在報文中。在接收方,使用相同的密鑰和算法對明文計算MAC,如果新的MAC與報文中的MAC匹配,那么:接收者確信報文未被更改過。接收者確信報文來自所期望的發(fā)送方。如果報文包含一個序號,那么接收者確信該序號的正確性。MAC函數(shù):MAC=CK(M),MAC函數(shù)類似于加密過程,一個主要區(qū)別是MAC函數(shù)無需可逆。由于鑒別函數(shù)的這個特性,使得它比加密函數(shù)更不易破解。報文鑒別碼的基本用法:(1)MAC直接與明文連接后傳輸(鑒別;不加密)。MCKMCk(M)CK比較(2)MAC與明文連接后一起加密再傳輸。(鑒別;加密)(3)先加密,后生成鑒別碼,將MAC與密文連接傳輸。(鑒別;加密)CMK2EK2(M||Ck1(M))K2EDMCCk1(M)K1K1比較比較CMK2Ck1(EK2(M))K2EDMCK1K1Return4.2.3散列函數(shù)散列函數(shù)與報文摘要散列函數(shù)(hashfunction)類似報文鑒別碼,一個散列函數(shù)以一個變長的報文作為輸入,產(chǎn)生一個定長的散列碼H(M)作為輸出,H(M)通常又稱為報文摘要MD(MessageDigest)。散列碼(或MD)是報文所有比特的函數(shù)值,并具有差錯檢測能力,即報文中任一比特或若干比特發(fā)生改變都將導致(新計算的)散列碼的改變。MD與MAC的區(qū)別:生成函數(shù)不同;是否需要密鑰(不需要密鑰)散列函數(shù)的使用方式使用常規(guī)加密方法對附加散列碼的報文進行加密。(鑒別;加密)使用常規(guī)加密方法僅對散列碼進行加密。(鑒別;不加密)HMKEK(H(M))比較KEDMHHMKEK(M||H(M))比較KEDMHH(M)(3)使用公開密鑰加密方法及發(fā)方的私有密鑰僅對散列碼進行加密。(鑒別;不加密)(4)在(3)的基礎上增加保密功能。(鑒別;加密)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ù)可以用于報文的完整性鑒別,與加密技術配合使用可以對報文的起源進行鑒別。此外還可以用于存儲文件的完整性檢驗。散列函數(shù)將任意長度的報文當作自變量,結果產(chǎn)生規(guī)定長度的報文摘要,可用如下函數(shù)形式表示:h=H(M)
其中M為變長報文,H(M)為定長的報文摘要MD。當確信或已知報文值正確時,報文摘要MD在源點被加到該報文上。接收端通過計算該報文的MD來鑒別該報文。由于散列函數(shù)是公開的,所以需要對其進行保護。4.3.1對散列函數(shù)的要求使用散列函數(shù)的目的是為文件、報文或其它分組數(shù)據(jù)產(chǎn)生“指紋”,要用于報文鑒別。散列函數(shù)H必須具有如下性質:–H應該能夠用于任何大小的數(shù)據(jù)塊。(實際應用要求)–H應當生成一個固定長度的輸出。–對任何給定的報文M,計算H(M)應當是容易的,不論是用硬件還是用軟件實現(xiàn)。–對于任何給定的代碼m,找出x使得H(x)=m,在計算上是不可行的。也就是說散列函數(shù)的逆運算H-1(m)=x在計算上是不可行的。這是散列函數(shù)的單向特性。–對于任何給定的數(shù)據(jù)塊x,找出y<>x,使H(y)=H(x),在計算上是不可行的。該特性保證了不同的報文不易得出相同的MD碼(防止生成替代報文)。弱抗沖突–尋找對任何的(x,y)對使得H(x)=H(y)在計算上不可行。強抗沖突4.3.2簡單散列函數(shù)所有散列函數(shù)的操作都使用下列一般性原則。輸入(文件或報文)被視作長度為n-bit的分組序列,輸入的處理方式是以迭代的方式每次處理一個分組,以產(chǎn)生一個l-bit的散列值。(l≤n)一個最簡單的散列函數(shù)是每個分組按比特異或。 即:Ci=b1i
b2i…bmi
其中:Ci=第i比特的散列碼,1≤i≤
n m=輸入中n-bit分組數(shù)。Return4.4MD5報文摘要算法MD5報文摘要算法是由Rivest(即RSA中的R)提出的第5個版本的MD,此算法可對任意長度的報文進行計算,然后得出128位的MD代碼。其作用是將大容量信息在數(shù)字簽名前被“壓縮”成一種保密的格式。MD5算法曾經(jīng)是使用最普遍的安全散列算法,但近年來出現(xiàn)了針對該算法的可能攻擊手段。算法描述算法以任意長度的報文作為輸入,產(chǎn)生一個128位的報文摘要作為輸出。輸入是按512位分組進行處理。算法處理流程見圖。Y0Y1YqYL-1HMD5128512IVHMD5128512CV1HMD5128512CVqHMD5128512CVL-1MD512512512512報文100…0K-bitL×512填充1-512bit報文長度Kmod264(1)計算報文長度:將原始報文的長度用64bit表示,如果初始長度大于264
,則僅取低64位,這樣該域所包含的長度值位初始報文長度模264
的值。然后將其追加在報文的后面。(2)填充:在報文和長度值之間填充1-512bit,對報文進行填充使報文的長度(比特數(shù))與448模512同余(長度=448mod512)。即填充后長度為512的整數(shù)倍減去64。例如,如果報文是448bit長,那么將填充512bit形成960bit的報文。填充比特串的首位為1,后面均為0。必須填充。
將追加和填充后的報文分割成一個個512bit的數(shù)據(jù)塊(Y0,Y1,…Yq,…,YL-1,)。(3)初始化MD緩存。使用一個128bit的緩存來存放該散列函數(shù)的中間及最終結果。該緩存可表示為4個32bit的寄存器(A,B,C,D)。這些寄存器被初始化為如下32bit長的整數(shù)(十六進制表示):A=67452301B=EFCDAB89C=98BADCFED=10325476
這些值以小數(shù)在前的格式存儲,即字的低位字節(jié)放在低地址字節(jié)上:字A:01234567字B:89ABCDEF字C:FEDCBA98字D:76543210
(4)處理512bit(16個字)報文分組序列。算法的核心是一個包含4個“循環(huán)”的壓縮函數(shù);這個模塊在前圖中標識為HMD5,下圖說明了它的邏輯。4個循環(huán)有相似的結構,但每次循環(huán)使用不同的原始邏輯函數(shù),分別表示為F,G,H和I。每一循環(huán)都以當前的正在處理的512bit分組(Yq)和128bit的緩存值ABCD為輸入,然后更新緩存的內容。HMD5四輪循環(huán)運算是MD5的核心部分,下面是它的具體實現(xiàn)。將四個鏈接變量復制到另外四個變量中:A到a,B到b,C到c,D到d。主循環(huán)有四輪,每輪循環(huán)都很相似。每一輪進行16次操作。每次操作對a、b、c和d中的其中三個作一次非線性函數(shù)運算。每次操作中用到的四個非線性函數(shù)(每輪一個)。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表示報文的第j個子分組(從0到15),每一個循環(huán)還使用一個64元素表T[1…64]的四分之一,用ti表示,ti=4294967296*abs(sin(i))的整數(shù)部分,i的單位是弧度,(4294967296等于2的32次方)。<<<s表示32位參數(shù)循環(huán)左移s個比特。第一輪: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個字分別與CVq中對應的4個字以模232相加。(5)輸出。所有L個512bit的分組處理完成后,第L階段產(chǎn)生的輸出便是128bit的報文摘要。Return4.5安全散列算法SHA安全的散列算法(SHA)由美國國家標準和技術協(xié)會(NIST)提出,并作為聯(lián)邦信息處理標準在1993年公布;1995年又發(fā)布了一個修訂版稱為SHA-1。SHA-1算法輸入報文的最大長度不超過264bit,產(chǎn)生的輸出是一個160位的報文摘要,輸入按512bit分組進行處理。一個報文的總體處理過程與MD5相似。算法描述:計算報文長度:將64位分組附加到報文后面,其值等于初始報文的位長度。填充:與MD5相同,1-512位。初始化MD緩存:使用一個160位的緩存來存放散列函數(shù)的的中間及最終結果。該緩存可表示為5個32位的寄存器A、B、C、D、E。其初始值為:
A=67452301B=EFCDAB89C=98BADCFE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國鍛造熱擠壓用感應加熱設備行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國警告燈行業(yè)投資前景及策略咨詢研究報告
- 2025年蓋諾真項目可行性研究報告
- 2025年樓梯電燈開關項目可行性研究報告
- 2025年旋轉發(fā)電手電筒項目可行性研究報告
- 2025年帶EL背光源鍵盤項目可行性研究報告
- 2025至2031年中國印鐵桶行業(yè)投資前景及策略咨詢研究報告
- 2025年刃銑刀項目可行性研究報告
- 2025至2030年中國HDPE大口徑纏繞管生產(chǎn)線數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年首飾包裝物項目投資價值分析報告
- 導向標識系統(tǒng)設計(一)課件
- 220t鍋爐課程設計 李學玉
- 露天礦采坑邊坡穩(wěn)定性評價報告
- 全英文劇本 《劇院魅影》
- 北京城的中軸線PPT通用課件
- 黑布林繪本 Dad-for-Sale 出售爸爸課件
- 第2.4節(jié)色度信號與色同步信號
- 山東省成人教育畢業(yè)生登記表
- 月度及年度績效考核管理辦法
- 畢業(yè)設計鋼筋彎曲機的結構設計
- 超全六年級陰影部分的面積(詳細答案)
評論
0/150
提交評論