# File timestamp (UTC): 2021-03-21T12:20:35.721 # NIST Circuit Complexity Project # https://csrc.nist.gov/projects/circuit-complexity begin circuit SKOP15-8x8-GF256-inv--XOR=348--XZLBZ20 # SLP Source: https://doi.org/10.13154/tosc.v2020.i2.120-145 --- https://github.com/xiangzejun/Optimizing_Implementations_of_Linear_Layers # The preamble, metadata, SLP syntax and variable names have been adjusted here to the NIST format # Boolean Circuit for a linear system y = A.x defined by a 64x64 bit-matrix A # Matrix A weights (W): totalW=880, adjW=816, minWInRow=11, maxWInRow=17, minWInCol=19, maxWICol=11 # Matrix represented as 64 rows: vecRows=UInt64[0xe105700491030201, 0x010ae008e1060402, 0x02140310010c0804, 0x0428062002181008, 0x08500c4004302010, 0x10a0188008604020, 0x208330c310c08040, 0x40c560452043c380, 0x05e1047003910102, 0x0a0108e006e10204, 0x140210030c010408, 0x2804200618020810, 0x5008400c30041020, 0xa010801860082040, 0x8320c330c0104080, 0xc5404560432080c3, 0x7004e10502019103, 0xe008010a0402e106, 0x031002140804010c, 0x0620042810080218, 0x0c40085020100430, 0x188010a040200860, 0x30c32083804010c0, 0x604540c5c3802043, 0x047005e101020391, 0x08e00a01020406e1, 0x1003140204080c01, 0x2006280408101802, 0x400c500810203004, 0x8018a01020406008, 0xc33083204080c010, 0x4560c54080c34320, 0x91030201e1057004, 0xe1060402010ae008, 0x010c080402140310, 0x0218100804280620, 0x0430201008500c40, 0x0860402010a01880, 0x10c08040208330c3, 0x2043c38040c56045, 0x0391010205e10470, 0x06e102040a0108e0, 0x0c01040814021003, 0x1802081028042006, 0x300410205008400c, 0x60082040a0108018, 0xc01040808320c330, 0x432080c3c5404560, 0x020191037004e105, 0x0402e106e008010a, 0x0804010c03100214, 0x1008021806200428, 0x201004300c400850, 0x40200860188010a0, 0x804010c030c32083, 0xc3802043604540c5, 0x01020391047005e1, 0x020406e108e00a01, 0x04080c0110031402, 0x0810180220062804, 0x10203004400c5008, 0x204060088018a010, 0x4080c010c3308320, 0x80c343204560c540] # Matrix represented as 64 columns: vecCols=UInt64[0x03c104c007818001, 0x04420c4008838102, 0x0885188110060204, 0x100a3002200c0408, 0x2014610441180810, 0x4128c30882301020, 0x819083d002e0a040, 0x01e002600340c080, 0xc103c00481070180, 0x4204400c83080281, 0x8508811806100402, 0x0a1002300c200804, 0x1420046118411008, 0x284108c330822010, 0x9081d083e00240a0, 0xe0016002400380c0, 0x04c003c180010781, 0x0c40044281020883, 0x1881088502041006, 0x3002100a0408200c, 0x6104201408104118, 0xc308412810208230, 0x83d08190a04002e0, 0x026001e0c0800340, 0xc004c10301808107, 0x400c420402818308, 0x8118850804020610, 0x02300a1008040c20, 0x0461142010081841, 0x08c3284120103082, 0xd083908140a0e002, 0x6002e00180c04003, 0x0781800103c104c0, 0x0883810204420c40, 0x1006020408851881, 0x200c0408100a3002, 0x4118081020146104, 0x823010204128c308, 0x02e0a040819083d0, 0x0340c08001e00260, 0x81070180c103c004, 0x830802814204400c, 0x0610040285088118, 0x0c2008040a100230, 0x1841100814200461, 0x30822010284108c3, 0xe00240a09081d083, 0x400380c0e0016002, 0x8001078104c003c1, 0x810208830c400442, 0x0204100618810885, 0x0408200c3002100a, 0x0810411861042014, 0x10208230c3084128, 0xa04002e083d08190, 0xc0800340026001e0, 0x01808107c004c103, 0x02818308400c4204, 0x0402061081188508, 0x08040c2002300a10, 0x1008184104611420, 0x2010308208c32841, 0x40a0e002d0839081, 0x80c040036002e001] # The element in the i-th row and j-th col of A is A[i,j] = 1 & (vecRows[i]>>(j-1)) = 1 & (vecCols[j]>>(i-1)) # Tally: 64 inputs, 64 outputs, 348 gates (348 XOR) # Circuit depth: 13 Inputs: x1:x64 Outputs: y1:y64 Internal: t1:t284 GateSyntax: GateName Output Inputs # Regex to obtain gate (\1), output var (\2) and input vars (\3, \4): (XOR)\s([ty]\d+)\s([tyx]\d+)\s([tyx]\d+).*$ begin SLP XOR t1 x42 x58 XOR t2 x19 x3 XOR t3 x48 x56 XOR t4 x6 x22 XOR t5 x8 x24 XOR t6 x17 x1 XOR t7 x30 x14 XOR t8 x1 x49 XOR t9 x52 x36 XOR t10 x36 t2 XOR t11 x13 x29 XOR t12 x34 x18 XOR t13 x32 x16 XOR t14 x46 x62 XOR t15 x62 t11 XOR t16 x28 x12 XOR t17 x50 t12 XOR t18 x23 x7 XOR t19 x58 x10 XOR t20 t12 t6 XOR t21 x22 x14 XOR t22 x16 x24 XOR t23 x14 t15 XOR t24 x11 x27 XOR t25 x59 x43 XOR t26 x44 x60 XOR t27 x54 x38 XOR t28 x60 t10 XOR t29 x12 x20 XOR t30 x21 x5 XOR t31 x25 x41 XOR t32 t27 t14 XOR t33 x7 t8 XOR t34 x61 x45 XOR t35 x9 t8 XOR t36 x35 x51 XOR t37 x63 x47 XOR t38 x45 t16 XOR t39 x38 t15 XOR t40 x37 x53 XOR t41 x53 x5 XOR t42 x56 x40 XOR t43 x40 x64 XOR t44 x39 x55 XOR t45 x64 t14 XOR t46 x2 t17 XOR t47 t15 x29 XOR t48 t14 t7 XOR t49 t38 t41 XOR t50 t13 t5 XOR t51 t44 t50 XOR t52 t22 t19 XOR t53 t17 x18 XOR t54 x29 t49 XOR t55 x55 t4 XOR t56 x18 x10 XOR t57 x27 t1 XOR t58 t8 x57 XOR t59 t19 t5 XOR t60 x57 x41 XOR t61 x4 x20 XOR t62 t56 t41 XOR t63 t4 t7 XOR t64 t59 t20 XOR t65 t20 t18 XOR t66 x10 t1 XOR t67 t66 x26 XOR t68 t65 t43 XOR t69 t43 t3 XOR t70 t3 x41 XOR t71 x26 x49 XOR t72 t71 x20 XOR t73 x49 x33 XOR t74 x33 x43 XOR t75 x43 t9 XOR t76 t6 t73 XOR t77 t49 t55 XOR t78 t47 t45 XOR t79 t29 t28 XOR t80 x51 t75 XOR t81 t60 t69 XOR t82 t70 t67 XOR t83 t72 t82 XOR t84 x20 t23 XOR t85 t41 t79 XOR t86 x24 t68 XOR t87 t78 t86 XOR t88 t1 t53 XOR t89 t53 t67 XOR t90 t83 t10 XOR t91 t7 t40 XOR t92 t45 t33 XOR t93 t77 t28 XOR t94 t74 t57 XOR t95 t32 t69 XOR t96 t57 x3 XOR t97 t80 t89 XOR t98 t10 t23 XOR t99 t98 t61 XOR t100 t39 t30 XOR t101 t55 x47 XOR t102 x47 t91 XOR t103 x41 t68 XOR t104 t89 t73 XOR t105 t91 t46 XOR t106 t94 t35 XOR t107 t23 t54 XOR t108 t73 t24 XOR t109 t40 t30 XOR t110 t30 t37 XOR t111 x3 t62 XOR t112 t33 t11 XOR t113 t93 t112 XOR t114 t105 t5 XOR t115 t114 t34 XOR t116 t92 x31 XOR t117 t34 t11 XOR t118 t104 t16 XOR t119 t112 t100 XOR t120 t111 t64 XOR t121 t118 t81 XOR t122 t103 t64 XOR t123 t87 x5 XOR t124 x5 t102 XOR t125 t124 t28 XOR t126 t75 t62 XOR t127 t11 t76 XOR t128 t16 t61 XOR t129 t54 t2 XOR t130 t102 t21 XOR t131 t21 t100 XOR t132 t62 t18 XOR t133 t18 t50 XOR t134 t84 t97 XOR t135 t125 t31 XOR t136 t31 t35 XOR t137 t58 t136 XOR y62 t107 t123 XOR t138 t121 t26 XOR t139 t100 t68 XOR t140 t127 t133 XOR t141 t79 t134 XOR t142 t126 t81 XOR t143 t61 t48 XOR t144 t28 t131 XOR t145 t119 t122 XOR t146 t139 t110 XOR y53 t135 x31 XOR t147 x31 x15 XOR t148 t145 t5 XOR t149 t143 t36 XOR t150 t140 t51 XOR t151 t51 t67 XOR t152 t35 t64 XOR t153 t82 t152 XOR t154 t142 t42 XOR t155 t132 t85 XOR t156 t86 t101 XOR t157 t110 t147 XOR t158 t149 t25 XOR t159 t156 t136 XOR t160 t159 t42 XOR t161 t136 t151 XOR y49 t122 t106 XOR t162 t155 t90 XOR y58 t90 t147 XOR t163 t101 t130 XOR t164 t108 t25 XOR t165 t130 t115 XOR t166 t115 t42 XOR t167 t152 t81 XOR t168 t167 t5 XOR t169 t5 t151 XOR t170 t64 t37 XOR t171 t170 t52 XOR y16 t116 t171 XOR t172 t52 t81 XOR t173 t171 t147 XOR t174 t81 t76 XOR t175 t147 t133 XOR t176 t173 t76 XOR t177 t76 t69 XOR y40 t160 t168 XOR y55 t148 t161 XOR t178 t157 t137 XOR t179 t161 t172 XOR t180 t165 t176 XOR t181 t176 t153 XOR t182 t97 t154 XOR t183 t106 t42 XOR y31 t180 t69 XOR t184 t85 t36 XOR t185 t151 t63 XOR t186 x15 t146 XOR t187 t42 t175 XOR t188 t182 t120 XOR t189 t36 t2 XOR t190 t175 t95 XOR t191 t26 t9 XOR t192 t99 t96 XOR t193 t96 t9 XOR t194 t9 t48 XOR t195 t123 t194 XOR t196 t48 t109 XOR t197 t146 t172 XOR t198 t172 t133 XOR y23 t163 t198 XOR t199 t198 t169 XOR t200 t193 t25 XOR t201 t199 t153 XOR t202 t153 t95 XOR t203 t25 t154 XOR t204 t194 t2 XOR y27 t154 t24 XOR t205 t204 t24 XOR t206 t169 t37 XOR t207 t37 t63 XOR t208 t2 t88 XOR t209 t63 t69 XOR t210 t197 t209 XOR t211 t208 t117 XOR t212 t168 t68 XOR t213 t200 t120 XOR t214 t133 t46 XOR t215 t69 t50 XOR t216 t68 t181 XOR t217 t216 t207 XOR t218 t209 t95 XOR t219 t215 t137 XOR t220 t95 t50 XOR t221 t181 y58 XOR t222 t207 t46 XOR t223 t120 t129 XOR t224 t129 t24 XOR t225 t224 t113 XOR y45 t225 t117 XOR t226 t137 t67 XOR t227 t67 t46 XOR t228 t24 t88 XOR y34 t162 t228 XOR t229 t228 t109 XOR t230 t109 t128 XOR t231 t174 t189 XOR y51 t189 t223 XOR t232 t88 t191 XOR y63 t190 t186 XOR t233 t46 y16 XOR t234 t141 t232 XOR t235 t232 t128 XOR t236 t131 y62 XOR t237 t233 t177 XOR t238 t202 t206 XOR y60 t234 t144 XOR t239 t144 t230 XOR t240 t217 t226 XOR y12 t239 t192 XOR y20 t192 t211 XOR t241 t221 t219 XOR t242 t236 t178 XOR t243 t183 t179 XOR y35 t211 y51 XOR t244 t212 t188 XOR t245 t179 t188 XOR y32 t237 t187 XOR t246 t242 t210 XOR y22 t210 t195 XOR y64 t240 y40 XOR t247 t188 t138 XOR y3 t223 t247 XOR y7 t185 y23 XOR y10 t241 t231 XOR t248 t187 t226 XOR t249 t220 t227 XOR t250 t231 t226 XOR t251 t113 t184 XOR t252 t250 t227 XOR t253 t222 t50 XOR t254 t50 t177 XOR y24 t238 y16 XOR t255 t203 t229 XOR t256 t230 t178 XOR y47 t186 t214 XOR y11 t255 t227 XOR t257 t178 t191 XOR t258 t184 t196 XOR t259 t247 t227 XOR t260 t201 t164 XOR y5 t258 y53 XOR t261 t196 t117 XOR t262 t117 t128 XOR y37 t257 y53 XOR t263 t128 t218 XOR y38 t246 t263 XOR y36 t134 t227 XOR t264 t262 t150 XOR t265 t261 t166 XOR t266 t263 t158 XOR t267 t150 t191 XOR t268 t191 t205 XOR t269 t164 t177 XOR t270 t268 t218 XOR t271 t218 t166 XOR y46 t166 y62 XOR t272 t177 t227 XOR t273 t269 t226 XOR t274 t226 t254 XOR t275 t272 t206 XOR t276 t227 t138 XOR y1 t254 t243 XOR t277 t206 t219 XOR y56 t277 y40 XOR t278 t274 t138 XOR y50 t276 y34 XOR t279 t138 y58 XOR y52 t158 y36 XOR y14 t195 t267 XOR t280 t219 t252 XOR y61 t267 y45 XOR t281 t214 t249 XOR y42 t279 t235 XOR y4 t205 y20 XOR y21 t256 y5 XOR y29 t251 t266 XOR t282 t271 t249 XOR y2 t260 y50 XOR t283 t249 t265 XOR y19 t259 y35 XOR y25 t245 t275 XOR t284 t235 t278 XOR y18 t278 y2 XOR y41 t244 t248 XOR y17 t243 t273 XOR y39 t281 y55 XOR y57 t252 y41 XOR y44 t266 y60 XOR y28 t270 y12 XOR y43 t213 t284 XOR y6 t283 y22 XOR y26 t284 y10 XOR y48 t275 y64 XOR y8 t248 y24 XOR y54 t282 y38 XOR y59 t229 y43 XOR y33 t273 y49 XOR y9 t280 y25 XOR y30 t265 y14 XOR y15 t253 y31 XOR y13 t264 y29 end SLP end circuit