avatar

jbdatko

Member Since: October 6, 2013

Country: United States

Profile

Blog: www.datko.net

Crypto Shield Hookup Guide

April 23, 2015

How to start using the CryptoShield for Arduino, created in collaboration with Cryptronix.

CryptoCape Hookup Guide

May 29, 2014

The CryptoCape is a collaboration with Hacker In Residence alumni Josh Datko. The CryptoCape is the BeagleBone's first dedicated security daughterboard.
  • You certainly could. If that’s what you want to do it’d be cheaper to buy a Pi2 and do that :)

    The value, IMHO, of the shield is playing with specific crypto ICs. The other feature that’s nice, with the ATECC108, is that the chip will generate a private key that can’t be read. It can still be used for signing, but it would be very difficult for that key to be compromised by some extraction method.

  • As of 28 April, this is the run down:

    ATECC108 (examples). There’s really only one killer feature here and it’s signing. The signing example works as per the example. The trick is, first you need to personalize the device, which I should have an example up for this soon. The code is there and kinda-ish works. It completely works on a Linux board, I just need to fix some bugs on the Arduino code.

    See above for ATSHA204. The trick with the ATSHA204 is that you need to load MAC keys. MAC keys are only good if somebody else has a copy or can derive them. So, to personalize with Arduino is a bit tricky because it’s a one-shot deal and you must save of the MAC keys. It’s much easier to personalize with linux (in both the ecc108 and 204).

    ATAES132 is an Atmel Studio Library only.

    Both the 108/204 also have a Atmel Studio library which you can use.

    The TPM honestly going to take some serious programming effort on the Arduino as explained here. I don’t plan to port a TPM driver to a 328p any time soon. Linux is hands down, the way to go.

    The RFID socket has an example sketch.

    The RTC needs an external lib, something like this.

    If you are curious on following the development of the 204/108 library you should follow the GitHub repo.

  • The Arduino library, which is a WIP, is here. Be sure to checkout the hookup guilde because some of the chips are a lot easier to (currently) work with on a Linux board that supports the R3 footprint.

    My library is essentially a wrapper around Atmel’s library. I haven’t exposed all the features of their library yet, but it does build in the Arduino IDE and exposes some basic commands.

  • Yes. We are applying for the commodity encryption paperwork, but until that comes in we can’t export it. It’s government paperwork and the CryptoCape took a month or two after the product launch for the certificate.

    /begin rant

    I would really like to see this changed. This is, IMHO, a horribly outdated law that doesn’t make sense anymore. I believe it’s the case that each of this ICs are actually imported into the U.S. but when you combine them into a new product, well that’s a new product. So then we have to follow U.S. export laws.

    /end rant

  • I think I’m the only one who likes that RTC :)

    Somebody just pointed me to PCF85263A yesterday. That one has a watchdog feature which I think this guy doesn’t have, which is cool. Although you could set alarms and emulate that with Time-of-Day alarms but it’s not quite the same…

    I was looking for something to hold time in the weeks/month offline use-case. I initially thought the stability of a mobile-type project would be interesting an this RTC is automotive rated, but maybe not many people are using in shaky situations ;)

  • You mean like BOB’s like the one for the one-wire ATSHA204? I could see that… Honestly, what I do is I have a SOIC-8 socket that I pop these chips in and out for testing. Also, I’ve use SparkFun’s SOIC-8 BOB and these chips fit nicely on them (go figure ;) ).

    Where I’ve like the shield form-factor is that I’ll have two dev boards, an UNO and a SAMA5D3 for example, and I can run some stuff with the linux driver on the SAM and then pop it over to the UNO. So, having the same form factor in those cases seems convenient.

    But yeah, smaller and cheaper is always better :)

    Valid point about software too. I like this uECC implementation. However, on an AVR, it’s much slower so there are some cases where the chip does help a bit.

  • Thanks for bringing this up. I would really like to see a similar IC with Ed25519 support. I think if the demand signal increases for this curve manufactures will start to pay attention.

    While I’m putting in my wishlist for curves, I’d also like an IC that did secp256k1 so that it could store Bitcoin keys. If a certain manufacture made a curve that supported both I would think that would be a very popular IC.

    And while I’m asking for things, it would be great to have an IC that supported the NaCl ciphers too!

    There is actually a very cool Open Source Hardware project going on called Cryptech where they are making a full HSM device. It is a very exciting project and I can’t wait to get my hands on one! (I think they are in early design development now).

    The 108A is a very nice enhancement to the 108. They are a bit hard to get now though but it’s a pin-for-pin replacement for the 108 so we could swap it out in a later revision.

  • Good catch and sorry about the confusion. It’s the AT97SC3204T. The ’T' indicates ‘TWI’, which is I2C. The AT97SC3205T is the “newest” Atmel TPM which is a bit nicer IMHO (no external oscillator and some other improvements) but it’s still not in distributor inventory.

    I think the problem was finding the summary datasheet, which doesn’t really you tell you much anyway.

  • What I mean by trusted is along the RFC 4949 definition:

    that the system meets its specifications (i.e., the system does what it claims to do and does not perform unwanted functions).

    Once you load firmware on the ATmega, with the jumpers off, it’s difficult to change that firmware from software. So, the BeagleBone can trust the execution on the ATmega. If the BeagleBone’s software is compromised, it’s difficult to comprimise the software on the ATmega. I had meant it to be like a DIY TPM.

    You have to implement your own i2c data format. The ATMega can act as a i2c master and/or slave. You can use the Arduino Wire libraries if you’d like. As a master, it can interface with any of the crypto chips on the board. In fact, if you provide a power supply to the board (and regulator), it is in essence, a Pro Mini.

    I’ve found it very handy to have a MCU that is both a master and slave. You can check out my DEFCON talk where I use the ATmega as a slave device to relay messages from the BeagleBone to a PC.

  • Hey Mark,

    Casey is spot-on, the BeagleBone reserves those four i2c addresses for cape EEPROMs and it prevents any other kernel module from instantiating at that location. I would always expect to see that result from i2c-detect with or without that proto-cape.

    BTW, there is a very good tutorial on BBB capes here and I wrote a tutorial on some BBB i2c specific issues.