88 lines
3.2 KiB
Markdown
88 lines
3.2 KiB
Markdown
Cryptochip Demo Application
|
|
===================================
|
|
|
|
This application produces random output using the internal high-quality
|
|
FIPS Random Number Generator (RNG) from the ATECC508A Atmel Cryptochip.
|
|
|
|
The random data is written in binary to the standard output, allowing to
|
|
easily use any data analysis tool (using a pipe, or redirecting the output
|
|
to a file for later analysis).
|
|
|
|
This tool is provided as a simple example application to use the CryptoAuthLib
|
|
software, which provides an interface to the Atmel cryptochip. It can also be
|
|
used to validate the cryptochip and the I2C communication.
|
|
|
|
A final application that needs to use the Atmel Cryptochip RNG should integrate
|
|
calls to the cryptoauth library, as shown in this example application source
|
|
code.
|
|
|
|
Running the application
|
|
-----------------------
|
|
The output of this application mimics what you would get by reading from a
|
|
standard random number generator, like /dev/random.
|
|
|
|
For example, you can get hexdump to display a random sample on the standard
|
|
output:
|
|
```
|
|
~# ./cryptochip-gen-random | hexdump
|
|
0000000 6239 ddd4 b378 693f 14ed bfa1 447b cff1
|
|
0000010 275e fd14 e392 2b4a c2ff ac93 0f5e cbab
|
|
0000020 16c1 e6b7 a458 c5ea c96f 59c9 776a 41c5
|
|
0000030 a656 ffa8 2076 6917 f18a e9ad 9ea1 7915
|
|
0000040 b677 aec3 a0a2 c7b6 c8ce 2a1f aa6c d9fc
|
|
0000050 f75c 3b57 eea4 051b 3a5f 7bd9 523f 4544
|
|
0000060 cb1a 388c b655 e8ca d6eb e459 8a43 cd2f
|
|
(...)
|
|
```
|
|
|
|
You can also save the random data to a random file for later analysis:
|
|
```
|
|
~# ./cryptochip-gen-random | pv --rate > data.bin
|
|
[ 912 B/s]
|
|
```
|
|
|
|
And then run an entropy test:
|
|
```
|
|
~# ent data.bin
|
|
Entropy = 7.998261 bits per byte.
|
|
|
|
Optimum compression would reduce the size
|
|
of this 291808 byte file by 0 percent.
|
|
|
|
Chi square distribution for 291808 samples is 706.41, and randomly
|
|
would exceed this value less than 0.01 percent of the times.
|
|
|
|
Arithmetic mean value of data bytes is 127.0582 (127.5 = random).
|
|
Monte Carlo value for Pi is 3.149895135 (error 0.26 percent).
|
|
Serial correlation coefficient is 0.000944 (totally uncorrelated = 0.0).
|
|
```
|
|
|
|
Compiling the application
|
|
-------------------------
|
|
This demo can be compiled using a Digi Embedded Yocto based toolchain. Make
|
|
sure to source the corresponding toolchain of the platform you are using,
|
|
for example, for ConnectCore 6UL:
|
|
|
|
```
|
|
~$ . <DEY-toolchain-path>/environment-setup-cortexa7t2hf-neon-dey-linux-gnueabi
|
|
~$ make
|
|
```
|
|
|
|
For more information, see the [Digi Embedded Yocto online documentation](https://github.com/digi-embedded/meta-digi).
|
|
|
|
License
|
|
-------
|
|
Copyright 2017-2023, Digi International Inc.
|
|
|
|
Permission to use, copy, modify, and/or distribute this software for any purpose
|
|
with or without fee is hereby granted, provided that the above copyright notice
|
|
and this permission notice appear in all copies.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|
THIS SOFTWARE.
|