public key size

"Lance James" <[email protected]> Thu, 7 Aug 2003 09:23:44 -0700
Newsgroups gmane.comp.security.invisiblenet.iip.devel
Message-ID <[email protected]>
I am not going to be picky, let's do 256 bit aes keys like before, and
if it's not the worst computation in the world, could we try 4096 pub
keys to see how it goes, and if it's not really practical or scalable,
we'll stick with 2048. I'm a picky crypto guy and like to follow
parameters correctly, even though this one is debatable, I do believe in
protecting those session keys with the equivalent strength pub key
crypto.

Lance

-----Original Message-----
From: [email protected] [mailto:[email protected]] On
Behalf Of auto97841-revL73yDgGBWk0Htik3J/[email protected]
Sent: Wednesday, August 06, 2003 10:59 PM
To: [email protected]
Subject: [iip-dev] public key size



'lo hez, nop, et al

Two comments:

- First comment, wrt: Why 2048/128 vs 4096/256?  
Simple answer: Computational resources required.  I2P is a very crypto
heavy system, and this end to end encryption is only a small part of
that load.  Remember, in addition to encrypting and decrypting messages
destined to the local machine, the router will be encrypting and
decrypting connections to other routers, exchanging keys, wrapping and
unwrapping free route mixed messages, and verifying signatures, along
with analyzing the performance of various aspects of the network to
optimally integrate itself further.

The client library's built in end to end encryption should perform
sufficiently for all application models - not only email over I2P, but
for things like streaming data - as all messages sent through the API
will include this encryption.  Applications that require greater
security than what the client library provides transparently should have
additional encryption (trading off cpu usage for security).  One can't
use 8192/512 bit encryption to do streaming video on a 386, for example.

Also note that the keys for the 128 bit encryption is rotated
periodically
- whenever a message is sent ElG'ed instead of just session tagged.

Again, we don't need transparent military grade encryption in the API to
allow transparent military grade encryption to be used by applications
that need it.  The reason I'm not recommending going even further down
towards 1024/64 is that the public key is rotated significantly less
often (a paranoid person should feel safe not rotating it for weeks,
while joe sixpack should feel safe not rotating it for months or years).
Its my understanding that 1024bit keys do not meet those security
requirements,  though 2048 does.  Am I wrong and we instead need to use
4096 bit public keys?

- Second comment, wrt: AES attacks
If we don't feel AES is secure, at least for the next 3-5 years, we
shouldn't use it.  However, what I've read and what I've heard is that
there may be a theoretical attack which may be able to build a
cryptographic attack which may succeed in theory, though it may not be
implementable practically,  and even if all of those "may be" phrases
turned to definite "is a" phrases, it would likely be 10 years out.

I'd like to stick with AES, at least for now.  I'm sure if this is a
significant problem, it will come up during peer review and we can
substitute algorithms for the end to end payload encryption then.

(and, btw, the 32 bytes are used for the AES *pre*-IV, not the IV (IV =
SHA256(32byteTag)[0:15] ), and they're used for consistency with the
size of the session tag, which is 32 bytes so as to minimize the chance
of collision with an ElG'ed message's first 32 bytes)

anyway, thats my take on things.  its almost 9am so I'll prolly be
asleep shortly...

-jrandom



Concerned about your privacy? Follow this link to get
FREE encrypted email: https://www.hushmail.com/?l=2

Free, ultra-private instant messaging with Hush Messenger
https://www.hushmail.com/services.php?subloc=messenger&l=434

Promote security and make money with the Hushmail Affiliate Program: 
https://www.hushmail.com/about.php?subloc=affiliate&l=427