From 059903303ca44a7ba0dba272d8ecb06283427855 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Tue, 29 Mar 2016 12:55:51 -0400 Subject: [PATCH 1/8] makes sense to rename --- tools/gencert/ca/Makefile | 14 -------------- tools/gencert/ca/genca.sh | 13 +++++++++++++ 2 files changed, 13 insertions(+), 14 deletions(-) delete mode 100755 tools/gencert/ca/Makefile create mode 100755 tools/gencert/ca/genca.sh diff --git a/tools/gencert/ca/Makefile b/tools/gencert/ca/Makefile deleted file mode 100755 index 583baa7..0000000 --- a/tools/gencert/ca/Makefile +++ /dev/null @@ -1,14 +0,0 @@ - - -keyname=key.pem -certname=cert.pem -curve=prime256v1 - -ca: - # generate EC private key - openssl ecparam -genkey -name $(curve) -out $(keyname) - # generate a "signing request" - openssl req -new -key $(keyname) -out $(keyname).csr - # self sign the request - openssl x509 -req -in $(keyname).csr -signkey $(keyname) -out $(certname) - diff --git a/tools/gencert/ca/genca.sh b/tools/gencert/ca/genca.sh new file mode 100755 index 0000000..b6243ec --- /dev/null +++ b/tools/gencert/ca/genca.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +keyname=key.pem +certname=cert.pem +curve=prime256v1 + +# generate EC private key +openssl ecparam -genkey -name "$curve" -out "$keyname" +# generate a "signing request" +openssl req -new -key "$keyname" -out "$keyname".csr +# self sign the request +openssl x509 -req -in "$keyname".csr -signkey "$keyname" -out "$certname" + From 0a81205b067042e50efa666746b11706d9fb179c Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Wed, 30 Mar 2016 23:15:14 -0400 Subject: [PATCH 2/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 937145c..410a1e9 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ U2F layer: U2F Zero has a [true random number generator](https://en.wikipedia.org/wiki/Hardware_random_number_generator) (TRNG). It's used internally -for key generating and signing but it's also exposed to the user for other use cases because +for key generation and signing but it's also exposed to the user for other use cases because a good source of entropy can be useful. Generate random numbers from the device: From e3be28b2583e54a25d49f149fad0c763bcb0c7a9 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Wed, 30 Mar 2016 23:15:56 -0400 Subject: [PATCH 3/8] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 410a1e9..9c687a6 100644 --- a/README.md +++ b/README.md @@ -92,14 +92,14 @@ a good source of entropy can be useful. Generate random numbers from the device: -```python +```bash cd tools/u2f_zero_client ./client.py rng # output randomness at about 1400 bytes/s ``` Update the seed with user supplied data: -```python +```bash cd tools/u2f_zero_client cat /dev/random | ./client.py seed # update seed at about 410 bytes/s ``` From f17978c3335e53536e0144dc057ddea99595a361 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Thu, 31 Mar 2016 01:06:38 -0400 Subject: [PATCH 4/8] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9c687a6..9ede934 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ U2F Zero ======== +![](http://i.imgur.com/LpJVjvz.jpg) Overview ======= From db5ca823ff0a3ea92d1233d2bb562198d06f4f74 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Thu, 31 Mar 2016 10:24:05 -0400 Subject: [PATCH 5/8] accurate description of rng --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9ede934..3ac1684 100644 --- a/README.md +++ b/README.md @@ -86,9 +86,10 @@ U2F layer: ## Random number generation -U2F Zero has a [true random number generator](https://en.wikipedia.org/wiki/Hardware_random_number_generator) -(TRNG). It's used internally -for key generation and signing but it's also exposed to the user for other use cases because +U2F Zero has a [cryptographically secure +random number generator](https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator) +(CSPRNG) that implements [CTR_DRBG](https://en.wikipedia.org/wiki/NIST_SP_800-90A). +It's used internally for key generation and signing but it's also exposed to the user because a good source of entropy can be useful. Generate random numbers from the device: From f963a5ccdbdece33e5679c6c723fac2b819f5a00 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Thu, 31 Mar 2016 10:25:53 -0400 Subject: [PATCH 6/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ac1684..63c736f 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ U2F layer: ## Random number generation -U2F Zero has a [cryptographically secure +The ATECC508A has a tamper resistent, [cryptographically secure random number generator](https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator) (CSPRNG) that implements [CTR_DRBG](https://en.wikipedia.org/wiki/NIST_SP_800-90A). It's used internally for key generation and signing but it's also exposed to the user because From f0b25518a3408d159636b1c3dc0915ef0d99e446 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Thu, 31 Mar 2016 10:28:22 -0400 Subject: [PATCH 7/8] Update README.md --- README.md | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 63c736f..aaa912a 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,29 @@ The device also has an RGB LED for status indication and a button to receive use USB pins are exposed copper zones on the PCB. A 2mm thick PCB is recommended for best fit but 1.6 mm will work as well. +## Random number generation + +The ATECC508A has a tamper resistent, [cryptographically secure +random number generator](https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator) +(CSPRNG) that implements [CTR_DRBG](https://en.wikipedia.org/wiki/NIST_SP_800-90A). +It's used internally for key generation and signing but it's also exposed to the user because +a good source of entropy can be useful. + +Generate random numbers from the device: + +```bash +cd tools/u2f_zero_client +./client.py rng # output randomness at about 1400 bytes/s +``` + +Update the seed with user supplied data: + +```bash +cd tools/u2f_zero_client +cat /dev/random | ./client.py seed # update seed at about 410 bytes/s +``` + + Firmware ======== @@ -84,27 +107,6 @@ U2F layer: * u2f.h * u2f-atecc.c // device specific implementation -## Random number generation - -The ATECC508A has a tamper resistent, [cryptographically secure -random number generator](https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator) -(CSPRNG) that implements [CTR_DRBG](https://en.wikipedia.org/wiki/NIST_SP_800-90A). -It's used internally for key generation and signing but it's also exposed to the user because -a good source of entropy can be useful. - -Generate random numbers from the device: - -```bash -cd tools/u2f_zero_client -./client.py rng # output randomness at about 1400 bytes/s -``` - -Update the seed with user supplied data: - -```bash -cd tools/u2f_zero_client -cat /dev/random | ./client.py seed # update seed at about 410 bytes/s -``` ## Build a U2F Zero token yourself From 6a20646538bbd7551d70b6269ca173950f84b762 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Thu, 31 Mar 2016 18:18:57 -0400 Subject: [PATCH 8/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aaa912a..88851c7 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ U2F Zero ======== -![](http://i.imgur.com/LpJVjvz.jpg) +![](http://i.imgur.com/ZSk2AW3.jpg) Overview =======