a1363d2ed9
ECDSA is unsafe to use if an entropy source produces predictable output for the ephemeral nonces. E.g., [Nguyen]. A simple countermeasure is to hash the secret key, the message, and entropy together to seed a CSPRNG, from which the ephemeral key is derived. Fixes #9452 -- This is a minimalist (in terms of patch size) solution, though not the most parsimonious in its use of primitives: - csprng_key = ChopMD-256(SHA2-512(priv.D||entropy||hash)) - reader = AES-256-CTR(k=csprng_key) This, however, provides at most 128-bit collision-resistance, so that Adv will have a term related to the number of messages signed that is significantly worse than plain ECDSA. This does not seem to be of any practical importance. ChopMD-256(SHA2-512(x)) is used, rather than SHA2-256(x), for two sets of reasons: *Practical:* SHA2-512 has a larger state and 16 more rounds; it is likely non-generically stronger than SHA2-256. And, AFAIK, cryptanalysis backs this up. (E.g., [Biryukov] gives a distinguisher on 47-round SHA2-256 with cost < 2^85.) This is well below a reasonable security-strength target. *Theoretical:* [Coron] and [Chang] show that Chop-MD(F(x)) is indifferentiable from a random oracle for slightly beyond the birthday barrier. It seems likely that this makes a generic security proof that this construction remains UF-CMA is possible in the indifferentiability framework. -- Many thanks to Payman Mohassel for reviewing this construction; any mistakes are mine, however. And, as he notes, reusing the private key in this way means that the generic-group (non-RO) proof of ECDSA's security given in [Brown] no longer directly applies. -- [Brown]: http://www.cacr.math.uwaterloo.ca/techreports/2000/corr2000-54.ps "Brown. The exact security of ECDSA. 2000" [Coron]: https://www.cs.nyu.edu/~puniya/papers/merkle.pdf "Coron et al. Merkle-Damgard revisited. 2005" [Chang]: https://www.iacr.org/archive/fse2008/50860436/50860436.pdf "Chang and Nandi. Improved indifferentiability security analysis of chopMD hash function. 2008" [Biryukov]: http://www.iacr.org/archive/asiacrypt2011/70730269/70730269.pdf "Biryukov et al. Second-order differential collisions for reduced SHA-256. 2011" [Nguyen]: ftp://ftp.di.ens.fr/pub/users/pnguyen/PubECDSA.ps "Nguyen and Shparlinski. The insecurity of the elliptic curve digital signature algorithm with partially known nonces. 2003" New tests: TestNonceSafety: Check that signatures are safe even with a broken entropy source. TestINDCCA: Check that signatures remain non-deterministic with a functional entropy source. Updated "golden" KATs in crypto/tls/testdata that use ECDSA suites. Change-Id: I55337a2fbec2e42a36ce719bd2184793682d678a Reviewed-on: https://go-review.googlesource.com/3340 Reviewed-by: Adam Langley <agl@golang.org>
134 lines
10 KiB
Plaintext
134 lines
10 KiB
Plaintext
>>> Flow 1 (client to server)
|
|
00000000 16 03 01 00 75 01 00 00 71 03 03 00 00 00 00 00 |....u...q.......|
|
|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
|
|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 1a c0 2f |.............../|
|
|
00000030 c0 2b c0 11 c0 07 c0 13 c0 09 c0 14 c0 0a 00 05 |.+..............|
|
|
00000040 00 2f 00 35 c0 12 00 0a 01 00 00 2e 00 05 00 05 |./.5............|
|
|
00000050 01 00 00 00 00 00 0a 00 08 00 06 00 17 00 18 00 |................|
|
|
00000060 19 00 0b 00 02 01 00 00 0d 00 0a 00 08 04 01 04 |................|
|
|
00000070 03 02 01 02 03 ff 01 00 01 00 |..........|
|
|
>>> Flow 2 (server to client)
|
|
00000000 16 03 03 00 59 02 00 00 55 03 03 32 10 48 2c 35 |....Y...U..2.H,5|
|
|
00000010 88 8d 78 49 39 19 48 d7 5c 44 ac 54 22 9c e3 bd |..xI9.H.\D.T"...|
|
|
00000020 43 94 0b 79 76 e3 7e b8 05 8c 8f 20 c3 af 31 88 |C..yv.~.... ..1.|
|
|
00000030 eb f4 55 f3 c0 43 f3 75 e6 e6 db 44 ba 95 09 95 |..U..C.u...D....|
|
|
00000040 e7 ef b8 93 f2 79 a5 fe 37 4b 15 6e c0 09 00 00 |.....y..7K.n....|
|
|
00000050 0d ff 01 00 01 00 00 0b 00 04 03 00 01 02 16 03 |................|
|
|
00000060 03 02 0e 0b 00 02 0a 00 02 07 00 02 04 30 82 02 |.............0..|
|
|
00000070 00 30 82 01 62 02 09 00 b8 bf 2d 47 a0 d2 eb f4 |.0..b.....-G....|
|
|
00000080 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 0b 30 |0...*.H.=..0E1.0|
|
|
00000090 09 06 03 55 04 06 13 02 41 55 31 13 30 11 06 03 |...U....AU1.0...|
|
|
000000a0 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 65 31 |U....Some-State1|
|
|
000000b0 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 72 6e |!0...U....Intern|
|
|
000000c0 65 74 20 57 69 64 67 69 74 73 20 50 74 79 20 4c |et Widgits Pty L|
|
|
000000d0 74 64 30 1e 17 0d 31 32 31 31 32 32 31 35 30 36 |td0...1211221506|
|
|
000000e0 33 32 5a 17 0d 32 32 31 31 32 30 31 35 30 36 33 |32Z..22112015063|
|
|
000000f0 32 5a 30 45 31 0b 30 09 06 03 55 04 06 13 02 41 |2Z0E1.0...U....A|
|
|
00000100 55 31 13 30 11 06 03 55 04 08 13 0a 53 6f 6d 65 |U1.0...U....Some|
|
|
00000110 2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a 13 |-State1!0...U...|
|
|
00000120 18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74 |.Internet Widgit|
|
|
00000130 73 20 50 74 79 20 4c 74 64 30 81 9b 30 10 06 07 |s Pty Ltd0..0...|
|
|
00000140 2a 86 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 |*.H.=....+...#..|
|
|
00000150 86 00 04 00 c4 a1 ed be 98 f9 0b 48 73 36 7e c3 |...........Hs6~.|
|
|
00000160 16 56 11 22 f2 3d 53 c3 3b 4d 21 3d cd 6b 75 e6 |.V.".=S.;M!=.ku.|
|
|
00000170 f6 b0 dc 9a df 26 c1 bc b2 87 f0 72 32 7c b3 64 |.....&.....r2|.d|
|
|
00000180 2f 1c 90 bc ea 68 23 10 7e fe e3 25 c0 48 3a 69 |/....h#.~..%.H:i|
|
|
00000190 e0 28 6d d3 37 00 ef 04 62 dd 0d a0 9c 70 62 83 |.(m.7...b....pb.|
|
|
000001a0 d8 81 d3 64 31 aa 9e 97 31 bd 96 b0 68 c0 9b 23 |...d1...1...h..#|
|
|
000001b0 de 76 64 3f 1a 5c 7f e9 12 0e 58 58 b6 5f 70 dd |.vd?.\....XX._p.|
|
|
000001c0 9b d8 ea d5 d7 f5 d5 cc b9 b6 9f 30 66 5b 66 9a |...........0f[f.|
|
|
000001d0 20 e2 27 e5 bf fe 3b 30 09 06 07 2a 86 48 ce 3d | .'...;0...*.H.=|
|
|
000001e0 04 01 03 81 8c 00 30 81 88 02 42 01 88 a2 4f eb |......0...B...O.|
|
|
000001f0 e2 45 c5 48 7d 1b ac f5 ed 98 9d ae 47 70 c0 5e |.E.H}.......Gp.^|
|
|
00000200 1b b6 2f bd f1 b6 4d b7 61 40 d3 11 a2 ce ee 0b |../...M.a@......|
|
|
00000210 7e 92 7e ff 76 9d c3 3b 7e a5 3f ce fa 10 e2 59 |~.~.v..;~.?....Y|
|
|
00000220 ec 47 2d 7c ac da 4e 97 0e 15 a0 6f d0 02 42 01 |.G-|..N....o..B.|
|
|
00000230 4d fc be 67 13 9c 2d 05 0e bd 3f a3 8c 25 c1 33 |M..g..-...?..%.3|
|
|
00000240 13 83 0d 94 06 bb d4 37 7a f6 ec 7a c9 86 2e dd |.......7z..z....|
|
|
00000250 d7 11 69 7f 85 7c 56 de fb 31 78 2b e4 c7 78 0d |..i..|V..1x+..x.|
|
|
00000260 ae cb be 9e 4e 36 24 31 7b 6a 0f 39 95 12 07 8f |....N6$1{j.9....|
|
|
00000270 2a 16 03 03 00 d7 0c 00 00 d3 03 00 17 41 04 de |*............A..|
|
|
00000280 0f fa c5 80 41 6b 2f f6 c6 ef 28 17 fe 7e 06 e0 |....Ak/...(..~..|
|
|
00000290 e9 fe d4 c6 3e 29 6e 1a 83 b7 d1 f2 12 db 95 dd |....>)n.........|
|
|
000002a0 ff ee 83 71 af e4 3f b9 a6 6c 08 99 b0 46 24 e9 |...q..?..l...F$.|
|
|
000002b0 ef c6 61 29 c0 d0 96 25 20 92 6a ff 2e 15 28 04 |..a)...% .j...(.|
|
|
000002c0 03 00 8a 30 81 87 02 41 1c 44 92 98 91 1c 63 fe |...0...A.D....c.|
|
|
000002d0 6a 05 d4 ea 77 f3 e3 0a 35 25 25 80 63 9c 85 f6 |j...w...5%%.c...|
|
|
000002e0 0d 43 2b 1a 40 13 e7 57 0d b4 4d 65 46 6f fb f5 |.C+.@..W..MeFo..|
|
|
000002f0 23 57 cd 23 41 b5 c9 0a 2a 38 9a bc 54 70 a1 b8 |#W.#A...*8..Tp..|
|
|
00000300 8e 19 46 26 2a bb c0 1c d1 02 42 00 a4 01 e2 2e |..F&*.....B.....|
|
|
00000310 b1 0b 7e 9b 9b 94 3e 19 d2 44 ac bd 60 c2 75 55 |..~...>..D..`.uU|
|
|
00000320 b0 da dd a8 8f 6d 5b 83 91 61 b9 b3 68 32 b2 fe |.....m[..a..h2..|
|
|
00000330 56 81 49 ab e7 e8 a9 47 5c 75 7d c0 13 4a af 30 |V.I....G\u}..J.0|
|
|
00000340 7a 23 a7 37 f4 53 0a 07 ae aa 6e 01 a2 16 03 03 |z#.7.S....n.....|
|
|
00000350 00 2e 0d 00 00 26 03 01 02 40 00 1e 06 01 06 02 |.....&...@......|
|
|
00000360 06 03 05 01 05 02 05 03 04 01 04 02 04 03 03 01 |................|
|
|
00000370 03 02 03 03 02 01 02 02 02 03 00 00 0e 00 00 00 |................|
|
|
>>> Flow 3 (client to server)
|
|
00000000 16 03 03 02 0a 0b 00 02 06 00 02 03 00 02 00 30 |...............0|
|
|
00000010 82 01 fc 30 82 01 5e 02 09 00 9a 30 84 6c 26 35 |...0..^....0.l&5|
|
|
00000020 d9 17 30 09 06 07 2a 86 48 ce 3d 04 01 30 45 31 |..0...*.H.=..0E1|
|
|
00000030 0b 30 09 06 03 55 04 06 13 02 41 55 31 13 30 11 |.0...U....AU1.0.|
|
|
00000040 06 03 55 04 08 13 0a 53 6f 6d 65 2d 53 74 61 74 |..U....Some-Stat|
|
|
00000050 65 31 21 30 1f 06 03 55 04 0a 13 18 49 6e 74 65 |e1!0...U....Inte|
|
|
00000060 72 6e 65 74 20 57 69 64 67 69 74 73 20 50 74 79 |rnet Widgits Pty|
|
|
00000070 20 4c 74 64 30 1e 17 0d 31 32 31 31 31 34 31 33 | Ltd0...12111413|
|
|
00000080 32 35 35 33 5a 17 0d 32 32 31 31 31 32 31 33 32 |2553Z..221112132|
|
|
00000090 35 35 33 5a 30 41 31 0b 30 09 06 03 55 04 06 13 |553Z0A1.0...U...|
|
|
000000a0 02 41 55 31 0c 30 0a 06 03 55 04 08 13 03 4e 53 |.AU1.0...U....NS|
|
|
000000b0 57 31 10 30 0e 06 03 55 04 07 13 07 50 79 72 6d |W1.0...U....Pyrm|
|
|
000000c0 6f 6e 74 31 12 30 10 06 03 55 04 03 13 09 4a 6f |ont1.0...U....Jo|
|
|
000000d0 65 6c 20 53 69 6e 67 30 81 9b 30 10 06 07 2a 86 |el Sing0..0...*.|
|
|
000000e0 48 ce 3d 02 01 06 05 2b 81 04 00 23 03 81 86 00 |H.=....+...#....|
|
|
000000f0 04 00 95 8c 91 75 14 c0 5e c4 57 b4 d4 c3 6f 8d |.....u..^.W...o.|
|
|
00000100 ae 68 1e dd 6f ce 86 e1 7e 6e b2 48 3e 81 e5 4e |.h..o...~n.H>..N|
|
|
00000110 e2 c6 88 4b 64 dc f5 30 bb d3 ff 65 cc 5b f4 dd |...Kd..0...e.[..|
|
|
00000120 b5 6a 3e 3e d0 1d de 47 c3 76 ad 19 f6 45 2c 8c |.j>>...G.v...E,.|
|
|
00000130 bc d8 1d 01 4c 1f 70 90 46 76 48 8b 8f 83 cc 4a |....L.p.FvH....J|
|
|
00000140 5c 8f 40 76 da e0 89 ec 1d 2b c4 4e 30 76 28 41 |\.@v.....+.N0v(A|
|
|
00000150 b2 62 a8 fb 5b f1 f9 4e 7a 8d bd 09 b8 ae ea 8b |.b..[..Nz.......|
|
|
00000160 18 27 4f 2e 70 fe 13 96 ba c3 d3 40 16 cd 65 4e |.'O.p......@..eN|
|
|
00000170 ac 11 1e e6 f1 30 09 06 07 2a 86 48 ce 3d 04 01 |.....0...*.H.=..|
|
|
00000180 03 81 8c 00 30 81 88 02 42 00 e0 14 c4 60 60 0b |....0...B....``.|
|
|
00000190 72 68 b0 32 5d 61 4a 02 74 5c c2 81 b9 16 a8 3f |rh.2]aJ.t\.....?|
|
|
000001a0 29 c8 36 c7 81 ff 6c b6 5b d9 70 f1 38 3b 50 48 |).6...l.[.p.8;PH|
|
|
000001b0 28 94 cb 09 1a 52 f1 5d ee 8d f2 b9 f0 f0 da d9 |(....R.]........|
|
|
000001c0 15 3a f9 bd 03 7a 87 a2 23 35 ec 02 42 01 a3 d4 |.:...z..#5..B...|
|
|
000001d0 8a 78 35 1c 4a 9a 23 d2 0a be 2b 10 31 9d 9c 5f |.x5.J.#...+.1.._|
|
|
000001e0 be e8 91 b3 da 1a f5 5d a3 23 f5 26 8b 45 70 8d |.......].#.&.Ep.|
|
|
000001f0 65 62 9b 7e 01 99 3d 18 f6 10 9a 38 61 9b 2e 57 |eb.~..=....8a..W|
|
|
00000200 e4 fa cc b1 8a ce e2 23 a0 87 f0 e1 67 51 eb 16 |.......#....gQ..|
|
|
00000210 03 03 00 46 10 00 00 42 41 04 1e 18 37 ef 0d 19 |...F...BA...7...|
|
|
00000220 51 88 35 75 71 b5 e5 54 5b 12 2e 8f 09 67 fd a7 |Q.5uq..T[....g..|
|
|
00000230 24 20 3e b2 56 1c ce 97 28 5e f8 2b 2d 4f 9e f1 |$ >.V...(^.+-O..|
|
|
00000240 07 9f 6c 4b 5b 83 56 e2 32 42 e9 58 b6 d7 49 a6 |..lK[.V.2B.X..I.|
|
|
00000250 b5 68 1a 41 03 56 6b dc 5a 89 16 03 03 00 92 0f |.h.A.Vk.Z.......|
|
|
00000260 00 00 8e 04 03 00 8a 30 81 87 02 41 3d 25 31 d8 |.......0...A=%1.|
|
|
00000270 55 40 da 77 81 21 17 c1 7f d2 e2 b7 74 b9 da 34 |U@.w.!......t..4|
|
|
00000280 a9 f5 ce 50 4b 2e 80 30 47 b8 eb e2 be 9a e2 c0 |...PK..0G.......|
|
|
00000290 ea ec 8e 14 56 1a 0c ac 24 25 41 13 e3 53 7a ba |....V...$%A..Sz.|
|
|
000002a0 13 3a 20 15 f4 90 90 22 cf 0d 23 9b 3e 02 42 01 |.: ...."..#.>.B.|
|
|
000002b0 1c 00 db 16 3e 83 52 26 21 43 d2 08 62 7d ac 18 |....>.R&!C..b}..|
|
|
000002c0 71 f6 1a 49 c5 16 cf 83 b5 b6 40 b4 ad e7 1b 3f |q..I......@....?|
|
|
000002d0 b3 de 9c b2 0b 7e bf 07 f8 4a ea 54 e4 a2 6d 62 |.....~...J.T..mb|
|
|
000002e0 aa da b8 c5 60 46 c9 84 d9 b7 ab f3 82 4d 01 d8 |....`F.......M..|
|
|
000002f0 70 14 03 03 00 01 01 16 03 03 00 40 00 00 00 00 |p..........@....|
|
|
00000300 00 00 00 00 00 00 00 00 00 00 00 00 1a 4d 46 2c |.............MF,|
|
|
00000310 e9 de b4 b1 2c b4 7f fb b9 6a b8 4f 9d 68 92 bf |....,....j.O.h..|
|
|
00000320 87 05 b2 e3 fa 74 58 37 d5 63 fe 23 00 5f 37 26 |.....tX7.c.#._7&|
|
|
00000330 de 99 3a c3 af 58 ca 74 c6 53 09 5c |..:..X.t.S.\|
|
|
>>> Flow 4 (server to client)
|
|
00000000 14 03 03 00 01 01 16 03 03 00 40 d7 8f 09 25 1e |..........@...%.|
|
|
00000010 05 12 68 52 87 c0 0a ae d7 f0 f6 0c 1e 79 0b be |..hR.........y..|
|
|
00000020 92 8f e1 06 08 b8 89 a1 5e 5e df f3 a1 01 56 d8 |........^^....V.|
|
|
00000030 03 f7 6f c1 5c e4 74 16 12 05 8a 7e b9 7c 50 48 |..o.\.t....~.|PH|
|
|
00000040 b8 6c 96 07 dd 32 b5 7a a4 c2 e0 |.l...2.z...|
|
|
>>> Flow 5 (client to server)
|
|
00000000 17 03 03 00 30 00 00 00 00 00 00 00 00 00 00 00 |....0...........|
|
|
00000010 00 00 00 00 00 cf 6e 12 61 5d 83 0e 90 c7 f0 55 |......n.a].....U|
|
|
00000020 02 42 49 69 c4 f1 dc 33 97 91 92 aa ec b7 42 09 |.BIi...3......B.|
|
|
00000030 fa 39 d5 b5 f2 15 03 03 00 30 00 00 00 00 00 00 |.9.......0......|
|
|
00000040 00 00 00 00 00 00 00 00 00 00 9c 2e ac 12 50 52 |..............PR|
|
|
00000050 6b 48 fc 42 f7 ef 8c d0 79 a2 11 c0 52 38 6e e5 |kH.B....y...R8n.|
|
|
00000060 79 eb 4b 62 2d f8 5b 09 15 07 |y.Kb-.[...|
|