[katzenpost] Katzenpost client library tasks
masala at riseup.net
masala at riseup.net
Wed Nov 28 19:47:08 UTC 2018
Hi All,
David and I had a voice meeting where we discussed TODO tasks on the
client library: https://github.com/katzenpost/client
Here are the notes I took from the meeting.
Comments and questions welcome.
================
Misc tasks:
work on the heartbeat protocol stuff
heartbeat threshold from loopix paper
switch to different tasks through the day - blocked, stuck, etc
would be a good idea to do generative testing
- testing PKI
- might be able to get into unknown states
load testing of mix servers
- find performance bugs and stuff
Cryptographic persistent storage library
- name ??
- KISS
- serialization format, CBOR?
- serialize and encrypt, write to disk as ciphertext
- transactional, NOT ACID style
- write to temporary file and move it, ala Pond
Client Library TODO:
Name of library: client
- bookkeeping for forward messages (SURB IDs)
- pass received messages to the application
- nice API golang interface
- tests for each component
- persists stuff to data structures in memory (1 or 2), queue and
something else
- implement sending/receiving messages
- onMessage (complete this method, pass data to the caller)
- cache and store the consensus in the store (perf. improvement,
priority ?)
- might be downloading the consensus too often
- should cache provider descriptors and try to download consensus
from provider
Fragmentation transport library:
Name of library: ??
- end to end message encryption using Noise XX HFS or Signal protocol
- how often to rekey (n messages?)
- key/fingerprint verification interface (to application?)
- information necessary to identify where messages belong
- suggest trial decryption (assume average user doesn't have that
many sessions?)
- dont want to expose fragmentation metadata to the provider
- messages are fragmented before encryption, so messages sizes are
uniform
- fragmentation metadata is therefore concealed from the provider
- figure out if Noise CipherStates can be serialized and stored on
disk and if this is a good idea or not.
- otherwise messages cannot be received asynchronously (if key
material is lost at shutdown)
- cryptographic storage library used for storing cipherstates,
fragmentation metadata, messages ids, etc
- what should the receiver do if a message never arrives (tear down
state, etc. how long? since this is async proto)
- applications must be indistinguishable to the provider, so the same
cryptographic transport encapsulates application messages.
- key verification or key (long term identity) exchange ? leave to
application developer, provide PANDA library and write interface or
re-use Verifier interface ?
More information about the katzenpost
mailing list