[Cryptech Core] Raw notes from Cryptech meeting 2013-12-05
Rob Austein
sra at hactrn.net
Thu Jan 30 10:19:15 UTC 2014
[Insert Randy's slide deck here]
[Guy from Berlin : Peter Stugen]
- Goals for this week:
- What is "it"?
- Is "it" possible?
- Trying to get diverse backgrounds in hopes that this will provide
some open scrutiny of the design
- [Leif] Sunet has agreed to admin project, working on details. Basic plan
is independenty-held company -- SUNET per se has to do what
government tells it to do.
- [Patrik] Want non-profit
- [Leif] Will be
- Rathole on swedish corporate law
- Existing open crypto hardware
- [Guy from Berlin] says "open k" ?
- [Joachim] there is some
- No open source verilog compilers that we know of
- NL.net Foundaton is running low on money so may not be viable
funding source for us
- [Joachim] WHether you can get away with just a microcontoller
instead of FPGA depends on tradeoffs, speed requirements. First
release will be basic simple functionality; decision FPGA vs
microcontroller vs ASIC can come as later step.
- [Leif] BOF at last IETF says use cases are basically PKCS#11 with
some extras.
- [Peter] PKCS#11 is a bad fit, makes bad assumptions. Seems based
on MS-DOS.
- [Fredrik] PKCS#11 is kind of C-specific.
- Replacement for PKCS#11 as a task for us? Write our open thing
then write PKCS#11 wrapper for it?
- [Leif] M of N key also interesting
- [Fredrik] Sometimes you want to do conditional operations, or ask
the HSM questions like "if you do operation foo on this input, do
you get result X?" because this avoids leaking information.
- Speed
- [Joachim] One can get FPGAs with fast I/O. Not cheap, but
available.
- [Joachim] You can use do "soft core" to get a conventional CPU
into the FPGA. Other way is to add a physical core to FPGA,
they're available for a few hundred dollars.
- [Peter] One open source project doing bit-stream generation for
x86, very young project.
- [Leif] Might need protocol if we're going to support anything but
C; [others] not necessarily.
- [Patrik] Backup protocols are an issue.
- GOST
- [Patrik] Hard to get support. Guy who did GOST for OpenSSL has
been told never to talk to Fredrik again.
- RTC on chip
- [Fredrik] Auth token needs some time, maybe NTP good enough
- [Randy] Needs to be authentic, not necessarily incredibly
precise. NTP is not as obvious as people seem to think.
- Tamper resistance
- [Joachim] Ross Anderson's team has somebody who can hack AES keys
out of HSMs via power-based side channel attacks.
[Coffee break]
- [Leif] We probably don't want to build a massive consortium
- [Randy] Single reference design
- [Joachim] Prototype board, proof of concept
- [Peter] Staying generic for all use cases may be expensive, may need
to pick particular hardware for particular use cases
- [Leif] Bucket one: high assurance low speed? Do we try to figure
out what the other buckets are up front or as we go?
- [Fredrik] Perhaps two reference implementations : first with FPGA,
second for something like Raspberry Pi. Interface between green
and blue in Randy's layer cake has to be some kind of API in any
case, if we do it right we can implement blue in both Verilog and C.
- [Joachim] Need cipher modes. GCM etc. But also want to keep this
simple for first version: one block cipher, one digest, etc.
- [Joachim] Need C implementation of blue anyway for testing; this
will help with validation, assurance.
- FIPS
- [Leif] Russ advised not making FIPS a goal.
- [Randy] Keep an eye on it, don't break FIPS gratuitously.
- How many protocols
- [All] Probably one protocol bue/green
- [Fredrik] Possibly extensible at green/yellow: ability to add
proprietary extensions to one's green and use it from one's
yellow.
- [Fredrik/Leif] Need to support OATH? [?]
- [Joachim] IPR in verilog libraries, there is some, not clear whether
it's relevant to our use cases.
- ECC
- [All] IPR is a swamp.
- [Randy] RFC 3717 (Bernstein) as initial target?
- How does making the curve replacable affect the blue/green
boundary? Blue pokes up into green, green pokes down into blue?
- [Linus] Designing for understandability, might be willing to accept
slower implementation to be able to understand it.
- [Linus] How do we position (publicly) initial development? Talk
about use case(s)?
- [Leif] If we talk about, eg, testing with DNSSEC, people will
assume this is just about DNSSEC, etc. Really want abstraction
layer.
- [Joachim] Use cases are important for figuring out the primatives.
- [sra] Maybe say we're doing (useful subsets of) DNSSEC and X.509
as initial use cases. Maybe add TLS too.
- [Linus] Signing "the TOR consensus" as a use case. Once an hour,
a couple of perhpas trustworthy TOR relays get to vote on what the
TOR network map looks like at the moment, and sign the resulting
map. These are working keys, regenerated every 6-12 months.
- [Fredrik] Audit log of what's signed. HSM receives entire content
to be signed, not just hash, and logs what it's signing out some
kind of output device.
- [Patrik] Also want count of how many things have been signed.
- [Fredrik] Counter thing may be what current HSMs can do, as
opposed to what the application code would want
- [Leif] Fun with fingerprinting to verify that HSM was built with our
spec.
- Long confusing discussion.
- [Randy] How to do without opening side channel attack.
- [Linus] That's what test vectors are for.
- [Joachim] When testing RNG it's nice to be able to tap the entropy
source itself in addition to just testing the RNG output; without
this it's difficult to be certain that there really is a hardware
entropy source or just a good PRNG and seed. [War stories about
fun broken RNGs]
- [Peter] Need people to do review.
[Lunch]
- License
- [Joachim] We're likely to be pulling in stuff we didn't write, so
we may have to live with multiple licenses (BSD, GPL2, etc).
- [sra] I propose BSD due to low barrier to entry. Room proably OK
with this.
- [Joachim] OpenCores kind of likes GPL but existing OpenCores stuff
is BSD [I think this is what Joachim said...].
- Components
- SHA-256
- AES-128
- EC 3617 need to investigate what's available
- RSA 2048 and 4096
- Which of these go on which side of the blue/green boundary is a
little unclear; side channel attack issues across blue/green
interface.
- MAC functions are in green
- DH in green with exponentiation in blue, for now
- passphrase stretching (PBKDF2)
- Verification of these pieces
- [Peter] Can we ever dispense with the green layer? Assuming
OpenRISC, we now have to verify all of OpenRISC.
- [Several] Easier to verify that a green box behaves as it should,
well, sort of, in theory.
- [Randy] Can't just blow RISC into an FPGA to test unless it's a
RISC core that already exists in other forms (eg, ARM) so that you
have something against which to verify it.
- [Joachim] On Bunny(?)'s laptop test environment, green probably is
not running on the FPGA, which makes blue easier to verify but
leaves green for later.
- [Peter] Look at 1132 (?) processor.
- [Peter] Can we use this for GPG smart card protocol in v1?
- [Fredrik] This is an example of needing more than just PKCS#11
across green/yellow interface
[break]
- Off-FPGA key storage inside security boundary
- [Joachim] Flash encrypted? Battery backed and tied into tamper
detection circuitry? FIPS requires that battery have enough power
to wipe key memory rather than just powering off RAM on tamper.
- [Fredrik] ARM with enough flash for key
- [Randy] Or battery for tamper detection is big enough to power the
blue/green processor to keep keys alive
- Red layer: skip OTR for chip 0.1, needs DSA and non-PGP case.
- Yellow layer:
- PKCS:
- [Peter] Do we even need all this PKCS#8 etc glop?
- [sra] Long term, do we need to support things like PKCS#10 for
chip that will only generate a certificate after inspecting the
request?
- Backup and private key sharing between HSMs
- [Peter, sra] Not necessarily same operation
- [Peter] Want ability to leave this out (composability)
- [Randy] Propose punting this from 0.1
[Randy left to take concall]
- [Linus] Can we do ssh as another demo for 0.1.
- [Peter] We get this for free with the things already on our list.
- [Fredrik] If we're already supporting the OpenPGP key protocol for
GPG, might just use that for SSH instead of PKCS#11.
- [Fredrik] SSH client is easy, SSH server may not have hooks for
HSM.
- More use cases (not for 0.1):
- [Fredrik] I want a really good hardware-backed password manager.
- SoftHSM
- [Patrik] Lot of stuff in SoftHSM, need to make sure how much of it
that's be useful here. C++ code.
- [Leif] Worry about threads.
- [Fredrik] Need some kind of concurent access control on
green/yellow interface.
- [Fredrik] Maybe we can use SoftHSM as our PKCS#11 and just use
SoftHSM v2's back-end protocol to talk to our private yellow/green
protocol?
- M of N signature
- [Leif] Do we need to extrude knowledge of this being M of N into
the box? How far down?
- [Fredrik, sra] [simultaneously invent same algorithm for
geographically distributed m of n signature; neither of us knows
whether anybody actually uses this]
- [Leif] Some of these things use math rather than just a protocol.
- [Fredrik] look at SSSS.
[Winding down]
- [Joachim] It may be possible to split Verilog stuff into two
separate pieces: generation of the net from the Verilog source vs
optimization of the net. Open source likely critical for the first,
not so much for the second if we have open source tools that will
let us compare optimized with non-optimized to confirm they're the
functionally equivalent.
More information about the Core
mailing list