From e7b6a852c50fe2c72426f006c5e1f045969a06b8 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Thu, 23 Oct 2014 16:02:37 -0700 Subject: [PATCH] Fix bug caused by 1mod8 compatibility issue. In the switch from v3, we bind identities in the message MAC instead of doing the 1mod8 trick. Since identity keys were never set as 1mod8, it seemed like we could just remove it. However, PreKeys are durable. If an old client upgrades to v3, it has a bunch of keys that *were* set to 1mod8 floating around. The Curve25519 donna code re-sets the private key bits on every operation, which results in a different key, and breaks the output of an agreement. So now we don't intentionally generate keys with 1mod8, but we have to remove the donna code to honor existing 1mod8 keys for the rest of time. Trevor is squarely to blame. // FREEBIE --- libaxolotl/jni/curve25519-donna.c | 6 ++-- libaxolotl/libs/armeabi-v7a/libcurve25519.so | Bin 135228 -> 135228 bytes libaxolotl/libs/armeabi/libcurve25519.so | Bin 131128 -> 131128 bytes libaxolotl/libs/mips/libcurve25519.so | Bin 235636 -> 235636 bytes libaxolotl/libs/x86/libcurve25519.so | Bin 163904 -> 163904 bytes .../test/ratchet/RatchetingSessionTest.java | 26 ++++++++-------- .../test/ratchet/RootKeyTest.java | 28 +++++++++--------- 7 files changed, 31 insertions(+), 29 deletions(-) diff --git a/libaxolotl/jni/curve25519-donna.c b/libaxolotl/jni/curve25519-donna.c index 77876e3984..f2c2ac58e6 100644 --- a/libaxolotl/jni/curve25519-donna.c +++ b/libaxolotl/jni/curve25519-donna.c @@ -857,9 +857,9 @@ curve25519_donna(u8 *mypublic, const u8 *secret, const u8 *basepoint) { int i; for (i = 0; i < 32; ++i) e[i] = secret[i]; - e[0] &= 248; - e[31] &= 127; - e[31] |= 64; +// e[0] &= 248; +// e[31] &= 127; +// e[31] |= 64; fexpand(bp, basepoint); cmult(x, z, e, bp); diff --git a/libaxolotl/libs/armeabi-v7a/libcurve25519.so b/libaxolotl/libs/armeabi-v7a/libcurve25519.so index 0b9965a837fd2ae92f828f4e413fddcdace18f36..92bc523570c2c5156b18fbb65855418208ed2135 100755 GIT binary patch delta 5798 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 NNTcd{TBo7I{|8qtnmYgh delta 5680 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 B>lXk3 delta 2338 zcmZWpeQZT-A45?#kP9+)GVPnH#}ec8z0Ia^mPb6F4G%r2F0 zWgFxh*@!%qt(PaWA$cOJr++?tZ~Qlw8+oe;f3%A6zBL!`So83Es|>%j%JFAQ;Ibw0 zuBG8^YYu*CmEeNq#qX?2Oj@NlZ&l#e7LLsW_6LC{%7KfeK(ZKUs{&dofqgXq*E4(X z*Dx6XwpPF#I4;fDi_#qJ7FBT;@vxW~-7c}W3}$ArM2`eExM6xKG&8nb;2jt6D-Bpw z1T%16ERaXiX8jMO*|!F>;|sAYejc+pvm}Zg4}?5J2=#3eq1HAL%2bL_lTQnc z+$U$nnF9;tp#vGQKbsTT>}hc{J0af4=Eae8h3${~sE(hiETC!uT(rJIH5anEuTrsl z@SZgvA6V6nVi(y^WG>*NTHh`MLS9UXli3>P1bGTr&t{iVtsj@O;jm`*UK3_#NSG6D zVMhHL=6hjw$ANWKF!S#Vvwo+*2LE!PkqWiGDolN@FawJ;b9O%>iI-B#CQ2apXz2f0 z4JI=#gnCcNP#>G>-Yi3%_sMDTdbXu$i+Pz%rQfvcgH<=Yt{E}vcqdgX4%S5yFQy{v zI?SEvJN81qnD)Bb#i2T9Hj>zpx>9>4^w;#gBawKv2>pg1M*Bg8N1qnPz)o3=waG+~ zYB$b5Dli*U3{8rD%hmE!!nG}ZTlF#39Ac=iinOnk0QYz$!8I$CD- znDAhA@{#8Q@Zs@ff6#@*DnAm3U6@=_gXp7Wh;HEN*6OEV41A`U`HiR@eNLL4d4%f^ zqBiz#gfp9E?ZiqMZhA->fvl))T`p=H{F>495k1;6=E91xVziBw;?Xe{8}s2Y;#`dsQau<;1&~c)btU8r^!MUYRAYb2Xn&lib0{vtnP-L3AhpT5N<>FX5pAl3 zG4g$31P;@iLkJH%CynSv82Nf`Vyz7KZGthoM;IeYoPVJT{fo&IV`;rz3x?c7KSy_(TiDQZ1j zyy+9o=mv~>IJ?bu$q&BQ2i zfY{(KDDDXp!GgL({Ir_i6Rk)=1>DSUET||EUoWUGV#7BIDoLCsW{5Kn7Sv^;{%|3# zW=VQm3QC{Dgj_+j5~EjHkQn=j1)cW~l{!W2{gYCciBrT|M9&qaTtzHQ3=pTTDb-Aj z{Y9xxV(w$528f;;O67>7#3^U~rcyJ`{LQD7^6-e6O{DWAbQ;^F7xS|zQ zGn+=N{IsiUaLz7w+BKvN%U=kqh}RBoGiRol3X?NuTDDo7bIbz-csXyk&kf3j?k3U^ z`|6-v;BF(Ww(kte8h0P*fNkuOHNkzPLlp(p;H<-;^T{!mvpYELzC^m!{>d&`YuqNi z&a;is1FV=A?UpvknjyXh7@M`vG0hz%?X_<@w3{?4gsqs+2o&Mm?V#V-t1< zr`=abx7$00WX*C=LF*D#zMIDiL?2^U7;AQ7vGQn)vhim?gmKpgJP9Yxq4RP4$!55e z+p%cUE*mBtAiZHP8Ro8Xq`KYVP{*t7_D_e|f#cS^{R(r9Y8tTZ>X$o+mFuzp9@E{` zn>feAanjb49;7e3oXY=`<{Wh&=VonVHw7Cajo9DX%^Hr=$LuE={n`{MuK$0H5W~(7 z&~n{gWy^a?oW*=JbkaV{&sH~(>hykuVP`nvv@q7p*h(kxr8thI)-%4D@p_&Zs>-L;%kW-I5n+onw&4wCL0|BfxwKT7MOczn8CI~=cgC~;dU#mu{-X?*x)?VH6S LKmOis?SS|Xe)GGF diff --git a/libaxolotl/libs/x86/libcurve25519.so b/libaxolotl/libs/x86/libcurve25519.so index 0169fe55ba95ee0a8ce7d9d4696062c9861d3f70..c06bd2b7321edbe96e36b2d8b2f159058c52e74a 100755 GIT binary patch delta 2456 zcma)7e@I(b6wWjL$kWcGZKj#V+OXT!ZLub6Y?3u@aTCcO4qFIpZmr&&TeB4_V(TTUTQQjnt$@{ zcfRwTbG~z5GSQVk(Um{kDF~C-E()e+&(!Ljid08D&Q)XLgm5cNKGmroW1=<-$A0aY zTrec(P2#jMv0I#u1c@iPU=eS2FDQzlmty22&>)a21&Pl&V@$MVBR|L3f74{_|I0uN zEB*8hd;S3g@<8!OVbX^TrvjD%e2sV3*os!@e!JyNK|ApQwj}2*XwQKpR|Mav>=HM{ zb>q;q9`$w|;Pp`yii5m|wtTKyutU`+&Z7TYb;JyoF1cvHY(w;!DsL!r zf{4T!2_Llg1j?Ht?Sv14Jc$u;WL4S<(Gv@pl8Yv^W)|1M^sxr{lxWyF1H=IxBPw{b ziNslP(m3>QZug?1gy3JCTt_j~9p_cKmAi5L=Fzcs502k!M|Bs*#JhXhK2Dg>l1H4D zHn9??qAf*0$s#Of0y&sKU5XjtliSSpiM0CgE0q|fSli3DNZ<}yoHOb^*ak5;%VSqy zmO83RX!7t=FQc}Vn}<}kfN7*csf4GOKE?um!UA3h@f~XZ&p`r{-oY39px?6p^MBvt z`(M7p|Ivd?A4{N9RWqST0c>g~`=z%@OLUxcW$AR$A#x7rh#8n2hrwK(ZesukUo=ik zH~>4J!_yo<8-UJd105$8Jx4v*OAu&4MVTf_1b`j~It&uHJpx0|kvhPq0UJaP&vBR# zpnjlzD%zXJB`m1?jsd(lna&5&Nh%<0g%>RtG8jP-T=Y|5z(8G39XW|m1AGkP+ecq= z*|U42?FZ>eCn;-MR}>_@j@#S7qLPmw7ai+#at-ZsmWG78ilQ~j37f1_xfCe!{3zxb zW$)C+fF|LQr|_$Q3^oHV%rgA)5>O@pnn%he(J-G?&SF9+jx(E5G83E}@(R;nln@#z z|4lpKS%05DGp?Mc;{17K^-)8FHx!L=!Ht1bB`<3r2tUs%c;OG>M%?rrG8t5($%kLvIa6)A8ccBf8weeE+Th4#P9BwZM^B`Z3%p|MnE^% zy8vo>2kuNN0d(oU(DAcI#oF)&U^dA|!2n+-O^4*ACsM7s*?pUG5_D8t%-F z$Q}BH+txJpI}d2@3-|1*%1!Sp2Iz*9*%)U(y3Eb=A|06-&Gc!H?T}wpPnW99?4*Q- z+{Nas%)lDG;<26j;Xy|4V@n)L*S)Gj>21X_S>2heR$A=cSKP>ogh>Va+lUbvGvZy6 rz1JGNU+N1l%qYs)-d=6^_i7R~!tkIl`QgYtp-lMvtEqcJ+sFR_YrwS5 delta 2495 zcmZuxU2GIp6rSlHI|Z2q7FgRY(s+p=P1(^FreO)Yx`D%aZPRfdcIJNf zJKy=vIrq*$Tk$|!ac`?EUp{wO_C6j@u;hG6YD=>gJpOrmJU*OYCnWJZ7G+Isb*w3@ zW@4-f8);`l%|!B!b@E6x(;#bi1}8j&<6bqhKVKP9GmDG^OjkyX`-2mHHFKy)89Fjy z+jhRu%0dV&&}=n5>@hmo2hu`GGP2qz&_Xpm5e$Rp+rN12ZtakVV`_0S4G$a%0lFILze@(xatL*<&euVPsw#;OdcB=Jn* zsZ1&N;HhUMpR(p7{Q_j|7DB}^5fT}A*7-S~@j}%5knovcy!h2+~W@8-2dG;9yR5K>hfPYl0V<65jWF+-r1Op&pf0>b`I?3^{2U|;> zDxX>B%;0PA(4$ObxtN5Jb(nrpC5lt7A)6_$D>1t&AAXKEh9VjQXyyn{6DgU~%+i?= z4tcq7h^wH$?+`&h2xIkwdA*`$R{=U+#%DyWrWRAHAwLEppUw*2ZQf`fmB43CWNlQ* zQuk58Bh-KDwK7dz&rQMnc-=(YpU=m*+Gt^Qseaa$CrPOuR$CxReLi3z_}#k_$sU{r z{Dud+=UI0V9{ucKArGxZmKad4K*te^3{jx#jcQPHq zcLmyECzEv?Ymj*3aOlt?>*{YDB0;cpg5)pFsV4&QqeK=KtrwKDcWWo~`AY=ih6RsfOTe?P z{AAk~7NghN0K@}k_mf*TUZ)m-fPL5t6Kx}C#w`fcrrJ4TEMV4AfCO1z+;U#h=9;R~ z58Ec!@H%{6D3DHO9XRz^*JB;R zvlb^Wgm?O8(Rt=K2YB>myE#y`F?tZC!8hH5l+*lI1Vn=X#GBtpP=c+do7Kr7gP$C_ zFIKg=xjNwU|H*~;y>g-o&3)B@-PRv`gIbc4`(8AQqyh1X4+&^?(ofv16Khal}6x`WHlO(H=YzBY1Ly_y#Ywm!ZW~pA@s0;DgN~_#P7L)k@ zc%HiH^8AbWj$Xd|((kT~vw}N2Q~vZti$%Q)ZLg+bv&yzwd@zCZGBA+Z*!!5B~*c>B3zA diff --git a/libaxolotl/src/androidTest/java/org/whispersystems/test/ratchet/RatchetingSessionTest.java b/libaxolotl/src/androidTest/java/org/whispersystems/test/ratchet/RatchetingSessionTest.java index b09f6dbd4a..311aff906d 100644 --- a/libaxolotl/src/androidTest/java/org/whispersystems/test/ratchet/RatchetingSessionTest.java +++ b/libaxolotl/src/androidTest/java/org/whispersystems/test/ratchet/RatchetingSessionTest.java @@ -90,12 +90,13 @@ public class RatchetingSessionTest extends AndroidTestCase { (byte) 0xee, (byte) 0xfc, (byte) 0xb4, (byte) 0x2b, (byte) 0x4a}; - byte[] senderChain = {(byte)0x33, (byte)0xe9, (byte)0x46, (byte)0x5e, (byte)0x88, (byte)0x92, - (byte)0x2b, (byte)0x51, (byte)0xa6, (byte)0x76, (byte)0xaf, (byte)0xba, - (byte)0x03, (byte)0xf2, (byte)0x27, (byte)0x58, (byte)0xee, (byte)0xe1, - (byte)0xef, (byte)0x15, (byte)0xb0, (byte)0x28, (byte)0x39, (byte)0x0d, - (byte)0x70, (byte)0x76, (byte)0xc7, (byte)0xc7, (byte)0x09, (byte)0xef, - (byte)0x5d, (byte)0x8b}; + byte[] senderChain = {(byte)0xd2, (byte)0x2f, (byte)0xd5, (byte)0x6d, (byte)0x3f, + (byte)0xec, (byte)0x81, (byte)0x9c, (byte)0xf4, (byte)0xc3, + (byte)0xd5, (byte)0x0c, (byte)0x56, (byte)0xed, (byte)0xfb, + (byte)0x1c, (byte)0x28, (byte)0x0a, (byte)0x1b, (byte)0x31, + (byte)0x96, (byte)0x45, (byte)0x37, (byte)0xf1, (byte)0xd1, + (byte)0x61, (byte)0xe1, (byte)0xc9, (byte)0x31, (byte)0x48, + (byte)0xe3, (byte)0x6b}; IdentityKey bobIdentityKeyPublic = new IdentityKey(bobIdentityPublic, 0); ECPrivateKey bobIdentityKeyPrivate = Curve.decodePrivatePoint(bobIdentityPrivate); @@ -192,12 +193,13 @@ public class RatchetingSessionTest extends AndroidTestCase { (byte) 0xeb, (byte) 0x0a, (byte) 0x6f, (byte) 0x4f, (byte) 0x5f, (byte) 0x8f, (byte) 0x58}; - byte[] receiverChain = {(byte)0x68, (byte)0x4a, (byte)0xc5, (byte)0x15, (byte)0xc9, (byte)0x14, - (byte)0x45, (byte)0xf7, (byte)0xa0, (byte)0xc9, (byte)0x3c, (byte)0x39, - (byte)0xf7, (byte)0xe6, (byte)0xa1, (byte)0x7f, (byte)0xa0, (byte)0x8e, - (byte)0x04, (byte)0x62, (byte)0xf1, (byte)0x50, (byte)0xe5, (byte)0xac, - (byte)0x60, (byte)0x71, (byte)0x78, (byte)0xc1, (byte)0xa5, (byte)0xd2, - (byte)0xc7, (byte)0xd6}; + byte[] receiverChain = {(byte) 0xd2, (byte) 0x2f, (byte) 0xd5, (byte) 0x6d, (byte) 0x3f, + (byte) 0xec, (byte) 0x81, (byte) 0x9c, (byte) 0xf4, (byte) 0xc3, + (byte) 0xd5, (byte) 0x0c, (byte) 0x56, (byte) 0xed, (byte) 0xfb, + (byte) 0x1c, (byte) 0x28, (byte) 0x0a, (byte) 0x1b, (byte) 0x31, + (byte) 0x96, (byte) 0x45, (byte) 0x37, (byte) 0xf1, (byte) 0xd1, + (byte) 0x61, (byte) 0xe1, (byte) 0xc9, (byte) 0x31, (byte) 0x48, + (byte) 0xe3, (byte) 0x6b}; IdentityKey bobIdentityKey = new IdentityKey(bobIdentityPublic, 0); ECPublicKey bobEphemeralPublicKey = Curve.decodePoint(bobPublic, 0); diff --git a/libaxolotl/src/androidTest/java/org/whispersystems/test/ratchet/RootKeyTest.java b/libaxolotl/src/androidTest/java/org/whispersystems/test/ratchet/RootKeyTest.java index b7a19b0f97..c48ef23d2f 100644 --- a/libaxolotl/src/androidTest/java/org/whispersystems/test/ratchet/RootKeyTest.java +++ b/libaxolotl/src/androidTest/java/org/whispersystems/test/ratchet/RootKeyTest.java @@ -50,21 +50,21 @@ public class RootKeyTest extends AndroidTestCase { (byte) 0x95, (byte) 0x55, (byte) 0xe8, (byte) 0x47, (byte) 0x57, (byte) 0x70, (byte) 0x8a, (byte) 0x30}; - byte[] nextRoot = {(byte)0x67, (byte)0x46, (byte)0x77, (byte)0x65, (byte)0x21, - (byte)0x04, (byte)0xe8, (byte)0x64, (byte)0xd0, (byte)0x7c, - (byte)0x54, (byte)0x33, (byte)0xef, (byte)0xaa, (byte)0x59, - (byte)0x25, (byte)0xed, (byte)0x43, (byte)0x67, (byte)0xd6, - (byte)0xb2, (byte)0x5a, (byte)0xaf, (byte)0xe6, (byte)0x99, - (byte)0x1d, (byte)0xef, (byte)0x5c, (byte)0x7f, (byte)0x0f, - (byte)0xb8, (byte)0x6f}; + byte[] nextRoot = {(byte) 0xb1, (byte) 0x14, (byte) 0xf5, (byte) 0xde, (byte) 0x28, + (byte) 0x01, (byte) 0x19, (byte) 0x85, (byte) 0xe6, (byte) 0xeb, + (byte) 0xa2, (byte) 0x5d, (byte) 0x50, (byte) 0xe7, (byte) 0xec, + (byte) 0x41, (byte) 0xa9, (byte) 0xb0, (byte) 0x2f, (byte) 0x56, + (byte) 0x93, (byte) 0xc5, (byte) 0xc7, (byte) 0x88, (byte) 0xa6, + (byte) 0x3a, (byte) 0x06, (byte) 0xd2, (byte) 0x12, (byte) 0xa2, + (byte) 0xf7, (byte) 0x31}; - byte[] nextChain = {(byte)0xfa, (byte)0xed, (byte)0x7f, (byte)0xb2, (byte)0xc3, - (byte)0xe6, (byte)0xf6, (byte)0x06, (byte)0xfc, (byte)0xbf, - (byte)0x26, (byte)0x64, (byte)0x6c, (byte)0xf2, (byte)0x68, - (byte)0xad, (byte)0x49, (byte)0x58, (byte)0x9f, (byte)0xcb, - (byte)0xde, (byte)0x01, (byte)0xc1, (byte)0x26, (byte)0x75, - (byte)0xe5, (byte)0xe8, (byte)0x22, (byte)0xa7, (byte)0xe3, - (byte)0x35, (byte)0xd1}; + byte[] nextChain = {(byte) 0x9d, (byte) 0x7d, (byte) 0x24, (byte) 0x69, (byte) 0xbc, + (byte) 0x9a, (byte) 0xe5, (byte) 0x3e, (byte) 0xe9, (byte) 0x80, + (byte) 0x5a, (byte) 0xa3, (byte) 0x26, (byte) 0x4d, (byte) 0x24, + (byte) 0x99, (byte) 0xa3, (byte) 0xac, (byte) 0xe8, (byte) 0x0f, + (byte) 0x4c, (byte) 0xca, (byte) 0xe2, (byte) 0xda, (byte) 0x13, + (byte) 0x43, (byte) 0x0c, (byte) 0x5c, (byte) 0x55, (byte) 0xb5, + (byte) 0xca, (byte) 0x5f}; ECPublicKey alicePublicKey = Curve.decodePoint(alicePublic, 0); ECPrivateKey alicePrivateKey = Curve.decodePrivatePoint(alicePrivate);