已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
[碩士論文精品]基于arm核嵌入式系統(tǒng)的aes算法優(yōu)化.pdf 免費(fèi)下載
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
東南大學(xué)碩士學(xué)位論文摘要本文從AES的算法原理和基于ARM核嵌入式系統(tǒng)的開(kāi)發(fā)著手,研究了AES算法的設(shè)計(jì)原則、數(shù)學(xué)知識(shí)、整體結(jié)構(gòu)、算法描述以及AES存在的優(yōu)點(diǎn)平|L局限性。針對(duì)ARM核的體系結(jié)構(gòu)及特點(diǎn),對(duì)AES算法進(jìn)行了優(yōu)化設(shè)計(jì),提出了從AES算法本身和其結(jié)構(gòu)兩個(gè)方面進(jìn)行優(yōu)化的方法,在算法本身優(yōu)化方面是把加密模塊中的字節(jié)替換運(yùn)算、列混合運(yùn)算和解密模塊中的逆列混合運(yùn)算中原米的復(fù)雜的運(yùn)算分別轉(zhuǎn)換為簡(jiǎn)單的循環(huán)移位,乘和異或運(yùn)算。在算法結(jié)構(gòu)優(yōu)化方面是在輸入輸出接口上采用了4個(gè)32位的寄存器對(duì)128BITS數(shù)據(jù)進(jìn)行了并行輸入并行輸出的優(yōu)化設(shè)計(jì);在密鑰擴(kuò)展上的優(yōu)化設(shè)計(jì)是采用內(nèi)部擴(kuò)展,即在進(jìn)行每一輪的運(yùn)算過(guò)程的同時(shí)鋒山F一輪的密鑰,升把F一輪的密鑰暫存在SRAM里,使得密鑰擴(kuò)展與加解密運(yùn)算并行執(zhí)彳丁加密和解密優(yōu)化設(shè)計(jì)是將輪函數(shù)有表操作中的四個(gè)操作表查詢上作合并成一個(gè)操作表布詢L作,同時(shí)為R使加密代碼在解密代碼中可重剛,節(jié)省硬件資源,在解密過(guò)程中采用了與加密相一致的過(guò)稃順序。根據(jù)上述的優(yōu)化設(shè)計(jì),基于ARM核嵌入式系統(tǒng)的ADS開(kāi)發(fā)環(huán)境,提出了AES實(shí)現(xiàn)的軟硬件方案、AES加密模塊和解密模塊的實(shí)現(xiàn)方案以及I|14試方案,總結(jié)了基于ARM卜R的高效編科技巧及混合接口規(guī)則,在集成開(kāi)發(fā)環(huán)境F對(duì)算法進(jìn)行了實(shí)現(xiàn),分別得出了初始密鑰為128BITS、192BITS和256BITS下的加密與解密的結(jié)果,F(xiàn)得劍了止確驗(yàn)證。在性能測(cè)試的過(guò)程中席JIJ編澤器的優(yōu)化選項(xiàng)和其它優(yōu)化技巧優(yōu)化了算法,使算法具有較高的加密速度。關(guān)鍵詞AES,ARM,算法,嵌入式,優(yōu)化東南丈學(xué)碩L。學(xué)位論文ABSTRACTTHISTHESISINTRODUCESTHEALGORITHMPRINCIPLESOFAESANDARMEMBEDDEDSYSTEMTHERESEARCHANDANALYSISOFSYSTEMAREFOCUSEDONTHEDESIGNPRINCIPLESOFAES,THEFUNDAMENTALOFMATHEMATICS,THESTRUCTUREOFAES,THEDESCRIPTIONOFTHEALGORITHMANDTHEADVANTAGEANDLIMITATIONOFAESTHEDESIGNOFAESISOPTIMIZEDACCORDINGTOTHEARMSSYSTEMSTRUCTUREANDCHARACTERISTICTHEOPTIMIZATIONMETHODOFAESISPRESENTEDFROMAESALGORITHMITSELFANDAES7SSTRUCTUREINTHEOPTIMIZATIONMETHODOFAESALGORITHMITSELF,THECOMPLEXCALCULATIONISCONVERTEDTOTHESIMPLECYCLESHIFT,MULTIPLICATIONANDXORCALCULATIONFROMSUBWORDS,MIXCOLUMNSANDLNVMIXCOLUMNSINTHEOPTIMIZATIONMETHODOFAESSSTRUCTURE,THEFOUR32BITSREGISTERSWHICHAREUSEDFORTHEPARALLEL128BITSDATAINPUTANDOUTPUTAREADOPTEDONTHEIOINTERFACETHEINTERIOREXPANDINGMETHODISUSEDONTHEOPTIMIZATIONDESIGNOFKEYEXPANSIONTHEOPTIMIZATIONDESIGNOFDECRYPTIONANDENCRYPTIONISTOCOMBINETHEFOUROPERATIONTABLESOFROUNDFUNCTIONTOONEOPERATIONTABLEATTHESAMETIME,THESAMEPROCESSSEQUENCEOFENCRYPTIONISUSEDINTHEDECRYPTIONPROCESSINORDERTOREUSETHEENCRYPTIONCODEINTHEDECRYPTION,THEREFORETOSAVETHEHARDWARERESOURCEACCORDINGTOTHEOPTIMIZATIONDESIGNMETHODDISCUSSEDABOVE,BASEDONTHEDEVELOPMENTPLATFORMOFADSOFARMEMBEDDEDSYSTEM,THEHARDWARE,SOFTWARE,ENCRYPTION,DECRYPTIONANDTESTPLANSARESUGGESTEDTHEHI曲EFFICIENCYPROGRAMMINGSKILLANDSTANDARDOFTHEMIXTUREINTERFACEARECONCLUDEDAFTERTHAT,THEALGORITHMISREALIZEDINTHEINTEGRATEDDEVELOPMENTPLATFORMTHERESULTSOFTHEENCRYPTIONANDDECRYPTIONUNDERTHEINITIALKEYOFI28BITS,192BITSAND256BLTSAREACHIEVEDANDVALIDATEDAESALGORITHMISOPTIMIZEDBYTHEOPTIMALOPTIONINCOMPILERANDOTHEROPTIMIZATIONSKILL,WHICHENHANCESTHEENCRYPTIONSPEEDOFALGORITHMKEYWORDSAES,ARM,ALGORITHM,EMBEDDEDSYSTEM,OPTIMIZATIONII東南大學(xué)學(xué)位論文獨(dú)創(chuàng)性聲明本人聲明所呈交的學(xué)位論文是我個(gè)人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。盡我所知,除了文中特別加以標(biāo)注和致謝的地方外。論文中不包含其他人已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果,也不包含為獲得冬南大學(xué)或其它教育機(jī)構(gòu)的學(xué)位或證書(shū)而使用過(guò)的材料。與我一同工作的同志對(duì)本研究所做的任何貢獻(xiàn)均己在論文中作了明確的說(shuō)明并表示了謝意。研究生簽名至亟ET期竺ZJ。研究生簽名乏絲期竺JO東南大學(xué)學(xué)位論文使用授權(quán)聲明東南大學(xué)、中國(guó)科學(xué)技術(shù)信息研究所、國(guó)家圖書(shū)館自權(quán)保留本人所送交學(xué)位論文的復(fù)印件和電子文檔,可以采用影印、縮印或其他復(fù)制手段保存論文。本人電子文檔的內(nèi)容和紙質(zhì)論文的內(nèi)容相一致。除在保密期內(nèi)的保密論文外,允許論文被查閱和借閱,可以公布包括刊登論文的全部或部分內(nèi)容。論文的公布包括刊登授權(quán)東南大學(xué)研究生院辦理。研究生簽名乏翕導(dǎo)師簽名日期絲玄塵第一章緒論11AES概述第一章緒論隨著計(jì)算機(jī)運(yùn)算能力的飛速發(fā)展,以及互聯(lián)網(wǎng)所帶來(lái)的巨人并行計(jì)算能力,同時(shí)為了確保信息系統(tǒng)中硬件、軟件及止在處理、存儲(chǔ)、傳輸信息的保密性、完整性和可用性,第一代私鑰加密標(biāo)準(zhǔn)DES安全性及可靠性已逐漸減弱。1997年4月15日,美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所NIST向全世界范闈內(nèi)公開(kāi)發(fā)起征集先進(jìn)加密標(biāo)準(zhǔn)AESADVANCEDENCRYPTIONSTANDARD“的活動(dòng),目的是確定一種保護(hù)敏感信息的公開(kāi)的、免費(fèi)的且全球通用的算法作為AES,以代替DES。在征集公告中,NIST對(duì)算法的基本要求是算法必須是私鑰體制的分組密碼,支持】28位分組長(zhǎng)度和128BIB、192BIB、256BITS密鑰長(zhǎng)度。NIST對(duì)AES進(jìn)行評(píng)估的主要準(zhǔn)則是安全性,效率平1J算法的實(shí)現(xiàn)特性。安全性是第一位的,候選算法席當(dāng)?shù)挚挂阎拿艽a分析方法,沒(méi)有明顯的安全缺陷。佳滿足安傘性的條竹F,效率是最重要的評(píng)F占因素,包括算法在不同平臺(tái)上的計(jì)算速度平對(duì)內(nèi)存空間的需求等。算法的實(shí)現(xiàn)特性包括靈活性,如在不同類型的環(huán)境中能安全和有效的運(yùn)行等。另外,算法必須能夠川軟件和硬件職種方法實(shí)現(xiàn)。經(jīng)過(guò)二輪遴選,RIJNDAEL最終勝山。2000年10月2EL,NIST宣布RIJNDAEL算法作為新一代高級(jí)加密標(biāo)準(zhǔn)。2001年11月26日聯(lián)邦信息處理標(biāo)準(zhǔn)出版豐十發(fā)布了正式的AES標(biāo)準(zhǔn)”J,即FIPSPUBSL97,其中指出制定的標(biāo)準(zhǔn)生效時(shí)間為2002年5月26ET。AES算法是一種可變分組長(zhǎng)度和密鑰長(zhǎng)度的迭代型對(duì)稱密鑰分組密碼,它的分組長(zhǎng)度和密鑰長(zhǎng)度均可獨(dú)立地指定為128BITS、192BITS、256BITS,它以其安全性和多方面的優(yōu)良性能,成為AES的最佳選擇。AES算法能抵抗現(xiàn)在的所有已知密碼攻I靠無(wú)論使_LJ反饋模式還是無(wú)反饋模式,它在廣泛的計(jì)算環(huán)境中的硬R和軟什實(shí)現(xiàn)性能都表現(xiàn)得1R常優(yōu)秀;它的密鑰建立時(shí)間極短且靈活性強(qiáng);它極低的內(nèi)存要求使其非常適合在存儲(chǔ)器受限的環(huán)境中使川,升且表現(xiàn)出很好的性能。12ARM嵌入式系統(tǒng)概述嵌入式系統(tǒng)是指以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件便什可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積和功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。在當(dāng)前數(shù)字信息技術(shù)和網(wǎng)絡(luò)技術(shù)高速發(fā)展的后PC時(shí)代,嵌入式系統(tǒng)技術(shù)已經(jīng)廣泛地滲透到科學(xué)研究、J稃設(shè)計(jì)、軍事技術(shù)、各類產(chǎn)業(yè)和商業(yè)文化藝術(shù)以及人們的日常生活等方方面面中,成為目前最熱FJ的技術(shù)之一。隨著嵌入式產(chǎn)品逐漸II領(lǐng)市場(chǎng)。高性能,低功耗,低成本是這些嵌入式處理器的主要特點(diǎn)。在這些32位嵌入式處理器市場(chǎng)中,ARMJF有786的份額。ARM嵌入式處理器是一種高性能、低功耗的RISC芯片。它由英國(guó)ARM公司設(shè)計(jì),世界上幾乎所有的主要半導(dǎo)體廠商都生產(chǎn)基于ARM體系結(jié)構(gòu)的通州芯片,或在其專用芯片中嵌入ARM相關(guān)技術(shù)。基TARM的芯片都是由ARM的、F導(dǎo)體合作伙伴通過(guò)ARM授權(quán)進(jìn)行設(shè)計(jì)、制造和銷售,各個(gè)合作廠商在ARM技術(shù)的基礎(chǔ)上融入各白的特色,并在多個(gè)領(lǐng)域進(jìn)行應(yīng)用。東南大學(xué)頒上學(xué)位論文目前基TARM技術(shù)的處理器已經(jīng)被J。泛戊川丁各種電子產(chǎn)品中。截至2004年,ARM的合作伙伴共運(yùn)付了近30億個(gè)含有ARM內(nèi)核的芯片,ARM已成為移動(dòng)通信、手持計(jì)算、多媒體數(shù)字消費(fèi)等嵌入式解決方案的RISC標(biāo)準(zhǔn)。自從1991年RISCCPU推出,ARM結(jié)構(gòu)體系發(fā)生了很人演變和提高。在十幾年的發(fā)展過(guò)程中,共發(fā)展出7個(gè)版本的結(jié)構(gòu)體系,每一個(gè)結(jié)構(gòu)體系版本代表了一套指令集定義和相應(yīng)的功能框架,且所有的結(jié)構(gòu)體系都保持了良好的向卜兼容性。不同版本ARM結(jié)構(gòu)體系的特征不同,不同結(jié)構(gòu)體系版本之間極明顯的結(jié)構(gòu)差異。ARM體系結(jié)構(gòu)從VIV3版本開(kāi)始劍目前的CORTEXV7,每個(gè)版本都推動(dòng)著控制器的進(jìn)步。本論文用的是ARM7系列的處理器,使用該系列中的CPU代表是ARM7TDMI,ARMTTDML采用馮諾依曼結(jié)構(gòu),具有3級(jí)流水線,可以提供09MIPS的性能。該內(nèi)核用于嵌入式控制或簡(jiǎn)單的應(yīng)用系統(tǒng)。13AES研究現(xiàn)狀目前AES算法的理論研究士要集中在設(shè)計(jì)原理、安全性能分析和統(tǒng)計(jì)性能分析上。對(duì)丁設(shè)計(jì)原理,主要研究算法設(shè)計(jì)遵循的原則雨整體結(jié)構(gòu)。AES算法所遵循的是安全性和實(shí)現(xiàn)性原則,在整體結(jié)構(gòu)上采用的是SP網(wǎng)絡(luò)結(jié)構(gòu)。對(duì)于安全性能,主要研究AES算法抵抗現(xiàn)有已知密碼攻擊的能力。當(dāng)前土要攻擊手段有強(qiáng)力攻南、差分密碼分析、線性密碼分析、SQUARE攻擊和插值攻擊等。目前密碼分析又有了新的進(jìn)展,積分分析、功耗分析和代數(shù)攻擊成為新的研究方向。對(duì)于統(tǒng)計(jì)性能,主要研究算法隨機(jī)化數(shù)據(jù)的能力,目前國(guó)IJI外研究都比較少。當(dāng)前AES算法的實(shí)現(xiàn)研究主要集中在軟QEC實(shí)現(xiàn)、硬1,|實(shí)現(xiàn)平|IDSP實(shí)現(xiàn)二個(gè)方面。軟件PC實(shí)現(xiàn)主要是劇高級(jí)語(yǔ)言實(shí)現(xiàn)算法,升測(cè)試不同I竹。模式R的性能,商1【IJ的軟RI加密產(chǎn)品還未見(jiàn)到。對(duì)于硬件實(shí)現(xiàn),國(guó)外一些機(jī)構(gòu)和大學(xué)推出了供測(cè)試的AES核CORE,如美國(guó)GMU、NSA、HELION技術(shù)有限公司等大學(xué)平機(jī)構(gòu)。他們提供的AES核人都支持NIST所要求的二種密鑰K度,具有較快的加、解密速度。DSP實(shí)現(xiàn)目前主要還是AES算法在DSP上的性能測(cè)試研究較多。由丁其32位運(yùn)算特性,算法的執(zhí)行速度很快,所以AES算法在32位處理器上有著比較優(yōu)良的性能。14本論文的研究意義隨著計(jì)算機(jī)通信技術(shù)的飛速發(fā)展以及互聯(lián)網(wǎng)的廣泛廊剛,人們對(duì)信息安全的需求也越來(lái)越高。信息安全己成了當(dāng)今尤為重要的且緊迫需解決的問(wèn)題。目前高級(jí)加密標(biāo)準(zhǔn)AES產(chǎn)品正處于使用初期,市場(chǎng)上的AES產(chǎn)品不多,隨著具有高性能、低功耗、低成本特點(diǎn)的嵌入式系統(tǒng)的不斷廣泛應(yīng)_IJ,預(yù)計(jì)不久的將來(lái)基丁嵌入式的AES產(chǎn)品將,I有很大的市場(chǎng)需求空問(wèn)。若將AES研究和開(kāi)發(fā)本土化,具有一定的實(shí)片J價(jià)值,不但可提高它的速度,而且具有高度的保密性,將在一定程度上保證了通信的安全。目前江蘇省專用集成電路設(shè)計(jì)重點(diǎn)實(shí)驗(yàn)室實(shí)現(xiàn)的AESJI密芯片,州原來(lái)的算法花費(fèi)了大量的運(yùn)行時(shí)問(wèn),而且占用了空間大,為了克服這些不足,所以基丁ARM核嵌入式系統(tǒng)上對(duì)AES算法的優(yōu)化研究具有較大的理論意義和實(shí)踐意義。2第一章緒論15本論文研究的內(nèi)容及目標(biāo)本論文研究的內(nèi)容如卜I研究AES算法原理結(jié)構(gòu)和特點(diǎn),對(duì)AES算法的實(shí)現(xiàn)進(jìn)行分析;2研究ARM的體系結(jié)構(gòu)與編程,對(duì)AES算法進(jìn)行優(yōu)化設(shè)計(jì);3采用基丁ARM7TDMI核的嵌入式系統(tǒng)的ADS開(kāi)發(fā)環(huán)境,實(shí)現(xiàn)AES算法。4結(jié)合ARM體系的特點(diǎn),對(duì)AES算法進(jìn)行代碼優(yōu)化及性能測(cè)試。本論文研究的目標(biāo)是提出AES算法優(yōu)化毆計(jì)方案,升在基TARM核的嵌入式系統(tǒng)的開(kāi)發(fā)環(huán)境中進(jìn)行優(yōu)化實(shí)現(xiàn),總結(jié)AES在ARM核中的實(shí)現(xiàn)經(jīng)驗(yàn)并提出優(yōu)化原則。東南大學(xué)碩L學(xué)位論文21AES算法設(shè)計(jì)原則第二章AES算法AES算法在設(shè)計(jì)時(shí)遵循兩方面重要原則一是安全性原則;二是實(shí)現(xiàn)性原則。211安全性原則安全性原則主要是指香農(nóng)SHANNONP”I所提出的混亂原則和擴(kuò)散原則混亂原則是指人們所設(shè)計(jì)的密碼應(yīng)使得密鑰和明文以及密文之間的依賴關(guān)系相當(dāng)復(fù)雜,以至丁這種依賴關(guān)系對(duì)密碼分析者來(lái)說(shuō)無(wú)法利用。擴(kuò)散原則是指人們所設(shè)計(jì)的密碼庸使得密鑰的每一何數(shù)字影響密文的許多上數(shù)字,以防R對(duì)密鑰進(jìn)行逐段破譯,而且明文的每一位數(shù)字也應(yīng)該影響密文的許多位數(shù)字,以便隱敞明文數(shù)字的統(tǒng)計(jì)特性?,F(xiàn)代實(shí)心分組密碼算法通常采用輪函數(shù)多次迭代的結(jié)構(gòu),如果輪函數(shù)設(shè)計(jì)適當(dāng),經(jīng)過(guò)若干次迭代后就可以提供必要的泄亂和擴(kuò)散,這種分絹密碼稱為迭代分細(xì)密碼。而AES算法屬丁迭代分組密碼,在進(jìn)行多輪迭代后就提供了必要的混亂和擴(kuò)散,有效的抵抗了通J【J攻擊。在多輪迭代的同時(shí)也消除了AES算法面向字節(jié)處理的不安全岡素,有效地抵抗了對(duì)算法的專用攻擊。212實(shí)現(xiàn)性原則對(duì)于一個(gè)好的密碼算法,具有良好的實(shí)現(xiàn)性的特點(diǎn)為毆計(jì)簡(jiǎn)單、結(jié)構(gòu)合理緊湊、易于軟件或硬件實(shí)現(xiàn)。硬件實(shí)現(xiàn)的優(yōu)點(diǎn)是可獲得高速率,軟什實(shí)現(xiàn)的優(yōu)點(diǎn)是靈活性強(qiáng),代價(jià)低。軟件實(shí)現(xiàn)的設(shè)計(jì)原則盡暈使_LJF模塊和簡(jiǎn)單的基本運(yùn)算。密碼算法設(shè)計(jì)時(shí)針對(duì)某一特定的K度進(jìn)行,子模塊的長(zhǎng)度應(yīng)盡可能地適應(yīng)軟什編科,如采用8何、16佗、32他的子塊,同時(shí)密碼算法應(yīng)采川一些易于軟件實(shí)現(xiàn)的簡(jiǎn)單運(yùn)算,如加、減、乘、移位運(yùn)算等。硬件實(shí)現(xiàn)的設(shè)計(jì)原則加密和L解密結(jié)構(gòu)應(yīng)盡可能一致,即加密和解密的過(guò)程僅在密鑰的使用方式上不同,以便同樣的器件既可用來(lái)加密又可川來(lái)解密?;∫陨蠈?shí)現(xiàn)性原則,AES算法設(shè)計(jì)完全符合上述原則,岡此具有良好的實(shí)現(xiàn)性。22AES算法數(shù)學(xué)基礎(chǔ)在AES算法中,各種操作都是以字節(jié)為單位進(jìn)行的,字,表示有限域GF2303SL中的元素。有限域的元素可以進(jìn)行加和乘的運(yùn)算。221有限域GF281有限域是具有有限個(gè)元素的域,元素的個(gè)數(shù)稱為域的階。Q階域存在當(dāng)且僅當(dāng)Q是某素4堊三主壘苧鯊數(shù)的冪,即存在某個(gè)整數(shù)N和素?cái)?shù)P,使得QP”,P稱為有限域的特征。有限域記為GFP”AES算法中涉及兩類如F形式的特征域上的多項(xiàng)式。6XB7X7B6X6652564工463X362工261XBO,B,GF221DXA3X3D2X2甜AO,A,GF2822其中6X表示算法中的單字節(jié)B”E數(shù)據(jù),口X表示算法中的四字Y4BYTCS或字WORD數(shù)據(jù)。單字節(jié)也可以用數(shù)據(jù)向量6,B6,B,B。,B,B,B,BO或十六進(jìn)制數(shù)朋肝表示。在AES的描述中均使用以2為特征的有限域。222單字節(jié)運(yùn)算在AES算法描述中,我們把字1,看作多項(xiàng)式。單字1,的遠(yuǎn)算是如21昕示的多項(xiàng)式的運(yùn)算?!繂巫止?jié)加在有限域GF28中,通過(guò)將兩個(gè)多項(xiàng)式中的對(duì)應(yīng)冪的系數(shù)進(jìn)行“加,取2的模來(lái)實(shí)現(xiàn)的,這里的“加”指的是“異或”操作,_LIJ符號(hào)。表示。即1010,1001,以及00020。因此對(duì)于兩個(gè)字節(jié)A,療6D4碼口2Q嘞和BTB6B5B4B3B2BLB。,和為C,C6島。勺C2C,CO,我們可把它描述為Q口,。Q。例如Z6X4X2X1X7X1工7X6X4X2多項(xiàng)式表示01010111O1000001111010100二進(jìn)制表示5783D4十八進(jìn)制表示2單字節(jié)乘在有限域GF28中,兩個(gè)多項(xiàng)式的乘積是將兩個(gè)多項(xiàng)式相乘的結(jié)果再模一個(gè)次數(shù)為8的不可約分多項(xiàng)式MXZ8X4X3X1,用十六進(jìn)制表示為0LLB。例如6石4Z2Z107X1X13XX9工8X7X7X5X3X2砷X6X4X2X1工13X“石9X8X6Z5X4X3113工工9工8工6J5工4J31MODX8Z4Z3Z1Z7Z61即5783疊15東南人學(xué)顧十學(xué)位論文3單字節(jié)乘X41X乘以一個(gè)多項(xiàng)式再模MX,記為BXTIMEA。即通過(guò)字節(jié)級(jí)的左移緊跟一個(gè)有條件的與MX進(jìn)行比特異或來(lái)實(shí)現(xiàn)。例如,5713RE因?yàn)?702XTIME57如5704XTIMEAE475708XTIME47融5710XTIME8E07因此,57135701O02O1057EKEO07肌223四字節(jié)運(yùn)算四字節(jié)運(yùn)算為如22所示的多項(xiàng)式的運(yùn)算。1四字節(jié)加把兩多項(xiàng)式中具有相同的X的冪的有限域系數(shù)相加。例如口XA3X3A2X2ALXA06XB3X362X26LX60則4X6X口3OB3X3A2OB2X2口LOBIX口OOBO2四字節(jié)乘乘法要通過(guò)兩步米實(shí)現(xiàn)。在第一步中,多項(xiàng)式的積被代數(shù)擴(kuò)展,相同次數(shù)的冪進(jìn)行相加;在第二步中,把相加的結(jié)果對(duì)一個(gè)次數(shù)為4的多項(xiàng)式MX取模,MXX4L,這樣使得次數(shù)小丁4的多項(xiàng)式的乘積仍然是一個(gè)次數(shù)小T4的多項(xiàng)式。3四字節(jié)乘X乘X是對(duì)府向麓內(nèi)字仃的一個(gè)左循環(huán)移何。23AES的整體結(jié)構(gòu)分組加密算法是由一種叫做輪變換的函數(shù)通過(guò)多次迭代構(gòu)成的,輪變換的構(gòu)成包括1F線性層,擴(kuò)散層和密鑰調(diào)度等元素。這些設(shè)計(jì)是基丁I香農(nóng)提出的設(shè)計(jì)原LMLJ1線性替代與線性混合函數(shù)交替進(jìn)行。這樣結(jié)合的結(jié)果導(dǎo)致來(lái)自密碼的重要的統(tǒng)計(jì)特性必須是高度相關(guān)的和敏感的類犁,即通過(guò)混合變換的擴(kuò)散和混亂產(chǎn)生充分的混合,使加密后的分組統(tǒng)計(jì)特性分布更均勻。AES在整體結(jié)構(gòu)設(shè)計(jì)上采_L的是替代置換SP網(wǎng)絡(luò)的迭代結(jié)構(gòu)方式,這種結(jié)構(gòu)在安全性方面能抵抗各種攻擊。6第二章AES算法231SP網(wǎng)絡(luò)迭代結(jié)構(gòu)SP網(wǎng)絡(luò)迭代結(jié)構(gòu)是近幾年來(lái)應(yīng)用比較廣泛的一種結(jié)構(gòu),這種網(wǎng)絡(luò)的結(jié)構(gòu)簡(jiǎn)單清晰,每一輪由非線性S層平線性層P層組成,SP型密碼的一輪加密過(guò)樣如圖21所示輪輸入S層了密鑰P層一。一輪輸如圖21SP網(wǎng)絡(luò)結(jié)構(gòu)SP刑密碼的每一輪變換中,首先將S層作_LR輪輸入使其混亂,然后經(jīng)過(guò)P層作_LLJ使之得到擴(kuò)散。SP刑密碼具有的優(yōu)點(diǎn)是給定S層和P層的密碼指標(biāo)后,可以從理論上給出抵抗差分密碼攻擊和線性攻擊的能力。此外,經(jīng)一輪變換后,輪輸入的每一位均得到了擴(kuò)散,這個(gè)比其它類型的結(jié)構(gòu)擴(kuò)散的速度快。232AES算法結(jié)構(gòu)AES算法結(jié)構(gòu)設(shè)計(jì)合理緊湊,其加密解密算法結(jié)構(gòu)如圖27AB所示。AES算法結(jié)構(gòu)屬SP結(jié)構(gòu),組成其每一輪變換的4個(gè)函數(shù)分別屬1S層、P層平密鑰加層。S層是由字節(jié)替換函數(shù)SUBBYTES組成,即是1E線性層,它的作用主要是確保多輪迭代后結(jié)果的高度混亂,其目標(biāo)就是通過(guò)一個(gè)較小的非線性元素得劍一個(gè)大的1E線性構(gòu)件。P層由行移位函數(shù)SHIFLROWS和,0混合函數(shù)MIXCOLOUMNS組成,即是線性層,它的作用是確保多輪迭代后的高度擴(kuò)散,其目標(biāo)就是使1F線性兒素取得盡可能簡(jiǎn)單。密鑰加層密鑰加函數(shù)ADDROUNDKEY組成,該層主要實(shí)現(xiàn)了子密鑰與明文或密文的結(jié)合。24AES算法描述AES為分組密碼算法,數(shù)據(jù)塊長(zhǎng)度為128位,密鑰妖度為128、192、256位可選,以下分別稱之為AES128、AES192和AES256。241狀態(tài)、密鑰種子和輪數(shù)AES算法的明文分組以及每次變換的中間結(jié)果分絹叫作狀態(tài)STATE。狀態(tài)可表示為二維字節(jié)數(shù)組,它有4行4列,如表21所示7東南人學(xué)碩I。學(xué)位論文表21列數(shù)NB4的狀態(tài)AOOAOIA02AO,3AL,0AL,1AI,2AJ3A2,OA2,IA2,2A23A30A3,IA32A3,3輸入按,AO,0,ALO,A2,0,A3,0,AO,I,一的字節(jié)順序映射到狀態(tài)中。加密結(jié)束后,密文按同樣的順序從狀態(tài)中抽取。密鑰種子類似的用二維字節(jié)數(shù)組表示,該數(shù)組有4行,列數(shù)記為NK,NK等于分組艮度除以32,如表22所示KNO陸1硒JK”IKLOKIIKL2KI3K2OK2LK22K23K3,0K3,1K3,2K3,3算法轉(zhuǎn)換的輪數(shù)由表23所示表23密鑰長(zhǎng)度、數(shù)據(jù)塊長(zhǎng)度以及加密輪數(shù)的組合參數(shù)密鑰長(zhǎng)度NK數(shù)據(jù)塊長(zhǎng)度NB輪數(shù)N,分類單位32比特字單位32比特字AES一1284410AES1926412AES2568414242輪變換AES算法加密過(guò)程中的輪變換由四個(gè)變換組成,它們分別是字節(jié)代替SUBBYTE、行移位SHIFLROW、列混合MIXCOLUMN、密鑰加ADDROUNDKEY。輪變換的偽C代碼如R第一輪之前執(zhí)行ADDROUNDKEYSTATE,ROUNDKEYROUNDSTATE,ROUNDKEYSUBBYTESSTATE;SHIFTROWSTATE;MIXCOLUMNSTATE;ADDROUNDKEYSTATE,ROUNDKEY;加密算法的最后一個(gè)輪同稍有不同。它由以F代碼定義FINALROUNDSTATE,ROUNDKEYSUBBYTESSTATE;8第二章AES算法SHIFTROWSTATE;ADDROUNDKEYSTATE,ROUNDKEY;,卜面就輪變換中的四種不同變換分別進(jìn)行介F1SUBBYTES變換SUBBYTES變換即S一盒運(yùn)算,是將每個(gè)字通過(guò)S一盒如表24所示做非線性運(yùn)算。S一盒選取的是有限域GF28中的乘法逆運(yùn)算。GF23中的乘法以表示是多項(xiàng)式的模2乘積通過(guò)免去進(jìn)位,再模一個(gè)次數(shù)為8的不可約多項(xiàng)式約化得到。S盒是可逆轉(zhuǎn)的,它通過(guò)兩步變換得劍1在有限域GF28中求得乘逆,其中00的逆就是它本身。2運(yùn)用下面的仿射變換GF2中6BLO6“4MOD806,5NODSO6,6。OD8O6,7MOD8OC23剛矩陣形式表示,仿射變換結(jié)果如RBOBIB2B3B4B5B611111O000L000OL01LLL11O1OO00L1L1L11LO100LO11L111BOB】B2B3B4B511100011B。L1B,JU111000LJLB,1LOSUBBYTES變換通常是通過(guò)杏表方式來(lái)實(shí)現(xiàn),它的十八進(jìn)制表示形式如表24所示表24S一盒十進(jìn)制形式OL2345678,ABCDEF06370“77BF26B6FC530OL672BFED7AB761CA82E97DFA5947F0ADD4A2AF9CA472C02B7FD9326363FF7CO34A5E5FL71D83115304C723031B96059A071280E2EB27B275409832C1A1B6E5AA0523BD6B329E32F84553DL00ED20FCBL5B6ACBBE394A4C58CF6DOEFAAFB434D33E545F9027F50309FA875LA3408F929D38F5BCB6DA2110FFF3D28CD0013EO5F974417C4A77E3D64SD19739608L4FDE222A908846EEB814DE5E0B曲AE0323A0A4906245C02D3CTC629195E479BE708376D8DD54EA96CS6F4EA657AAE08OBA78252E1CA6B4C6E8DD741F4BBD8B8AD703EB5664803F60E6L3557B986C1LD9EEE1F8981L69C198E949BLE87E9CE5528DFF8EALE90DBFE6426B41992DOFB054BB16狀態(tài)上的表示形式如圖22所示S0S8S12KLDBL12SIS5S4S13HL5L9L,3S2S6SS14SUBBYTEL2L6LL14S3S,S11S15LOL,LIIL15幽22SUBBYTES變換9東南人學(xué)顧I學(xué)位論義2SHIFLROWS變換SHIFLROWS變換是進(jìn)行行變換,即對(duì)狀態(tài)矩陣進(jìn)行移位操作,第一行保持不變,第二行循環(huán)左移PI字節(jié),第二行循環(huán)左移P2字仉第四行循環(huán)左移P3字節(jié)。位移量PL、P2和P3與分組K度NB有關(guān),具體如表25所示1分絹長(zhǎng)皮NBPLP2P3412361238L34圖23表示為SHIFTROWS變換。SO,O鼬TS啦S”IS1OSI,LSL2ST,LS20S2,S22S,|S,0S3ISJ,2S”J竺三當(dāng)_圜琵隧甄二一攀糍豳三馬S叩SOASOA|SI1S12SI3SI,0S22S2,3S20S21S”S30S3IS】2圖23SHIFTROWS變換3MIXCOLUMNS變換MIXCOLUMNS運(yùn)算是把狀態(tài)中的每一列看作GF28上的多項(xiàng)式與一同定多項(xiàng)式AX03X301X201X02相乘然后模多項(xiàng)式Z41,根據(jù)矩陣的乘法運(yùn)算,設(shè)SAXOSX,可得到SO,02SO,CO03SI,OS2。OS3。S1。SO。O02S1。O03S2。OS3。S2。O,。O02J2。O03S3。J3,。03SO,。OS1。OS2。O02S3。閃此一別中的四個(gè)字仃替換如幽24所示24252627圖24MIXCOLUMNS變換4ADDROUNDKEY變換ADDROUNDKEY變換是與擴(kuò)展密鑰的異或運(yùn)算,即根據(jù)加密的輪數(shù)用相應(yīng)的擴(kuò)展密鑰的四個(gè)數(shù)據(jù)項(xiàng)和中間狀態(tài)矩陣上的列進(jìn)行按仲異或B時(shí),S,一,S,?!緽一,。,弘。】。H?!?第一二章AES算法具體如圖25所示SOOLSOJ鞴3,一SOO乳CLS。O2SO3一、鞴OS、LS。I2SJ,3SIMS。LS丁FSL3。批十,掣2。LS22S2JS2M鞠2X22ST,S2OS1,。隧如9鏹蕊蘩S3JSJ;”S32S3,3243密鑰調(diào)度幽25ADDROUNDKEY變換密鑰調(diào)度有兩個(gè)H成部分密鑰擴(kuò)展FKEYEXPANSION和輪密鑰選擇ROUNDKEYSELECTION。其基本原則是1輪密鑰的總何數(shù)筲丁分組長(zhǎng)乘以1NR,如分綱長(zhǎng)為128BIT,輪數(shù)為10,則輪密鑰的總K為1281011408BIT;2種子密鑰擴(kuò)展為擴(kuò)展密鑰,種子密鑰K度為4NK個(gè)字。仉3輪密鑰由以下方法從擴(kuò)展密鑰中獲得對(duì)第1輪密鑰由前NB個(gè)字構(gòu)成;第2輪密鑰由第二個(gè)NB個(gè)字即第NB1個(gè)字到第2NB個(gè)字構(gòu)成;以R依次類推。1密鑰擴(kuò)展KEYEXPANSIONL密鑰擴(kuò)展算法首先利用初始密鑰產(chǎn)生出加密所需要的所有密鑰,然后對(duì)該密鑰序列中的除第一個(gè)雨I最后一個(gè)字外的密鑰字進(jìn)行逆列混合處理,得劍解密過(guò)群所需要的所有密鑰。密鑰擴(kuò)展總共產(chǎn)生NBN什1個(gè)般字算法初始需要一個(gè)NB個(gè)烈字的集合,接著每個(gè)輪操作都需要NB個(gè)雙字的密鑰數(shù)據(jù)。最終的密鑰流稗共包含了一個(gè)4字市烈字的線性數(shù)組,用W吲表示,整個(gè)密鑰擴(kuò)展算法_LJC偽碼表示如FKEYEXPANSIONBYTEKEY4NK,WORDWNBN什1】,NKBEGINWORDTEMPI0WHILEIO;I一I_ROUNDSTATE,I_EXPANDEDKEYNBI;L_FINALROUNDSTATE,I_EXPANDEDKEY;逆密鑰擴(kuò)展的偽C代碼描述如FL_KEYEXPANSIONCIPHERKEY,LEXPANDEDKEYKEYEXPANSJONCIPHERKEY,IEXPANDEDKEY;FO“IL;IR;C滓INR】C】;INR】C】_N【C】R;INC】【RI;,存儲(chǔ)密鑰的二維數(shù)組的轉(zhuǎn)置與以上過(guò)程相似,代碼略。以下三行代碼表示初始密鑰與明文的異或,即密鑰加,F(xiàn)O“R0;RR;C一鞴N【R】【C】;INIR【C】NFC】啡IN【C1【R】。I;幸以F二行代碼表示密文與解密密鑰的異或,即密鑰加FORFO;“4;汁FORC0;C4;CINC】R】JN【C】R“CK【RC】;嚴(yán)以下三行代碼表示當(dāng)I的值為12、14及16時(shí),調(diào)川相麻的解密幽數(shù)IF112CALCULATE4IN,CK;IF114CALCULATE6IN,CK;IFFL16CALCULATE8IN,CK;FO“FO;R4;R卜FORCO;C4;C明文輸出部分代碼PRINTF”4X”,IN【C】R】,其EE口參數(shù)是INC和CKC兩個(gè)字符型數(shù)組,分別為輸入的密文和密鑰;出口參數(shù)是整型二維數(shù)卵IN【C】R】,用來(lái)存放輸出的明文。AES解密模塊測(cè)試主程序如FDAESTESTINTIN4】4】,INTCKU2】4,CHARINC33,CHARCKC65DPRINTF”PLEASECONFIRMLENGTHOFCIPHERKEY128192256、N”;SEANF”D“,1;PRINTFF”、N”;11328PRINTFF”PLEASEENTERCIPHERTEXT、11”;SCANFF”S”INC;PRINTF”N”;PRIMF”PLEASEENTERCIPHERKEYAN“;SCANF”S”,CKC;PRINTFF”NTHERESULTN”;解密模塊,代碼略。FORR0;R4;RFORCO;C4;CHW明文輸出部分代碼PRINTF”4X”,IN【C】【R1第四章基于ARVL核嵌入式系統(tǒng)的AES算法的實(shí)現(xiàn)以128BITS密鑰長(zhǎng)度為例,如果輸入密文69C4EOD86A7B0430D8CDB78070B4C55A,輸入密鑰000102030405060708090AOBOCODOEOF,輸出明文00112233445566778899AABBCCDDEEFF。4I5AES測(cè)試方案IAES正確性測(cè)試方案本AES算法實(shí)現(xiàn)支持128BITS、192BITS雨I256BITS密鑰長(zhǎng)度,所有的測(cè)試向昔均來(lái)白FIPSPUBS197。AES加密模塊主要測(cè)試是在輸入明文后,驗(yàn)證加密模塊輸出密文的止確性,然后再以密文為輸入,驗(yàn)證解密模塊的輸出正確性。加密和解密模塊的輸入、輸出均用十六進(jìn)制數(shù)表示的字符數(shù)組組成,且每一字符均用兩位十六迸制數(shù)表示。具體加密模塊和解密模塊的測(cè)試主科序分別見(jiàn)413節(jié)和414竹中所述。如果測(cè)試產(chǎn)生的輸出數(shù)據(jù)與FIPSPUBS197給出的綿果充全相同,則說(shuō)明加密、解密模塊完全正確。2性能測(cè)試方案因?yàn)榻饷苁羌用艿哪孢^(guò)程,在關(guān)鍵代碼上有很多的相似性,所以本章本節(jié)中以介紹加密性能的測(cè)試方案為例,解密性能同樣可采此方案。1測(cè)試環(huán)境及開(kāi)發(fā)環(huán)境土頻75MHZ開(kāi)發(fā)環(huán)境ARMADSC語(yǔ)言32位編程2測(cè)試方法由丁加密一個(gè)128BITS分絹所需時(shí)間在本測(cè)試環(huán)境F為106秒數(shù)蛙級(jí),一個(gè)分組的加密時(shí)間無(wú)法測(cè)試,所以采用對(duì)同一分絹進(jìn)行N次加密即128XNBITS明文的方法來(lái)實(shí)現(xiàn)加密時(shí)間測(cè)試。假設(shè)測(cè)到的時(shí)間為T,則加密一個(gè)128BITS分緗所需時(shí)間就為TN秒,測(cè)試取N2108。每一種密鑰F測(cè)試二次數(shù)據(jù),得劍二個(gè)速度值,然后取平均值即為該密鑰加密時(shí)的速度。3測(cè)試程序TIME_TSTART,STOPDOUBLETIMEUSEDTIMESTART;獲取系統(tǒng)開(kāi)始時(shí)間FORINTJ1;J200000000J加密或者解密算法模塊TIMESTOP;獲取結(jié)束時(shí)間TIMEUSEDDIFFIIMESTOPSTART,計(jì)算程序執(zhí)行所花費(fèi)的總時(shí)間州NTF”TOTALTIMEUSEDRN“,TIMEUSED在測(cè)試程序中,定義兩個(gè)TIMET類型的變苗STARL和ISTOP,分別表示加密的起始時(shí)間和結(jié)束時(shí)間,整個(gè)加密過(guò)程用的時(shí)間為結(jié)束時(shí)間與起始時(shí)間的籌。所得的加密速度為加密文件的大小單位為MBIT除以加密的時(shí)間T單位為S。其中加密結(jié)果的衡茸指標(biāo)就是它的加密速度,單位為MBITS。東南人學(xué)壩IJ學(xué)位論文42基于ARM核嵌入式系統(tǒng)的AES算法的實(shí)現(xiàn)421基于ARM核嵌入式系統(tǒng)的ADS集成開(kāi)發(fā)環(huán)境在璋L個(gè)系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)過(guò)程中,我們使崩了基丁ARM的嵌入式的ADS集成開(kāi)發(fā)環(huán)境。ARMADS全稱為ARMDEVELOPERSUITE,它是由ARM公司提供的專FJ用丁ARM相關(guān)應(yīng)用開(kāi)發(fā)雨L調(diào)試的綜合性軟件,是一款功能強(qiáng)人義易丁使川的開(kāi)發(fā)L具。ARLVLADS由六部分組成1代碼生成工具CODEGENERATIONTOOLS代碼生成工具由源程序編譯、匯編、鏈接工具集組成。ADS代碼生成工具是一個(gè)用于ARM指令的C和嵌入式C編譯器、匯編器和連接器。用丁使片JC和C語(yǔ)言編寫(xiě)的川戶稃序進(jìn)行編澤和連接,生成ARM內(nèi)核的機(jī)器代碼。代碼生成J只是整個(gè)開(kāi)發(fā)系統(tǒng)的核心。它具有如F特征從速度和長(zhǎng)度上對(duì)程序進(jìn)行優(yōu)化;可選擇凋試平|J優(yōu)化的層次可針對(duì)不同處理器進(jìn)行科序優(yōu)化;支持位置無(wú)關(guān)的代碼和數(shù)據(jù);目標(biāo)文件和調(diào)試表格式采州ELF和DWARF2I業(yè)標(biāo)準(zhǔn);編譯器指示器能指示程序雨數(shù)據(jù)的精確位置;功能強(qiáng)人的ARM指令宏匯編;ADS的C雨I嵌入式CEC編譯器如圖45所示提供了良好的程序與ARM核之間的配合,岡此能有效的縮短程序的K度。此外,特殊的仇化方法還提供了適臺(tái)硬什內(nèi)核的程序優(yōu)化結(jié)果進(jìn)一步降低了程序的規(guī)模。圖45ADS的C編澤器界面2集成開(kāi)發(fā)環(huán)境CODEWARRIORIDEFROMMETROWERKSCODEWARRIORIDE是METROWERKS公司一套比較有名的集成開(kāi)發(fā)環(huán)境,有不少?gòu)S商將它作為界面上具集成在自己的產(chǎn)品中。CODEWARRIORIDE包含I樣管理器、代碼生成接口、語(yǔ)法38第四章基于ARM核嵌入式系統(tǒng)的AES算法的實(shí)現(xiàn)敏感編輯器、源文件和類瀏覽器、源代碼版本控制系統(tǒng)接口、文本搜索引擎等,其功能與VISUALSTUDIO相似,但界面風(fēng)格比較獨(dú)特。ADS僅在其PC版本中集成了該IDE。_HJ戶可以便崩ADS的CODEWARRIORIDE為ARM和THUMB處理器開(kāi)發(fā)HJC,C,或ARM匯編語(yǔ)言的程序代碼。3調(diào)試器DEBUGGERS調(diào)試器分為兩個(gè)調(diào)試器ARM擴(kuò)展調(diào)試器AXDARMEXTENDEDDEBUGGER、ARM符號(hào)調(diào)試器ARMSDARMSYMBOLICDEBUGGER。AXD基丁WINDOWS9X,NT風(fēng)格,AXD窗口如圖46所示,它具有一般意義上調(diào)試器的所有功能,包括簡(jiǎn)單和復(fù)雜斷點(diǎn)設(shè)置、棧顯示、寄存器和存儲(chǔ)區(qū)顯示、命令行接口等。AXD運(yùn)行時(shí)的調(diào)試界面如圖47所示。圖46AXD窗口幽47AXD運(yùn)行時(shí)的調(diào)試界面東南人學(xué)顧I學(xué)位論義ARMSD作為一個(gè)命令行工具輔助調(diào)試或者用在其他操作系統(tǒng)平臺(tái)上。4指令集模擬器INSTRUCTIONSETSIMULATORS用戶使川指令集模擬器無(wú)需任何硬1,|即可在PC機(jī)上完成一部分調(diào)試工作。5ARM開(kāi)發(fā)包ARMFIRMWARESUITEARM開(kāi)發(fā)包由一些底層的例程和庫(kù)組成,幫勘H】戶快速開(kāi)發(fā)基于ARM的應(yīng)用和操作系統(tǒng)。具體包括系統(tǒng)啟動(dòng)代碼、串行口驅(qū)動(dòng)程序、時(shí)鐘例稃、中斷處理程序等,ANGEL調(diào)試軟件也包含在其中。6ARM應(yīng)用庫(kù)ARMAPPLICATIONSLIBRARYADS的ARM麻用庫(kù)完善和增強(qiáng)了SDT中的函數(shù)庫(kù),同時(shí)還包括一些相當(dāng)有用的提供了源代碼的例程。使用ARMADS開(kāi)發(fā)應(yīng)川程序與使川ARMSDT完全相同,同樣是選擇配合ANGEL駐留模塊或者JTAG仿真器進(jìn)行,目前大部分JTAG仿真器均支持ARMADS。422基于ARM核嵌入式系統(tǒng)的軟件開(kāi)發(fā)流程ARMADS軟件開(kāi)發(fā)流稃如圖48所示,紹個(gè)開(kāi)發(fā)流稃分為一個(gè)階段。第一階段根據(jù)各模塊設(shè)計(jì)編寫(xiě)C源代碼。編譯運(yùn)行,確認(rèn)止確性,再利用ADS開(kāi)發(fā)環(huán)境中的AXD調(diào)試器測(cè)試程序的運(yùn)行周期,若不能滿足要求,則進(jìn)入第二階段。第二階段優(yōu)化C源代碼。選擇ADS開(kāi)發(fā)環(huán)境所提供的優(yōu)化項(xiàng)及其高效編程技巧,優(yōu)化代碼,若仍不能滿足效率要求,則進(jìn)入第二階段。第二階段編寫(xiě)匯編代碼。將上一階段測(cè)試到的影響效率的關(guān)鍵代碼段抽取出來(lái),改用ARM匯編語(yǔ)言編寫(xiě),利_【匯編優(yōu)化器優(yōu)化。若性能仍不能達(dá)劍要求,繼續(xù)修改匯編代碼,直到達(dá)到要求為IT。這種C語(yǔ)言和匯編語(yǔ)言同時(shí)使_LJ的編稃方法稱為混合編程。匯編優(yōu)化器的作用是讓開(kāi)發(fā)人員在不考慮ARM7TDMI流水線結(jié)構(gòu)年分配其內(nèi)部寄存器的情況R編,弓ARM匯編語(yǔ)言科序,匯編優(yōu)化器通過(guò)分配寄存器和循環(huán)優(yōu)化,將匯編語(yǔ)言程序轉(zhuǎn)化為利川流水線方式的高速并行匯編程序,這里我采用了ARMADS集成開(kāi)發(fā)環(huán)境作為開(kāi)發(fā)F具。在ADS下,開(kāi)發(fā)者可以對(duì)軟什進(jìn)行編輯、編澤、調(diào)試、代碼性能測(cè)試和進(jìn)行項(xiàng)目管理等所有_|作。我們采用了ARMADS的CODEWARRIORIDE集成開(kāi)發(fā)環(huán)境干F為開(kāi)發(fā)J具,可以對(duì)軟件進(jìn)行編輯、編譯、調(diào)試、代碼性能測(cè)試干進(jìn)行項(xiàng)目管理等所有I作除此之外,ADS還提供了實(shí)時(shí)分析和數(shù)據(jù)可視化功能,從而人人降低了系統(tǒng)的開(kāi)發(fā)難度,使開(kāi)發(fā)者可以將精力集中在應(yīng)HJ開(kāi)發(fā)上。40第四章幕十ARM核嵌入式系統(tǒng)的AES算法的實(shí)現(xiàn)露編寫(xiě)C代碼LQ第GFF二,C獺I代碼寫(xiě)ARM匯編圖48ADS軟件開(kāi)發(fā)流程圖423基于ARM核嵌入式系統(tǒng)的高效率程序開(kāi)發(fā)技巧及接口規(guī)則嵌入式系統(tǒng)對(duì)應(yīng)用軟件的質(zhì)量要求很高,岡而在嵌入式開(kāi)發(fā)中尤其須注意對(duì)代碼進(jìn)行優(yōu)化,盡可能地提高代碼的效率,減少代碼的大小,開(kāi)發(fā)出高效率的程序,開(kāi)發(fā)高效的程序涉及很多方面,包括編程風(fēng)格、算法實(shí)現(xiàn)、針對(duì)目標(biāo)的特殊優(yōu)化等等,實(shí)現(xiàn)這些方面主要從4東南大學(xué)顧L。學(xué)位論文ARM的體系結(jié)構(gòu)特點(diǎn)出發(fā),以F介糾需剛劍的兒種方法。1基于ARM的高效C編程方法1使用SWITCHCASE誥句在程序中經(jīng)常會(huì)使用SWITCHCASE語(yǔ)句,每個(gè)由機(jī)器語(yǔ)言實(shí)現(xiàn)的測(cè)試和跳轉(zhuǎn)僅僅是為了決定F一步要做什么,就浪費(fèi)了處理器時(shí)間。為了提高速度,可以把具體的情況按照它們發(fā)生的相對(duì)頻率排序。即把最可能發(fā)生的情況放在第一,最不可能發(fā)生的情況放在最后,這樣會(huì)減少平均的代碼執(zhí)行時(shí)間。比如在AES算法的SUBWORD中,進(jìn)行了如F的編寫(xiě)VOIDSUBWORDP,IINTP,I;INTKFORKO;KI;KSWITCHPKCASEOX00PKOX63;BREAK;CASEOXOLPKOX7C;BREAK;CASEOX02PKOX77;BREAK;CASE0X03PKOX7B;BREAK;CASE0X04PK20XF2;BREAK;CASEOX05PKOX6B;BREAK;CASEOX06PK_OX6F;BREAK;CASEOX07PKOXC5;BREAK;CASEOX08PKOX30;BREAK;CASEOX09PKOX01;BREAK;CASEOXOAPKOX67;BREAK;CASEOXOBPKOX2B;BREAK;CASEOXOCPKOXFE;BREAK;CASEOXODPKOXD7;BREAK;CASEOXOEPKOXAB;BREAK;CASEOXOFIPKOX76;BREAK;CASEOXLOPK20XCA;BREAK;CASEOXL1PKOX82;BREAK;CASEBREAK;2循環(huán)條件的設(shè)置中LR循環(huán)條件在C中,我們?cè)诰帉?xiě)累加計(jì)數(shù)的方法上習(xí)慣_HJ以下的FOR循環(huán)語(yǔ)句FOR100PI;100DLIMIT;LOOP而相對(duì)用以F遞減至0的計(jì)數(shù)方法較少FOR100PLIMIT;LOOP0;LOOP一1上述兩種計(jì)數(shù)方法在邏輯上并不存在效率上的差異,但是映射劍具體的ARM體系結(jié)構(gòu)中就產(chǎn)生了很大的區(qū)別如圖49所示42第四章基于ARM核嵌入式系統(tǒng)的AES算法的實(shí)現(xiàn)MTFAETLLMTLL刪LHTPILILT_葉LBTFAET2LMLLM”;圖49不同循環(huán)條件設(shè)置比從圖中我們可以看到累加法比遞減法多用了一條指令,當(dāng)循環(huán)參數(shù)比較大的時(shí)候,這兩段代碼就會(huì)在性能上產(chǎn)生明顯的芹異。岡此,住ARM的體系結(jié)構(gòu)R編寫(xiě)C,最女R采用遞減至0的方法來(lái)設(shè)置循環(huán)條件。循環(huán)展開(kāi)小程序的展開(kāi)能夠得到高的運(yùn)行速度性能,但增加了代碼的K度,如果循環(huán)執(zhí)行較少的次數(shù),我們可以把循環(huán)完全展開(kāi),這樣LOOP的開(kāi)銷就完全消火。這是經(jīng)典的速度優(yōu)化,如|鳘410所示圖410循環(huán)展開(kāi)比較可以看出,新代碼里比較指令由100次降低為10次,循環(huán)時(shí)間。竹約了90。目前ARM編譯器沒(méi)有自動(dòng)展開(kāi)的功能,展開(kāi)可以在C的源程序里完成。因此展開(kāi)也為程序的優(yōu)化提供了新的方法。3進(jìn)行變量定義變量定義的次序會(huì)導(dǎo)致最終的映像中不同的數(shù)據(jù)布局,如圖411所示圖411不同的變量定義導(dǎo)致不同的數(shù)據(jù)布局43東南大學(xué)碩LJ學(xué)位論文由此可見(jiàn)在變量聲明的時(shí)候,需要考慮怎樣最佳的控制存儲(chǔ)器布局。當(dāng)然,便一起在一定稃度上能夠優(yōu)化這類問(wèn)題,但是最好的方法還是在編稃的時(shí)候,把所有相同類型的變量放在一起定義。4選用合適的變量類型合適的變量類型可以降低代碼長(zhǎng)度和數(shù)據(jù)長(zhǎng)度,在C中支持的基本類型有CHAR,SHORT,INT和LONG有符號(hào)和無(wú)符號(hào),F(xiàn)LOAT,DOUBLE。在使用局部變苗時(shí),盡昔不要定義為CHAR型和SHORT刑,岡為對(duì)此類型的數(shù),編澤器需要每次賦值后把局部變昔人小還原劍8位或16位,對(duì)有符號(hào)的變量要擴(kuò)展符號(hào)位,對(duì)無(wú)符號(hào)的高侮要添0,故操作8伉或16位的變量比操作32位的變量要多用的指令。例如圖412表示的不同類刪的局部變顰編澤結(jié)果圖412不同類型局部變顰編譯結(jié)果因此使川合適的變量類型1F常重要,它不但縮短代碼艮度,同時(shí)能提高代碼運(yùn)行效率。5利用條件執(zhí)行所有的ARM指令都是可以帶條1,|的,每條指令都有四伉塒丁條1,代碼,指令只有在ARM的FLAG寄存器的標(biāo)忠位顯示出特定的條什成立時(shí)才執(zhí)行。我們可以充分利州ARM的條件執(zhí)行這一特性。來(lái)縮短代碼長(zhǎng)度,優(yōu)化流程控制。例如幽413中的流科是求R0和R。最人公約數(shù)。圖413求最大公約數(shù)科序流程第四章基于ARM核嵌入式系統(tǒng)的AES算法的實(shí)現(xiàn)流程中兩次條件比較,達(dá)到晟優(yōu)結(jié)果的解決方案是STARTCMPRO,RJSUBLTRJ,RI,ROSUBGTRO,RO,RIBNESTARTSTOP從這個(gè)例子我們可以得知,在充分利剛條什執(zhí)行R,可以從一次比較判斷得劍多個(gè)跳轉(zhuǎn)分支。岡此有條件執(zhí)行降低了分支指令的數(shù)日,從而提高了代碼長(zhǎng)度幣I性能。如果一個(gè)條件執(zhí)行指令組的數(shù)目超過(guò)3條,可以考慮使川跳轉(zhuǎn)指令米進(jìn)行條1,|分支,有助丁條件判決速度,但是增加了代碼長(zhǎng)度,屬于代碼長(zhǎng)度與執(zhí)行性能之間的矛盾平衡問(wèn)題。如果性能是首要問(wèn)題,那么在C的條件描述語(yǔ)句中如IF描述語(yǔ)句,應(yīng)盡可能簡(jiǎn)化條件描述。6查表方式好的ARM嵌入式軟件基本上不會(huì)在自己的土循環(huán)里進(jìn)行運(yùn)算I作,一般是先計(jì)算好了,雨劍循環(huán)里布表
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度股權(quán)質(zhì)押資產(chǎn)重組合同示范文本3篇
- 二零二五年度鋼材倉(cāng)儲(chǔ)物流服務(wù)合同9篇
- 二零二五年度路燈照明設(shè)施安全檢測(cè)合同樣本2篇
- 二零二五年度:勞動(dòng)合同法實(shí)務(wù)操作與案例分析合同3篇
- 二零二五年度船舶建造與設(shè)備安裝合同2篇
- 二零二五年度農(nóng)產(chǎn)品質(zhì)量檢測(cè)合同范本3篇
- 二零二五年度安置房買賣合同電子支付與結(jié)算規(guī)范3篇
- 3、2025年度綠色出行接送機(jī)服務(wù)合同范本2篇
- 二零二五年度文化創(chuàng)意產(chǎn)業(yè)合作開(kāi)發(fā)合同范本3篇
- 家里陪護(hù)合同(2篇)
- 手術(shù)室護(hù)理實(shí)踐指南2023年
- 電力安全工作規(guī)程(變電部分)課件
- 新人教版六年級(jí)下冊(cè)數(shù)學(xué)全冊(cè)課件
- 環(huán)保設(shè)施安全風(fēng)險(xiǎn)告知卡
- 卵石地層樁基旋挖鉆施工方案
- 江蘇對(duì)口單招英語(yǔ)考綱詞匯總結(jié)
- (完整word版)手卡模板
- GB/T 4091-2001常規(guī)控制圖
- GB/T 13912-2020金屬覆蓋層鋼鐵制件熱浸鍍鋅層技術(shù)要求及試驗(yàn)方法
- GB 18399-2001棉花加工機(jī)械安全要求
- 陜西省延安市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
評(píng)論
0/150
提交評(píng)論