Changes between Initial Version and Version 1 of Summit2Day1


Ignore:
Timestamp:
2011-11-09T09:19:21Z (13 years ago)
Author:
warner
Comment:

add report from day 1

Legend:

Unmodified
Added
Removed
Modified
  • Summit2Day1

    v1 v1  
     1= Day 1 =
     2Tuesday 08-Nov-2011. Mozilla SF.
     3
     4== Attendees (with IRC nicks) ==
     5* Brian Warner (warner)
     6* Zooko (zooko)
     7* David-Sarah Hopwood (davidsarah)
     8* Zancas (zancas)
     9* Shawn Willden (divegeek)
     10* Zack Weinberg (zwol?)
     11* Zack Kansler (zwol?)
     12* Online: amiller, Dcoder
     13
     14== !Agent/Gateway split ==
     15    - Shawn Willden observed that "tahoe backup" is usually run on a laptop
     16      (frequently sleeping/offline), whereas he's got some other machine (a
     17      desktop or home server) with limited CPU which *is* online 24/7, so
     18      he wants a backup program that quickly dumps the laptop's contents to
     19      the server, then (slowly/lazily) uploads that data from the server
     20      into Tahoe
     21      - extra points for only putting ciphertext on that server
     22    - Brian wants a long-running process (specifically a
     23      twisted.application.service.Service object) to manage backup jobs,
     24      storing state in a sqlite db (which directories have been visited,
     25      time since last backup, ETA). Likewise for renew/repair/rebalance
     26      jobs.
     27      - maybe web interface to control/monitor these jobs
     28    - vague consensus was to introduce an "Agent" service, distinct from
     29      the current "Client/Gateway" service. The normal client/gateway
     30      process will include both (and the co-resident Agent will have local
     31      access to the IClient object for upload/download). But it will also
     32      be possible to create one in a separate process (with no
     33      client/gateway), in which case it speaks WAPI over HTTP (and must be
     34      configured with a node.url).
     35    - backup and renew/repair/rebalance jobs run in an Agent
     36    - not sure about where the WAPI/WUI lives. One idea was to have the
     37      Agent provide the WUI, and the C/G provide the WAPI. Another is to
     38      have the C/G provide most webapi but add new webapi to the Agent for
     39      managing backup/renew/repair/rebalance jobs
     40
     41== server-selection UI ==
     42
     43expected vs required vs known, k-of-N, H, points, understandability
     44
     45    - Brian talked about an old #467 explicit-server-selection message and
     46      his proposed UI to list all known servers in a table, with "use this
     47      server?" and "require this server?" buttons
     48    - David-Sarah (and Zooko) pointed out that "require?" is a bit harsh
     49      given our current H= ("Servers Of Happiness") share-placement code
     50    - tradeoffs between clear-and-restrictive vs confusing-but-fails-less
     51    - challenge of identifying reliability of nodes
     52    - Brian says client/gateway should expect user to teach it what sort of
     53      grid they expect, so it can bail when expectations aren't met
     54    - Shawn would prefer scheme where client measures reliability itself,
     55      chooses k/N/H to meet certain speed/cost/reliability goals
     56
     57== encrypted git, or revision control on tahoe ==
     58    - Zack(?) is thinking about revision control on top of Tahoe, will
     59      present "big crazy idea" later when everyone is there
     60    - Brian mentioned his signed-git-revisionid project (not yet released),
     61      and how git fetch/push is fast because both sides know full revision
     62      graph and can compute missing objects in one RTT. To get this in
     63      Tahoe, we must add deep-(verify)-caps and let servers see shape of
     64      directory tree.
     65    - Lunch conversation about Monotone's mutable metadata and the problem
     66      of transferring it efficiently
     67
     68== grid management ==
     69
     70non-transitive one-at-a-time invitations, transitive clique invitations,
     71Grid Admin star config
     72
     73    - Brian is thinking about grid setup and Accounting, and pondering a
     74      startup mode where servers issue Invitations to clients
     75      - pasting Invitation code into a web form is sufficient to get
     76        connected to grid (combines Introducer functionality with Account
     77        authorization)
     78      - probably set up bidirectional connection: when Alice accepts
     79        Invitation from Bob, both Alice and Bob can use each other's
     80        storage
     81    - three modes:
     82      - issue/accept one Invitation per link
     83      - each node needs one Invitation to join clique, then they get access
     84        to all storage servers in the clique (and offer service to all
     85        clients in the clique): grid grows one node at a time
     86        - issue: can two grids merge? or can you only accept an invitation
     87          when you aren't already in a grid?
     88      - managed grid: a central Grid Admin is the only one who can issue
     89        Invitations. When accepted, Alice can use storage of all members.
     90    - Shawn thinks a Request model is more natural: Server admin (or Grid
     91      Admin) sends ambient URL to new user, they paste it into a field that
     92      says "Request Access", this sends a Request to the server (probably
     93      containing a pubkey), the server records it, then later the server
     94      admin Accepts or Rejects the request.
     95    - Invite and Request are duals, modulo some channel and workflow
     96      variations (confidential vs authentic, who-sends-first-message)
     97    - Brian will explore how hard/feasible it is to run one workflow on top
     98      of the other: can a Request be expressed with a note saying "please
     99      send an Invitation to this public encryption key" sent to the server?
     100
     101== #466 new-introducer review ==
     102    - Brian walked through most of the #466 new-introducer code
     103      (https://github.com/warner/tahoe-lafs/tree/466-take7) with
     104      David-Sarah and Zooko
     105    - David-Sarah found one critical security bug (signature checking
     106      failure), lots of good cleanups to recommend, tests to add
     107    - overall it looks good
     108    - Brian will make suggested cleanups and prepare for landing
     109== Beer! ==
     110== signature consensus! ==
     111    - over drinks, Brian and David-Sarah and Zooko discussed signature
     112      options (needed for #466, Accounting, non-Foolscap storage protocol,
     113      new mutable file formats)
     114    - choices:
     115      - [https://github.com/warner/python-ed25519 python-ed25519]
     116        (standalone C extension module)
     117      - [https://github.com/warner/python-ecdsa python-ecdsa]
     118        (standalone pure-Python module)
     119      - ECDSA from Crypto++ via pycryptopp
     120      - non-EC DSA (eww)
     121      - get Ed25519 into Crypto++, then expose in pycryptopp
     122      - add Ed25519 into pycryptopp (making it more than just a python
     123        binding to Crypto++, hence nicknamed "pycryptoppp")
     124      - get ECDSA from pyOpenSSL (we think it isn't exposed)
     125    - evaluation:
     126      - security: David-Sarah strongly prefers Ed25519, Zooko slightly
     127        prefers ECDSA (older, more exposure), Brian (who currently has a
     128        crush on everything 25519) slightly prefers Ed25519. Crypto++'s
     129        entropy-using signature code includes nonce-safety (entropy is
     130        hashed with message to mitigate VM-rollback failure). Ed25519
     131        has deterministic signatures and nonce-safety.
     132      - speed: requirement is <10s startup with 100 servers (specifically,
     133        make sure the Announcement sign/verify is small compared to
     134        connection establishment time). That's sign+verify<100ms . This
     135        rules out python-ecdsa (sign+verify=330ms). Both a non-pure-python
     136        ECDSA and Ed25519 will do. A really fast primitive (optimized
     137        Ed25519 is like 20us) might enable new applications in the future
     138        (key-per-lease, key-per-write-request).
     139      - pure-python: slight preference for something that could be
     140        pure-python in the future if !PyPy could make it fast enough.
     141        Seems unlikely in the near-term for any of the options.
     142      - patents: murky, of course. !Redhat/Fedora core currently eschew
     143        all ECC, might change, might not, too bad. Not a clear
     144        differentiator between ECDSA and Ed25519. Nobody was willing to
     145        tolerate non-EC DSA (would need 4kbit keys to feel safe, not
     146        confident of hitting speed requirements). We can always back it
     147        out if it proves to be a problem (at the cost of regenerating
     148        all serverids). Hopefully the scene will settle down before we
     149        want to use it for data (which would be harder to back out).
     150      - packaging: biggest differentiator
     151        - python-ed25519: must build eggs as we did for pycrypto, need to
     152          get into debian (which has other benefits, but delays tahoe),
     153          increases build pain marginally.
     154        - python-ecdsa (too slow, ruled out): pure-python, so no need for
     155          eggs, but still need to get into debian and increases build pain
     156        - ECDSA-via-pycryptopp: easy, code is mostly done, needs final
     157          review and polish, no new dependencies.
     158        - ed25519-in-Crypto++: probably good idea in long term, but will
     159          take a while (must convince Crypto++ to change, wait for a
     160          release, then add bindings to pycryptopp). Must also wait for
     161          distributions to pick up new Crypto++. Technically no new
     162          dependencies, but increases the version requirements on an
     163          external module with a historically slow (1/yr) release cycle.
     164        - ed25519-in-pycryptopp: a bit weird (pycryptoppp), fairly fast (we
     165          control pycryptopp), no external delays. No new dependencies.
     166    - **winner: ed25519-in-pycryptopp** (aka pycryptoppp). Ed25519 wins over
     167      ECDSA with potential better security and future-coolness-enabling
     168      speed. Delivering in pycryptopp means no new dependency and no
     169      external parties to block.
     170    - future goal is to get python-ed25519 into debian, then switch Tahoe
     171      to depend on it instead. And/or once Ed25519 gets into Crypto++,
     172      remove the separate implementation from pycryptopp (i.e. remove one
     173      "p" from pycryptoppp) and have pycryptopp rely on Crypto++'s version.
     174    - also, get pycryptopp's ECDSA finished off in the ed25519-bearing
     175      release, just to have it available.