CN112787799B - 一种Poseidon Hash算法实现电路及其实现方法 - Google Patents

一种Poseidon Hash算法实现电路及其实现方法 Download PDF

Info

Publication number
CN112787799B
CN112787799B CN202011607589.3A CN202011607589A CN112787799B CN 112787799 B CN112787799 B CN 112787799B CN 202011607589 A CN202011607589 A CN 202011607589A CN 112787799 B CN112787799 B CN 112787799B
Authority
CN
China
Prior art keywords
circuit
array
turns
new
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011607589.3A
Other languages
English (en)
Other versions
CN112787799A (zh
Inventor
俞萍初
吕家力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chunxiao (Hangzhou) Education Technology Development Co.,Ltd.
Firefly Technology Holdings Ltd.
Original Assignee
Zhejiang Firefly Blockchain Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Firefly Blockchain Technology Co ltd filed Critical Zhejiang Firefly Blockchain Technology Co ltd
Priority to CN202011607589.3A priority Critical patent/CN112787799B/zh
Publication of CN112787799A publication Critical patent/CN112787799A/zh
Application granted granted Critical
Publication of CN112787799B publication Critical patent/CN112787799B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种Poseidon Hash算法实现电路及其实现方法,实现电路,包括输入接口、数据圆形跑道电路A、数据圆形跑道电路B、串并转换电路、并串转换电路、输出接口,所述输入接口与数据圆形跑道电路A相连,所述输出接口、串并转换电路、并串转换电路都与数据圆形跑道电路A相连,所述串并转换电路通过数据圆形跑道电路B与并串转换电路相连,本发明通过数据圆形跑道电路A、数据圆形跑道电路B进行流水线计算,因此加速效果明显,同时在达到加速指标的情况下,通过两条跑道的设计,减少了模乘单元的个数,降低了加速电路的复杂度,功耗低,稳定性好,计算速度远大于GPU的计算速度。

Description

一种Poseidon Hash算法实现电路及其实现方法
技术领域
本发明涉及一种Poseidon Hash算法实现电路及其实现方法。
背景技术
用于密码学的hash函数有严格的要求,单向性:从数据求散列值很容易,但不能倒推,或者倒推十分困难,理论上不可行。无相关性:要求在输入有一点点改变的情况下,要产生完全不同的输出,这样,从散列值完全不能看出数据之间的相关性。唯一性:不能通过不同的数据产生相同的hash值,这里说的不能是基本上不能人为实现,也就是说概率极小,此特性也可以成为碰撞安全性。在分布式存储领域中,要把大容量GB级的数据打散加密,这时要用到PoseidonHash算法,此算法并行度高,一般用GPU进行加速,但用GPU加速,功耗大(200W以上),稳定性差,日后维护成本高。随着数据量的增加,需要一个功耗低(<50W),计算能力大于GPU的加速方法。
发明内容
本发明的目的是克服现有技术中的不足,提供一种Poseidon Hash算法实现电路及其实现方法。
为了达到上述目的,本发明是通过以下技术方案实现的:
一种Poseidon Hash算法实现电路,包括输入接口、数据圆形跑道电路A、数据圆形跑道电路B、串并转换电路、并串转换电路、输出接口,所述输入接口与数据圆形跑道电路A相连,所述输出接口、串并转换电路、并串转换电路都与数据圆形跑道电路A相连,所述串并转换电路通过数据圆形跑道电路B与并串转换电路相连,所述数据圆形跑道电路A为串行跑道,所述数据圆形跑道电路B为并行跑道,串行跑道指的是数据是串行传输的,并行跑道指的是数据是并行传输的,也就是数据分成两排并行传输。
作为优选,本发明还包括标量加电路,所述输入接口经过标量加电路与数据圆形跑道电路A相连。
作为优选,数据圆形跑道电路A包括切换开关MUXA、标量幂运算电路A、矩阵乘法电路A、圈数判断模块A、圈计数器电路A、切换开关MUXC、fifo存储器A,所述标量加电路与切换开关MUXA相连,所述切换开关MUXA经过标量幂运算电路A与矩阵乘法电路A相连,后连接到圈数判断模块A,所述输出接口、串并转换电路、圈计数器电路A都与圈数判断模块A相连,所述圈计数器电路A、并串转换电路都与切换开关MUXC相连,所述切换开关MUXC通过fifo存储器A与切换开关MUXA相连。
作为优选,所述数据圆形跑道电路B包括切换开关MUXB、标量幂运算电路B、矩阵乘法电路B、圈数判断模块B、圈计数器计数电路B、fifo存储器B,所述串并转换电路与切换开关MUXB相连,所述切换开关MUXB通过标量幂运算电路B与矩阵乘法电路B相连,所述矩阵乘法电路B、并串转换电路都与圈数判断模块B相连,所述圈数判断模块B通过圈计数器计数电路B与fifo存储器B相连,所述fifo存储器B与切换开关MUXB相连。
一种Poseidon Hash算法实现电路的实现方法,包括如下步骤:
步骤1:输入接口串行输入单维数组A[n];
步骤2:输入接口将单维数组A[n]传送给标量加电路,使得单维数组A[n]增加一个常量数据变成n+1个数据的数组A[n+1],然后将数组A[n+1]中每个数据加上一个各自的常量,得到新的一维数组B[n+1];
步骤3:标量加电路将圈数A设定为1,标量加电路将新的一维数组B[n+1]和圈数A传送给数据圆形跑道电路A,然后新的一维数组B[n+1]和圈数A在数据圆形跑道电路A中跑4圈后得到新单维数组C[n+1],然后串并转换电路从数据圆形跑道电路A串行接收新单维数组C[n+1],然后把新单维数组C[n+1]转成(n+1)/2个数据并行的数组D[n+1],并把并行的数组D[n+1]传给数据圆形跑道电路B4;
步骤4:串并转换电路将圈数B设定为1,数据圆形跑道电路B接收从串并转换电路传过来的数组D[n+1]和圈数B,然后数组D[n+1]和圈数B在数据圆形跑道电路B中跑57圈后,生成新数组G[n+1],并把新数组G[n+1]传给并串转换电路;
步骤5:并串转换电路从数据圆形跑道电路B中并行接收新数组G[n+1],并把新数组G[n+1]转换成数组F[n+1],并串转换电路将数组F[n+1]串行发送给数据圆形跑道电路A;
步骤6:并串转换电路将圈数A设定为5,数据圆形跑道电路A从并串转换电路接收数组F[n+1]和圈数A,然后数组F[n+1]和圈数A在数据圆形跑道电路A再次跑4圈后生成新的数组E[n+1],取新的数组E[n+1]中第二个数据E2传给输出接口进行输出,数组E[n+1]中的其它数据丢弃。
作为优选,新的一维数组B[n+1]和圈数A在数据圆形跑道电路A中跑4圈的步骤如下:
步骤a1:切换开关MUXA接收新的一维数组B[n+1]和圈数A;
步骤b1:切换开关MUXA将新的一维数组B[n+1]和圈数A传送给标量幂运算电路A,标量幂运算电路A对新的一维数组B[n+1]中的每个数据进行5次方运算,并再加上一个常数,生成新的数组Y[n+1],即:Yn+1=Bn+1 5+α,所述α为常数;
步骤c1:标量幂运算电路A将数组Y[n+1]和圈数A串行传给矩阵乘法电路A,然后矩阵乘法电路A将数组Y[n+1]同常数二维矩阵M[n+1][n+1]相乘,生成新的一维数组Z[n+1];
步骤d1:矩阵乘法电路A将数组Z[n+1]和圈数A传送给圈数判断模块A,然后圈数判断模块A判断圈数A是否为4,若圈数A为4,则圈数判断模块A向串并转换电路输出新单维数组C[n+1],并退出,否则圈数判断模块A将数组Z[n+1]和圈数A传送给圈计数器电路A,并且圈计数器电路A将圈数A加1,然后圈计数器电路A将数组Z[n+1]和圈数A传送给切换开关MUXC,然后切换开关MUXC将数组Z[n+1]和圈数A通过fifo存储器A传送给切换开关MUXA,并将数组Z[n+1]设定为新的一圈的数组X[n+1],然后转到步骤a。
作为优选,数组F[n+1]和圈数A在数据圆形跑道电路A再次跑4圈的步骤如下:
步骤a2:切换开关MUXA接收数组F[n+1]和圈数A;
步骤b2:切换开关MUXA将数组F[n+1]和圈数A传送给标量幂运算电路A,标量幂运算电路A对数组F[n+1]中的每个数据进行5次方运算,并再加上一个常数,生成新的数组W[n+1],即:Wn+1=Fn+1 5+β,所述β为常数;
步骤c2:标量幂运算电路A将数组W[n+1]和圈数A串行传给矩阵乘法电路A,然后矩阵乘法电路A将数组W[n+1]同常数二维矩阵M[n+1][n+1]相乘,生成新的一维数组K[n+1];
步骤d2:矩阵乘法电路A将数组K[n+1]和圈数A传送给圈数判断模块A,然后圈数判断模块A判断圈数A是否为8,若圈数A为8,则圈数判断模块A向输出接口输出,并退出,否则圈数判断模块A将数组K[n+1]和圈数A传送给圈计数器电路A,并且圈计数器电路A将圈数A加1,然后圈计数器电路A将数组K[n+1]和圈数A传送给切换开关MUXC,然后切换开关MUXC将数组K[n+1]和圈数A通过fifo存储器A传送给切换开关MUXA,并将数组K[n+1]设定为新的一圈的数组F[n+1],然后转到步骤a。
作为优选,数组D[n+1]在数据圆形跑道电路B中跑57圈的流程如下:
步骤s1:切换开关MUXB接收串并转换电路传过来的数组D[n+1]和圈数B;
步骤s2:切换开关MUXB将数组D[n+1]、圈数B发送给标量幂运算电路B,然后标量幂运算电路B对数组D[n+1]中的D[0]进行D[0]5+const计算,数组D[n+1]中其它数组数据不变,所述const为常数,从而得到新数组J[n+1];
步骤s3:标量幂运算电路B将新数组J[n+1]、圈数B发送给矩阵乘法电路B43,矩阵乘法电路B将新数组J[n+1]乘上一个N[n+1][n+1]的二维矩阵,得到新数组H[n+1],之后将新数组H[n+1]、圈数B进入圈数判断模块B;
步骤s4:圈数判断模块B判断圈数B是否为57,若是,则圈数判断模块B向并串转换电路输出且退出,否则圈数判断模块B向圈计数器计数电路B发送数组H[n+1],与此同时,圈计数器计数电路B将圈数B加1;
步骤s5:圈计数器计数电路B通过fifo存储器B向切换开关MUXB发送数组H[n+1]和圈数B,并将数组H[n+1]设定新一圈的数组D[n+1],转到步骤s1。
作为优选,N[n+1][n+1]的二维矩阵的排列为
Figure BDA0002872225490000041
所述V0、V1、V2…Vn-3、Vn-2、Vn-1都为常数,所述W0、W1、W2…Wn-2、Wn-1、Wn都为常数。
本发明的有益效果如下:本发明通过数据圆形跑道电路A、数据圆形跑道电路B进行流水线计算,因此加速效果明显,同时在达到加速指标的情况下,通过两条跑道的设计,减少了模乘单元的个数,降低了加速电路的复杂度,功耗低,稳定性好,计算速度远大于GPU的计算速度。
附图说明
图1为本发明的系统框图;
图2为数据圆形跑道电路A的模块连接示意图;
图3为数据圆形跑道电路B的模块连接示意图。
具体实施方式
下面结合说明书附图对本发明的技术方案作进一步说明:
如图1所示,一种Poseidon Hash算法实现电路,包括输入接口2、标量加电路1、数据圆形跑道电路A3、数据圆形跑道电路B4、串并转换电路5、并串转换电路6、输出接口7,所述输入接口2经过标量加电路1与数据圆形跑道电路A3相连,所述输出接口7、串并转换电路5、并串转换电路6都与数据圆形跑道电路A3相连,所述串并转换电路5通过数据圆形跑道电路B4与并串转换电路6相连,所述数据圆形跑道电路A3为串行跑道,所述数据圆形跑道电路B4为并行跑道,串行跑道指的是数据是串行传输的,并行跑道指的是数据是并行传输的,也就是数据分成两排并行传输。标量加电路1可替换为上位机,即标量加电路1的功能可在上位机实现。
如图2所示,数据圆形跑道电路A3包括切换开关MUXA37、标量幂运算电路A31、矩阵乘法电路A32、圈数判断模块A33、圈计数器电路A34、切换开关MUXC35、fifo存储器A36,所述标量加电路1与切换开关MUXA37相连,所述切换开关MUXA37经过标量幂运算电路A31与矩阵乘法电路A32相连,后连接到圈数判断模块A33,所述输出接口7、串并转换电路5、圈计数器电路A34都与圈数判断模块A33相连,所述圈计数器电路A34、并串转换电路6都与切换开关MUXC35相连,所述切换开关MUXC35通过fifo存储器A36与切换开关MUXA37相连。所述的切换开关MUXA和MUXC,都是两个输入中选择一路输出,也可以把两者在一起,变成三个输入中选择一路输出,这样的变形是本发明的保护范围之内。fifo存储器A36可以为一个,也可以为多个,这样的变形是本发明的保护范围之内。圈计数器电路A34、切换开关MUXC35、fifo存储器A36、切换开关MUXA37的位置可以任意互换,都在本发明的保护范围之内。
如图3所示,数据圆形跑道电路B4包括切换开关MUXB41、标量幂运算电路B42、矩阵乘法电路B43、圈数判断模块B44、圈计数器计数电路B45、fifo存储器B46,所述串并转换电路5与切换开关MUXB41相连,所述切换开关MUXB41通过标量幂运算电路B42与矩阵乘法电路B43相连,所述矩阵乘法电路B43、并串转换电路6都与圈数判断模块B44相连,所述圈数判断模块B44通过圈计数器计数电路B45与fifo存储器B46相连,所述fifo存储器B46与切换开关MUXB41相连。切换开关MUXB41、圈数判断模块B44、圈计数器计数电路B45、fifo存储器B46的位置可以任意互换,都在本发明的保护范围之内。
如图1、图2、图3所示,一种Poseidon Hash算法实现电路的实现方法,包括如下步骤:
步骤1:输入接口2串行输入单维数组A[n];串行输入指的是所述串行输入表示n个数据排队一个一个输入。跑道A中的数据都是串行传输的,用A[n]表示串行传输的。
步骤2:输入接口2将单维数组A[n]传送给标量加电路1,使得单维数组A[n]增加一个常量数据变成n+1个数据的数组A[n+1],然后将数组A[n+1]中每个数据加上一个各自的常量,得到新的一维数组B[n+1];每个数据加上的常量时不相同的。
步骤3:标量加电路1将圈数A设定为1,标量加电路1将新的一维数组B[n+1]和圈数A传送给数据圆形跑道电路A3,然后新的一维数组B[n+1]和圈数A在数据圆形跑道电路A3中跑4圈后得到新单维数组C[n+1],然后串并转换电路5从数据圆形跑道电路A3串行接收新单维数组C[n+1],然后把新单维数组C[n+1]转成(n+1)/2个数据并行的数组D[n+1],并把并行的数组D[n+1]传给数据圆形跑道电路B4;每一个新的一维数组B[n+1]各自都有一个同步的圈数计数器A,同时圈数计数器A随着数组B[n+1]一起在数据圆形跑道电路A上传输。所述的并行传输表示数据并排传输,若n为11时,则并行的数组D[12]为{{D0,D6},{D1,D7},{D2,D8},{D3,D9},{D4,D10},{D5,D11}}。若n=8时,则并行的数组D[9]表示为{{D0,D5},{D1,D6},{D2,D7},{D3,D8},{D4,reg}},reg表示无用数据,这是n为偶数情况。
步骤4:串并转换电路5将圈数B设定为1,数据圆形跑道电路B4接收从串并转换电路5传过来的数组D[n+1]和圈数B,然后数组D[n+1]和圈数B在数据圆形跑道电路B4中跑57圈后,生成新数组G[n+1],并把新数组G[n+1]传给并串转换电路6;每一个数组D[n+1]各自都有一个同步的圈数计数器B,同时圈数计数器B随着数组D[n+1]一起在数据圆形跑道电路B上传输。
步骤5:并串转换电路6从数据圆形跑道电路B4中并行接收新数组G[n+1],并把新数组G[n+1]转换成数组F[n+1],并串转换电路6将数组F[n+1]串行发送给数据圆形跑道电路A3;并串转换电路6的作用就是并行接收数据,再把数据重新排成一队,然后串行发送出去。
步骤6:并串转换电路6将圈数A设定为5,数据圆形跑道电路A3从并串转换电路6接收数组F[n+1]和圈数A,然后数组F[n+1]和圈数A在数据圆形跑道电路A3再次跑4圈后生成新的数组E[n+1],取新的数组E[n+1]中第二个数据E2传给输出接口7进行输出,数组E[n+1]中的其它数据丢弃。
本发明的跑道A是跑首尾各4圈,可将跑道A拆分为两条跑道,一条跑首4圈,一条跑尾4圈,这种情况也是本发明的保护范围之内。
如图2所示,新的一维数组B[n+1]和圈数A在数据圆形跑道电路A3中跑4圈的步骤如下:
步骤a1:切换开关MUXA37接收新的一维数组B[n+1]和圈数A;
步骤b1:切换开关MUXA37将新的一维数组B[n+1]和圈数A传送给标量幂运算电路A31,标量幂运算电路A31对新的一维数组B[n+1]中的每个数据进行5次方运算,并再加上一个常数,生成新的数组Y[n+1],即:Yn+1=Bn+15+α,所述α为常数;α为常数:数组B[n+1]中n+1数据都有各自的常数,同时每一圈常数都不一样,但不同的数组对应的常数是一样的。
步骤c1:标量幂运算电路A31将数组Y[n+1]和圈数A串行传给矩阵乘法电路A32,然后矩阵乘法电路A32将数组Y[n+1]同常数二维矩阵M[n+1][n+1]相乘,生成新的一维数组Z[n+1];矩阵乘法电路A32中有n+1个模乘电路,所以两个矩阵相乘要分n+1步才能完成,总其进行(n+1)*(n+1)次模乘运算。常数二维矩阵M[n+1][n+1]在第1圈、第2圈、第3圈,第5圈、第6圈、第7圈、第8圈的数值是一样的,在第4圈时用的是不同数值的常数二维矩阵M[n+1][n+1]。
步骤d1:矩阵乘法电路A32将数组Z[n+1]和圈数A传送给圈数判断模块A33,然后圈数判断模块A33判断圈数A是否为4,若圈数A为4,则圈数判断模块A33向串并转换电路5输出新单维数组C[n+1],并退出,否则圈数判断模块A33将数组Z[n+1]和圈数A传送给圈计数器电路A34,并且圈计数器电路A34将圈数A加1,然后圈计数器电路A34将数组Z[n+1]和圈数A传送给切换开关MUXC35,然后切换开关MUXC35将数组Z[n+1]和圈数A通过fifo存储器A36传送给切换开关MUXA37,并将数组Z[n+1]设定为新的一圈的数组X[n+1],然后转到步骤a。数组在数据圆形跑道电路A中传输是串行传输的,也就是分成一排传输的。
如图2所示,数组F[n+1]和圈数A在数据圆形跑道电路A3再次跑4圈的步骤如下:
步骤a2:切换开关MUXA37接收数组F[n+1]和圈数A;
步骤b2:切换开关MUXA37将数组F[n+1]和圈数A传送给标量幂运算电路A31,标量幂运算电路A31对数组F[n+1]中的每个数据进行5次方运算,并再加上一个常数,生成新的数组W[n+1],即:Wn+1=Fn+1 5+β,所述β为常数;数组F[n+1]内每个数对应的β为常数是不一样的,同时第一圈的常数也不一样。
步骤c2:标量幂运算电路A31将数组W[n+1]和圈数A串行传给矩阵乘法电路A32,然后矩阵乘法电路A32将数组W[n+1]同常数二维矩阵M[n+1][n+1]相乘,生成新的一维数组K[n+1];
步骤d2:矩阵乘法电路A32将数组K[n+1]和圈数A传送给圈数判断模块A33,然后圈数判断模块A33判断圈数A是否为8,若圈数A为8,则圈数判断模块A33向输出接口7输出,并退出,否则圈数判断模块A33将数组K[n+1]和圈数A传送给圈计数器电路A34,并且圈计数器电路A34将圈数A加1,然后圈计数器电路A34将数组K[n+1]和圈数A传送给切换开关MUXC35,然后切换开关MUXC35将数组K[n+1]和圈数A通过fifo存储器A36传送给切换开关MUXA37,并将数组K[n+1]设定为新的一圈的数组F[n+1],然后转到步骤a。
如图3所示,数组D[n+1]在数据圆形跑道电路B4中跑57圈的流程如下:步骤s1:切换开关MUXB41接收串并转换电路5传过来的数组D[n+1]和圈数B;串并转换电路5作用是串行接收从数据圆形跑道电路A发过来的D[n+1],并把数组中的数据分成两队排列,并添加圈数B。
步骤s2:切换开关MUXB41将数组D[n+1]、圈数B发送给标量幂运算电路B42,然后标量幂运算电路B42对数组D[n+1]中的D[0]进行D[0]5+const计算,数组D[n+1]中其它数组数据不变,所述const为常数,从而得到新数组J[n+1];常数const在5圈轮中的数值都不一样。
步骤s3:标量幂运算电路B42将新数组J[n+1]、圈数B发送给矩阵乘法电路B43,矩阵乘法电路B43将新数组J[n+1]乘上一个N[n+1][n+1]的二维矩阵,得到新数组H[n+1],之后将新数组H[n+1]、圈数B进入圈数判断模块B44;
步骤s4:圈数判断模块B44判断圈数B是否为57,若是,则圈数判断模块B44向并串转换电路6输出且退出,否则圈数判断模块B44向圈计数器计数电路B45发送数组H[n+1],与此同时,圈计数器计数电路B45将圈数B加1;
步骤s5:圈计数器计数电路B45通过fifo存储器B46向切换开关MUXB41发送数组H[n+1]和圈数B,并将数组H[n+1]设定新一圈的数组D[n+1],转到步骤s1。数组在数据圆形跑道电路B4中传输是并行传输,也就是分成两排传输。
N[n+1][n+1]的二维矩阵的排列为
Figure BDA0002872225490000091
所述V0、V1、V2…Vn-3、Vn-2、Vn-1都为常数,所述W0、W1、W2…Wn-2、Wn-1、Wn都为常数。N[n+1][n+1]的二维矩阵的排列为第一行和第一列都为常数,其余为n*n为单位矩阵,V0、V1、V2…Vn-3、Vn-2、Vn-1的数值在57圈中都不一样,W0、W1、W2…Wn-2、Wn-1、Wn的数值在57圈中都不一样。
所述的矩阵乘法电路A32实现一个一维数组Y[n+1]同二维数组M[n+1][n++]相乘,得到另一个一维数组Z[n+1]
所述数据圆形跑道电路B4包括切换开关MUXB41、标量幂运算电路B42、矩阵乘法电路B43、圈数判断模块B44、圈计数器计数电路B45、fifo存储器B46数据圆形跑道电路B4上跑的数据都是(n+1)/2个数据并行的。数据圆形跑道电路B4从串并转换电路接收的数据是并行的数组D[n+1]。并行的数组D[n+1]从切换开关MUXB41流入数据圆形跑道B中,切换开关MUXB41选择接收fifo存储器B46中传过来的圈数和并行的数组D[n+1],并把数据传给标量幂运算电路B42。标量幂运算电路B42对并行的数组D[n+1]中的D[0]进行D[0]5+const计算,其它数据不变,矩阵乘法电路B43对接收的并行的数组D[n+1]乘上一个N[n][n]的二维矩阵,之后进入圈数判断模块B44,当在数据圆形跑道电路B上跑的圈数为57时,向并串转换电路56并行输出数据,不到57圈的数据传给圈计数器计数电路B45,圈计数器计数电路B45对数据同步的圈计数器进行加1计数。之后并行的数组D[n+1]进入数据圆形跑道电路B4中的fifo存储器B46中。
Poseidon Hash算法并行度很高,很适合采用硬件电路进行加速。本发明为了让算法加速更快,采用了poseidon Hash的简便算法,中间的57轮中的矩阵运算原本要进行n*n次模乘运算,模乘运算是指求余数运算,现只要n+n-1次就行了,而头4轮和尾4轮还是原来的n*n次模乘运算。根据简便算法的特点,我们设计了双跑道电路,每条跑道中的矩阵乘法电路中的模乘单元个数是一样的,都是n个模乘单元。数据圆形跑道电路A要算n步才能输出结果,数据圆形跑道电路B只要两步就能输出结果,同时两条跑道都是流水线计算,因此加速效果明显,同时在达到加速指标的情况下,通过两条跑道的设计,减少了模乘单元的个数,降低了加速电路的复杂度。
实际应用1:
上位机通过PCIE接口电路把批量数据加载到DDR缓存中,并通知本发明的Poseidon Hash算法实现电路,之后,本发明的Poseidon Hash算法实现电路通过输入接口从DDR缓存中加载数据,算好后,通过输出接口写回DDR缓存,完成后,通知上位机可以读取结果数据,最后上位机通过PCIE接口电路读取计算结果数据。
实际应用2:
上位机通过PCIE接口电路把批量数据直接发给本发明的Poseidon Hash算法实现电路,本发明的Poseidon Hash算法实现电路通过输入接口读取上位机发过来的数据。经过计算后,本发明的Poseidon Hash算法实现电路通过输出接口把结果数据发给PCIE接口电路,PCIE接口电路再把结果数据传给上位机。
以上实际应用中采用PCIE接口作为传输数据的接口,只是为了说明方便,同理可以用USB接口、spi串行接口、以太网接口、uart串行接口等通信接口。
本发明通过数据圆形跑道电路A、数据圆形跑道电路B进行流水线计算,因此加速效果明显,同时在达到加速指标的情况下,通过两条跑道的设计,减少了模乘单元的个数,降低了加速电路的复杂度,功耗低,稳定性好,计算速度远大于GPU的计算速度。
需要注意的是,以上列举的仅是本发明的一种具体实施例。显然,本发明不限于以上实施例,还可以有许多变形,总之,本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

Claims (3)

1.一种Poseidon Hash算法实现电路,其特征在于,包括输入接口(2)、数据圆形跑道电路A(3)、数据圆形跑道电路B(4)、串并转换电路(5)、并串转换电路(6)、输出接口(7)、标量加电路(1),所述输入接口(2)与数据圆形跑道电路A(3)相连,所述输出接口(7)、串并转换电路(5)、并串转换电路(6)都与数据圆形跑道电路A(3)相连,所述串并转换电路(5)通过数据圆形跑道电路B(4)与并串转换电路(6)相连,所述数据圆形跑道电路A(3)为串行跑道,所述数据圆形跑道电路B(4)为并行跑道,所述输入接口(2)经过标量加电路(1)与数据圆形跑道电路A(3)相连,所述数据圆形跑道电路A(3)包括切换开关MUXA(37)、标量幂运算电路A(31)、矩阵乘法电路A(32)、圈数判断模块A(33)、圈计数器电路A(34)、切换开关MUXC(35)、fifo存储器A(36),所述标量加电路(1)与切换开关MUXA(37)相连,所述切换开关MUXA(37)经过标量幂运算电路A(31)与矩阵乘法电路A(32)相连,后连接到圈数判断模块A(33),所述输出接口(7)、串并转换电路(5)、圈计数器电路A(34)都与圈数判断模块A(33)相连,所述圈计数器电路A(34)、并串转换电路(6)都与切换开关MUXC(35)相连,所述切换开关MUXC(35)通过fifo存储器A(36)与切换开关MUXA(37)相连,所述数据圆形跑道电路B(4)包括切换开关MUXB(41)、标量幂运算电路B(42)、矩阵乘法电路B(43)、圈数判断模块B(44)、圈计数器计数电路B(45)、fifo存储器B(46),所述串并转换电路(5)与切换开关MUXB(41)相连,所述切换开关MUXB(41)通过标量幂运算电路B(42)与矩阵乘法电路B(43)相连,所述矩阵乘法电路B(43)、并串转换电路(6)都与圈数判断模块B(44)相连,所述圈数判断模块B(44)通过圈计数器计数电路B(45)与fifo存储器B(46)相连,所述fifo存储器B(46)与切换开关MUXB(41)相连。
2.一种Poseidon Hash算法实现电路的实现方法,其特征在于,包括如下步骤:
步骤1:输入接口(2)串行输入单维数组A[n];
步骤2:输入接口(2)将单维数组A[n]传送给标量加电路(1),使得单维数组A[n]增加一个常量数据变成n+1个数据的数组A[n+1],然后将数组A[n+1]中每个数据加上一个各自的常量,得到新的一维数组B[n+1];
步骤3:标量加电路(1)将圈数A设定为1,标量加电路(1)将新的一维数组B[n+1]和圈数A传送给数据圆形跑道电路A(3),然后新的一维数组B[n+1]和圈数A在数据圆形跑道电路A(3)中跑4圈后得到新单维数组C[n+1],然后串并转换电路(5)从数据圆形跑道电路A(3)串行接收新单维数组C[n+1],然后把新单维数组C[n+1]转成(n+1)/2个数据并行的数组D[n+1],并把并行的数组D[n+1]传给数据圆形跑道电路B(4);
步骤4:串并转换电路(5)将圈数B设定为1,数据圆形跑道电路B(4)接收从串并转换电路(5)传过来的数组D[n+1]和圈数B,然后数组D[n+1]和圈数B在数据圆形跑道电路B(4)中跑57圈后,生成新数组G[n+1],并把新数组G[n+1]传给并串转换电路(6);
步骤5:并串转换电路(6)从数据圆形跑道电路B(4)中并行接收新数组G[n+1],并把新数组G[n+1]转换成数组F[n+1],并串转换电路(6)将数组F[n+1]串行发送给数据圆形跑道电路A(3);
步骤6:并串转换电路(6)将圈数A设定为5,数据圆形跑道电路A(3)从并串转换电路(6)接收数组F[n+1]和圈数A,然后数组F[n+1]和圈数A在数据圆形跑道电路A(3)再次跑4圈后生成新的数组E[n+1],取新的数组E[n+1]中第二个数据E2传给输出接口(7)进行输出,数组E[n+1]中的其它数据丢弃;
所述新的一维数组B[n+1]和圈数A在数据圆形跑道电路A(3)中跑4圈的步骤如下:
步骤a:切换开关MUXA(37)接收新的一维数组B[n+1]和圈数A;
步骤b:切换开关MUXA(37)将新的一维数组B[n+1]和圈数A传送给标量幂运算电路A(31),标量幂运算电路A(31)对新的一维数组B[n+1]中的每个数据进行5次方运算,并再加上一个常数,生成新的数组Y[n+1],即:Yn+1=Bn+1 5+α,所述α为常数;
步骤c:标量幂运算电路A(31)将数组Y[n+1]和圈数A串行传给矩阵乘法电路A(32),然后矩阵乘法电路A(32)将数组Y[n+1]同常数二维矩阵M[n+1][n+1]相乘,生成新的一维数组Z[n+1];
步骤d:矩阵乘法电路A(32)将数组Z[n+1]和圈数A传送给圈数判断模块A(33),然后圈数判断模块A(33)判断圈数A是否为4,若圈数A为4,则圈数判断模块A(33)向串并转换电路(5)输出新单维数组C[n+1],并退出,否则圈数判断模块A(33)将数组Z[n+1]和圈数A传送给圈计数器电路A(34),并且圈计数器电路A(34)将圈数A加1,然后圈计数器电路A(34)将数组Z[n+1]和圈数A传送给切换开关MUXC(35),然后切换开关MUXC(35)将数组Z[n+1]和圈数A通过fifo存储器A(36)传送给切换开关MUXA(37),并将数组Z[n+1]设定为新的一圈的数组X[n+1],然后转到步骤a;
所述数组F[n+1]和圈数A在数据圆形跑道电路A(3)再次跑4圈的步骤如下:
步骤a:切换开关MUXA(37)接收数组F[n+1]和圈数A;
步骤b:切换开关MUXA(37)将数组F[n+1]和圈数A传送给标量幂运算电路A(31),标量幂运算电路A(31)对数组F[n+1]中的每个数据进行5次方运算,并再加上一个常数,生成新的数组W[n+1],即:Wn+1=Fn+1 5+β,所述β为常数;
步骤c:标量幂运算电路A(31)将数组W[n+1]和圈数A串行传给矩阵乘法电路A(32),然后矩阵乘法电路A(32)将数组W[n+1]同常数二维矩阵M[n+1][n+1]相乘,生成新的一维数组K[n+1];
步骤d:矩阵乘法电路A(32)将数组K[n+1]和圈数A传送给圈数判断模块A(33),然后圈数判断模块A(33)判断圈数A是否为8,若圈数A为8,则圈数判断模块A(33)向输出接口(7)输出,并退出,否则圈数判断模块A(33)将数组K[n+1]和圈数A传送给圈计数器电路A(34),并且圈计数器电路A(34)将圈数A加1,然后圈计数器电路A(34)将数组K[n+1]和圈数A传送给切换开关MUXC(35),然后切换开关MUXC(35)将数组K[n+1]和圈数A通过fifo存储器A(36)传送给切换开关MUXA(37),并将数组K[n+1]设定为新的一圈的数组F[n+1],然后转到步骤a;
所述数组D[n+1]在数据圆形跑道电路B(4)中跑57圈的流程如下:
步骤s1:切换开关MUXB(41)接收串并转换电路(5)传过来的数组D[n+1]和圈数B;
步骤s2:切换开关MUXB(41)将数组D[n+1]、圈数B发送给标量幂运算电路B(42),然后标量幂运算电路B(42)对数组D[n+1]中的D[0]进行D[0]5+const计算,数组D[n+1]中其它数组数据不变,所述const为常数,从而得到新数组J[n+1];
步骤s3:标量幂运算电路B(42)将新数组J[n+1]、圈数B发送给矩阵乘法电路B(43),矩阵乘法电路B(43)将新数组J[n+1]乘上一个N[n+1][n+1]的二维矩阵,得到新数组H[n+1],之后将新数组H[n+1]、圈数B进入圈数判断模块B(44);
步骤s4:圈数判断模块B(44)判断圈数B是否为57,若是,则圈数判断模块B(44)向并串转换电路(6)输出且退出,否则圈数判断模块B(44)向圈计数器计数电路B(45)发送数组H[n+1],与此同时,圈计数器计数电路B(45)将圈数B加1;
步骤s5:圈计数器计数电路B(45)通过fifo存储器B(46)向切换开关MUXB(41)发送数组H[n+1]和圈数B,并将数组H[n+1]设定新一圈的数组D[n+1],转到步骤s1。
3.根据权利要求2所述一种Poseidon Hash算法实现电路的实现方法,其特征在于,所述N[n+1][n+1]的二维矩阵的排列为
W0 V0 V1 V2 … Vn-3 Vn-2 Vn-1
W1 1 0 0 … 0 0 0
W2 0 1 0 … 0 0 0
…………………………
…………………………
…………………………
Wn-2 0 0 0 … 1 0 0
Wn-1 0 0 0 … 0 1 0
Wn 0 0 0 … 0 0 1,所述V0、V1、V2…Vn-3、Vn-2、Vn-1都为常数,所述W0、W1、W2…Wn-2、Wn-1、Wn都为常数。
CN202011607589.3A 2020-12-30 2020-12-30 一种Poseidon Hash算法实现电路及其实现方法 Active CN112787799B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011607589.3A CN112787799B (zh) 2020-12-30 2020-12-30 一种Poseidon Hash算法实现电路及其实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011607589.3A CN112787799B (zh) 2020-12-30 2020-12-30 一种Poseidon Hash算法实现电路及其实现方法

Publications (2)

Publication Number Publication Date
CN112787799A CN112787799A (zh) 2021-05-11
CN112787799B true CN112787799B (zh) 2022-07-26

Family

ID=75753455

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011607589.3A Active CN112787799B (zh) 2020-12-30 2020-12-30 一种Poseidon Hash算法实现电路及其实现方法

Country Status (1)

Country Link
CN (1) CN112787799B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113296705B (zh) * 2021-05-27 2022-09-27 浙江萤火虫区块链科技有限公司 一种Filecoin中并行计算Poseidon Hash的架构系统
CN114745099B (zh) * 2022-04-19 2023-04-04 麦田云网(杭州)信息技术有限公司 一种基于FPGA的poseidon哈希算法的优化方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101031876A (zh) * 2004-08-24 2007-09-05 华盛顿大学 用可重新配置硬件进行内容检测的方法和系统
CN109687972A (zh) * 2018-12-21 2019-04-26 天津国芯科技有限公司 一种支持多种Hash算法的电路

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7249255B2 (en) * 2001-06-13 2007-07-24 Corrent Corporation Apparatus and method for a hash processing system using multiple hash storage areas
IL154010A0 (en) * 2003-01-16 2003-07-31 Discretix Technologies Ltd Flexible hardware implementation of hash functions
US7827384B2 (en) * 2007-07-16 2010-11-02 Cisco Technology, Inc. Galois-based incremental hash module
JP5419083B2 (ja) * 2009-08-28 2014-02-19 公立大学法人公立はこだて未来大学 無線タグ管理サーバ、無線タグおよび無線タグ管理システム
EP3338397B1 (en) * 2015-08-19 2020-11-04 Intel Corporation Instructions and logic to provide simd sm3 cryptographic hashing functionality
CN111612622B (zh) * 2020-05-20 2021-03-23 深圳比特微电子科技有限公司 用于执行散列算法的电路和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101031876A (zh) * 2004-08-24 2007-09-05 华盛顿大学 用可重新配置硬件进行内容检测的方法和系统
CN109687972A (zh) * 2018-12-21 2019-04-26 天津国芯科技有限公司 一种支持多种Hash算法的电路

Also Published As

Publication number Publication date
CN112787799A (zh) 2021-05-11

Similar Documents

Publication Publication Date Title
CN112787799B (zh) 一种Poseidon Hash算法实现电路及其实现方法
JP7166389B2 (ja) ニューラルネットワークにおけるビット直列計算についてのシステム及び集積回路
CN107689948B (zh) 应用于神经网络硬件加速系统的高效数据访存管理装置
CN105681628B (zh) 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
CN108108809B (zh) 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法
CN110163358B (zh) 一种计算装置及方法
CN113807509B (zh) 神经网络加速装置、方法和通信设备
CN109447241A (zh) 一种面向物联网领域的动态可重构卷积神经网络加速器架构
CN110059797B (zh) 一种计算装置及相关产品
CN114781632A (zh) 基于动态可重构脉动张量运算引擎的深度神经网络加速器
CN102567282B (zh) 通用dsp处理器中fft计算实现装置和方法
CN101697486A (zh) 一种二维小波变换集成电路结构
CN114399036A (zh) 一种基于一维Winograd算法的高效卷积计算单元
CN102355232A (zh) 基于fpga的高速fir数字滤波器
CN109672524B (zh) 基于粗粒度可重构架构的sm3算法轮迭代系统及迭代方法
CN107368459B (zh) 基于任意维数矩阵乘法的可重构计算结构的调度方法
CN109902802A (zh) 基于fpga的卷积神经网络训练系统及方法
CN104268124A (zh) 一种fft实现装置和方法
CN111047037B (zh) 数据处理方法、装置、设备及存储介质
CN112395549A (zh) 一种用于矩阵乘法密集型算法的可重构矩阵乘法加速系统
JP2015503785A (ja) Fft/dftの逆順ソーティングシステム、方法およびその演算システム
CN108647780A (zh) 面向神经网络的可重构池化操作模块结构及其实现方法
JPH0590141A (ja) 荷電ビーム描画用データ作成装置
CN214586992U (zh) 神经网络加速电路、图像处理器及三维成像电子设备
CN113159302B (zh) 一种用于可重构神经网络处理器的路由结构

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Room 2409, 24 / F, Huachuang building, 511 Jianye Road, Binjiang District, Hangzhou, Zhejiang 310000

Patentee after: Firefly Technology Holdings Ltd.

Address before: Room 2409, 24 / F, Huachuang building, 511 Jianye Road, Binjiang District, Hangzhou, Zhejiang 310000

Patentee before: Zhejiang firefly blockchain Technology Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20230217

Address after: Room 201664, 20/F, Yandafang Wenyuan Building, 426 Binwen Road, Puyan Street, Binjiang District, Hangzhou City, Zhejiang Province, 310000

Patentee after: Chunxiao (Hangzhou) Education Technology Development Co.,Ltd.

Address before: Room 2409, 24 / F, Huachuang building, 511 Jianye Road, Binjiang District, Hangzhou, Zhejiang 310000

Patentee before: Firefly Technology Holdings Ltd.

TR01 Transfer of patent right