密碼工程- 課件全套 第1-6章 緒論、實現(xiàn)平臺簡介- SHA256SM3算法_第1頁
密碼工程- 課件全套 第1-6章 緒論、實現(xiàn)平臺簡介- SHA256SM3算法_第2頁
密碼工程- 課件全套 第1-6章 緒論、實現(xiàn)平臺簡介- SHA256SM3算法_第3頁
密碼工程- 課件全套 第1-6章 緒論、實現(xiàn)平臺簡介- SHA256SM3算法_第4頁
密碼工程- 課件全套 第1-6章 緒論、實現(xiàn)平臺簡介- SHA256SM3算法_第5頁
已閱讀5頁,還剩174頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

密碼學基礎密碼學的發(fā)展歷史01有趣的例子13-3-2-21-1-1-8-5ODraconiandevil!

(啊,嚴酷的魔王!)OhLameSaint!

(噢,瘸腿的圣徒?。?/p>

暢銷小說《達·芬奇密碼》里面出現(xiàn)的第一段密碼。在故事中,盧浮宮博物館館長被人殺害,臨死前用隱寫筆在地上寫下了這樣一段令人費解的文字,其中隱藏了重要的信息。主角是如何破譯這段密碼的呢?1-1-2-3-5-8-13-21LeonardodaVinci!(萊昂納多·達·芬奇)

TheMonaLisa!(蒙娜麗莎)

書中用菲波那切數列暗示了字母順序是被打亂的,只需調整字母的排序即可得到答案。而打亂順序只是密碼中最簡單的方法。生活中的密碼提到密碼?手機鎖屏密碼房門解鎖密碼支付寶支付密碼賬號/密碼”中的密碼稱為“口令”,英文稱為password。QQ登陸密碼什么是密碼

密碼關乎國防密碼賦能北斗導航,助力載人航天,保障交通運輸密碼:指一種混淆技術,英文稱為cipher。它希望將可識別的信息轉化成不可識別的信息。

密碼關乎生活我國居民二代身份證:256位的橢圓曲線密碼銀聯(lián)金融IC卡的證書的簽發(fā)機構:國密SM2算法健康碼:國密算法密碼學學科密碼學是研究編制密碼和破譯密碼的技術科學,可分為密碼編碼學和密碼分析學。研究密碼變化的客觀規(guī)律,應用于編制密碼以保守通信秘密的,稱為編碼學;應用于破譯密碼以獲取通信情報的,稱為分析學。密碼學發(fā)展歷程可以分為三個主要階段:古典密碼,近代密碼和現(xiàn)代密碼。在現(xiàn)代密碼學特別指對信息以及其傳輸的數學性研究,常被認為是數學和計算機科學的分支。古典密碼古代-1949年近代密碼1949年-1975年現(xiàn)代密碼1976年至今密碼起源-人類最古老的密碼自人類文明誕生起,密碼幾乎就隨之產生了。古代密碼是從戰(zhàn)爭和軍隊中發(fā)展而來的。在古中國、古印度和古希臘的典籍中均能找到密碼的身影。其中古希臘軍隊使用的Scytale圓木棍也許是人類最早使用的文字加密解密工具。姜子牙《六韜》中記載的“陰符”,主要用來君主和領兵在外的將領通信古印度《經濟論》記載了特務機關的官員用密寫的方式給密探下達任務在公元前700年,古希臘軍隊用一種叫做Scytale的圓木棍來進行保密通信密碼起源-古代加密方法希波戰(zhàn)爭中,為了傳遞秘密信息,剃光了奴隸的頭發(fā),并在這個奴隸的頭皮上刻下信息,當這個奴隸的頭發(fā)長滿之后,再把他送出城外。雖然古代技術水平不發(fā)達,但人們通過自己的智慧發(fā)明了許多可以隱藏信息的手段。這些思想也對現(xiàn)在密碼學的發(fā)展有著很多啟發(fā)。隱寫術和藏頭詩是比較典型的古代加密方法。用藏頭詩來傳達愛慕之意也是獨屬于中國詩人的浪漫。古典密碼—凱撒密碼明文abcdefghi密文EFGHIJKLM明文jklmnopqr密文NOPQRSTUV明文stuvwxyz密文WXYZABCD歷史:公元前58年左右,高盧戰(zhàn)爭時期,凱撒大帝發(fā)明了一種密碼,即凱撒密碼。為了和聯(lián)軍聯(lián)絡,凱撒在他的軍事命令中,將每一個字母都進行了位移,以防止他的敵人在截獲凱撒的軍事命令之后,直接獲取到他的真實情報。原理:凱撒密碼中,若將字母位移4位,則密文字母與明文字母如下對應關系。attackEXXEGO古典密碼—維吉尼亞密碼明文:ATTACKATDAWN密鑰:LEMONLEMONLE密文:LXFOPVEFRNHR起源:1466年末1467年初,利昂?巴蒂斯塔?艾伯蒂第一個提出多表代替密碼的概念。歷史:維吉尼亞密碼最早記錄在貝拉索于1553年所著的書中。法國外交官維吉尼亞改進了貝拉索密碼,但,貝拉索密碼卻被人當作他的發(fā)明,被稱為維吉尼亞密碼。原理:維吉尼亞密碼是由一些位移量不同的愷撒密碼組成,可以用表格法來生成密碼。凱撒密碼屬于單表代替密碼,容易受到頻率分析攻擊,因此多表代替密碼被提出起源:1918年,德國發(fā)明家亞瑟·謝爾比烏斯發(fā)明了第一臺Enigma編碼機。結合了機械系統(tǒng)與電子系統(tǒng)。影響:在相當長的時間里Enigma編碼機使德軍在情報方面處于領先地位。在1942年之前,裝備了英格瑪的德國潛艇部隊一共擊沉了盟軍艦船1000余艘。原理:通過使用轉子和反射器實現(xiàn)了流密碼的加密過程。要想通過“暴力破解法”還原明文,需要17576x6x100391791500,其結果大約為10,000,000,000,000,000!即一億億種可能性。近代密碼—Enigma密碼機近代密碼—圖靈和Enigma密碼機艾倫·麥席森·圖靈(AlanMathisonTuring,1912年6月23日-1954年6月7日),計算機科學之父,人工智能之父。美國計算機協(xié)會(ACM)于1966年設立圖靈獎,以表彰在計算機科學中做出突出貢獻的人,圖靈獎被喻為“計算機界的諾貝爾獎”。1999年,他被《時代》雜志評選為20世紀100個最重要的人物之一。圖靈二戰(zhàn)德軍俾斯麥號戰(zhàn)列艦1939年秋,圖靈臨危受命,負責破譯Enigma。Enigma機有一個致命的弱點,那就是一個字母加密后不可能是它本身。利用這一點,圖靈建造世界上第一臺軍用計算機—圖靈機用來破譯德軍密碼。1941年,英國利用圖靈機截獲并破譯了德軍的一份密電,得到了德軍巨型戰(zhàn)列艦“俾斯麥”號的行軍路線,并將其一舉擊沉。1949年Shannon發(fā)表《保密系統(tǒng)的通信理論》,基于此,密碼逐漸從戰(zhàn)爭的輔助工具中脫離而出,在20世紀70年代發(fā)展成為一門真正的學科。香農(Shannon,1916年4月30日—2001年2月24日)是美國著名數學家、信息論的創(chuàng)始人。去世時貝爾實驗室和MIT發(fā)表訃告都尊崇香農為信息論及數字通信時代的奠基人。密碼學發(fā)展成為系統(tǒng)的學科之后,出現(xiàn)了各種各樣的密碼,根據密碼算法的各方面的性質,現(xiàn)代密碼主要包括:對稱密碼公鑰密碼Hash函數量子密碼后量子密碼密碼學中的重要里程碑!現(xiàn)代密碼—香農信息論1976年1977年1978年1985年2001年至今DH密鑰交換公鑰密碼起源RSA第一個完善公鑰密碼DES第一個現(xiàn)代單鑰加密算法AESDES破解后的新標準橢圓曲線加密更優(yōu)秀的公鑰加密同態(tài)加密算法、量子加密、后量子密碼算法現(xiàn)代密碼—發(fā)展歷程密碼學的分類02現(xiàn)代密碼—兩大密碼體制對稱密碼公鑰密碼對稱密碼的主要思想是擴散和混淆,加解密雙方擁有同樣的密鑰,通過安全信道傳遞密鑰。典型的對稱密碼包括DES,3DES,AES公鑰密碼用于加密和解密的密鑰是不同的。公鑰密碼算法領域誕生了多個圖靈獎獲得者。提出RSA算法的Rivest,Shamir,Adleman和提出密鑰交換算法的Diffie和Hellman。對稱密碼

【擴散】和面

【混淆】1973年,美國國家標準局(NIST)征求國家密碼標準時,IBM提供了Tuchman-Meyer方案1977年,Tuchman-Meyer方案被正式確立為數據加密標準,即DES1998年7月,電子前哨基金會(EFF)利用一臺造價不足25萬美金的特殊計算機攻破了DESNIST征集新的密碼標準替換DES,采納Rijndael算法作為新的標準算法,即AES。2001年正式推出小知識:DES和AES內部結構中都含有一個S盒,用來進行字節(jié)替換。而DES的S盒設計被列入官方機密。因此,用戶不能確定S盒中是否有陷門存在。DES流程采用兩個相關密鑰將加密和解密能力分開,即加密密鑰和解密密鑰是不一樣的。加密密鑰簡稱公鑰(publickey),解密密鑰簡稱私鑰(privatekey)。加密密鑰可以公開,解密密鑰必須保密。從加密密鑰計算解密密鑰是困難的公鑰密碼的基本思想公鑰密碼的要求加密密鑰解密密鑰加密密鑰密文明文公鑰密碼由密文和加密密鑰恢復明文是困難的。公鑰公開私鑰保密公鑰密碼—RSA1978年RonRivest,AdiShamir,LeonardAdleman三人提出RSA算法,算法的名稱是他們三個人首字母的縮寫。RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近三十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優(yōu)秀的公鑰方案之一。原理:根據數論,尋求兩個大素數比較簡單,而將它們的乘積進行因式分解卻極其困難,即大整數分解困難問題。

橢圓曲線密碼系統(tǒng)(ECC)在1985年分別由VictorMiller和NealKoblitz獨立提出。橢圓曲線密碼的理論基礎是有限域上的橢圓曲線。而中學時期我們就接觸過圓錐曲線,里面也有橢圓,這二者雖然都叫橢圓,但是卻差別很大。

公鑰密碼—ECC國內密碼的發(fā)展王小云與哈希函數王小云:山東大學網絡空間安全學院院長、清華大學高等研究院“楊振寧講座”教授。中國科學院院士,國際密碼協(xié)會會士(IACRFellow),中國密碼學會副理事長。2004年8月,密碼學最頂級會議美密會上,王小云院士現(xiàn)場演示了當時公認最安全的哈希函數MD5的破解方法。短短一年之后就再次攻破了美國NIST標準算法SHA-1。迅雷等下載軟件中使用的哈希校驗碼就是密碼中哈希函數最常見的應用了。哈希函數:將任意長度的消息壓縮到某一固定長度的消息摘要的函數。我喜歡密碼425f0d5a917188d2c3c3dc85b5e4f2cb商用密碼標準體系中華人民共和國密碼法:第六條國家隊密碼實行分類管理。密碼分為核心密碼,普通密碼和商用密碼。核心密碼是采用加密保護和安全認證措施用于保護傳輸、存儲及處理國家絕密級、機密級、秘密級信息的密碼。核心密碼廣泛應用于國防、外交、安全等領域。對于維護國家安全和利益具有重要作用。核心密碼普通密碼是采用加密保護和安全認證措施用于保護傳輸、存儲及處理國家機密級、秘密級信息的密碼。相比于核心密碼,普通密碼保護的信息級別較低,應用范圍更加廣泛,例如在政府機構、教育機構等。普通密碼商用密碼是指對不涉及國家秘密內容的信息進行加密保護和安全認證所使用的密碼技術和密碼產品。商用密碼技術是商用密碼的核心。商用密碼商用密碼標準體系

商用密碼算法商用密碼算法主要指的是由國家密碼管理局制定并認可的國產密碼算法體系,用于保護非國家秘密信息的一系列加密、解密、數字簽名和驗證等密碼技術標準。常見的商用密碼算法可以分為三類:對稱密碼算法、公鑰密碼算法和哈希函數。對稱密碼算法商密算法公鑰密碼算法哈希函數對稱密碼加解密速度較快,常用于大量數據加密。國產商密體系中的對稱密碼包括ZUC、SM1、SM4、SM7。公鑰密碼加解密速度較慢,常用于密鑰交換。國產商密體系中的公鑰密碼包括SM2、SM9。哈希函數常用于數據完整性校驗。國產商密體系中的哈希函數包括SM3。國產商用密碼ZUCSM1SM4SM7SM2SM9SM3算法類型對稱密碼算法公鑰密碼算法哈希函數算法技術祖沖之算法分組密碼分組密碼分組密碼橢圓曲線密碼算法基于身份的密碼算法國產哈希函數應用場景3GPPLTE第三套加密標準核心算法國家政務通智能IC卡、加密卡、加密機身份識別、票務、支付替換RSA算法金融、政務、能源、交通金融、政務、能源、交通公布時間2011年2010年2012年2012年2010年2012年2010年ISO/IEC國際標準2020年2021年2017年2021年2018年密碼學的發(fā)展趨勢03密碼的安全基礎—計算安全以目前應用最廣泛的RSA公鑰加密算法為例。RSA安全性依賴于大整數分解問題。將兩個質數相乘非常容易,但是想要對其乘積進行分解,卻極其困難。目前RSA加密算法的密鑰長度已經到達2048比特。

RSA之所以安全,并不是因為它具有不可破解性,而是傳統(tǒng)計算機無法在短時間內解決大整數分解問題。RSA用于銀行令牌RSA用于電子政務加密RSA用于通訊加密傳統(tǒng)密碼學的危機1994年,應用數學家PeterShor提出著名的Shor算法,可以在多項式時間復雜度內解決有限交換群的隱藏子群問題。該問題涵蓋了RSA密碼、Diffie-Hellman密鑰交換和橢圓曲線密碼等常見公鑰密碼所基于的底層困難問題。Shor算法Shor算法將RSA算法的核心大整數分解問題轉化為函數周期問題,再利用量子計算機以極高的效率實現(xiàn)量子傅里葉變換。經典計算機需要數百萬億年才能破解RSA-2048,量子計算機使用2000萬個量子比特可以在數小時內破解RSA-2048。量子計算機嚴重威脅了現(xiàn)代公鑰密碼體制傳統(tǒng)密碼學的危機Peter

ShorShor算法基于量子計算模型構建的大整數分解算法,同時適用于求解離散對數問題LovGroverGrover算法可對隨機數據的搜索問題進行兩倍加速,大大提升了搜索速度傳統(tǒng)公鑰密碼對稱密碼對RSA、ECC等傳統(tǒng)公鑰密碼是致命打擊將AES、SM4對稱密碼的安全性降低一半可以抵抗量子計算攻擊的后量子密碼應運而生!后量子密碼定義是能夠抵抗量子計算機攻擊的經典密碼算法后量子密碼是量子計算機出現(xiàn)后,在量子時代仍然安全的密碼!也被稱作抗量子(quantum-resistant)或量子安全(quantum-safe)密碼量子計算:將“難解”問題變“易解”問題,傳統(tǒng)密碼系統(tǒng)將無密可保。尋求可以抵抗量子計算機攻擊的“難解”問題?基于抗量子計算機攻擊的“難解”問題構造密碼算法“九章”量子計算機后量子密碼分類同源密碼多變量密碼基于編碼的密碼格密碼基于哈希的密碼不同困難問題后量子密碼算法體系后量子密碼根據底層數學困難問題的類型主要可分為五類后量子密碼算法,其中格密碼在安全性、效率、密鑰尺寸等方面取得較好的平衡,因此是大部分后量子密碼研究者關注的重點。格密碼最短向量問題(SVP)最近向量問題(CVP)格又稱點陣,是一組線性無關的非零向量(格基)的整系數線性組合。

格密碼基于格上問題的困難性,如最短向量問題(SVP)、最近向量問題(CVP)及其變種等。代表性后量子密碼算法有Kyber、Dilithium、Falcon等。2005年,Regev提出了基于LWE的加密方案,成為后續(xù)研究的基礎。2022年NIST選擇的后量子密碼標準方案中過半數都基于格密碼。1996年,Ajtai和Dwork提出了第一個基于格的公鑰加密方案。2010年,Lyubashevsky、Peikert和Regev提出了基于Ring-LWE的加密方案,使得基于格的方案更加高效。基于哈希的密碼哈希函數是將任意長度的消息映射到固定長度輸出的映射。

基于哈希的抗量子密碼利用哈希函數的單向性和抗碰撞性來保證安全性。常見的方法包括Merkle樹結構和哈希鏈。代表性后量子密碼算法有Sphincs+,XMSS等。2011年,IETF開始對基于哈希的簽名方案(如XMSS和LMS)進行標準化。2017年,Aumasson等人基于SPHINCS提出了SPHINCS+

簽名算法。1979年,RalphMerkle提出了Merkle樹和Merkle簽名方案。2015年,Bernstein等人提出了實用無狀態(tài)簽名方案SPHINCS。

哈希函數原理Merkle樹信道編碼的目標是設計高效的冗余編碼,以便在傳輸過程中糾正由信道噪聲引入的錯誤,從而實現(xiàn)正確的譯碼?;诰幋a的密碼依賴于隨機誤差下的線性碼的解碼困難性如隨機線性碼的最小碼字問題等。代表性后量子密碼算法有McEliece、Niederreiter等。1986年,Niederreiter提出了基于錯誤糾正碼的另一種加密方案。2021年,NIST開始評估基于編碼的后量子密碼方案,如ClassicMcEliece。1978年,RobertMcEliece提出了McEliece公鑰加密方案。2008年,McEliece方案被重新審視,并被認為是抗量子計算的有力候選方案。信息論中的編碼譯碼密碼學中的編碼密碼基于編碼的密碼基于多變量的密碼基于多變量的算法使用有限域上具有多個變量的二次多項式組構造加密、簽名、密鑰交換等算法。多變量密碼的安全性依賴于求解非線性方程組的困難程度,即多變量二次多項式問題。該問題被證明為非確定性多項式時間困難?;诙嘧兞康拇硇院罅孔用艽a算法有GeMSS、Rainbow等。MQ問題1995年,Patarin提出了UOV公鑰密碼方案。2016年,Bardet等人提出GeMSS算法,進入了NIST第三輪備選方案2006年,Petzoldt等人提出了Rainbow公鑰密碼方案。1988年,Matsumoto和Imai提出了第一個基于多變量公鑰密碼的方案,稱為"C*"密碼?;谕吹拿艽a同源指兩條橢圓曲線之間存在一個映射,這個映射能夠保持它們的群結構同態(tài)。同源密碼是一種建立在橢圓曲線同構理論之上的密碼學方案,以橢圓曲線同構問題的難度為基礎?;谕吹拇硇院罅孔用艽a算法有SIKE等。同源曲線2011年,DavidJao和LucaDeFeo提出了SIDH密鑰交換協(xié)議。2019年,NIST選擇SIDH的改進版本SIKE方案進入第三輪標準化評選。2006年,DavidJao和StevenGalbraith提出了基于同源密碼的公鑰密碼方案Jao-Galbraith。2018年,加拿大滑鐵盧大學的研究人員提出了CSIDH密鑰交換協(xié)議,具有可交換性和抗量子性。密碼學的應用04密碼學在信息安全保護中的作用信息安全要素需

求所應付的典型威脅可用的密碼技術機密性數據傳輸存儲加密

竊聽

非法竊取數據

敏感信息泄露對稱加密和非對稱加密數字信封完整性數據未被未授權篡改或損壞

篡改

重放攻擊

破壞哈希函數和消息認證碼數據加密數字簽名可鑒別性鑒別數據信息和用戶、進程、系統(tǒng)等實體

冒名口令和共享秘密數字證書和數字簽名不可否認性防止源點或終點抵賴自身獨有無法偽造

否認已收到數據

否認已發(fā)送數據數字簽名證據存儲授權與訪問控制設置應用、資源細粒度訪問權限

非法存取數據

越權訪問屬性證書訪問控制實現(xiàn)平臺簡介密碼工程與硬件平臺01密碼工程定義理論與實踐結合:密碼工程將密碼學理論應用于實際系統(tǒng)和網絡,保護信息安全。它不僅關注密碼算法的設計和分析,還涵蓋實現(xiàn)、應用和評估。密碼工程的目標是設計高效、安全的加密和解密算法,并將其應用于實際系統(tǒng)中,以保護用戶的隱私和敏感信息。交叉學科特性:密碼工程涉及微電子、計算機科學、數學和密碼學等多個領域。密碼工程師需掌握密碼學理論、計算機程序設計、硬件設計和網絡通信等技能,了解不同硬件平臺的特性,以實現(xiàn)最優(yōu)的密碼算法。硬件平臺重要性不同處理器平臺硬件平臺作為密碼工程實現(xiàn)的支撐和基底,為密碼安全實現(xiàn)提供了必要的支持。不同的平臺具有不同的計算能力、內存大小、通信速度和功耗等特點。選擇合適的硬件平臺并進行優(yōu)化,可以顯著提高加密和解密的性能效率,減少能源消耗,降低硬件成本。本章將介紹幾種常見的硬件平臺,包括x86、ARM、RISC-V和GPU等,分析它們的發(fā)展史、指令集特點及優(yōu)缺點。CPU實現(xiàn)平臺02中央處理器(CPU)中央處理器(CentralProcessingUnit,CPU)作為計算機系統(tǒng)的運算和控制核心,是信息處理、程序運行的最終執(zhí)行單元。按照所用指令集的復雜程度可以將CPU中的指令集分為復雜指令集和精簡指令集兩種指令系統(tǒng)類型。CPU中的指令集復雜指令集計算機(CISC)

復雜指令集計算機(CISC)是一種計算機體系結構。計算機問世后最初主要采用CISC架構,其中服務器和個人計算機等平臺也主要采用CISC架構,其核心特點是:指令集復雜:包含大量功能強大的指令,單條指令可以執(zhí)行多個或多步底層操作,有些指令可以直接完成高級操作(如訪存操作、字符串處理、復雜數學運算等。變長指令:指令長度可變,有專門的指令用于完成復雜的特定操作,不同指令使用頻率差異較大。多種尋址方式:支持多樣化的內存訪問方式,包括立即尋址、基址尋址、變址尋址等。硬件執(zhí)行復雜操作:依賴硬件電路直接實現(xiàn)復雜指令,減少軟件層面的工作量。開發(fā)復雜,實現(xiàn)難度大,研發(fā)周期較長。X86平臺

x86是CISC的代表性實現(xiàn),具有龐大的指令集(超過1000條)、變長指令(從1字節(jié)到15字節(jié)不等)、復雜尋址模式(支持寄存器、內存、偏移量等多種尋址方式)等特點。1978年,Intel推出了8086處理器(16位),奠定x86基礎。1985年,Intel80386(首款32位x86CPU)引入保護模式,支持現(xiàn)代操作系統(tǒng)(如Windows、Linux)。2003年,AMD率先推出x86-64(64位,兼容32位),Intel被迫授權AMD64(后稱Intel64)。Intel8086處理器Intel80386處理器X86發(fā)展歷史重要指令集相同處理器上,使用不同指令集的效率對比(注:FLOPS是每秒所執(zhí)行的浮點運算次數的縮寫)SSE:1999年,Intel在PentiumIII中引入SSE(StreamingSIMDExtensions)指令集,作為對MMX指令集的擴展,新增70條指令,重點提升浮點運算和多媒體性能。(1)新增8個128比特獨立寄存器(XMM0~XMM7),支持多種數據類型;(2)支持單指令多數據(SIMD)浮點運算,一條指令可同時處理多個浮點數。AVX:2008年3月,Intel提出了x86指令集的SSE延伸架構AVX指令集,其核心改進為:(1)256位YMM寄存器(兼容原有128位XMM);(2)三操作數SIMD指令格式(目標寄存器獨立于源操作數);(3)VEX編碼方案(優(yōu)化指令格式,支持更靈活的操作)。AVX2:將大多數整數命令操作擴展到256比特,支持整數SIMD操作。AVX-512:使用新的EVEX前綴編碼將指令進一步擴展到512比特。精簡指令集計算機(RISC)

精簡指令集計算機(RISC)具有統(tǒng)一的指令長度,指令數量少但高效,通過大量的寄存器和流水線進行優(yōu)化,大大降低了指令的CPI(CyclesPerInstruction,執(zhí)行每條指令所需的時鐘周期),典型代表有

MIPS、ARM、RISC-V。RISC核心特點是:指令數量少:通常幾十到幾百條,格式統(tǒng)一,功能簡單。固定長度指令:所有指令長度相同(如ARM采用32/64位定長編碼),簡化譯碼和流水線設計。寄存器密集型:大量通用寄存器(通常16–32個),減少訪存開銷。采用Load/Store架構:只有專門的加載(Load)和存儲(Store)指令可訪問內存,其余指令僅操作寄存器。高效流水線:單周期執(zhí)行簡單指令,支持深度流水線;通過流水線并行提高吞吐量。硬件優(yōu)化,減少微碼:指令直接由硬件電路執(zhí)行,避免CISC的微碼解釋開銷。編譯優(yōu)化友好:依賴編譯器優(yōu)化指令順序,最大化利用寄存器和流水線。MIPS指令集

MIPS(MicrocomputerwithoutInterlockedPipelineStages)是最早的RISC處理器之一,其含義是無互鎖流水級微處理器。MIPS強調軟硬件協(xié)同提高計算機性能,達到簡化硬件設計的目的。2010年后快速迭代,5年發(fā)布4個版本,逐步新增多線程、DSP、SIMD、虛擬化等模塊。其核心特點是:固定32位指令編碼:僅3種格式(R類、I類、J類)。單周期執(zhí)行:一個動作一個階段。無專用棧指令:棧操作通過內存訪問實現(xiàn)(如push=存儲+棧指針移動)。代碼密度較低:指令固定4字節(jié),x86平均3字節(jié)。嚴格內存對齊:僅支持“基址+16位偏移”尋址。ARM簡介ARM是一個公司的名字ARM代表一項技術,即AcornRISCMachineARM是一個內核,而不是我們看到的具體芯片架

構處理器家族ARMv1ARM1ARMv2ARM2、ARM3ARMv3ARM6、ARM7ARMv4StrongARM、ARM7TDMI、ARM9TDMIARMv5ARM7EJ、ARM9E、ARM10E、XScaleARMv6ARM11、ARMCortex-MARMv7ARMCortex-A、ARMCortex-M、ARMCortex-RARMv8Cortex-A50ARM處理器架構的多次迭代1978年:Acorn公司成立1985年:開發(fā)首款32位RISC處理器ARM11990年:為廣泛推廣ARM技術成立了獨立的公司ARM,主要設計ARM系列RISC處理器內核,授權給生產和銷售半導體的合作伙伴2011年:Windows支持ARM,進軍桌面市場至今:移動端霸主,年出貨量超300億顆ARM特點及優(yōu)勢ARMv8核心特點ARM技術優(yōu)勢雙執(zhí)行狀態(tài):NEONSIMD指令:AArch64(64位):A64指令集AArch32(32位):兼容ARMv732個128位寄存器(v0-v31)支持8/16/32/64位數據并行處理低功耗高性能:適合移動設備雙指令集:Thumb(16位)+ARM(32位)大量使用寄存器,指令執(zhí)行速度快。豐富的產品線:Cortex-M:微控制器Cortex-R:實時控制Cortex-A:高性能應用RISC-VRISC由美國加州大學伯克利分校教授DavidPatterson發(fā)明。RISC-V(讀作“risk-five”),表示第五代精簡指令集,起源于2010年伯克利大學并行計算實驗室的一個項目,希望選擇一款指令集用于科研和教學,該項目在x86、ARM等指令集架構中徘徊,最終決定自己設計一個全新的指令集,RISC-V由此誕生。RISC-V的最初目標是實用、開源、可在學術上使用,并且在任何硬件或軟件設計中部署時無需版稅。核心技術創(chuàng)新32個可配置向量寄存器(v0-v31)動態(tài)數據類型支持(8/16/32/64位)與SIMD對比優(yōu)勢:硬件決定元素長度編譯器無需適配不同硬件RISC-V基本指令集指令數描

述RV32I4732比特地址空間與整數指令,支持32個通用整數寄存器RV32E47RV32I的子集,僅支持16個通用整數寄存器RV64I5964比特地址空間與整數指令,以及一部分32比特的整數指令RV128I71128比特地址空間與整數指令,以及一部分64/32比特的指令RISC-V指令集采用模塊化的方式進行組織設計,由基本指令集和擴展指令集組成,每個模塊用一個英文字母表示。整數(Integer)指令集用字母“I”表示,這是RISC-V處理器最基本也是唯一強制要求實現(xiàn)的指令集。其他指令集均為可選模塊,可自行選擇是否支持。擴展指令集指令數描

述M8整數乘法與除法指令A11存儲器原子(Atomic)操作指令和Load-Reserved/Store-Conditional指令F26單精度(32比特)浮點指令D26雙精度(64比特)浮點指令,必須支持F擴展指令C46壓縮指令,指令長度為16比特GPU實現(xiàn)平臺03圖形處理器(GPU)圖形處理器(GraphicsProcessingUnit,GPU)又稱為顯示核心、視覺處理器、顯示芯片,是一種專門在個人計算機、工作站、游戲機和一些移動設備上做圖像和圖形相關運算工作的微處理器。核心特點:(1)高度并行計算架構:采用SIMT(單指令多線程)模式,支持數千個線程同時執(zhí)行,核心數量遠超CPU。(2)專用計算單元:流處理器(CUDA/ShaderCore),優(yōu)化浮點/整數運算;TensorCore(AI加速)。(3)高帶寬內存:顯存帶寬達1TB/s,適合大規(guī)模數據吞吐。應用領域:圖形渲染、AI計算、高性能計算、數據處理等。CPU和GPU的區(qū)別項

目CPUGPU組成單元運算單元、控制單元、緩存單元運算單元、控制單元、緩存單元組成占比25%的ALU(運算單元)25%的Control(控制單元)50%的Cache(緩存單元)90%的ALU(運算單元)5%的Control(控制單元)5%的Cache(緩存單元)適用場景武器裝備、信息化等需要復雜邏輯控制的場合密碼學、挖礦、圖形學等需要并行計算,無依賴性、互相獨立的場合計算能力單線程計算,單個芯片性能強勁,計算能力強單個芯片性能弱,計算能力弱對1000道算術題的求解速度先算第一題,再算第二題;速度較慢可以同時計算1000道算術題,速度很快能耗較小,只有少量運算單元,無須單獨配備散熱風扇較大,大量的運算單元往往需要單獨配散熱風扇硬件平臺特殊指令加速:SIMD

單指令多數據(SIMD)指令是一種并行計算技術,可以做到同時對多個數據進行相同的指令操作,減少所需要的指令數量和耗時。擁有四元素的向量中對應元素進行乘法操作:一條單指令單數據(SISD)乘法指令只能處理兩個數據項(需4條指令);一條單指令多數據(SIMD)指令可并行處理兩組四元素的向量(只需1條指令)。AVX提供的256比特的寄存器目前SIMD已在多種架構上實現(xiàn),如IntelPentiumIII芯片上的SSE指令、x86上的AVX2指令、ARM中的NEON及RISC-V等。謝謝大家DES算法DES算法描述01DES算法1973年,美國國家標準局(NIST)征求國家密碼標準時,IBM提供了Tuchman-Meyer方案1977年,Tuchman-Meyer方案被正式確立為數據加密標準,即DES1998年7月,電子前哨基金會(EFF)利用一臺造價不足25萬美金的特殊計算機攻破了DESNIST征集新的密碼標準替換DES,采納Rijndael算法作為新的標準算法,即AES。2001年正式推出DES是分組密碼的典型代表,也是第一個被公布出來的標準算法。分組密碼:明文分組、密文分組及密鑰分組大小均為64比特。在實際運算中,對密鑰每隔7個比特(8,16,…,64)設置一個奇偶校驗位,不參與運算,實際密鑰長度只有56比特.對稱密碼:加密和解密除密鑰編排不同外,使用同一算法。采用混淆和擴散的組合,每個組合先替代后置換,共16輪。只使用了標準的算術和邏輯運算,易于實現(xiàn)。DES算法結構DES加/解密算法流程

算法流程

初始置換和逆初始置換初始置換IP

初始逆置換IP-15850423426181024084816562464326052443628201243974715552363316254463830221463864614542262306456484032241683754513532161295749413325179136444125220602859514335271911335343115119592761534537292113534242105018582663554739312315733141949175725

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364初始置換和逆初始置換58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157例:明文中的第20位經過初始置換后處于第14位,通過逆初始置換第14位換回到第20位IP輸入塊輸出塊

??函數內部構造??函數內部按序可分成3個部分:E擴展置換、S盒替換以及P盒置換,如下圖所示。

E擴展置換產生與密鑰同長度的數據以進行異或運算;提供更長的結果,使得在S盒替代運算時能夠進行壓縮。

E擴展置換32|01020304|0504|05060708|0908|09101112|1312|13141516|1716|17181920|2120|21222324|2524|25262728|2928|29303132|01E擴展置換表數據的擴展置換規(guī)則:中間為32位,兩邊為擴展位,擴展后為48位。

S盒替換S盒替換的構造S盒的目的是對擴展后的數據塊進行壓縮,同時進行一次非線性替換,替換操作由8個不同的S盒查找表完成。S盒替換的構造如右圖所示。首先將E擴展置換結果與輪密鑰進行異或后的48比特數據塊分為8組,每組6比特,分別送入對應的S盒。每個S盒有一張4行16列的查找表,由6比特輸入作為索引,輸出4比特結果。記S盒的6比特輸入為abcdef,第0比特和第5比特組合形成行號af,第1~4比特組合形成列號bcde,用于查找4比特結果。替換操作由8個不同的S盒查找表完成。最后再將8個S盒的4比特結果合并,形成32比特輸出。S盒替換S盒替換的構造S盒的目的是對擴展后的數據塊進行壓縮,同時進行一次非線性替換,替換操作由8個不同的S盒查找表完成。S盒替換的構造如下圖所示。首先將E擴展置換結果與輪密鑰進行異或后的48比特數據塊分為8組,每組6比特,分別送入對應的S盒。每個S盒有一張4行16列的查找表,由6比特輸入作為索引,輸出4比特結果。記S盒的6比特輸入為abcdef,第0比特和第5比特組合形成行號af,第1~4比特組合形成列號bcde,用于查找4比特結果。替換操作由8個不同的S盒查找表完成。最后再將8個S盒的4比特結果合并,形成32比特輸出。替換步驟S盒替換例:假設S-盒6的輸入(即異或函數的第31位到36位)為110011。(1)第1位和最后一位組合形成了11,它對應著S-盒6的第3行。(2)中間的4位組合形成了1001,它對應著S-盒6的第9列。(3)S-盒6的第3行第9列處的數是14,得到輸出值為1110。0

12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,1

10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,29,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,34,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13

0123456789101112131415

S-盒6查找表P盒置換S盒替換運算后的32位輸出依照P盒進行置換。P盒置換將每一輸入位映射到輸出位。任一位不能被映射兩次,也不能被略去。經過P盒置換的結果與最初64位分組的左半部分異或,然后左右兩部分交換,開始下一輪迭代。P盒置換表16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,

2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25例:第21位移到了第4位,第4位移到了第31位。密鑰編排

DES加密算法共對明文執(zhí)行16次輪加密,需要16個輪密鑰。由初始64比特用戶密鑰生成16個48比特輪密鑰的過程稱為密鑰編排。密鑰編排算法也需進行多輪迭代運算,其算法流程如下:DES快速實現(xiàn)02基于AVX的DES快速實現(xiàn):變換操作將單指令多數據流(SIMD)應用到DES中,即多塊(Multi-Block)DES。該方法將輸入調整成適合使用SIMD指令的形式,可以高效地并行處理多條消息,但需要花費額外的變換操作。vmovdqu(%rsi),%xmm0vmovdqu(%rdi),%xmm1vpshufd$0x4e,%xmm1,%xmm1vpblendd$0x0c,%xmm0,%xmm1,%xmm2vmovdqu(%rsi),%xmm0vmovdqu(%rdi),%xmm1vpunpcklqdq%xmm0,%xmm1,%xmm2vpunpckhqdq%xmm0,%xmm1,%xmm3vmovdqu(%rsi),%xmm0vmovdqu(%rdi),%xmm1vpunpckldq%xmm0,%xmm1,%xmm2vpunpckhdq%xmm0,%xmm1,%xmm3

基于AVX的DES快速實現(xiàn):SIMD處理SIMD核心優(yōu)化思想半塊并行處理:將32位半塊數據裝入SIMD寄存器;關鍵操作:移位、邏輯與異或技術優(yōu)勢傳統(tǒng)串行實現(xiàn)SIMD并行實現(xiàn)單指令處理1個半塊單指令處理8個半塊(AVX512)S盒串行查表寄存器預加載S盒表P盒逐位置換常量掩碼批量置換基于AVX的DES快速實現(xiàn):SIMD處理S盒替換優(yōu)化AVX512實現(xiàn)流程:將8個塊的48位輸入打包到寄存器分16次加載S盒表到寄存器使用掩碼寄存器選擇正確S盒區(qū)域合并結果寄存器P盒替換優(yōu)化SIMD常量預計算:提前生成P盒置換掩碼單條指令完成多半塊置換工作模式適配基于SIMD的DES快速實現(xiàn)ECB:直接拆分/合并半塊,指令開銷可忽略CBC:需處理塊間依賴,AVX2下性能可能劣化(僅為OpenSSL的79%)64位平臺上的DES快速實現(xiàn):標準實現(xiàn)實現(xiàn)思路位級并行:64位處理器視為64個1位處理器。數據重組:比特分散存儲,一次加密64個字的各1位,而非一次加密一個64位字。異或操作按位計算,不受影響;P盒置換和E擴展置換操作實現(xiàn)時只要改變寄存器的命名順序,就可以對需要的比特直接尋址。S盒比較復雜,需要從不同的字中分別提取6比特,拼湊成索引;查找到結果后再將4比特分別存放,非常低效。需要針對S盒查找進行優(yōu)化。S盒查找優(yōu)化使用與、或、非、異或等操作表示S盒的門電路,采用優(yōu)化手段減少S盒的總門數。先計算的16種函數,再存入14個寄存器中,需要兩個求非運算以及10個額外操作。每個S盒中該步驟只需預先做一次,之后計算輸出位時就可以直接使用這些函數,所以每行只需6個操作計算和6個操作組合計算結果。平均每個S盒只需要100個操作。效果:比64位Alpha計算機上最快的DES實現(xiàn)快了約5倍。64位平臺上的DES快速實現(xiàn):非標準實現(xiàn)實現(xiàn)思路位級并行:64位處理器視為64個1位處理器。數據重組:整字節(jié)存儲(查表優(yōu)化),在64位處理器上,擴展到48比特的密文右半部分可以完整地存儲在一個字中。如果將S盒輸入的6個分別存放的比特存放在一整個字節(jié)中,可以通過單字節(jié)引用直接訪問S盒表。同理,可以將查找表應用到初始置換和逆初始置換中,對各種表查找的結果進行異或處理。操作優(yōu)化在每輪中,將(表示為8字節(jié),但每字節(jié)中只使用6比特)和輪密鑰(表示方法相同)進行異或,然后用8個查找表來實現(xiàn)S盒替換,結果也要異或。此時,S盒的64比特結果中已經包括了P盒置換和E擴展置換操作。由于同一輪中8個S盒可以并行處理,因此流水線不會阻塞。效果:在300MHzAlpha處理器上比當時已知的最快實現(xiàn)快了一倍。3-DES的GPU實現(xiàn)033-DES結構設計3-DES結構3-DES的加密可以分為三部分:(1)用密鑰1對明文進行DES加密;(2)用密鑰2進行DES解密;(3)用密鑰3進行DES加密,完成整個加密操作。3-DES解密是對3-DES加密的逆向操作。3-DES結構設計新的3-DES加密流程在CUDA編程中,實現(xiàn)3-DES的基本想法是將加密和解密操作放在GPU上,同時保留傳統(tǒng)的3-DES結構。然而,這在CUDA編程中可能會面臨以下一些問題。并行算法構建困難

如何利用GPU內存優(yōu)化系統(tǒng)

3-DES加密的實現(xiàn)設計一個3-DES加密程序,要考慮各種類型的文件PowerPoint/Word:使用'\0'作為其結束符號。在這種情況下,只需要確定輸入的字是什么。流媒體數據(音樂或電影文件):‘\0’不是結束符號,因此需要調整程序來適應所有的文件類型。

如果一次輸入1000個字的明文,而結束符號'\0'是第1250個字,這時必須做兩次循環(huán)才能輸入所有的明文。但當兩次循環(huán)后,卻讀到了明文的第2000個字,而該字是編譯器無法識別的空字,所以循環(huán)并不會停止。綜合上述兩個因素,Yeh等人的文獻中給出了偽代碼,如右邊所示Algorithm-DESEncryption(plaintext,ciphertext);Input:plaintext(64*Nbitsplaintext).Output:ciphertext(64*Nbitsciphertext).//Nmeanshowmanythreadsweuseindevice.begindeclareintegerplaintext[64*N],temptext[64*N],ciphertext[64*N];declareintegerkey1[64],key2[64],key3[64],key[192];declareintegerplaintextsize=64*N;while(notreachtheendoffile){input_EN(plaintext,temptext);//putplaintexttintotempbufferkey=key_schedule(key1,key2,key3);//generatesubkeyscopytemptextformhostmemorytodevicememory__global__3-DES_encryption(temptext,key);Copytemptextformdevicememorytohostmemoryswap(ciphertext,temptext);output_EN(ciphertext);}end3-DES加密的實現(xiàn)Algorithm-DESEncryption(plaintext,ciphertext);Input:plaintext(64*Nbitsplaintext).Output:ciphertext(64*Nbitsciphertext).//Nmeanshowmanythreadsweuseindevice.begindeclareintegerplaintext[64*N],temptext[64*N],ciphertext[64*N];declareintegerkey1[64],key2[64],key3[64],key[192];declareintegerplaintextsize=64*N;while(notreachtheendoffile){input_EN(plaintext,temptext);//putplaintexttintotempbufferkey=key_schedule(key1,key2,key3);//generatesubkeyscopytemptextformhostmemorytodevicememory__global__3-DES_encryption(temptext,key);Copytemptextformdevicememorytohostmemoryswap(ciphertext,temptext);output_EN(ciphertext);}end只有__global__3-DES_encryption函數在GPU中執(zhí)行。只有key_schedule函數可以被并行化,沿用了傳統(tǒng)3-DES的key_schedule設計,計算量很少,不值得在CUDA中執(zhí)行,其內存訪問時間大于計算時間。代碼支持所有文件類型,設計了新的結束符號判斷方法。如果一次輸入1000個字,相當于8000比特的明文,詳細設計如下:新的結束符號設計:特殊標識"/nend/ab"(8字節(jié))。添加結束符號:Yeh等人用fread()來確定是否已經讀入所有明文,若fread()=8000,追加結束符號/nend/ab;每1000字節(jié)(8000比特)為單元,強制追加8字節(jié)結束符號。例[1000字節(jié)]→[1000]+/nend/ab找出明文結尾:當fread()<8000,意味著已經找到明文結尾。注意需要填充明文達到1008個字(包含結束符合8個),例剩余[600字節(jié)]→[600]+/nend/ab+[400個\0]

循環(huán)終止機制:fread()返回0,立即停止3-DES加密流程。3-DES解密的實現(xiàn)

3-DES解密的實現(xiàn)與3-DES加密類似,但解密需要更多的判斷操作,這意味著需要更多的CPU時間來決定何時停止操作。與加密不同,解密的輸入是全部密文,需要先對密文進行解密,然后才能對其進行分析。下面是實現(xiàn)的具體細節(jié):(1)輸入1008個字并解密當程序啟動時,將輸入1008個字的密文,并將其發(fā)送到GPU進行解密。這個階段將一直重復下去,直到沒有密文輸入。(2)解密后的分析解密后,程序會分析明文的最后8個字。如果這8個字是"/nend/ab",就意味著輸入文件沒有到達結尾。程序將輸出沒有"/nend/ab"的結果,并返回第1階段。如果這8個字不是"/nend/ab",就意味著輸入的文件已經到達了結尾,程序應該分析這1008個字以找出結束符號的位置。當程序找到結束符號的位置時,它將把沒有"/nend/ab\0\0\0..."的結果輸出為明文。完成了所有工作之后,程序跳出循環(huán)。謝謝大家密碼學基礎之江實驗室劉哲AES算法描述01AES(AdvancedEncryptionStandard)算法背景:1997年,美國國家標準與技術研究院(NIST)開始征集高級加密標準,用以取代DES,經過了長達5年的標準化評估,最終于2001年選定Rijndael算法。AES是分組長度為128比特的Rijindael算法。AES:高級加密標準,是一種分組密碼,要求明文和密文的分組長度都為16字節(jié)。不同的密鑰長度對應不同的加/解密輪次。密鑰長度加密輪次解密輪次AES-12810輪10輪AES-19212輪12輪AES-25614輪14輪狀態(tài)矩陣:16字節(jié)的明文塊被排列成的矩陣AES算法—加/解密流程AES-128,加密算法流程:初始輪密鑰加:將狀態(tài)矩陣與初始密鑰矩陣進行按位異或。一輪加密:執(zhí)行輪函數,對狀態(tài)矩陣依次執(zhí)行字節(jié)替換、行移位、列混淆及輪密鑰加等操作。重復第二步10次,得到128比特密文。注:第10輪不再進行行列混淆操作AES-128,解密算法流程:將輪密鑰的使用順序顛倒過來,并逆序進行加密過程中的所有操作的逆運算。線性運算(如行移位、列混淆等)在數學上的求逆是簡單的,只需改變操作執(zhí)行的方向或對操作矩陣求逆即可。在非線性部分(S盒)中,由于S盒表是精心設計的,存在逆S盒,因此只需計算出逆S盒的常量表即可。AES算法—基本結構AES算法基本結構特點:沒有采用Feistel結構遵循替代-置換網絡(Substitution-PermutationNetwork)原則建立。每輪加密包括:字節(jié)替換層擴散層密鑰加層AES算法核心部件—字節(jié)替換層字節(jié)替換層:簡單的查表操作AES定義一個S盒和一個逆S盒,將狀態(tài)矩陣中的每個元素映射為一個新元素S盒輸入輸出都是8比特字節(jié)替換操作時,字節(jié)的高4比特作為行值,低4別特作為列值,取出S盒中對應的元素,代替原位置的字節(jié)DES使用8個不同的S盒,AES使用16個S盒完全相同AES算法中的唯一非線性層AES算法核心部件—擴散層

AES算法核心部件—擴散層

AES算法核心部件—擴散層

伽羅瓦域乘法函數偽代碼實現(xiàn)AES算法核心部件—密鑰加層密鑰加層:兩個輸入是16字節(jié)的當前狀態(tài)矩陣和密鑰編排算法生成的輪密鑰,輸出二者按位異或的結果。

AES算法核心部件—密鑰編排密鑰編排:計算的基本單位是32比特字(密鑰矩陣的一列);輸入為原始密鑰矩陣(4×32比特),輸出一系列相同位數的輪密鑰(4×32比特);具體分為預計算和動態(tài)生成兩種方法。

動態(tài)生成:動態(tài)生成的輪密鑰計算規(guī)則與預計算相同,區(qū)別是輪密鑰在加密和解密算法運行過程中動態(tài)地生成,而非預先加載。在生成輪密鑰之后,密鑰編排算法將根據加/解密算法安排密鑰參與運算的順序。若為加密算法,則輪密鑰正向參與運算;若為解密算法,則輪密鑰反向參與運算。SM4算法描述02SM4算法

SM4算法是一種典型的Feistel結構算法,解密算法與加密算法結構相同,區(qū)別僅是輪密鑰的使用順序。

SM4算法—密鑰擴展算法

密鑰擴展算法偽代碼AES算法高速實現(xiàn)03AES算法高效實現(xiàn)—基于資源受限平臺AES傳統(tǒng)實現(xiàn)中字節(jié)替換通常是通過256字節(jié)查找表實現(xiàn)的。除此之外,其他實現(xiàn)方法一般分為3種:T表法、向量轉置及位切片。T表法:字節(jié)替換、行移位以及列混淆經過數學上的合并,最終形成4個1024字節(jié)的查找表,稱為T表。每個AES輪由16個掩碼(mask)、16個查找表讀取(load)、4個輪密鑰讀取(load)以及16個異或(xor)操作組成,這使得其在32位以上的平臺上的實現(xiàn)非常高效。如果花費一個額外的旋轉操作,最終就只需要一個查找表來完成。向量轉置:T表法中的查找操作依賴于密鑰和數據,這使得對帶緩存架構的定時攻擊變得容易。另一種方法是使用向量轉置,它避免了這種依賴于數據的查找。但并非所有的嵌入式平臺都支持該方法使用的指令,所以這種方法并不一定適用。位切片:位切片也是一種不需要查找表的方法,其核心思想是用SIMD方式并行處理多個塊,適用于具有長寄存器的架構。對于AES而言,128比特數據通常分割到8個寄存器中,這就使得線性層非常高效。AES算法高效實現(xiàn)—基于資源受限平臺基于兩個典型的微處理器ARMCortex-M3以及Cortex-M4,介紹AES算法的快速實現(xiàn)。兩個微處理器都有16個32比特寄存器,其中3個保留給程序計數器、堆棧指針和鏈接寄存器。鏈接指針可以被推入堆棧,釋放另一個寄存器。ROM中的數據通常是通過密鑰擴展和加/解密共享的,所以它只能在內存中存在一次。在RAM一欄中,I/O是指函數需要用來存儲輸入和輸出的內存。I/O數據通常通過密鑰擴展和加/解密共享,相同的堆??臻g可以用于加/解密函數調用。

AES算法快速實現(xiàn)—基于算法優(yōu)化狀態(tài)矩陣轉置算法優(yōu)化:在輪內部,轉換可以通過使用查找表來實現(xiàn)。選擇為查找表保留少量的空間,只將S盒和逆S盒制成表格,所有剩余的操作都是被動態(tài)計算出來的。這意味著只能通過軟件技術來進行多次伽羅瓦域上的乘法運算。該算法在處理狀態(tài)矩陣轉置時,必須對所有步驟進行修改。

AES算法快速實現(xiàn)—基于算法優(yōu)化密鑰調度算法優(yōu)化:將重新規(guī)劃密鑰生成的方案,在此期間完成調整。

AES算法快速實現(xiàn)—基于算法優(yōu)化轉置密鑰調度由以下轉換組成:

AES算法快速實現(xiàn)—GPU簡介CUDA:一個GPU開發(fā)環(huán)境,程序員可以借助CUDA編寫線程程序,同時指定線程和線程塊的數量。從硬件的角度來看,GPU組裝了許多處理器和片上存儲器,而線程并行可以避免處理器處于空閑狀態(tài),提高GPU利用率。CUDA體系結構:GPU芯片有N個多處理器(Multi-Processor,MP),每個MP有M個標量處理器(ScalarProcessor,SP)、16KB共享內存、多個32比特寄存器和一個共享指令緩存,它還從指令單元中去除了控制單元部分(如條件分支組件),增加了計算單元密度??傮w而言,該芯片構成了分層SIMD體系結構。全局內存(VRAM):最大內存區(qū),用于CPU-GPU通信,訪問延遲高共享內存:每個MP獨享,SP高速訪問,速度接近寄存器寄存器:GPU最快速的存儲單元常量內存:只讀存儲區(qū),低延遲訪問AES算法快速實現(xiàn)—GPU軟件模型軟件模型:線程分組為線程塊(Block),多個線程塊組成計算任務;每個線程映射到一個SP,線程塊資源(共享內存、寄存器)在MP上平均分配;MP中32個線程為一組同步執(zhí)行(稱為Warp)。高效利用32線程(Warp):全局內存聯(lián)合存取低延遲(400-600周期)避免跨步訪問,提高數據傳輸效率聯(lián)合存取由CUDA編譯器自動優(yōu)化避免共享內存組沖突共享內存分16個存儲組線程訪問需避免同組沖突,否則最高16倍延遲差異AES算法快速實現(xiàn)—GPU優(yōu)化技術流水線延遲隱藏內存訪問速度慢,存在寫后讀依賴SP流水線延遲大約需要24周期,一次warp延遲是4個周期每個MP至少執(zhí)行6次warp,保證流水線一直工作,隱藏延遲01無序執(zhí)行機制遇到內存暫停時,其他warp無序調度繼續(xù)執(zhí)行最大化活躍線程數量,有效掩蓋內存訪問延遲示例:NVIDIAGeforceGTX285,每個線程塊最多32線程02條件分支縮減SP沒有條件分支單元,GPU使用CUDA編譯器生成類散度順序執(zhí)行條件分支指令條件執(zhí)行通過謂詞寄存器和串行處理實現(xiàn)優(yōu)化策略:重構算法,限制條件分支數03AES算法快速實現(xiàn)—基于GPU的快速實現(xiàn)優(yōu)化方案一:多粒度并行處理方案16字節(jié)/線程每個線程獨立地處理由16字節(jié)組成的每個明文塊僅適用明文塊之間的并行操作8字節(jié)/線程兩個線程處理一個明文塊利用了明文塊中內部明文處理之間的并行性,需要使用共享內存4字節(jié)/線程4個線程處理一個明文塊,內存共享和同步是必要的,單個明文塊共享的線程數不同1字節(jié)/線程雖然32比特操作比較高效,但也能夠通過線程處理1字節(jié)的數據。1字節(jié)/線程意味著16個線程以協(xié)調的方式處理明文塊,盡管該粒度性能不高,但此粒度設計可用于早期研究中和其他粒度的比較。AES算法快速實現(xiàn)—基于GPU的快速實現(xiàn)優(yōu)化方案二:內存分配方案。AES包含3種存儲形式:明文、密文和中間數據、T表和輪密鑰。變量常量內存共享內存寄存器T表√√×輪密鑰√√×明文×√√(如果是16字節(jié)/線程)輪密鑰和T表共享特性,可分配到常量內存,延遲低T表訪問隨機,存在無法提供低訪問延遲的可能性共享內存優(yōu)點:低延遲問題:存儲組沖突、多份冗余復制、浪費空間明文處理開始存于全局內存,AES編碼開始時轉入共享內存16字節(jié)/線程粒度:中間變量直接存儲在寄存器中,避免共享沖突AES算法快速實現(xiàn)—基于GPU的快速實現(xiàn)輪密鑰和T表、明文兩種存儲形式是使用共享內存分配數據的,共有兩種分配方法可供選擇:結構的數組(AoS)和數組的結構(SoA)結構的數組AoS:結構是指明文塊結構,AoS根據其性質處理明文。下表描述了共享內存的線程訪問模式示例,粒度為8字節(jié)/線程數組的結構SoA:SoA將明文的每個元素分配到一個數組中,它們會產生不同種類的存儲組沖突。下表描述了共享內存的線程訪問模式示例,粒度為8字節(jié)/線程AES算法快速實現(xiàn)—基于GPU的快速實現(xiàn)優(yōu)化方案三:其他優(yōu)化

T表結構:一個32比特陣列T表和旋轉操作(保存存儲區(qū)域)。一個具有字節(jié)順序內存訪問的64比特陣列預計算T表。預計算32比特陣列T表×4。01重疊的GPU處理和內存復制:重疊數據傳輸(內存復制)和處理。AES編碼過程,將明文傳輸到GPU的全局內存(以及從GPU的AES過程傳輸密文)重疊過程被稱為數據傳輸和處理之間的管道處理,下圖描繪了將數據分為兩個塊的情況下這種重疊的示意圖:03減少線程塊的切換:與其他應用程序不同,AES中切換線程塊的開銷往往更大且不可忽略。用少量線程加密相當多的明文,減少在AES中切換線程塊的開銷02SM4算法高速實現(xiàn)04SM4算法高速實現(xiàn)—基于CUDA的并行實現(xiàn)與優(yōu)化CUDA(ComputeUnifiedDeviceArchitecture):是NVIDIA于2007年推出的一種通用GPU計算設備體系結構,為GPU并行實現(xiàn)密碼算法提供了方便的平臺。2007年,Manavski等人首次使用了CUDA來加速AES,并提出了一個T表來提高密碼的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論