spitojava:由spi演算自動(dòng)生成的java代碼的密碼協(xié)議_第1頁
spitojava:由spi演算自動(dòng)生成的java代碼的密碼協(xié)議_第2頁
spitojava:由spi演算自動(dòng)生成的java代碼的密碼協(xié)議_第3頁
spitojava:由spi演算自動(dòng)生成的java代碼的密碼協(xié)議_第4頁
spitojava:由spi演算自動(dòng)生成的java代碼的密碼協(xié)議_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、spitojava:由spi演算自動(dòng)生成的java代碼的密碼協(xié)議 摘要:這項(xiàng)工作的目的是描述一個(gè)自動(dòng)生成java代碼實(shí)現(xiàn)在 正式規(guī)范中描述的協(xié)議語言spi演算的加密ospitojava是spi 演算的一組工具的一部分,還包括一個(gè)預(yù)處理器,一個(gè)分析 器和一個(gè)安全分析儀。后者可以較為正式地分析協(xié)議和檢測 協(xié)議的缺陷。當(dāng)一個(gè)協(xié)議進(jìn)行了分析并且對(duì)其已經(jīng)達(dá)到的正 確性有足夠的信心,spi2java可以生成一個(gè)相應(yīng)的正確的 java實(shí)現(xiàn)的協(xié)議,從而大大減少在編碼階段引入的安全缺陷 的風(fēng)險(xiǎn)。1簡介一個(gè)在現(xiàn)代計(jì)算機(jī)科學(xué)中最具挑戰(zhàn)性的實(shí)際問題是如 何保證設(shè)計(jì)和實(shí)現(xiàn)正確的安全協(xié)議。這樣的協(xié)議扮演的角色 是實(shí)現(xiàn)安全

2、冃標(biāo),例如通過使用加密技術(shù)實(shí)現(xiàn)身份認(rèn)證,保 密性和完整性。出于這個(gè)原因,他們也被稱為加密協(xié)議。最近,許多研究工作一直致力于分析加密協(xié)議的邏輯正 確性的問題(如11),而實(shí)現(xiàn)正確性的問題還 沒有被認(rèn)為是這么多。其中一個(gè)可能的方法,從正式規(guī)范7 12 9實(shí)現(xiàn)自動(dòng)牛成以確保實(shí)施正確性。如果代碼發(fā)牛器是 這樣的,在生成的代碼忠實(shí)地實(shí)現(xiàn)了本說明書和避免編程錯(cuò) 誤,可能會(huì)導(dǎo)致安全漏洞,實(shí)施正確的可取的。因此,如果 源規(guī)范在邏輯上是正確的,那么它就實(shí)現(xiàn)了。在本文中我們 將展示如何將這種方法可在框架屮投入實(shí)踐,其中目標(biāo)代碼 語言是java和密碼協(xié)議在spi演算1中被指定,這個(gè)過程代 數(shù)規(guī)范語言專門為這種協(xié)議定

3、制。2spi演算該spi演算在1屮被定義為一個(gè)擴(kuò)展口演算與加密 基元。它是一個(gè)為描述和分析加密協(xié)議而設(shè)計(jì)的過程代數(shù)語 言。該spi演算有兩個(gè)基本的語言:術(shù)語,表示數(shù)據(jù)和流程, 以代表的行為。在本文屮,我們只介紹一些功能spi演算, 通過一個(gè)例子,由于有限的空間。圖。fig.l顯示了 spi calculus 1規(guī)范安德魯5密鑰交換協(xié)議。a->b: a,na®a) cab<a,na>.pbo>cab(xa, xna).b->a: (na,klab)kabcab(xm5g). (ftceystore) keystore<b>. keystore(

4、kab). case xmsg ofxna?xklabkab in xna is na(*3keystore) keystore<xa>. keystore(kab).(®klab) cab<xna,klabkab>.a->b: najklabcab<naxklab>.cab(xmsgcypher). case xmsgcypher of xnewnaklab in xnewna is xna keystore<xa,klab>.b->a: nbcab(dimy). keystore<b,xkla&>.(

5、snb) cab<nb>.a->b: ooklabcab<mxklab>.0cab(wcypher). case cypher of xklab in 0inst(m)>(pa(m)|pbo)figure 1. the andrew protocol spi calculus specification本說明書是由兩個(gè)過程描述命名為pa和pb,這代表了 該協(xié)議的兩個(gè)角色。該研究過程所表示的相互作用場景:pa 和pb同時(shí)運(yùn)行的一個(gè)實(shí)例。發(fā)起者角色的過程pa和研究所 過程是由m數(shù)據(jù)參數(shù)化,且必須被發(fā)送。m作為一個(gè)參數(shù) 明傳,因?yàn)檫@是由安全分析工具3所需的。與睦相

6、反,在其 他協(xié)議參數(shù)都是隱式的。fig.l的左側(cè)一欄顯示交換的消息使用非正式的,直觀的 表示經(jīng)常遇到在文獻(xiàn)屮,其屮a-b: o意味著a發(fā)送消息 給b。中間一欄顯示pa的spi演算規(guī)范流程,而右邊欄展 示過程中pb的行為。安德魯協(xié)議假定每個(gè)進(jìn)程都有一個(gè)其 屮對(duì)稱密鑰存儲(chǔ)的本地密鑰庫。由于密鑰存儲(chǔ)區(qū)明確參與協(xié) 議,它必須在spi演算中被建模。我們簡單的建模策略是表 示密鑰存儲(chǔ)作為單獨(dú)的進(jìn)程(在fig.l中沒有顯示),其與相 應(yīng)的協(xié)議交互主要通過專用的通信信道(密鑰-存儲(chǔ)通道)。 獲取和存儲(chǔ)密鑰的操作被建模為在密鑰存儲(chǔ)通道有區(qū)別地 輸入和輸出。更準(zhǔn)確地說,個(gè)密鑰存儲(chǔ)在個(gè)允許其獨(dú)特 的標(biāo)識(shí)的別名下的密

7、鑰存儲(chǔ)區(qū)中。所以,檢索存儲(chǔ)的密鑰的 操作由下式表示 keystore < xa > .keystore(kab)其中的 keystore表示交互通道,xa是別名和kab是摘錄自密鑰 存儲(chǔ)區(qū)保存的可變量。相應(yīng)的存儲(chǔ)操作是由語句keystore< xa, klab >說明,其中klab是必須根據(jù)該別名為xa被 存儲(chǔ)的密鑰。注意密鑰存儲(chǔ)區(qū)的可見性是由運(yùn)算符所限制 的,所以它被認(rèn)為是私有的過程。在安德魯協(xié)議運(yùn)行的屮, 五種信息在pa和pb的通道cab之間交換:1) pa的發(fā)送 的pb其 標(biāo)識(shí)符a和隨機(jī)數(shù)na。pb收到的消息,并將這 兩個(gè)字段分別存儲(chǔ)在變量xa和xna中。2) p

8、b從它的本地 密鑰存儲(chǔ)區(qū)中檢索與pa共享的kab,并建立一個(gè)新的密鑰 klab,與xna 一起用kab進(jìn)行加密,并將結(jié)果發(fā)送給pa。 pa接收到該消息,并通過從它的本地密鑰存儲(chǔ)區(qū)中檢索出 的kab進(jìn)行解密。通過計(jì)算被存儲(chǔ)在xna和xklab的明 文(na和klab)得到的兩個(gè)字段 和na和xna的值進(jìn)行 匹配檢查。3) pa發(fā)送用共享密鑰klab加密的隨機(jī)數(shù)na 給pbopb解密該消息,并檢查收到的隨機(jī)數(shù)xnewna和xna 之間的匹配。隨后的pb將klab存儲(chǔ)在其本地密鑰庫中的 別名下,從而覆蓋kabo 4) pb發(fā)送pa的一個(gè)新的隨機(jī) 數(shù)nb。pa的接收隨機(jī)數(shù)并在其本地密鑰庫中用klab取

9、代 kab0現(xiàn)在的密鑰就完全一致。5)pa的使用klab加密 秘 密信息m,并將其發(fā)送到的pbo pb收到的加密郵件,將 其解密并存儲(chǔ)m在變量x。3工具架構(gòu)生成的代碼為每個(gè)協(xié)議的角色組織成一個(gè)獨(dú)立的程序, 并且這種方案在任何一個(gè)協(xié)議的新會(huì)話被執(zhí)行時(shí)可以被激 活。因此,spi2java在一個(gè)時(shí)間生成一個(gè)單一的協(xié)議和色(例 如fig.l中的pa)0進(jìn)程指定只有特定的實(shí)例場景(像fig.l 屮的機(jī)構(gòu))是不相關(guān)的,并在代碼生成時(shí)被忽略。該spi2java程序是由兩個(gè)模塊組成:術(shù)語打印和描述檢 查部分和java代碼自動(dòng)生成模塊。所生成的代碼是基于java庫的模塊實(shí)現(xiàn),在一個(gè)可配置的方式,可以發(fā)生在spi

10、演算 描述的基本操作。fig2顯示出在整個(gè)工具架構(gòu)的數(shù)據(jù)流。4術(shù)語打印和描述檢查模塊spi演算不是類型化的,所以術(shù)語打印及描述檢查負(fù)責(zé)填補(bǔ)協(xié)議規(guī)范和實(shí)現(xiàn)關(guān)注的數(shù)據(jù)類型之間的信息差距。特別 是,該功能塊自動(dòng) 檢查在協(xié)議的作用過程是否條件變量被 持續(xù)地使用,而且如果這個(gè)檢查是積極的,自動(dòng)分配具體的java類型給條件變量。長期型分配是由一個(gè)算法與最專業(yè)的安全地代表它的java類相關(guān)聯(lián)的任何條件變量來執(zhí)行。用戶可以手動(dòng)執(zhí)行更專門類型的若干變量通過被讀取的規(guī)范文件和通過該模塊 進(jìn)行解釋。手動(dòng)指定一個(gè)更特殊類型是可能的,但不是必需 的。例如,如果一個(gè)進(jìn)程不能對(duì)術(shù)語進(jìn)行任何操作除了把它 送出來,消息類型是對(duì)

11、于這個(gè)術(shù)語來說完全恰當(dāng)?shù)?。我們用組織三個(gè)專業(yè)化水平的類層次結(jié)構(gòu)(圖3只顯示了一些類,由于空間有限,雖然spi2java處理所有的spi演 算的功能)的,可以通過信道傳送術(shù)語及另一種對(duì)于通信信 道簡單的層次結(jié)構(gòu),由于通道類依賴于應(yīng)用傳輸庫,并在過 程中的作用(客戶端/服務(wù)器)。因此,半它是一個(gè)通用的用 于發(fā)送/接收消息或當(dāng)它代表存儲(chǔ)密鑰和/或數(shù)字證書本地密 鑰庫的接入點(diǎn)時(shí)可能是專業(yè)化的通信信道的密鑰庫通信信 道,一個(gè)術(shù)語將作為通道類型。下面圖3中是對(duì)類術(shù)語的含 義的簡要說明。消息是專業(yè)化程度較低的類型,因?yàn)樗?任何消息。每當(dāng)算法是不能夠?yàn)樗_定一個(gè)更專業(yè)的類型時(shí), 一個(gè)術(shù)語的類型則為消息。名

12、稱是表示任何非結(jié)構(gòu)性的spi 演算術(shù)語(即spi演算名稱)的特殊類型的一部分。名稱是 由不能被實(shí)例化一個(gè)類來實(shí)現(xiàn)的,因?yàn)檫@個(gè)類的對(duì)象總是更 專業(yè)具體的類的對(duì)象。名稱可以是任何級(jí)別3類對(duì)象,但它 甚至可以是一個(gè)新的用戶定義派生類的對(duì)象。信道id表示 一個(gè)信道標(biāo)識(shí)符。它對(duì)于為一個(gè)服務(wù)器角色打開一個(gè)新的通 信信道發(fā)送在現(xiàn)有的信道上的信息是來說是有用的。 sharedkeyt代表一個(gè)在對(duì)稱加密系統(tǒng)中使用有密鑰ononcet 表示一個(gè)隨機(jī)選擇的比特序列。標(biāo)識(shí)符代表的一些以獨(dú)特的 方式標(biāo)識(shí)一個(gè)實(shí)體的信息。例如,它可以被用作別名來標(biāo)識(shí) 存儲(chǔ)在密鑰庫內(nèi)部的一個(gè)密鑰。hasht表示對(duì)某些數(shù)據(jù)應(yīng)用 加密散列函數(shù)后

13、的結(jié)果。sharedkeyciphered代表對(duì)一些數(shù)據(jù) 的對(duì)稱加密操作的結(jié)果。該操作可以是加密或解密。pairt 表示的一對(duì)可能是異構(gòu)類型的對(duì)象的容器。對(duì)象的元組被翻 譯,里面的程序,到嵌套配對(duì)對(duì)象。5安全類庫安全類安全庫提供了一組以靈活和可配置的方式實(shí)現(xiàn) 類中的所有基本數(shù)據(jù)類型和加密操作可以抽象地表示在spi 演算。這個(gè)庫作為對(duì)安全供應(yīng)商,負(fù)責(zé)提供加密算法的具體 實(shí)現(xiàn)的通用接口。被用于測試安全類和生成的代碼是指那些 sun?和【aik?。這個(gè)庫在很大程度上依賴于java序列去構(gòu)建 數(shù)據(jù)包在通信信道發(fā)送和/或加密。安全類庫,設(shè)計(jì)了特殊照 顧,追求兒個(gè)目標(biāo):1)有嚴(yán)格的對(duì)應(yīng)關(guān)系,據(jù)此,各spi

14、演 算的術(shù)語對(duì)應(yīng)于一個(gè)java類中的安全類庫,如圖fig.3所示。 請(qǐng)注意,每個(gè)spi演算語句相當(dāng)于個(gè)簡單的java構(gòu)造調(diào)用一 個(gè)術(shù)語對(duì)象的方法。2)類和方法隱藏加密算法行為和管理 的內(nèi)部復(fù)雜性。3)用戶能夠(通過一個(gè)特殊的類,其中常 量可以修改)的方式來定制類的內(nèi)部行為,為每個(gè)不同類型 的加密操作選擇安全提供程序,算法和相關(guān)參數(shù)。4)已經(jīng) 注意到,實(shí)現(xiàn)了生成的代碼效率,得益于類執(zhí)行效率。5) 每個(gè)類的實(shí)現(xiàn)一直保持盡可能接近它的抽象模型,并已經(jīng)避 免,可導(dǎo)致已知安全漏洞的編程錯(cuò)誤。需要注意的是一個(gè)完 整的遵循是無法實(shí)現(xiàn)的,因?yàn)樗褂玫募用芗夹g(shù)是不完美的。 事實(shí)上加密操作的實(shí)現(xiàn)只能近似于加密算法

15、的理想化的行 為。例如,假設(shè)完美的加密條件(完美加密)的不同消息的哈希值永遠(yuǎn)不會(huì)發(fā)生碰撞。6傳輸層接口安全類庫包含三個(gè)接口,一個(gè)名為的channelld來表示一 個(gè)信道標(biāo)識(shí)符,channelt來表示一個(gè)通用的客戶端/服務(wù)器 通信通道,并servert代表通用服務(wù)器進(jìn)程等待傳入的客 戶端請(qǐng)求。所有這些類是與所使用的傳輸層庫的相互作用點(diǎn)o 以這種方式,為所生成的代碼實(shí)現(xiàn)層獨(dú)立。用戶可以通過規(guī) 范性文件來指定它。傳輸層的類隱藏傳輸層管理和啟用任何spi演算的輸入/ 輸出操作到適當(dāng)?shù)膉ava代碼的直接翻譯。7 java代碼自動(dòng)生成器java的自動(dòng)生成提供了 java實(shí)現(xiàn)的spi演算描述的協(xié)議 的作用,

16、并部分地被規(guī)范文件影響,用戶可以指定幾個(gè)實(shí)現(xiàn) 選擇,例如哪個(gè)角色(客戶端/服務(wù)器)必須分配給spi演算 的進(jìn)程,什么條件都返回參數(shù),哪些傳輸庫必須被使用。生 成的代碼使用了 it.polito安全類和已選擇的傳輸模塊庫提供 的類和方法。從spi演算規(guī)范,以及相關(guān)的規(guī)范文件開始, 代碼生成器將java協(xié)議的實(shí)現(xiàn)類寫在協(xié)議文件中。代碼牛成 器也產(chǎn)生一個(gè)應(yīng)用程序框架(在應(yīng)用程序文件之上)和其他 一些對(duì)啟動(dòng)客戶端應(yīng)用程序/服務(wù)器有用的類文件,因?yàn)橛脩?通常會(huì)使用的握手協(xié)議作為一個(gè)目標(biāo)應(yīng)用程序的前奏。該協(xié) 議文件是由spi演算的行為表達(dá)語法指導(dǎo)翻譯生成的。更確切地說,spi演算的語法樹被訪問,并為每個(gè)s

17、pi演算的操 作,前面有一個(gè)說明注解的產(chǎn)生的java代碼來實(shí)現(xiàn)它。后者 增強(qiáng)了代碼的可讀性,使通信與spi演算規(guī)范可見。圖。4 顯示了最有意思的一段在協(xié)議文件屮生成的安德魯協(xié)議的pa的過程代碼。返回對(duì)象由getreturnparameter (inti)(這 里沒有顯示)的方法檢索。當(dāng)一個(gè)錯(cuò)誤異常產(chǎn)生發(fā)生時(shí)生成classcastexceptions 這可能發(fā)生在信息接收和反序列化操作1: / cb) «c 1 02 si. <i al an itolaifl/4:pely4$:/ : h»i of «<uun /<a ,7;sh4:4 酣an丄

18、a / z 亠p伍j ! 99«»«丄亠0 二 .花工英liaculkhii! dlj dixtffstrni k町st口可htlatciiidhlcal3u-ju ph 】.j 2|> ?4(1$k /<ii 厶*_、 2 w >uixta 3t w 2 )|acxeat j 2cmjjmdi 皿_ld_2 i;-*/ - 232425li曲3113meuf d:3s n4343-43dt:三1354 5738分 qx»ua: tie ad| j |:.qi ldwiiifi-i ,| ,§中/-2二二";| 工】

19、|, dcf (.4 j lto j la /ibndpsxmeu吟; »<_ 二二丄uw丄巫 i 4,mai 厶g"*ieiji. naaorjcae si 4.11丫“ uj9 141 ujlj.ujuji i.1 ;?«il * i 11尼 i 上 c:9:上 “ li a “ <3 s uvojisal | i i*osait 19u 1 siagit ) aali_,hotxjix>l (i idubj |反 &_£_«1血 x aux hu;aju 1 it _習(xí)/-titfa-ttitaiil fiu-2

20、-i-rkt j« rmcucalfiji oiptdi uiai la cabl«! *| x| n« 2 |t aum 人 clsimi.dloifx m.x( *11 |;' l>il業(yè)】4h? l2| /口 hmj dg | cjb _g jto s iv | »idbcm 5(fc ttll jt 1|) m u*9uu«ci«i 產(chǎn) 1 n qxomua: at m ad i hassi4( 1 o.ul u«lu ft | |t kiff 乩二< 5.4 亠匕口 e u isi 尢 xc.m

21、 l u1ab/£ !m:m js«r|odi«rwd r i 9141 wica 1c si mi kil i “ jstrndujt ipmd2«u im! xt丄.y!隘rial ad ; : | tl c ia!bu .1ft! ib f.aul 1a lh&dbm.doj ai» 1 | ri 3udil !be> fct lh 土 .d ln tum. 91jim l;i «i nr | dfe<mcst*y:figure 4. the andrew pa protocol code7.1生成的java

22、代碼特性spi2java是加上一個(gè)協(xié)議分析器3,可以檢測spi演算 的規(guī)格設(shè)計(jì)方案的缺陷。使用分析器,可以達(dá)到對(duì)指泄的協(xié) 議的邏輯正確性的合理的信心。spi2java的主要目的是為了 獲得協(xié)議盡可能真實(shí)于已分析的原始正式的協(xié)議規(guī)范的實(shí) 現(xiàn)。這是通過執(zhí)行一個(gè)語法驅(qū)動(dòng)的翻譯那里有一個(gè)到每個(gè) spi演算描述元素和java代碼片段實(shí)現(xiàn)它之間的一一對(duì)應(yīng)實(shí) 現(xiàn)。更確切地說,一個(gè)映射建立了從spi演算的行為表達(dá)式 到使用安全類庫和從spi演算術(shù)語到安全類庫的行為邏輯。 這種策略保證了生成的代碼結(jié)構(gòu)反映了氐規(guī)范的結(jié)構(gòu)相同, 排除了如果編碼是通過手工完成而可能產(chǎn)生的人為錯(cuò)誤。值得注意的是,該spi演算,不同于其

23、他規(guī)范形式化為 僅描述了交換的消息加密協(xié)議,還可以使協(xié)議角色執(zhí)行的所 有必須檢查的精確規(guī)范。因此,所產(chǎn)生的實(shí)現(xiàn)包括完全指定 的檢查,而不是任何可能的檢查,因?yàn)檫@將需要從其他規(guī)范 形式,并且用一種保守的方法開始檢查。還值得一提的是,該協(xié)議的安全性分析3模型的任何加 密操作在一個(gè)理想化的方式(完美加密)下。因此,即使一 個(gè)協(xié)議從邏輯角度來看已經(jīng)顯示出是正確的,它不能被實(shí)現(xiàn) 保持完全相同的語義,所以,這是不可能的,在一般情況下, 為了正式保證所生成代碼的行為完全作為正式的協(xié)議規(guī)范。然而,即使這是不可能達(dá)到完美的加密,它仍然是可能逼近 完美。事實(shí)上,它有可能改變雙方的安全提供者和算法對(duì)任 何類型的加密

24、操作,允許用戶選擇實(shí)現(xiàn)最佳匹配完美的加密 假設(shè)。這種能力也使得由一個(gè)錯(cuò)誤的影響而造成的輕松替換 算法的實(shí)現(xiàn)在被發(fā)現(xiàn)之前就發(fā)生。現(xiàn)在讓我們考慮由于編程錯(cuò)誤而違反了生成代碼的抗 擾度。因?yàn)樗3傻拇a是一個(gè)簡單的從(安全類和tcpip 層)庫的方法調(diào)用的序列,它足以達(dá)到這種庫由于編程錯(cuò)誤 而違規(guī)產(chǎn)生的抗擾度的高可信度。為了實(shí)現(xiàn)這一點(diǎn),庫都經(jīng) 過精心研制,并已被廣泛的測試。此外,我們的庫和協(xié)議的 實(shí)現(xiàn),是免受以下幾種實(shí)現(xiàn)的弱點(diǎn):緩沖區(qū)溢出是因?yàn)樗?用的實(shí)現(xiàn)語言是java15 4,它可以不受此類攻擊(除了在 jvm本身溢出)。其實(shí)java使用以下,以保障內(nèi)存:數(shù)組邊 界檢查對(duì)每個(gè)數(shù)組的訪問,沒有指針

25、,內(nèi)存由參考(指針是 c和c + +中最容易出錯(cuò)的一個(gè)方面)進(jìn)行管理;對(duì)象轉(zhuǎn)型受 限制(必須保證類型安全);變量不能用在初始化前(另一個(gè) 內(nèi)存保護(hù)機(jī)制);碎片收集自動(dòng)釋放內(nèi)存(避免內(nèi)存釋放錯(cuò)誤)。 當(dāng)一個(gè)消息在一個(gè)不正確的形式解釋,因?yàn)樗邢⒍碱愋?化和代碼總是會(huì)檢查類型不一致,并且當(dāng)不匹配時(shí)引發(fā)一個(gè) 界常類型缺陷。另外請(qǐng)注意,在我們的實(shí)現(xiàn)中所有消息被序 列化,所以如果一個(gè)類型的缺陷發(fā)生時(shí),那么反序列化機(jī)制 失敗并引發(fā)異常。錯(cuò)誤的輸入攻擊因?yàn)樗鼈円蕾囉谶x中的輸 入?yún)?shù),而在檢查對(duì)象在spi演算描述中已經(jīng)規(guī)定,其規(guī)范的止確性是市安全分析器程序3驗(yàn)證。而且我們的類的實(shí)現(xiàn) 提供了所有必要的檢查,并

26、產(chǎn)生一個(gè)異常時(shí)的違反約束??傊P(guān)于協(xié)議實(shí)施的非脆弱性的整體可以達(dá)到高可信 度。此外,該代碼是高度可配置的,因?yàn)橛脩艨梢宰灾鬟x擇 安全提供程序,該加密算法及其參數(shù)。與此同時(shí),僅當(dāng)它真 止需要的情況f,該協(xié)議的代碼實(shí)現(xiàn)優(yōu)化所創(chuàng)建的每個(gè)對(duì)象: 這意味著在每一次所有活對(duì)象是只有那些嚴(yán)格需要。8測試和實(shí)驗(yàn)我們使用所有的iaik4和sun:提供商所支持的功能測試 it. polito. secureclasses庫。而且我們已經(jīng)用幾個(gè)簡單的 特定的協(xié)議例子和一些真正的已知協(xié)議測試:andrew, ksl, ssl, needham-schroeder 測試了 spi2java。9相關(guān)工作在過去的幾年一些

27、工具已經(jīng)發(fā)展到指定,設(shè)計(jì),驗(yàn)證和 實(shí)施加密協(xié)議。雖然很多文件解決方案的驗(yàn)證,只有一些地 址代碼自動(dòng)生成7 12 90由于語言的優(yōu)秀的安全架構(gòu)及抗常見的安全攻擊15 4,我們選擇java作為冃標(biāo)語言為協(xié)議的實(shí)現(xiàn),如7 12 10ospi演算作為協(xié)議規(guī)范語言的選擇提供了一泄相對(duì)于以 前的作品的優(yōu)勢,因?yàn)樗试S顯式指定哪些檢查協(xié)議必須執(zhí) 行。這意味著該代碼發(fā)生器,知道什么樣的控制必須被實(shí)現(xiàn), 可避免產(chǎn)生不需要的控制,從而產(chǎn)生一個(gè)優(yōu)化的協(xié)議代碼。 所有其他的工具7 12 9,從由無上述特征的形式語言來 指定的協(xié)議開始,必須始終執(zhí)行所有可能的檢查。此外,所 有其他的工具7 12 10需要明確指定每個(gè)術(shù)語

28、類型,而直 接在幾乎所有情況下,我們的工具是能夠自動(dòng)理解術(shù)語的正 確類型。加密代碼生成從capsl或cil規(guī)范語言capsl 9開始。 所產(chǎn)生的代碼包括一個(gè)演示環(huán)境,有益查看協(xié)議行為,即應(yīng) 拆除或改裝以供在應(yīng)用程序環(huán)境中直接使用。這種環(huán)境下所 代表的“中間人”攻擊,因此它接收顯示于握手協(xié)議各方之 間交換的所有消息。我們的代碼不包含一個(gè)演示環(huán)境,但是 我們可以在傳輸層中直接添加這樣的功能(建立一個(gè)新的傳 輸庫),從而使信息對(duì)一個(gè)演示應(yīng)用程序重定向能夠表現(xiàn)為 攻擊者。此外在9所生成的代碼是低效的,因?yàn)樗ㄟ^解釋 一個(gè)抽象的數(shù)據(jù)結(jié)構(gòu)來運(yùn)行。另一個(gè)限制是對(duì)加密算法密鑰 對(duì)象,這是固定的des對(duì)稱操作的

29、依賴。另一個(gè)限制是缺乏 由一個(gè)虛擬的加密操作所取代的代碼的公鑰加密。agvi12x具生成由協(xié)議分析儀athena 11所采取的 使用相同的協(xié)議描述的代碼。12包含有關(guān)代碼生成和執(zhí)行 的少量信息。這些信息可能在10中被提及,然而,在網(wǎng)絡(luò) 上是不可達(dá)的。spear ii 7提供了從在gypsie13環(huán)境中報(bào)一種抽象 的協(xié)議規(guī)范的代碼生成,而對(duì)于代碼生成參數(shù)和設(shè)置在圖形 genie14環(huán)境中被指定。所產(chǎn)生的代碼是基于cryptix6和 crypto-j7加密庫。7個(gè)很好的特點(diǎn)是,它使用了公認(rèn)的標(biāo) 準(zhǔn)asn描述信息,從而使生成的代碼與其他非spear ii 實(shí)現(xiàn)溝通。上述所有項(xiàng)目7 12 10生成一個(gè)

30、代碼,不是java的安 全性-提供-獨(dú)立的我們的。提供程序的獨(dú)立性是一個(gè)很好的 功能,因?yàn)槿绻粋€(gè)安全漏洞是在一個(gè)特定的庫中找到,它 可以用另一個(gè)安全提供程序,通過這個(gè)問題,而不需要修改 生成的代碼。只有spear ii生成的代碼7是傳輸層的獨(dú)立 和轉(zhuǎn)換來自直接實(shí)現(xiàn)的協(xié)議規(guī)范代碼,像我們一樣。10結(jié)論一個(gè)新的java的自動(dòng)代碼生成器在spi演算指定加密協(xié) 議已經(jīng)制疋,將在安全協(xié)議規(guī)范和驗(yàn)證環(huán)境中被整合。 spi2java提供了協(xié)議實(shí)現(xiàn)與一個(gè)框架代碼,有助于開發(fā)使用 協(xié)議的應(yīng)用程序。spi2java具有關(guān)聯(lián)一個(gè)類型到每個(gè)spi演算術(shù)語在自動(dòng) 或半自動(dòng)的方式,并檢查抽象描述不協(xié)調(diào)的模塊。隨著sec

31、ureclasses庫,我們已經(jīng)能夠隱藏的加密算法的 復(fù)雜性,并提供最大的靈活性,允許安全提供程序的選擇, 算法和算法參數(shù)為每一種加密運(yùn)算。此外,spi演算對(duì)象和 類z間的嚴(yán)格對(duì)應(yīng)關(guān)系使我們能夠保證有關(guān)代碼的正確性 較高的可信度。傳輸層的模塊泄義允許用戶選擇和替換一個(gè) 簡單的方法傳輸協(xié)議。所產(chǎn)生的java代碼需要優(yōu)化對(duì)象的創(chuàng) 建吋間,避免了常見的實(shí)現(xiàn)攻擊和維持一個(gè)高的可理解性得 益于各行為表述之前存在的注釋。11承諾這項(xiàng)工作已經(jīng)由卓越的多媒體無線通訊都靈理工大學(xué) 的中心(cercom)部分資助。參考文獻(xiàn)1 m abadi and a. d gordon. a calculus forcrypt

32、ographicprotocols the spi calculus inf. comput,1 (148):1 - 70, 1999.2 e. m. clarke, s. jha, and w. marrero. verifying securityprotocols with brutus. acmtrans on softw. eng. andmeth.,9(4):443 - 487, 2000.3 l. durante, r. sisto, and a. valenzano. automatic testingequivalence verification of spi calcul

33、usspecifications. acmtrans, on softw. eng. and meth. , 12 (2) : 222 - 284, apr. 2003.4 t. lindholm and f yell in. the java vir tual machine specification.sun microsystems, 2nd edition. online, availableat: http:/java. sun. com/docs/books/vmspec/_5 g. lowe some new attacks upon security protocolsin 9

34、thieee comp. sec found work,pages 162 - 169, 1996.6 g lowe casper: a compiler for the analysis of securityprotocols. j. comput. secur., 6(1) : 53 - 84, 1998.7 s. luke 11 and c veldma n. automat ed at tack analisys andcode generation in a unified, multi-dimensional security protocolengineering framework comp. science hon., 20028 r. milner, j. parr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論