版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
密码学基础密码学的发展历史01有趣的例子13-3-2-21-1-1-8-5ODraconiandevil!
(啊,严酷的魔王!)OhLameSaint!
(噢,瘸腿的圣徒!)
畅销小说《达·芬奇密码》里面出现的第一段密码。在故事中,卢浮宫博物馆馆长被人杀害,临死前用隐写笔在地上写下了这样一段令人费解的文字,其中隐藏了重要的信息。主角是如何破译这段密码的呢?1-1-2-3-5-8-13-21LeonardodaVinci!(莱昂纳多·达·芬奇)
TheMonaLisa!(蒙娜丽莎)
书中用菲波那切数列暗示了字母顺序是被打乱的,只需调整字母的排序即可得到答案。而打乱顺序只是密码中最简单的方法。生活中的密码提到密码?手机锁屏密码房门解锁密码支付宝支付密码账号/密码”中的密码称为“口令”,英文称为password。QQ登陆密码什么是密码
密码关乎国防密码赋能北斗导航,助力载人航天,保障交通运输密码:指一种混淆技术,英文称为cipher。它希望将可识别的信息转化成不可识别的信息。
密码关乎生活我国居民二代身份证:256位的椭圆曲线密码银联金融IC卡的证书的签发机构:国密SM2算法健康码:国密算法密码学学科密码学是研究编制密码和破译密码的技术科学,可分为密码编码学和密码分析学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为分析学。密码学发展历程可以分为三个主要阶段:古典密码,近代密码和现代密码。在现代密码学特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支。古典密码古代-1949年近代密码1949年-1975年现代密码1976年至今密码起源-人类最古老的密码自人类文明诞生起,密码几乎就随之产生了。古代密码是从战争和军队中发展而来的。在古中国、古印度和古希腊的典籍中均能找到密码的身影。其中古希腊军队使用的Scytale圆木棍也许是人类最早使用的文字加密解密工具。姜子牙《六韬》中记载的“阴符”,主要用来君主和领兵在外的将领通信古印度《经济论》记载了特务机关的官员用密写的方式给密探下达任务在公元前700年,古希腊军队用一种叫做Scytale的圆木棍来进行保密通信密码起源-古代加密方法希波战争中,为了传递秘密信息,剃光了奴隶的头发,并在这个奴隶的头皮上刻下信息,当这个奴隶的头发长满之后,再把他送出城外。虽然古代技术水平不发达,但人们通过自己的智慧发明了许多可以隐藏信息的手段。这些思想也对现在密码学的发展有着很多启发。隐写术和藏头诗是比较典型的古代加密方法。用藏头诗来传达爱慕之意也是独属于中国诗人的浪漫。古典密码—凯撒密码明文abcdefghi密文EFGHIJKLM明文jklmnopqr密文NOPQRSTUV明文stuvwxyz密文WXYZABCD历史:公元前58年左右,高卢战争时期,凯撒大帝发明了一种密码,即凯撒密码。为了和联军联络,凯撒在他的军事命令中,将每一个字母都进行了位移,以防止他的敌人在截获凯撒的军事命令之后,直接获取到他的真实情报。原理:凯撒密码中,若将字母位移4位,则密文字母与明文字母如下对应关系。attackEXXEGO古典密码—维吉尼亚密码明文:ATTACKATDAWN密钥:LEMONLEMONLE密文:LXFOPVEFRNHR起源:1466年末1467年初,利昂•巴蒂斯塔•艾伯蒂第一个提出多表代替密码的概念。历史:维吉尼亚密码最早记录在贝拉索于1553年所著的书中。法国外交官维吉尼亚改进了贝拉索密码,但,贝拉索密码却被人当作他的发明,被称为维吉尼亚密码。原理:维吉尼亚密码是由一些位移量不同的恺撒密码组成,可以用表格法来生成密码。凯撒密码属于单表代替密码,容易受到频率分析攻击,因此多表代替密码被提出起源:1918年,德国发明家亚瑟·谢尔比乌斯发明了第一台Enigma编码机。结合了机械系统与电子系统。影响:在相当长的时间里Enigma编码机使德军在情报方面处于领先地位。在1942年之前,装备了英格玛的德国潜艇部队一共击沉了盟军舰船1000余艘。原理:通过使用转子和反射器实现了流密码的加密过程。要想通过“暴力破解法”还原明文,需要17576x6x100391791500,其结果大约为10,000,000,000,000,000!即一亿亿种可能性。近代密码—Enigma密码机近代密码—图灵和Enigma密码机艾伦·麦席森·图灵(AlanMathisonTuring,1912年6月23日-1954年6月7日),计算机科学之父,人工智能之父。美国计算机协会(ACM)于1966年设立图灵奖,以表彰在计算机科学中做出突出贡献的人,图灵奖被喻为“计算机界的诺贝尔奖”。1999年,他被《时代》杂志评选为20世纪100个最重要的人物之一。图灵二战德军俾斯麦号战列舰1939年秋,图灵临危受命,负责破译Enigma。Enigma机有一个致命的弱点,那就是一个字母加密后不可能是它本身。利用这一点,图灵建造世界上第一台军用计算机—图灵机用来破译德军密码。1941年,英国利用图灵机截获并破译了德军的一份密电,得到了德军巨型战列舰“俾斯麦”号的行军路线,并将其一举击沉。1949年Shannon发表《保密系统的通信理论》,基于此,密码逐渐从战争的辅助工具中脱离而出,在20世纪70年代发展成为一门真正的学科。香农(Shannon,1916年4月30日—2001年2月24日)是美国著名数学家、信息论的创始人。去世时贝尔实验室和MIT发表讣告都尊崇香农为信息论及数字通信时代的奠基人。密码学发展成为系统的学科之后,出现了各种各样的密码,根据密码算法的各方面的性质,现代密码主要包括:对称密码公钥密码Hash函数量子密码后量子密码密码学中的重要里程碑!现代密码—香农信息论1976年1977年1978年1985年2001年至今DH密钥交换公钥密码起源RSA第一个完善公钥密码DES第一个现代单钥加密算法AESDES破解后的新标准椭圆曲线加密更优秀的公钥加密同态加密算法、量子加密、后量子密码算法现代密码—发展历程密码学的分类02现代密码—两大密码体制对称密码公钥密码对称密码的主要思想是扩散和混淆,加解密双方拥有同样的密钥,通过安全信道传递密钥。典型的对称密码包括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盒,用来进行字节替换。而DES的S盒设计被列入官方机密。因此,用户不能确定S盒中是否有陷门存在。DES流程采用两个相关密钥将加密和解密能力分开,即加密密钥和解密密钥是不一样的。加密密钥简称公钥(publickey),解密密钥简称私钥(privatekey)。加密密钥可以公开,解密密钥必须保密。从加密密钥计算解密密钥是困难的公钥密码的基本思想公钥密码的要求加密密钥解密密钥加密密钥密文明文公钥密码由密文和加密密钥恢复明文是困难的。公钥公开私钥保密公钥密码—RSA1978年RonRivest,AdiShamir,LeonardAdleman三人提出RSA算法,算法的名称是他们三个人首字母的缩写。RSA是被研究得最广泛的公钥算法,从提出到现在已近三十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。原理:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,即大整数分解困难问题。
椭圆曲线密码系统(ECC)在1985年分别由VictorMiller和NealKoblitz独立提出。椭圆曲线密码的理论基础是有限域上的椭圆曲线。而中学时期我们就接触过圆锥曲线,里面也有椭圆,这二者虽然都叫椭圆,但是却差别很大。
公钥密码—ECC国内密码的发展王小云与哈希函数王小云:山东大学网络空间安全学院院长、清华大学高等研究院“杨振宁讲座”教授。中国科学院院士,国际密码协会会士(IACRFellow),中国密码学会副理事长。2004年8月,密码学最顶级会议美密会上,王小云院士现场演示了当时公认最安全的哈希函数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年密码学的发展趋势03密码的安全基础—计算安全以目前应用最广泛的RSA公钥加密算法为例。RSA安全性依赖于大整数分解问题。将两个质数相乘非常容易,但是想要对其乘积进行分解,却极其困难。目前RSA加密算法的密钥长度已经到达2048比特。
RSA之所以安全,并不是因为它具有不可破解性,而是传统计算机无法在短时间内解决大整数分解问题。RSA用于银行令牌RSA用于电子政务加密RSA用于通讯加密传统密码学的危机1994年,应用数学家PeterShor提出著名的Shor算法,可以在多项式时间复杂度内解决有限交换群的隐藏子群问题。该问题涵盖了RSA密码、Diffie-Hellman密钥交换和椭圆曲线密码等常见公钥密码所基于的底层困难问题。Shor算法Shor算法将RSA算法的核心大整数分解问题转化为函数周期问题,再利用量子计算机以极高的效率实现量子傅里叶变换。经典计算机需要数百万亿年才能破解RSA-2048,量子计算机使用2000万个量子比特可以在数小时内破解RSA-2048。量子计算机严重威胁了现代公钥密码体制传统密码学的危机Peter
ShorShor算法基于量子计算模型构建的大整数分解算法,同时适用于求解离散对数问题LovGroverGrover算法可对随机数据的搜索问题进行两倍加速,大大提升了搜索速度传统公钥密码对称密码对RSA、ECC等传统公钥密码是致命打击将AES、SM4对称密码的安全性降低一半可以抵抗量子计算攻击的后量子密码应运而生!后量子密码定义是能够抵抗量子计算机攻击的经典密码算法后量子密码是量子计算机出现后,在量子时代仍然安全的密码!也被称作抗量子(quantum-resistant)或量子安全(quantum-safe)密码量子计算:将“难解”问题变“易解”问题,传统密码系统将无密可保。寻求可以抵抗量子计算机攻击的“难解”问题?基于抗量子计算机攻击的“难解”问题构造密码算法“九章”量子计算机后量子密码分类同源密码多变量密码基于编码的密码格密码基于哈希的密码不同困难问题后量子密码算法体系后量子密码根据底层数学困难问题的类型主要可分为五类后量子密码算法,其中格密码在安全性、效率、密钥尺寸等方面取得较好的平衡,因此是大部分后量子密码研究者关注的重点。格密码最短向量问题(SVP)最近向量问题(CVP)格又称点阵,是一组线性无关的非零向量(格基)的整系数线性组合。
格密码基于格上问题的困难性,如最短向量问题(SVP)、最近向量问题(CVP)及其变种等。代表性后量子密码算法有Kyber、Dilithium、Falcon等。2005年,Regev提出了基于LWE的加密方案,成为后续研究的基础。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等人提出了实用无状态签名方案SPHINCS。
哈希函数原理Merkle树信道编码的目标是设计高效的冗余编码,以便在传输过程中纠正由信道噪声引入的错误,从而实现正确的译码。基于编码的密码依赖于随机误差下的线性码的解码困难性如随机线性码的最小码字问题等。代表性后量子密码算法有McEliece、Niederreiter等。1986年,Niederreiter提出了基于错误纠正码的另一种加密方案。2021年,NIST开始评估基于编码的后量子密码方案,如ClassicMcEliece。1978年,RobertMcEliece提出了McEliece公钥加密方案。2008年,McEliece方案被重新审视,并被认为是抗量子计算的有力候选方案。信息论中的编码译码密码学中的编码密码基于编码的密码基于多变量的密码基于多变量的算法使用有限域上具有多个变量的二次多项式组构造加密、签名、密钥交换等算法。多变量密码的安全性依赖于求解非线性方程组的困难程度,即多变量二次多项式问题。该问题被证明为非确定性多项式时间困难。基于多变量的代表性后量子密码算法有GeMSS、Rainbow等。MQ问题1995年,Patarin提出了UOV公钥密码方案。2016年,Bardet等人提出GeMSS算法,进入了NIST第三轮备选方案2006年,Petzoldt等人提出了Rainbow公钥密码方案。1988年,Matsumoto和Imai提出了第一个基于多变量公钥密码的方案,称为"C*"密码。基于同源的密码同源指两条椭圆曲线之间存在一个映射,这个映射能够保持它们的群结构同态。同源密码是一种建立在椭圆曲线同构理论之上的密码学方案,以椭圆曲线同构问题的难度为基础。基于同源的代表性后量子密码算法有SIKE等。同源曲线2011年,DavidJao和LucaDeFeo提出了SIDH密钥交换协议。2019年,NIST选择SIDH的改进版本SIKE方案进入第三轮标准化评选。2006年,DavidJao和StevenGalbraith提出了基于同源密码的公钥密码方案Jao-Galbraith。2018年,加拿大滑铁卢大学的研究人员提出了CSIDH密钥交换协议,具有可交换性和抗量子性。密码学的应用04密码学在信息安全保护中的作用信息安全要素需
求所应付的典型威胁可用的密码技术机密性数据传输存储加密
窃听
非法窃取数据
敏感信息泄露对称加密和非对称加密数字信封完整性数据未被未授权篡改或损坏
篡改
重放攻击
破坏哈希函数和消息认证码数据加密数字签名可鉴别性鉴别数据信息和用户、进程、系统等实体
冒名口令和共享秘密数字证书和数字签名不可否认性防止源点或终点抵赖自身独有无法伪造
否认已收到数据
否认已发送数据数字签名证据存储授权与访问控制设置应用、资源细粒度访问权限
非法存取数据
越权访问属性证书访问控制谢谢大家实现平台简介密码工程与硬件平台01密码工程定义理论与实践结合:密码工程将密码学理论应用于实际系统和网络,保护信息安全。它不仅关注密码算法的设计和分析,还涵盖实现、应用和评估。密码工程的目标是设计高效、安全的加密和解密算法,并将其应用于实际系统中,以保护用户的隐私和敏感信息。交叉学科特性:密码工程涉及微电子、计算机科学、数学和密码学等多个领域。密码工程师需掌握密码学理论、计算机程序设计、硬件设计和网络通信等技能,了解不同硬件平台的特性,以实现最优的密码算法。硬件平台重要性不同处理器平台硬件平台作为密码工程实现的支撑和基底,为密码安全实现提供了必要的支持。不同的平台具有不同的计算能力、内存大小、通信速度和功耗等特点。选择合适的硬件平台并进行优化,可以显著提高加密和解密的性能效率,减少能源消耗,降低硬件成本。本章将介绍几种常见的硬件平台,包括x86、ARM、RISC-V和GPU等,分析它们的发展史、指令集特点及优缺点。CPU实现平台02中央处理器(CPU)中央处理器(CentralProcessingUnit,CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。按照所用指令集的复杂程度可以将CPU中的指令集分为复杂指令集和精简指令集两种指令系统类型。CPU中的指令集复杂指令集计算机(CISC)
复杂指令集计算机(CISC)是一种计算机体系结构。计算机问世后最初主要采用CISC架构,其中服务器和个人计算机等平台也主要采用CISC架构,其核心特点是:指令集复杂:包含大量功能强大的指令,单条指令可以执行多个或多步底层操作,有些指令可以直接完成高级操作(如访存操作、字符串处理、复杂数学运算等。变长指令:指令长度可变,有专门的指令用于完成复杂的特定操作,不同指令使用频率差异较大。多种寻址方式:支持多样化的内存访问方式,包括立即寻址、基址寻址、变址寻址等。硬件执行复杂操作:依赖硬件电路直接实现复杂指令,减少软件层面的工作量。开发复杂,实现难度大,研发周期较长。X86平台
x86是CISC的代表性实现,具有庞大的指令集(超过1000条)、变长指令(从1字节到15字节不等)、复杂寻址模式(支持寄存器、内存、偏移量等多种寻址方式)等特点。1978年,Intel推出了8086处理器(16位),奠定x86基础。1985年,Intel80386(首款32位x86CPU)引入保护模式,支持现代操作系统(如Windows、Linux)。2003年,AMD率先推出x86-64(64位,兼容32位),Intel被迫授权AMD64(后称Intel64)。Intel8086处理器Intel80386处理器X86发展历史重要指令集相同处理器上,使用不同指令集的效率对比(注:FLOPS是每秒所执行的浮点运算次数的缩写)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编码方案(优化指令格式,支持更灵活的操作)。AVX2:将大多数整数命令操作扩展到256比特,支持整数SIMD操作。AVX-512:使用新的EVEX前缀编码将指令进一步扩展到512比特。精简指令集计算机(RISC)
精简指令集计算机(RISC)具有统一的指令长度,指令数量少但高效,通过大量的寄存器和流水线进行优化,大大降低了指令的CPI(CyclesPerInstruction,执行每条指令所需的时钟周期),典型代表有
MIPS、ARM、RISC-V。RISC核心特点是:指令数量少:通常几十到几百条,格式统一,功能简单。固定长度指令:所有指令长度相同(如ARM采用32/64位定长编码),简化译码和流水线设计。寄存器密集型:大量通用寄存器(通常16–32个),减少访存开销。采用Load/Store架构:只有专门的加载(Load)和存储(Store)指令可访问内存,其余指令仅操作寄存器。高效流水线:单周期执行简单指令,支持深度流水线;通过流水线并行提高吞吐量。硬件优化,减少微码:指令直接由硬件电路执行,避免CISC的微码解释开销。编译优化友好:依赖编译器优化指令顺序,最大化利用寄存器和流水线。MIPS指令集
MIPS(MicrocomputerwithoutInterlockedPipelineStages)是最早的RISC处理器之一,其含义是无互锁流水级微处理器。MIPS强调软硬件协同提高计算机性能,达到简化硬件设计的目的。2010年后快速迭代,5年发布4个版本,逐步新增多线程、DSP、SIMD、虚拟化等模块。其核心特点是:固定32位指令编码:仅3种格式(R类、I类、J类)。单周期执行:一个动作一个阶段。无专用栈指令:栈操作通过内存访问实现(如push=存储+栈指针移动)。代码密度较低:指令固定4字节,x86平均3字节。严格内存对齐:仅支持“基址+16位偏移”寻址。ARM简介ARM是一个公司的名字ARM代表一项技术,即AcornRISCMachineARM是一个内核,而不是我们看到的具体芯片架
构处理器家族ARMv1ARM1ARMv2ARM2、ARM3ARMv3ARM6、ARM7ARMv4StrongARM、ARM7TDMI、ARM9TDMIARMv5ARM7EJ、ARM9E、ARM10E、XScaleARMv6ARM11、ARMCortex-MARMv7ARMCortex-A、ARMCortex-M、ARMCortex-RARMv8Cortex-A50ARM处理器架构的多次迭代1978年:Acorn公司成立1985年:开发首款32位RISC处理器ARM11990年:为广泛推广ARM技术成立了独立的公司ARM,主要设计ARM系列RISC处理器内核,授权给生产和销售半导体的合作伙伴2011年:Windows支持ARM,进军桌面市场至今:移动端霸主,年出货量超300亿颗ARM特点及优势ARMv8核心特点ARM技术优势双执行状态:NEONSIMD指令:AArch64(64位):A64指令集AArch32(32位):兼容ARMv732个128位寄存器(v0-v31)支持8/16/32/64位数据并行处理低功耗高性能:适合移动设备双指令集:Thumb(16位)+ARM(32位)大量使用寄存器,指令执行速度快。丰富的产品线:Cortex-M:微控制器Cortex-R:实时控制Cortex-A:高性能应用RISC-VRISC由美国加州大学伯克利分校教授DavidPatterson发明。RISC-V(读作“risk-five”),表示第五代精简指令集,起源于2010年伯克利大学并行计算实验室的一个项目,希望选择一款指令集用于科研和教学,该项目在x86、ARM等指令集架构中徘徊,最终决定自己设计一个全新的指令集,RISC-V由此诞生。RISC-V的最初目标是实用、开源、可在学术上使用,并且在任何硬件或软件设计中部署时无需版税。核心技术创新32个可配置向量寄存器(v0-v31)动态数据类型支持(8/16/32/64位)与SIMD对比优势:硬件决定元素长度编译器无需适配不同硬件RISC-V基本指令集指令数描
述RV32I4732比特地址空间与整数指令,支持32个通用整数寄存器RV32E47RV32I的子集,仅支持16个通用整数寄存器RV64I5964比特地址空间与整数指令,以及一部分32比特的整数指令RV128I71128比特地址空间与整数指令,以及一部分64/32比特的指令RISC-V指令集采用模块化的方式进行组织设计,由基本指令集和扩展指令集组成,每个模块用一个英文字母表示。整数(Integer)指令集用字母“I”表示,这是RISC-V处理器最基本也是唯一强制要求实现的指令集。其他指令集均为可选模块,可自行选择是否支持。扩展指令集指令数描
述M8整数乘法与除法指令A11存储器原子(Atomic)操作指令和Load-Reserved/Store-Conditional指令F26单精度(32比特)浮点指令D26双精度(64比特)浮点指令,必须支持F扩展指令C46压缩指令,指令长度为16比特GPU实现平台03图形处理器(GPU)图形处理器(GraphicsProcessingUnit,GPU)又称为显示核心、视觉处理器、显示芯片,是一种专门在个人计算机、工作站、游戏机和一些移动设备上做图像和图形相关运算工作的微处理器。核心特点:(1)高度并行计算架构:采用SIMT(单指令多线程)模式,支持数千个线程同时执行,核心数量远超CPU。(2)专用计算单元:流处理器(CUDA/ShaderCore),优化浮点/整数运算;TensorCore(AI加速)。(3)高带宽内存:显存带宽达1TB/s,适合大规模数据吞吐。应用领域:图形渲染、AI计算、高性能计算、数据处理等。CPU和GPU的区别项
目CPUGPU组成单元运算单元、控制单元、缓存单元运算单元、控制单元、缓存单元组成占比25%的ALU(运算单元)25%的Control(控制单元)50%的Cache(缓存单元)90%的ALU(运算单元)5%的Control(控制单元)5%的Cache(缓存单元)适用场景武器装备、信息化等需要复杂逻辑控制的场合密码学、挖矿、图形学等需要并行计算,无依赖性、互相独立的场合计算能力单线程计算,单个芯片性能强劲,计算能力强单个芯片性能弱,计算能力弱对1000道算术题的求解速度先算第一题,再算第二题;速度较慢可以同时计算1000道算术题,速度很快能耗较小,只有少量运算单元,无须单独配备散热风扇较大,大量的运算单元往往需要单独配散热风扇硬件平台特殊指令加速:SIMD
单指令多数据(SIMD)指令是一种并行计算技术,可以做到同时对多个数据进行相同的指令操作,减少所需要的指令数量和耗时。拥有四元素的向量中对应元素进行乘法操作:一条单指令单数据(SISD)乘法指令只能处理两个数据项(需4条指令);一条单指令多数据(SIMD)指令可并行处理两组四元素的向量(只需1条指令)。AVX提供的256比特的寄存器目前SIMD已在多种架构上实现,如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轮。只使用了标准的算术和逻辑运算,易于实现。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扩展置换表数据的扩展置换规则:中间为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加密算法共对明文执行16次轮加密,需要16个轮密钥。由初始64比特用户密钥生成16个48比特轮密钥的过程称为密钥编排。密钥编排算法也需进行多轮迭代运算,其算法流程如下:DES快速实现02基于AVX的DES快速实现:变换操作将单指令多数据流(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快速实现:SIMD处理SIMD核心优化思想半块并行处理:将32位半块数据装入SIMD寄存器;关键操作:移位、逻辑与异或技术优势传统串行实现SIMD并行实现单指令处理1个半块单指令处理8个半块(AVX512)S盒串行查表寄存器预加载S盒表P盒逐位置换常量掩码批量置换基于AVX的DES快速实现:SIMD处理S盒替换优化AVX512实现流程:将8个块的48位输入打包到寄存器分16次加载S盒表到寄存器使用掩码寄存器选择正确S盒区域合并结果寄存器P盒替换优化SIMD常量预计算:提前生成P盒置换掩码单条指令完成多半块置换工作模式适配基于SIMD的DES快速实现ECB:直接拆分/合并半块,指令开销可忽略CBC:需处理块间依赖,AVX2下性能可能劣化(仅为OpenSSL的79%)64位平台上的DES快速实现:标准实现实现思路位级并行:64位处理器视为64个1位处理器。数据重组:比特分散存储,一次加密64个字的各1位,而非一次加密一个64位字。异或操作按位计算,不受影响;P盒置换和E扩展置换操作实现时只要改变寄存器的命名顺序,就可以对需要的比特直接寻址。S盒比较复杂,需要从不同的字中分别提取6比特,拼凑成索引;查找到结果后再将4比特分别存放,非常低效。需要针对S盒查找进行优化。S盒查找优化使用与、或、非、异或等操作表示S盒的门电路,采用优化手段减少S盒的总门数。先计算的16种函数,再存入14个寄存器中,需要两个求非运算以及10个额外操作。每个S盒中该步骤只需预先做一次,之后计算输出位时就可以直接使用这些函数,所以每行只需6个操作计算和6个操作组合计算结果。平均每个S盒只需要100个操作。效果:比64位Alpha计算机上最快的DES实现快了约5倍。64位平台上的DES快速实现:非标准实现实现思路位级并行:64位处理器视为64个1位处理器。数据重组:整字节存储(查表优化),在64位处理器上,扩展到48比特的密文右半部分可以完整地存储在一个字中。如果将S盒输入的6个分别存放的比特存放在一整个字节中,可以通过单字节引用直接访问S盒表。同理,可以将查找表应用到初始置换和逆初始置换中,对各种表查找的结果进行异或处理。操作优化在每轮中,将(表示为8字节,但每字节中只使用6比特)和轮密钥(表示方法相同)进行异或,然后用8个查找表来实现S盒替换,结果也要异或。此时,S盒的64比特结果中已经包括了P盒置换和E扩展置换操作。由于同一轮中8个S盒可以并行处理,因此流水线不会阻塞。效果:在300MHzAlpha处理器上比当时已知的最快实现快了一倍。3-DES的GPU实现033-DES结构设计3-DES结构3-DES的加密可以分为三部分:(1)用密钥1对明文进行DES加密;(2)用密钥2进行DES解密;(3)用密钥3进行DES加密,完成整个加密操作。3-DES解密是对3-DES加密的逆向操作。3-DES结构设计新的3-DES加密流程在CUDA编程中,实现3-DES的基本想法是将加密和解密操作放在GPU上,同时保留传统的3-DES结构。然而,这在CUDA编程中可能会面临以下一些问题。并行算法构建困难
如何利用GPU内存优化系统
3-DES加密的实现设计一个3-DES加密程序,要考虑各种类型的文件PowerPoint/Word:使用'\0'作为其结束符号。在这种情况下,只需要确定输入的字是什么。流媒体数据(音乐或电影文件):‘\0’不是结束符号,因此需要调整程序来适应所有的文件类型。
如果一次输入1000个字的明文,而结束符号'\0'是第1250个字,这时必须做两次循环才能输入所有的明文。但当两次循环后,却读到了明文的第2000个字,而该字是编译器无法识别的空字,所以循环并不会停止。综合上述两个因素,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加密的实现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中执行。只有key_schedule函数可以被并行化,沿用了传统3-DES的key_schedule设计,计算量很少,不值得在CUDA中执行,其内存访问时间大于计算时间。代码支持所有文件类型,设计了新的结束符号判断方法。如果一次输入1000个字,相当于8000比特的明文,详细设计如下:新的结束符号设计:特殊标识"/nend/ab"(8字节)。添加结束符号:Yeh等人用fread()来确定是否已经读入所有明文,若fread()=8000,追加结束符号/nend/ab;每1000字节(8000比特)为单元,强制追加8字节结束符号。例[1000字节]→[1000]+/nend/ab找出明文结尾:当fread()<8000,意味着已经找到明文结尾。注意需要填充明文达到1008个字(包含结束符合8个),例剩余[600字节]→[600]+/nend/ab+[400个\0]
循环终止机制:fread()返回0,立即停止3-DES加密流程。3-DES解密的实现
3-DES解密的实现与3-DES加密类似,但解密需要更多的判断操作,这意味着需要更多的CPU时间来决定何时停止操作。与加密不同,解密的输入是全部密文,需要先对密文进行解密,然后才能对其进行分析。下面是实现的具体细节:(1)输入1008个字并解密当程序启动时,将输入1008个字的密文,并将其发送到GPU进行解密。这个阶段将一直重复下去,直到没有密文输入。(2)解密后的分析解密后,程序会分析明文的最后8个字。如果这8个字是"/nend/ab",就意味着输入文件没有到达结尾。程序将输出没有"/nend/ab"的结果,并返回第1阶段。如果这8个字不是"/nend/ab",就意味着输入的文件已经到达了结尾,程序应该分析这1008个字以找出结束符号的位置。当程序找到结束符号的位置时,它将把没有"/nend/ab\0\0\0..."的结果输出为明文。完成了所有工作之后,程序跳出循环。谢谢大家密码学基础之江实验室刘哲AES算法描述01AES(AdvancedEncryptionStandard)算法背景:1997年,美国国家标准与技术研究院(NIST)开始征集高级加密标准,用以取代DES,经过了长达5年的标准化评估,最终于2001年选定Rijndael算法。AES是分组长度为128比特的Rijindael算法。AES:高级加密标准,是一种分组密码,要求明文和密文的分组长度都为16字节。不同的密钥长度对应不同的加/解密轮次。密钥长度加密轮次解密轮次AES-12810轮10轮AES-19212轮12轮AES-25614轮14轮状态矩阵:16字节的明文块被排列成的矩阵AES算法—加/解密流程AES-128,加密算法流程:初始轮密钥加:将状态矩阵与初始密钥矩阵进行按位异或。一轮加密:执行轮函数,对状态矩阵依次执行字节替换、行移位、列混淆及轮密钥加等操作。重复第二步10次,得到128比特密文。注:第10轮不再进行行列混淆操作AES-128,解密算法流程:将轮密钥的使用顺序颠倒过来,并逆序进行加密过程中的所有操作的逆运算。线性运算(如行移位、列混淆等)在数学上的求逆是简单的,只需改变操作执行的方向或对操作矩阵求逆即可。在非线性部分(S盒)中,由于S盒表是精心设计的,存在逆S盒,因此只需计算出逆S盒的常量表即可。AES算法—基本结构AES算法基本结构特点:没有采用Feistel结构遵循替代-置换网络(Substitution-PermutationNetwork)原则建立。每轮加密包括:字节替换层扩散层密钥加层AES算法核心部件—字节替换层字节替换层:简单的查表操作AES定义一个S盒和一个逆S盒,将状态矩阵中的每个元素映射为一个新元素S盒输入输出都是8比特字节替换操作时,字节的高4比特作为行值,低4别特作为列值,取出S盒中对应的元素,代替原位置的字节DES使用8个不同的S盒,AES使用16个S盒完全相同AES算法中的唯一非线性层AES算法核心部件—扩散层
AES算法核心部件—扩散层
AES算法核心部件—扩散层
伽罗瓦域乘法函数伪代码实现AES算法核心部件—密钥加层密钥加层:两个输入是16字节的当前状态矩阵和密钥编排算法生成的轮密钥,输出二者按位异或的结果。
AES算法核心部件—密钥编排密钥编排:计算的基本单位是32比特字(密钥矩阵的一列);输入为原始密钥矩阵(4×32比特),输出一系列相同位数的轮密钥(4×32比特);具体分为预计算和动态生成两种方法。
动态生成:动态生成的轮密钥计算规则与预计算相同,区别是轮密钥在加密和解密算法运行过程中动态地生成,而非预先加载。在生成轮密钥之后,密钥编排算法将根据加/解密算法安排密钥参与运算的顺序。若为加密算法,则轮密钥正向参与运算;若为解密算法,则轮密钥反向参与运算。SM4算法描述02SM4算法
SM4算法是一种典型的Feistel结构算法,解密算法与加密算法结构相同,区别仅是轮密钥的使用顺序。
SM4算法—密钥扩展算法
密钥扩展算法伪代码AES算法高速实现03AES算法高效实现—基于资源受限平台AES传统实现中字节替换通常是通过256字节查找表实现的。除此之外,其他实现方法一般分为3种:T表法、向量转置及位切片。T表法:字节替换、行移位以及列混淆经过数学上的合并,最终形成4个1024字节的查找表,称为T表。每个AES轮由16个掩码(mask)、16个查找表读取(load)、4个轮密钥读取(load)以及16个异或(xor)操作组成,这使得其在32位以上的平台上的实现非常高效。如果花费一个额外的旋转操作,最终就只需要一个查找表来完成。向量转置:T表法中的查找操作依赖于密钥和数据,这使得对带缓存架构的定时攻击变得容易。另一种方法是使用向量转置,它避免了这种依赖于数据的查找。但并非所有的嵌入式平台都支持该方法使用的指令,所以这种方法并不一定适用。位切片:位切片也是一种不需要查找表的方法,其核心思想是用SIMD方式并行处理多个块,适用于具有长寄存器的架构。对于AES而言,128比特数据通常分割到8个寄存器中,这就使得线性层非常高效。AES算法高效实现—基于资源受限平台基于两个典型的微处理器ARMCortex-M3以及Cortex-M4,介绍AES算法的快速实现。两个微处理器都有16个32比特寄存器,其中3个保留给程序计数器、堆栈指针和链接寄存器。链接指针可以被推入堆栈,释放另一个寄存器。ROM中的数据通常是通过密钥扩展和加/解密共享的,所以它只能在内存中存在一次。在RAM一栏中,I/O是指函数需要用来存储输入和输出的内存。I/O数据通常通过密钥扩展和加/解密共享,相同的堆栈空间可以用于加/解密函数调用。
AES算法快速实现—基于算法优化状态矩阵转置算法优化:在轮内部,转换可以通过使用查找表来实现。选择为查找表保留少量的空间,只将S盒和逆S盒制成表格,所有剩余的操作都是被动态计算出来的。这意味着只能通过软件技术来进行多次伽罗瓦域上的乘法运算。该算法在处理状态矩阵转置时,必须对所有步骤进行修改。
AES算法快速实现—基于算法优化密钥调度算法优化:将重新规划密钥生成的方案,在此期间完成调整。
AES算法快速实现—基于算法优化转置密钥调度由以下转换组成:
AES算法快速实现—GPU简介CUDA:一个GPU开发环境,程序员可以借助CUDA编写线程程序,同时指定线程和线程块的数量。从硬件的角度来看,GPU组装了许多处理器和片上存储器,而线程并行可以避免处理器处于空闲状态,提高GPU利用率。CUDA体系结构:GPU芯片有N个多处理器(Multi-Processor,MP),每个MP有M个标量处理器(ScalarProcessor,SP)、16KB共享内存、多个32比特寄存器和一个共享指令缓存,它还从指令单元中去除了控制单元部分(如条件分支组件),增加了计算单元密度。总体而言,该芯片构成了分层SIMD体系结构。全局内存(VRAM):最大内存区,用于CPU-GPU通信,访问延迟高共享内存:每个MP独享,SP高速访问,速度接近寄存器寄存器:GPU最快速的存储单元常量内存:只读存储区,低延迟访问AES算法快速实现—GPU软件模型软件模型:线程分组为线程块(Block),多个线程块组成计算任务;每个线程映射到一个SP,线程块资源(共享内存、寄存器)在MP上平均分配;MP中32个线程为一组同步执行(称为Warp)。高效利用32线程(Warp):全局内存联合存取低延迟(400-600周期)避免跨步访问,提高数据传输效率联合存取由CUDA编译器自动优化避免共享内存组冲突共享内存分16个存储组线程访问需避免同组冲突,否则最高16倍延迟差异AES算法快速实现—GPU优化技术流水线延迟隐藏内存访问速度慢,存在写后读依赖SP流水线延迟大约需要24周期,一次warp延迟是4个周期每个MP至少执行6次warp,保证流水线一直工作,隐藏延迟01无序执行机制遇到内存暂停时,其他warp无序调度继续执行最大化活跃线程数量,有效掩盖内存访问延迟示例:NVIDIAGeforceGTX285,每个线程块最多32线程02条件分支缩减SP没有条件分支单元,GPU使用CUDA编译器生成类散度顺序执行条件分支指令条件执行通过谓词寄存器和串行处理实现优化策略:重构算法,限制条件分支数03AES算法快速实现—基于GPU的快速实现优化方案一:多粒度并行处理方案16字节/线程每个线程独立地处理由16字节组成的每个明文块仅适用明文块之间的并行操作8字节/线程两个线程处理一个明文块利用了明文块中内部明文处理之间的并行性,需要使用共享内存4字节/线程4个线程处理一个明文块,内存共享和同步是必要的,单个明文块共享的线程数不同1字节/线程虽然32比特操作比较高效,但也能够通过线程处理1字节的数据。1字节/线程意味着16个线程以协调的方式处理明文块,尽管该粒度性能不高,但此粒度设计可用于早期研究中和其他粒度的比较。AES算法快速实现—基于GPU的快速实现优化方案二:内存分配方案。AES包含3种存储形式:明文、密文和中间数据、T表和轮密钥。变量常量内存共享内存寄存器T表√√×轮密钥√√×明文×√√(如果是16字节/线程)轮密钥和T表共享特性,可分配到常量内存,延迟低T表访问随机,存在无法提供低访问延迟的可能性共享内存优点:低延迟问题:存储组冲突、多份冗余复制、浪费空间明文处理开始存于全局内存,AES编码开始时转入共享内存16字节/线程粒度:中间变量直接存储在寄存器中,避免共享冲突AES算法快速实现—基于GPU的快速实现轮密钥和T表、明文两种存储形式是使用共享内存分配数据的,共有两种分配方法可供选择:结构的数组(AoS)和数组的结构(SoA)结构的数组AoS:结构是指明文块结构,AoS根据其性质处理明文。下表描述了共享内存的线程访问模式示例,粒度为8字节/线程数组的结构SoA:SoA将明文的每个元素分配到一个数组中,它们会产生不同种类的存储组冲突。下表描述了共享内存的线程访问模式示例,粒度为8字节/线程AES算法快速实现—基于GPU的快速实现优化方案三:其他优化
T表结构:一个32比特阵列T表和旋转操作(保存存储区域)。一个具有字节顺序内存访问的64比特阵列预计算T表。预计算32比特阵列T表×4。01重叠的GPU处理和内存复制:重叠数据传输(内存复制)和处理。AES编码过程,将明文传输到GPU的全局内存(以及从GPU的AES过程传输密文)重叠过程被称为数据传输和处理之间的管道处理,下图描绘了将数据分为两个块的情况下这种重叠的示意图:03减少线程块的切换:与其他应用程序不同,AES中切换线程块的开销往往更大且不可忽略。用少量线程加密相当多的明文,减少在AES中切换线程块的开销02SM4算法高速实现04SM4算法高速实现—基于CUDA的并行实现与优化CUDA(ComputeUnifiedDeviceArchitecture):是NVIDIA于2007年推出的一种通用GPU计算设备体系结构,为GPU并行实现密码算法提供了方便的平台。2007年,Manavski等人首次使用了CUDA来加速AES,并提出了一个T表来提高密码的性能。2008年,Ha
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学影像设备组装调试工操作能力水平考核试卷含答案
- 水工土石维修工10S执行考核试卷含答案
- 芳香烃生产工发展趋势模拟考核试卷含答案
- 木地板成型工风险评估模拟考核试卷含答案
- 家具设计师安全知识宣贯考核试卷含答案
- 矿石破碎筛分工岗前常识考核试卷含答案
- 电子元器件表面贴装工复试能力考核试卷含答案
- 丁苯橡胶装置操作工岗位强化考核试卷含答案
- 开切茧工工艺优化模拟考核试卷含答案
- 刻瓷工岗位创新方法考核试卷含答案
- 2026年非接触式物位仪表行业技术创新与应用报告
- 2026中国新能源电池材料技术突破与市场前景研究报告
- 2026年成人高考专升本民法考前押题卷(一)含答案解析 备考冲刺模拟卷
- 2026年综合管理岗试题及答案
- 2027届高考思想政治《指向学科思维培养的高考政治复习备考策略》
- 2026年《中国肺动脉高压诊断治疗指南(2026版)》
- (2026年)康复医学科住院患者医疗安全管理制度与措施
- 2026年湖南长沙长郡中学高一开学测试英语试题(含解析)
- 手术室净化监理细则
- 2026年发展对象培训班考试题库(含完整答案解析)
- 2026年西学中考试题库及答案
评论
0/150
提交评论