From 75f8da69583b08e21901c3d11fa4d655fb90c47b Mon Sep 17 00:00:00 2001 From: Tanya Verma Date: Mon, 23 Jan 2023 12:45:30 -0800 Subject: [PATCH] tkn20: change seed size for MAC key from 128->576 bits in accordance with BK paper --- abe/cpabe/tkn20/internal/tkn/bk.go | 12 +++++++----- abe/cpabe/tkn20/testdata/attributeKey | Bin 2788 -> 2788 bytes abe/cpabe/tkn20/testdata/ciphertext | Bin 2320 -> 2376 bytes 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/abe/cpabe/tkn20/internal/tkn/bk.go b/abe/cpabe/tkn20/internal/tkn/bk.go index 20604a08..9be630a0 100644 --- a/abe/cpabe/tkn20/internal/tkn/bk.go +++ b/abe/cpabe/tkn20/internal/tkn/bk.go @@ -13,6 +13,8 @@ import ( // https://www.iacr.org/archive/pkc2011/65710074/65710074.pdf that // apply the Boneh-Katz transform to Attribute based encryption. +const macKeySeedSize = 72 + func blakeEncrypt(key []byte, msg []byte) ([]byte, error) { xof, err := blake2b.NewXOF(blake2b.OutputLengthUnknown, key) if err != nil { @@ -70,7 +72,7 @@ func DeriveAttributeKeysCCA(rand io.Reader, sp *SecretParams, attrs *Attributes) } func EncryptCCA(rand io.Reader, public *PublicParams, policy *Policy, msg []byte) ([]byte, error) { - seed := make([]byte, 16) + seed := make([]byte, macKeySeedSize) _, err := rand.Read(seed) if err != nil { return nil, err @@ -173,12 +175,12 @@ func DecryptCCA(ciphertext []byte, key *AttributesKey) ([]byte, error) { if err != nil { return nil, err } - if len(decEnv) < 16 { + if len(decEnv) < macKeySeedSize { return nil, fmt.Errorf("envelope too short") } - seed := decEnv[0:16] - ptx := make([]byte, len(decEnv)-16) + seed := decEnv[0:macKeySeedSize] + ptx := make([]byte, len(decEnv)-macKeySeedSize) compID, macKey, err := expandSeed(seed) if err != nil { return nil, err @@ -194,7 +196,7 @@ func DecryptCCA(ciphertext []byte, key *AttributesKey) ([]byte, error) { idMatch := subtle.ConstantTimeCompare(compID, id) check := tagMatch & idMatch if check == 1 { - copy(ptx, decEnv[16:]) + copy(ptx, decEnv[macKeySeedSize:]) return ptx, nil } return nil, fmt.Errorf("failure of decryption") diff --git a/abe/cpabe/tkn20/testdata/attributeKey b/abe/cpabe/tkn20/testdata/attributeKey index 4b37c6f0d41b56f4a0079332e180d1505d81d94a..4658f65605c098e242480f487a183980c0b23f96 100644 GIT binary patch delta 2582 zcmV+x3hDLa7339=qkjmZSrL*hvT^JCLE0042Fs;d%&CH|Uo!lCR`>AADg$L>hAKWg zHeXydT7AYwM^_W#b9uA7Ey|aj(Ud}%NPOGKz$*t80`-iHFE!c;eR%9Gx}ry|6!mQ0 zp)vUqAf^n;0FjmhMkXtyPwyJ*8--M4yNaSj#O2$>5C@Ksc7G}vsLFHDI~D9wLW~_Z z=n`lLdkcT7H%C=`!~|JOLlo@pT;hXlONlw|0u51+&@Au%KQS|+Gy>YWlH+zhf#M+& zTQ4%~<5=Iip2BmldW^)4Q5UOZZpE$m*^H4XkKjU$LANUa#Z-c?T)5lKx4ZQRqaM@A zS8T47mSig1(|=^>CE{&#Nx5v7uHF^^ddXU9*7?4Txr&~Ygv<4gPn9vc zP~Igzm?vrhXZ|Wh=8li5#;!oF&stvheJFg1AY)gvw(U6zY2<1tdlv*Ug6nRI zzMgFI*njClBP3P6b~2P({PA&cXP5r%%U zkyV)L)=_!TYSm|SR5=W@$Cd7CXZaju7J9Xt__tbB*918LZz&=4-zwIFZ7fJ6fA%y zHGc=2_)@eWD!lPGfddoqR+I6LzCrC5E3Zq+2F^5D3C0(ij`&!jcR%cJ=x(PHNcg{p z?UYXGLs#q5;sq5da5Z2!b%*RQB6y{K=&tKA+(MfO0vv={hv z_{g3Vy!2`^Hq&1Hc3=XW);c>LUTMtvmo6-By9ol)yp{2lTYsL*6RyS^D_cDwcIfZ} z00IC-RfGWq0096BGG2hH#z9oJM+=3CmVe^PZ*~a~50`1RTF{arhk-4OQMZ&O#ec!N z>_YWpmB37-7iQ}4eQMMgx2PjJEt&(S%!Q&0NyulY=)C{A3=yd|poDNk3B*iQWZtgj zAVqSC1@83$%ncqA6lC-MVUYT`zaLbyJ|jW>AH*~dE~+(iU$9iMuEEmIS4) zKWVZmy`N)khDLQA?l3S-+HL7zYo1Px8gPFjWy<6F`_yU2fl+rFw{)R7=MDFsjJMn@ zq`lv94>hVqG4R6YPZ)s2Xzzqw5?Jr%B=9YtCE^N3<4eKU4c>_s91i8BqJKz0&Lv3+ zNBxR`GOwzGg9dt2oJ@8#{f#uU_JhMkp4EGwcv~qFcr*aY&?60xN&Qd$9ijd9$4i?V z2!>aBp0*UfaGuW5U_l>xqcMBtsi_VE#}IuNH9v`ng4!V3ng7Y5~G&ntGXZ`d69hqrHkmu-3Ms*eifr#!c(qNu9%n>Fc`ij`R zmhcV3(jY8c=YKwU5xsk1q_MljO~Z6>-Bu5#?iv&h?`pQyfsSbq(7f4+VyAbfV(dpK znbvSIu3;EU2)>uUNq;mUrQ_bK5;#;pmq)Q;2sy-JuWpk}s#&EsWZ?9~h*r|B z`<%-8v#OeS83_-g3|UJfNmC)4e!6Yz6xw&(eFCl_OOhT@JUeu<4WdU~b=l6yP_B!E z!(D(?f_L`tmwNpuEMVekjZ_E5dq3 z&{Bexw1i|RMWp&M?qwyZ`~|-H<`r% zcirc-ME!QXa$nJ?SCJ1q0U8#wxkm8lidb5`Nz{QkAyRmtM9u)J=(--(!6M^Z3fT0Bq6bqi zh+-&;!KfpkSI_`Me510VPXMCWT~P@{T%r=LM>{GzAah5vf@xX+SASn3G80aXsW4I( zmL>Tr*bz1oL0yfhx5-v%X@WGb&jS-O%!P+tCc$6s8N-Y~{og@q1u{cT%d@Nl#7g!l za7~33o#nwLIVTcV(p-F zu%`g>Ub~9p0gBE*ed~IE6f=45IxCvF92)-IcHA7;G>@JT|2-4_=$SE+6WeDGhJ+I5 s{^SlsFR>3eug1SWx^C(X^U**zPwur_5HIr^%nlCR{HY5}hXaN_U4$miNB{r; delta 2582 zcmV+x3hDLa7339=qkjv}-b-;ilZN^Mo*Tf%lC(*0<-PuGCzls1IPCpb?rZ}5$7fgs znlB+6Wat#3;I#zhV7slZR|^rD*;Qx0kC)5u4hB2u7PEq99u@CR6$U>p&O- zOS$yL+&%?~@fm;lH~FhXg1vUTu648p%ie4Ux(3Gr7Yq%4yMJ=h^OOjA$M?ORj6cUp zrb7+^CzAUxU#o?cjiKR3+;P5DB68EMtISX_K;2T90x-*=^#={RAngNqP{u&n- z$8?=~-IP-FdhDkH{{YoiY6UAy%;9;lc+=?M!F1Z2_0zi*V|8T1%eti^0c*Pz5`*3{ zJ*qKL>(11&SAS;R%l4G$YbIj4I8QWUhEB;?0Zh)V`+!aJu6fNY@GS7YK{_cMI zrxincmpo4MJVZd1>wb9?ngUyqyy^(&rtkpR@o@ce$A7%_d<&yTMsSeMkv<;<8-Ja~ z=+4$0`N|X-QY)2ANADN>8E;+f@LTS#B@poQtQ~?iXAGhRW+fL8#|DFZX>*bL4XCC` z$+^J*UM_(f#cgU$7YzrH>Ox6#GXb64#zjLD_60JGECbFZ1z(mtSL?_{x(`XkvR@iK znW-&x^M4*-+Z%;dMJEVg-z8> zKj|UW!OI*r&Z0(Hc*^tmF)Z-V8rOsY1ONd50jBOmb}=`&U>4wl`XNm2&d4y-!;XMax5b$EbFlOd4Y#uyo7)t%c0Eomn- z^V*+2VRVyfpmFMo!_q5ltNvA9^%Gi+7PqluDrOYUop=I42}$rf7Oi|hLLIVh z*nen!!2X>2z0&k`BcKhWIO({ozHrATU&hy~^gdH$;LKq+LMQ`a-mJVz_;-1?1E@Pm zMQauY=3P92-{T13r6GPxTb`?d9%rNR<7cqcr{$9WtbC8Bag!1lXnY;o75q*E>N5Mo zXP4BAwX6^NXCwc`eVOP00*wjATkr>ek% z#<_@;3QqRYTv}F~o;i?CE>|<;f}YwI%@Q`iz|_MH-)ikQl!7~$r1wM5MzlZq~)<~BnVJtt-DXR( zeK$zqi$kluE<#|cfFhrl_a3yHBRJ(}!&Nd_C3$t6`{HKPy}|~-N-;zCwqYeRpxF!Q zeRA7i7`?cg1+}!&Bn#+0n-@QGYqJt|oS(lL*riS^pI!$5V{dhCbaHuw0R#X600LDr z%$O*ga-UC|s&st$9_NfV1IF(xBwPj^CpmcD5T?kt~oeVLxcgq|u^ z2imwD7w|hr?!cPk*FP+WvBBn-<`BB!XzVgVmwI*usM~vOJ8>p`1gThxfrgkVB5bJJ zACO27LV~qNhIhZUwSPP0F~tnSR7(Cx`BU)m6TuT-M|%B_MSNlq!j}L7KW^}0D(YcT zcvq*SgdRY{wd)kg^9i%sn4(B>&j@of2C719x}P77<7D_kDH`KX!t|;Z+uUcpU?WL@ zeuY}@!BEWpSB*~SeYPzS1cgPBCje<~bY*gGVQej8Z*FC1Et5tG9)APWfy|e9)P*W2 zfz|)zRxtFPrcE2g4~LX(k3^oTm?Qga216@|b9oJ{QE#7z#zOmH9?66)!JD1=eFIS=uZ z6<63uT%!yFvh0ScReyfG4gKPBz>fJ*JoT0QJ;f~&GZ)?J*O#);rq`I)T3-NIv1mB5 zJ&oug6+?*Gf>A-V-S4rh9~q3=JjR?d?%TT&;x_Zojgf%-A3gEMSdvv`=(6>YkQrvE zS3xf^e6s49RLn(6ld&&;`%mZ48b}WnDzg1aHOb|yrW&Efn}3k6b{)BcVatH5qM$0k zL12K{E03iB%?0DQKlx^Kg4bLC89}J+S0%GSad6bRa?XP0f}pk;s2_fzk4Mj$t5~nrTy?S?^KI0r&SA7|u7q zii%$zDQRDFfIzmOKCTy}l!(iGxg6OPBukBUs-Bg6pV;b zUSb!wBt^v$X9G5Rp7px+8e^C02}covIa!jH^8>!K}v2e(vw5to|0baR4GkYw|jhXngcYH$g;2bxc~qF diff --git a/abe/cpabe/tkn20/testdata/ciphertext b/abe/cpabe/tkn20/testdata/ciphertext index a7404fe134bc95f1c8a96de2205ee1a2f008af71..922cf1914cdb3ee012ea76f2ce21b62d4afa4674 100644 GIT binary patch delta 2339 zcmV+;3EcLO637xHAONX{5K>~H?$2(TC-$<%lgru1}dnB3b)gg;!5*{t)W|&dFkrJ9A%NO`Mk=4MGU6sR_Mx6D3|~ z^wLmF)(m=Gh&UiTrc)c!Yg>S2qlo_yqt;nfB7s(?XOdN{^M-`=>JmHN4OPi}C56qu zYpz^P;IOFk^jDc6D=OYN`1vxT>+g|&-F^7;v9hTbS%S`vOltq%gAxWANr!^F&glM@ zgi%$`ahRm?rustQM20D&?+?{EHPlrRxzi_e1-dbPDXVMm6cN8%>SQ0R_#yiLB7vYm zfc%>GV_cYPy180;W1T0i=fUqd9rXCjd47H7b~M`s1TQ zf+JY{0VsJ6plm!|;Ef~^%*kwaZ>A5f(jv|gqHH?|3W{-9~GymKP`xl4NT3n8|-V&@jylNW0NK~?~2ovh+! z?7D4i9(Hj|GI{EMq@_N`dtiO88!!!G_vhN5;0E7at+?OvE7q>^wi>$+qRiK&2{QJh(n+6x3FwHb&64|8cv!lM6c3|9 zjr_qpL&nL1>&;%nz}<#a9v!K6%Vy(Y1Teou@sN;11}n_KL#w!g94=;0Ta|^D*?Go0 z<>x2yYLNIMxpM9REg)|L2=K3&EtoEjoF4~55%ujXYk}`&OrA(jg3cQsG8H*Kh=Ezk zG7qP4VIj_c(kW3(CvgeT6jDTOr45KqS_Yz3#0J?p_@06)1qp>DiY&{ZGea6i)2nET z$tyY}opqiw9Z#k21^LIM3VUf%=>>h)hP4e&MKfBoSp6^=VNyEz1i|?EDgn0%OLtmfhz@KPW~4iRKBeT9^`Z4So10Z|)tO&Hy%Dtf zhaXI{WWI=oHL|%KJFEvKI8cnCUmNbZUHaBa)PJ0f4!6q)DMs$O2Qx%#O~353?;UwG zzMl*dhI9keX*A(4GTyW zKV*F1i|+Y7Hxl;nwVT0stfd z0{{U47&EYnWaN=J>8Ry-#~gMiLSPMT_#5oK>BpRzY$#a8q>FAWu1_m`gm~@5JGf>J z48(isCC3*9f59qnFZ!ydfR^?~x|IQw;yVJC4JiFHiIL-yS2xHzJ*!rQDj34n6YcAN zWpK;K`tzDuwO`9V+R?$I?PLSm*t{h+dWX*=aVpxWh{7&*yJXx1=LY9Pz6Y6H&>nry zJtj*UOv?_`PergIttfv}*(KG|;k`=Uskwbx_BaAm=V|#hx44c0fDguf*$=e6ZIt-H zGjhY&?N=6D{SyX7YIb4O&V*|Qwj?osA7}@_kz!NOgK>V_F+U9m4TXMf4#f5@DQ|`% zXX8&H4cQ}j9R*&;rn$k#8sr4SYh30(+3qC=L=#0m30Ncn0{{U47|~sB%;AV~OBNW@ zDr%+)fPI-B)<_nJhD0>+=Fhl~(oo9y*2wY0PE~3|Qw@Dw6V{i5cyYYt$CDMA~CFZ4RbnF2A_j@-wAR!3SJ4QcRiTF4wb`#7eDK6sAf7 zF`}kOv1PdI+@Zf8je$+Ml8E(sN!j-h3XBXAs{l)<3C|AeWxM`lr(P|9Lj3U#$)WJ6 z6m-aEoxnwys?y)25sN>T@8TBg~7<-}aj`05_&Q%eIy z3wz_Cq1-9nNC#OT#k|*zW`bBwO$7{!N{DcKEZgf#KG;Q#G@PR_h%nrxFcoQ2JgvI< zK?5Wy-XmG~o)Ust_b;X=`p!> z*iz&((AW_<9-ryZwBv|DVVn{-`KjGSAOQ8Z!l2R7TJKTA_BiZS-oy<7&eSsYjFjZ9 JnRWaRxRaj-Z`c3; delta 2283 zcmV3c<`}mw+@{09BiB4DYzn9GAd5wivZziw?y;Pbl^TGBlo$a0o40?diOI2 ztx#e2G5lxazSrLs^Y+j|res8UcD%}e==qwsq@bdCQ40IF2uU34D;yu~(0|PN$y$0Fcw_{g`@Ncar z5w&E$So)GM_>egKQX;48|8crP)d=h0OyQ>2st)*H!x;P2iEP{eeO zIKtpe;2VUH%~%n!1Fcr4myq=o>4;;sw}d9bhvfLH=Zatq94~_Kuf!CjtqB#DoM90H zh482D;s#Tp0$bVm3aQComXS@tTwXOg$!=!MBzl~59cX;WlDA^@cub!(C}@5$eoB+s z%f9Bl2J!k?f*+>iM{{<6ZC{BDfsvvhMH|pB(?*UX2gbz21f_EZ$3Q;=YLYK-W2OVXVYD;0qJ| z^qRGSlBC@`)0uRG-ONxTin_a6j{p!T;`{c0P}*r&>w^IR1Oo&B z0RRxjN+FI(&QZ(eQzg6h6!4(o{k zDbsG3WUgHc#-<=YUi^m}D20OGq+L5EF96K^W=i!Gs---J^sCMj_qp%05`grgZ{?oO z(CdNo=E=m-rL4ILH$D(#(q30%H*G1?IV0|HxgucVXzsy(6&UEouv`8%8emNpGHxA| zo2ZX^9t_IFUTs{7{CsPAL~qdn?xKC9a+p$FaRrXh5{UQ${cs@8gp5I(Dtf0t!6v%d zD+M{D$m6wW)yV*I(m_7X6?$Q!NOLDwNufmk4Vu*XhxHEH{rm}#voJ?>orKz~Wml1X z8!H4Kk_GL5r2<)r&;6bjmHGfDUsfcrlK?P|aCr9T`^$&f-Uc&glOUnI7#XB*lKqzh z{Fm)%3o6jJ0q7+|^Hbz!VY+Sg^c6EZ@n2@MBT?Wh{qG_lTT<84#Xp0ns!%y!6POGAY|g zMT=BV9gQpA=d=|~;Gd0Xim9=mSa6X7w25Y&=*o4&VGw5(H^kAxz`=mJU5%nr35|yT zbaA17J=ahNAK9gWKf^#XHv z&(i$}EB7$crvv)~8zNoW-0#Er&ITa@rv;dU*rna0~}P%&AXJrh5bt z?!Vj#j@dBawy@KzQDazy0;jRUYH8j}O-`YI{?S5j8baKIYHP9c&#+-_xMocW&i7f=d+ zm0G9I!LUVzHhw&K_vzpon+c)qS$wNZpu1Yz@DlY1C*|n&Kl?~*lpm(LUJ5lZlyFLQ z@F+=eoWv>JUUQa?q9(Tmc{*;U<7ndUFe~R>e4?Yl>v|VGlFYVyaSw#zqWFpGo0+56 zR*-|YC)Wqh4$yyxjTU?F$eVIo`lsU8kwh(X}cmyrTo(a)`5T zTDOo$*AR*N-}-E(cqSJb#S0^Uor5=U2aW|ZH3NTuRNZbaDUet_J21KpM^qV=2VKcV zp`k|-!d35M#bK<|izAT32{*CGo?{2ADZReNGd$W!CaB?(RdmYmif~&<3>1vf=^Vc3 zSF!zPT>2Qt$dj)AO*2;?f4l$y001ulZzx@j6D@Y!K+e{M@d>gU<