[tahoe-dev] nice new picture of DSA-based encryption, plus key length ideas
zooko
zooko at zooko.com
Tue Jan 8 20:16:15 PST 2008
Folks:
One more time, with better tabulation and also with 70-column line
wrapping.
Folks:
We have in mind a new encryption scheme which makes for much faster
directory creation (because creation of DSA key pairs is much faster
than the creation of RSA key pairs), and has many other features,
including 256-bit symmetric encryption keys instead of 128-bit.
Here is the description of it:
http://allmydata.org/trac/tahoe/ticket/217
And Brian just posted a pretty picture:
http://allmydata.org/trac/tahoe/attachment/ticket/217/mutable-DSA.png
Brian asked me to look at it and submit comments. The first comment I
have is about key sizes. We might want to use key sizes larger than
those currently used for data in motion. This is because people might
start considering using Tahoe for long-term storage and long-term
security. If they do, then they will be very conservative about
algorithm security, because the attackers have the advantage of using
tools and resources from 2030 or 2050 to attack the confidentiality or
integrity of data that was stored in 2008 or 2010.
According to the handy-dandy http://www.keylength.com / , Lenstra's
2004 equations suggest that for security until 2048, assuming
(pessimistically, from the point of view of a Tahoe user) that DES was
too weak in 1982 and that the attacker's ability to factor doubles
every 12 months, then we should use:
date symmetric asymmetric dl key dl group hash
---- --------- ---------- ------ ------- ----
2048 100 3172 200 2358 200
(Note that "asymmetric", meaning, I guess RSA, is included only for
comparison -- we don't plan to use RSA.)
Also on that handy-dandy site, it says that RFC 3766 suggests that the
following are equivalently strong:
symmetric asymmetric dl key dl group
--------- ---------- ------ --------
128 3253 256 3253
256 15,489 512 15,489
Also from that site, DCSSI recommends:
date symmetric asymmetric dl key dl group
---- --------- ---------- ------ --------
2011-2020 100 2048 256 2048
after 2020 100 4096 256 4096
Also, NIST recommends:
date symmetric asymmetric dl key dl group hash
---- --------- ---------- ------ -------- ----
2008-2010 80 1024 160 1024 sha-224
2011-2030 112 2048 224 2048 sha-224
later 128 3072 256 3072 sha-256
even later 192 7680 384 7680 sha-384
even later 256 15,360 512 15,360 sha-512
Finally, ECRYPT recommends:
protection symmetric asymmetric dl key dl group
hash
---------- --------- ---------- ------ --------
----
2008-2026 112 2432 224 2432 224
2008-2036 128 3248 256 3248 256
forseeable future[*] 256 15,424 512 15,424 512
[*] including protection against quantum computers
The countervailing pressure for us is:
1. dl keys are our write-caps, so if we empower users to manage their
write-caps directly (and I very much value doing so), then they are
exposed directly to the user. Likewise, symmetric keys are our
read-caps.
256-bit caps look like one of these four:
http://127.0.0.1:8123/v9f4ezaZpLOiGVSmlpZ9NIGEOE6HYwAA5mLxbVPrROM
v9f4ezaZpLOiGVSmlpZ9NIGEOE6HYwAA5mLxbVPrROM
http://127.0.0.1:8123/
z9m9o63sug1m8eo3k1ujpfu7g1yaeqnqo7to9y8gcmas4w9meuto
z9m9o63sug1m8eo3k1ujpfu7g1yaeqnqo7to9y8gcmas4w9meuto
128-bit caps look like one of these four:
http://127.0.0.1:8123/ZDjtvnPPGe1gSDxiccLa8A
http://127.0.0.1:8123/cohq5xuu3hc64ane8tt8dos46y
ZDjtvnPPGe1gSDxiccLa8A
cohq5xuu3hc64ane8tt8dos46y
Other sizes of capability are also legitimate key sizes to use.
2. dl group size is the size of the dsa public key and the dsa
signature which each get stored in each share (currently) for each
directory and each mutable file. I guess if we wanted to we could
erasure code those and store a share of it with each data share. :-)
Because I want people to feel free to use caps directly, I want them
to be as small as possible in order to compete with "tiny URLs" (which
are centralized identifiers that people can manipulate and use as a
references to caps). So I'm interested in smallest discrete log key
size that experts recommend as being secure.
We should probably choose either convenient key sizes or
long-term-high-assurance key sizes, and we should probably make the dl
group size , the symmetric encryption size, and the hash size be
"proportional" to one another in estimated longevity of security.
This probably means choosing one (or both) of:
protection symmetric dl key dl group hash
---------- --------- ------ -------- ----
option A 100 200 2358 256
option B 256 512 15,424 512
Option A: maybe these caps will become distrusted within a decade or
two. Maybe they will last for many decades.
Option B: these will remain highly trusted, even for high-value data,
for many decades, even in the face of quantum computation and small
cryptanalytic results against the crypto primitives unless there is a
very surprising cryptanalytic result against the crypto primitives
Those "higher safety" caps, with write-caps of 512 bits would look
like this: (The read-caps would look just like the 256-bit caps shown
above.)
512-bit write caps:
http://127.0.0.1:8123/
LiuZU0CCvv3HbKmRU2wqqR9GSDOg_6DAT6YHm2MYgmzrtPmHN_kv77zHlKhkUP3Q7YE5FgOW
meR0uNq6l_Lb2g
http://127.0.0.1:8123/
fai31w4yok9x5t5cigeig5bkirxwc1buwd94bonxwad3saaaojsqzp83oh591m9xzud3jkdr
kd67b5cb8rmy8fw3ht4mtsi4193pzso
LiuZU0CCvv3HbKmRU2wqqR9GSDOg_6DAT6YHm2MYgmzrtPmHN_kv77zHlKhkUP3Q7YE5FgOW
meR0uNq6l_Lb2g
fai31w4yok9x5t5cigeig5bkirxwc1buwd94bonxwad3saaaojsqzp83oh591m9xzud3jkdr
kd67b5cb8rmy8fw3ht4mtsi4193pzso
200-bit write-caps would look like this:
http://127.0.0.1:8123/biGvBl4XzCGJBqmV7lZllrubc3w5muyPRg
biGvBl4XzCGJBqmV7lZllrubc3w5muyPRg
http://127.0.0.1:8123/pao46b16n9gndnegigk6hiuf1473sh5h8gpq3d4g
pao46b16n9gndnegigk6hiuf1473sh5h8gpq3d4g
100-bit read-caps would look like this:
http://127.0.0.1:8123/ McwduQ4rn7U4Yg90vA
McwduQ4rn7U4Yg90vA
http://127.0.0.1:8123/ g8gb5qeqfqx5kqdnb74m
g8gb5qeqfqx5kqdnb74m
Regards,
Zooko
More information about the tahoe-dev
mailing list