proposal update

This commit is contained in:
zzz
2018-08-27 19:24:57 +00:00
parent f5c764d589
commit d999f0e521

View File

@ -5,7 +5,7 @@ New netDB Entries
:author: zzz, orignal, str4d :author: zzz, orignal, str4d
:created: 2016-01-16 :created: 2016-01-16
:thread: http://zzz.i2p/topics/2051 :thread: http://zzz.i2p/topics/2051
:lastupdated: 2018-08-13 :lastupdated: 2018-08-27
:status: Open :status: Open
:supercedes: 110, 120, 121, 122 :supercedes: 110, 120, 121, 122
@ -64,6 +64,9 @@ Non-Goals
--------- ---------
- New DHT rotation algorithm or shared random generation - New DHT rotation algorithm or shared random generation
- This proposal is about enabling new encryption types.
The specific new encryption type and end-to-end encryption scheme
to use that new type would be in a separate proposal.
Justification Justification
@ -166,6 +169,11 @@ Issues
- Alternative: 3 byte timestamp (epoch / 10 minutes), 1-byte version, 2-byte expires - Alternative: 3 byte timestamp (epoch / 10 minutes), 1-byte version, 2-byte expires
Notes
`````
- Router implementations could cache the transient keys and signature to
avoid verification every time. In particular, floodfills, and routers at
both ends of long-lived connections, could benefit from this.
New DatabaseEntry types New DatabaseEntry types
@ -203,7 +211,7 @@ Format
- Encryption key (256 bytes or depending on enc type) - Encryption key (256 bytes or depending on enc type)
- Number of leases (1 byte) - Number of leases (1 byte)
- Leases (44 bytes each) - Leases (44 bytes each)
- Properties (2 bytes if none) - Properties (Mapping as specified in common structures spec, 2 zero bytes if none)
Standard LS2 Signature: Standard LS2 Signature:
- Signature - Signature
@ -250,11 +258,14 @@ Destination unused, as it is now. The encryption type is not specified
in the Destination key certificate, it will remain 0. in the Destination key certificate, it will remain 0.
Possible extension: Optionally include multiple encryption type/public key pairs, Possible extension: Optionally include multiple encryption type/public key pairs,
to ease transition to new encryption types. to ease transition to new encryption types. The other way to do it
is to publish multiple leasesets, possibly using the same tunnels,
as we do now for DSA and EdDSA destinations. It's not clear how to
identify the incoming encryption type on a shared tunnel.
An alternative is to specify the encryption type in the Destination key certificate, A rejected alternative is to specify the encryption type in the Destination key certificate,
use the public key in the Destination, and not use the public key use the public key in the Destination, and not use the public key
in the leaseset. A formal proposal for this is in progress. in the leaseset. We do not plan to do this.
Benefits of LS2: Benefits of LS2:
@ -274,6 +285,32 @@ Drawbacks of LS2:
The alternative proposal could be easier to implement and test for experimental encryption types. The alternative proposal could be easier to implement and test for experimental encryption types.
New Encryption Issues
`````````````````````
Some of this is out-of-scope for this proposal,
but putting notes here for now as we don't have
a separate encryption proposal yet.
- Do we need a separate fields for encryption key type and
end-to-end encryption type, since we may change the
end-to-end scheme (AES+SessionTag) while keeping the same
key type? Or does the encryption type field represent
both the key type and the end-to-end encryption scheme?
Third option: Put supported flavors in the properties.
- Do we want to support multiple encryption types and keys in the same LS?
Or is it sufficient to have different b32s for different types,
as we do now for sig types.
Would it be possible for a router to auto-detect incoming garlic-encrypted
messages, if multiple types were supported in the same tunnel?
- The first new encryption type to be proposed will
probably be ECIES/X25519. How it's used end-to-end
(either a slightly modified version of ElGamal/AES+SessionTag
or something completely new, e.g. ChaCha/Poly) will be specified
in one or more separate proposals.
Notes Notes
````` `````
- Should we reduce the 8-byte expiration in leases to a 2-byte offset from the - Should we reduce the 8-byte expiration in leases to a 2-byte offset from the
@ -482,7 +519,7 @@ Format
- Revocations: Each revocation contains: (32 bytes) - Revocations: Each revocation contains: (32 bytes)
- Hash (32 bytes) - Hash (32 bytes)
- Properties (2 bytes if empty) - Properties (Mapping as specified in common structures spec, 2 zero bytes if none)
Standard LS2 Signature: Standard LS2 Signature:
- Signature (40+ bytes) - Signature (40+ bytes)