= Joachim Strömbergson =
== Bio ==
== Current activities ==
* Developing coretest - a core testing framework for FPGAs.
* Implementation of UART
* Verification of SHA-256
* Verification of SHA-1
* Implementation of AES-128
* Design proposal for TRNG
* Design proposal for Curve25519 accelerator
== Work Notes ==
=== Presentations from meeting 2014-03-10 (updated and extended):
* [browser:/doc/presentations/Cryptech_HW_status_2014-03-10.pdf "Cryptech HW status 2014-03-10"]
* [browser:/doc/presentations/Cryptech_TRNG_Ideas_2014-03-17.pdf "Cryptech TRNG Ideas 2014-03-17"]
=== Open EDA Tools ===
* http://torc-isi.sourceforge.net/index.php - Torc is an open-source C++ infrastructure and tool set for reconfigurable computing
=== Curve25519 ===
We need to create an accelerator or possibly a complete implementation of the Curve25519 EC based DH-excgange. We should be able to look at some previous work:
* http://eprint.iacr.org/2013/375 - NaCl on 8-Bit AVR Microcontrollers. Includes an iterative implementation of Curve25519
* http://cryptojedi.org/crypto/index.shtml - The code to the implementation
* http://nacl.cr.yp.to/ - The main NaCl library by DJB.
* http://cr.yp.to/ecdh/curve25519-20060209.pdf - The Curve25519 paper by DJB.
== Pre meeting notes ==
=== Stockholm 2013-12-05 - 2012-12-06 ===
Preparation notes for the OpenHSM meeting 2013-12-05 --
2013-12-06. The notes contains topics, questions and ideas
I want to bring up, check and discuss on the meeting.
Philosophy
----------
- How to build trust in the project?
- Total openess and transparency
- Traceability of decisions
- Focus on simple third party validation
- Partitioning of security functions
Project goal
------------
- Low cost vs high performance
- Scalability
- Functionality
- Performance
- Security
- Target system
- Performance
- Self contained, external
- USB,
- Ethernet
- Integrated
- PCIe
- Mem module
- SD card
- Target users
- Single user
- Enterprise
- Roadmap and development plan
- Prototyp - första målplattform
- Establish first Use cases
- Deliveries
- Proof of concept, prototype
- Self assembly and/or finished product
- Source code for SW, HW
- PCB
- Enclosures
- Development environment
- Test, validation environment
- Tool development
- Time plan
- Start when
- Proto when
- v 1.0 when
Project management
------------------
- Status financing
- Ownership
- Oveerseeing board
- IETF, ISOC,... ?
- Advisory board
- Reviewers, external experts
- FPGA key extract dude
- DJB
- Team
- Addtiona competency needed?
- Project security
- Communication
- ...
Development general
-------------------
- License(s)
- GPLv2, v3
- BSD
- Methodology
- Agile
- Minimal functionality in PoC
- Clear increments
- Repository
- Github
Technology
----------
- Target technologies
- FPGA (+ internal, external CPUs)
- ASIC
- Pure CPU based
- Target PoC board
- Select one early
- Toolchains and languages
- SW
- HW
- Verilog 2001, 2005, SystemVerilog
- Icarus, gplcver
- Vendor specific
- Validation of bitstream
- Edge of trust, dowm the Rabbit hole
- Security support in design
- JTAG
- BIST for functionality
- BIST for security
- KATS
- On-line self check
- RNG
- Pathological problems
- Stuck at fixed values
- variance
- bias
- Reuse of existing design, code?
- Cores - OpenCores
- OpenRISC
- AES, SHA, RSA
- SoftHSM - DNSSEC PKCS#11
- Nettle
- ...
- On chip 32-bit or 64 bit CPU core
- OpenRISC
- LGPL
- http://openrisc.net/
- http://opencores.org/or1k/Main_Page
- https://en.wikipedia.org/wiki/OpenRISC
- RNG
- More than one entropy source
- Just external sources
- User/vendor/implemented supplied
- One external, one internal
- YubiHSM entropy source: https://www.yubico.com/products/yubihsm/
- Haveged: http://www.issihosts.com/haveged/
- DakaRand: http://dankaminsky.com/2012/08/15/dakarand/
- Jytter a userspace RNG: http://www.chronox.de/
- CPU Jitter RNG: http://www.chronox.de/
- CSPRNG based on Linux, OpenBSD, Fortuna, NIST etc.
- NIST SP 800-90. CTR_DRBG
- Fortuna https://en.wikipedia.org/wiki/Fortuna_PRNG
- Schneier, Ferguson. No estimator needed.
- OpenBSD arc4random: http://www.openbsd.org/cgi-bin/man.cgi?query=arc4random&sektion=3
- Raw read access in test mode to collected entropy pre whitening
- Write access in test mode to CSPRNG
- No key generation etc allowed during test mode.
Technical requirements
----------------------
- Functional requirements
- TLS 1.x
- Need roadmap for functions
- AES, SHA-256, DH, RSA first iteration
- Why GOST?
- Why MD5?
- Curves supported?
- Curve25519
- NIST, IEEE, RFC 4xxx
- HW/SW partitioning
- Modularity
- API
- DMA, buffering, formats
- PKCS#11
- Observability and control
- Security requirements
- Common Criteria - EAL
- FIPS 140-2 level 3-4
- Performance
- Operations/s
- Packets per second
- Latency
Validaiton
----------
- Methodology
- Unit tests, KATs
- Documentation
- What to document
- How
- Reviews
- Plan for them
- Who to ask
- Tools
- Valgrind, Purify, linters
Documentation
-------------
- Meetings
- Discussions, MoMs
- Decisiona - motivation
- Design
- Test and validation