8 ms·
Neat little device, looks like a Yubikey clone. One could get a similar device by hacking a Logitech unifying receiver, which contains a ..16MHz 8051 clone in i
by utopcell 8y ago
Neat little device, looks like a Yubikey clone. One could get a similar device by hacking a Logitech unifying receiver, which contains a ..16MHz 8051 clone in it, and a radio to spare.
- dtornabene 8y agothats ultimately the intent, to build a Yubikey-like security key, with everything open down through the firmare to the details of the soc
- colemannugent 8y agoAt some point won't you run into IP issues with the ARM SoC? Plus how would you deal with things like power analysis attacks that require modifying hardware to fully mitigate?
- TickleSteve 8y agoARM IP is bought by the manufacturer of the device, in this case Silicon Labs. What IP issues can you imagine happening considering ARM SoCs are the most widespread processors in existence with many, many different manufacturers? Regarding side-channel attacks such as you mention, all processors are subject to this vulnerability to various degrees. Do not expect a project such as this to have any mitigation for that type of attack.
- askvictor 8y agoOne key (pardon the pun) requirement of a 2FA key is that it can't be cloned - how would this be prevented? Can the microprocessor be locked to prevent reading its flash memory?
- bsder 8y agoNewer microcontrollers like the Microchip(nee Atmel) SAM-L11 are implementing ARM TrustZone with hardware security features.
- caro_douglos 8y agoit can be read protected. https://www.makomk.com/2016/01/23/openpgp-crypto-token-using-gnuk/ https://www.makomk.com/2016/01/23/openpgp-crypto-token-using...
- bacon_waffle 8y agoThe micro in Tomu is like most other modern micros, in that it has multiple lock bits around access to flash, for various purposes. Specifically, one bit prevents anything but the running program - ie the debug port - from reading flash. The only way to clear that bit is to erase the entire flash, with the notable exception of the user data section, so don't put the secret in there :). Relevant recent discussion: https://news.ycombinator.com/item?id=17587673 https://news.ycombinator.com/item?id=17587673
- pkaye 8y agoYears back I used to work for a company that built 8051 clones. It was possible to prevent the microprocessor from reading the flash memory because the 8051 has a separate program memory and data memory space.
- vardump 8y agoI don't understand how that helps to prevent reading anything. 8051 can read data from both CODE and XDATA memory spaces. See: http://www.keil.com/support/man/docs/is51/is51_movc.htm http://www.keil.com/support/man/docs/is51/is51_movc.htm
- pkaye 8y agoForgot to mention those two instruction will be disabled in flash protected mode.
- gonzo 8y agoATECC608A
- sametmax 8y agoGenuine question: if you can't clone your 2FA, how do you make spares like a house key ? If there is way to get a spare, what's the way to deal with key loss or shared access ?
- jon-wood 8y agoYou don’t make a copy, you add an extra key. (Almost?) all services that support 2FA keys allow you to add multiple keys.
- dspillett 8y agoEssentially you have a to configure the account/device you are authenticating with to accept multiple keys permanently (so you can have spares) or temporarily (replacing a key by registering a new one then revoking the old). In the case of key loss on a properly secure service registering a new key could be problematical if you don't have any other key that is still appropriately registered - you might be permanently locked out unless there is an admin function who has a key registered so can do it for you. Look at multi-key options for encrypted filesystem for one way that this can work. Often the filesystem or block device has a symmetric key that is in turn encrypted by each of the keys that you wish to be able to open it. It is the same symetric key every time, though you can't unlock my copy of it with your key nor can I unlock your's. Once unlocked we could both add a third user by encrypting the base key with their public key (PKI is not required, but is not uncommon).
- sametmax 8y agoOk, so you if you want 9 keys (3 persons in your family has access, have one local spare, and one off site), and 4 services, you need to do 36 registrations of keys ? Is there a standard to automate that ?
- dspillett 8y agoYou don't need one key per service, so that is as little as 5 keys (3 for active users plus the on-site and off-site spares). You may choose to have more than one key per person, to reduce the amount of re-registering needed if one key is lost, though remember that this is the second factor so you also already have passwords that vary by service (and if you give people multiple keys they will most likely carry them together to lose them all at the same time rather than individually anyway).
- lisper 8y agoYou should check out: https://sc4.us/hsm/index.html https://sc4.us/hsm/index.html (Disclosure: this is my project.)
- aftbit 8y agoHi there - neat project! I'm always interested in open hardware for cryptography, so thanks for contributing to the space. :) That said, this quote concerns me: >The SC4-HSM is designed to defend against a compromised client machine, i.e. an attacker who pwns your laptop or desktop machine. If you think about it, this is the only threat model that makes sense for dedicated secure hardware. If you can trust that your client machine is secure, you don't need an HSM. From my prospective, that's the bare minimum threat model for an open secure hardware device. I also include unsupervised physical access to the device. My ideal HSM would also provide robust protections against a myriad of complex hardware-level attacks - JTAG debugging, power & RF analysis, glitching, de-encapsulation just to name a few. Of course, a cheaper HSM which lacks advanced hardware level protections can still offer a lot of protection against common threat vectors, and physical access threats can be mitigated to some extent by keeping the device in a secure location or on your person.
- lisper 8y ago> that's the bare minimum threat model for an open secure hardware device Yes, I agree. But if you think about it, that can't be done by a device that does not have dedicated I/O, and two LEDs are not enough. At a minimum you need something capable of displaying a cryptographic hash if you want to protect against an pwned host.
- dtornabene 8y agothis is really cool! thanks for sharing it here, I'll definitely dig in deeper on it. I've been following Tomu development for over a year now (two?) I've got one on desk right now, the ideas that mithro cares about, the open hardware, are very important to me and I'm glad to see as much development in the space as possible.
- 8y ago
- ecesena 8y agoIf size doesn't matter, U2F Zero [1] is an open u2f security key. And we're about to unveil the upgrade to fido2... Edit: added link [1] https://u2fzero.com https://u2fzero.com
- ZiiS 8y agoHere is my more compact layout [1]. Twice the Tomu, but at a certain point that just makes it easier to extract. The big advantage of tomu's size is you can leave it in a laptop port, but that is the last thing you want to do with a security device. [1] https://github.com/BarnabyShearer/u2f-zero https://github.com/BarnabyShearer/u2f-zero
- tlrobinson 8y agoA Yubikey clone where you have to tap out a passcode (morse code style) might be neat.
- ateesdalejr 8y agoI would be concerned about the inherent audio security issues that solution might have...
- ReverseCold 8y agoRequire both the physical device and the tap code, mabye.
- DarkWiiPlayer 8y agoMaybe apply some pressure instead of tapping? Same effect, but with less sound, so you'd need a really good mic, or something crazy like pointing a laser at the device/hand, and if that's the kind of attacks you're facing, you don't go for a device that costs 30$ xD
- CrazyPyroLinux 8y agoLike one of these? onlykey.io
- CoolGuySteve 8y agoI feel old knowing my Logitech USB receiver is roughly as powerful as the Gameboy Advance I bought in college.
- boomlinde 8y agoAt roughly the same clock speed I think the 32-bit ARM7 in the Gameboy would actually run laps around an 8-bit 8051.
- Zardoz84 8y agothe original Gameboy had a Z80/8080 hybrid.
- keir-rex 8y agoThat statement confused me too... I think she/he means the Game Boy Advanced (ARM7TDMI @ 16.78 MHz): https://en.wikipedia.org/wiki/Game_Boy_Advance https://en.wikipedia.org/wiki/Game_Boy_Advance
- boomlinde 8y agoThe post I am responding to is talking about the Advance model, not the original.
- vardump 8y ago50 MHz 8051 can usually be beat by 1 MHz ARM CPU. 8051 uses several (typically 4 or 12, etc. [1]) clock cycles for one actual machine cycle. So an instruction that takes "2" cycles, can actually take 24 clock cycles. Of course, some modern 8051 clones are more efficient. Some of them can execute one instruction per actual clock cycle. Even then, one ARM instruction can often do work of 2-10 8051 instructions. 8051 is particularly bad at pointer arithmetic (except incrementing pointer by one) and, of course being an 8-bit CPU, 16/32 bit math. [1]: ftp://ftp.ti.com/pub/data_acquisition/MSC_CD-ROM/8051_Tutorial/tuttimng.html "Microcontrollers (and many other electrical systems) use crystals to syncrhronize operations. The 8051 uses the crystal for precisely that: to synchronize it’s operation. Effectively, the 8051 operates using what are called "machine cycles." A single machine cycle is the minimum amount of time in which a single 8051 instruction can be executed. although many instructions take multiple cycles. A cycle is, in reality, 12 pulses of the crystal. That is to say, if an instruction takes one machine cycle to execute, it will take 12 pulses of the crystal to execute. Since we know the crystal is pulsing 11,059,000 times per second and that one machine cycle is 12 pulses, we can calculate how many instruction cycles the 8051 can execute per second: 11,059,000 / 12 = 921,583 This means that the 8051 can execute 921,583 single-cycle instructions per second. Since a large number of 8051 instructions are single-cycle instructions it is often considered that the 8051 can execute roughly 1 million instructions per second, although in reality it is less--and, depending on the instructions being used, an estimate of about 600,000 instructions per second is more realistic."
- hasperdi 8y agoCould you share information of how one could do this? I looked it up on Github but could not find anything related to what you mentioned.