10 ms·
Tomu, a tiny ARM microprocessor which fits in your USB port
- utopcell 8y agoNeat 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.
- 8y ago
- 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.
- 0xb100db1ade 8y agowould it be difficult/possible to use this as a smart card with the proper code?
- ggm 8y agoWant. Want that, and SSH keystore, and 2FA boss.
- sowbug 8y agoGnuK (http://www.fsij.org/doc-gnuk/ http://www.fsij.org/doc-gnuk/) implements an OpenGPG Smart Card. Unfortunately, it targets STM32 chips with 128KB flash and 20KB DRAM, and the EFM32HG309 in the Tomu is only 64KB/8KB. I don't know how much work it would be to squeeze the code into the Tomu.
- opencl 8y agoYou should be able to use other chips in the EFM32 family as a drop in replacement, obviously requires soldering your own board. Seem to be available with up to 128K flash and 16K RAM. Of course the GnuK site lists some STM32 boards designed specifically to run GnuK. Or if you don't care about open hardware you can buy a $2 STLink clone on aliexpress and flash GnuK on it.
- mithro 8y agoSadly, I don't think there is a bigger EFM32 which has the same footprint but maybe they have released new parts since I last looked. IIRC GnuK uses the chopstx library which has already been ported (see https://github.com/im-tomu/chopstx https://github.com/im-tomu/chopstx). Not sure what else would need to be done?
- deleted 8y ago[deleted]
- h4rl3quin 8y agoI am porting gnuk to tomu. Check the links below. Any help is appreciated! Dev: https://github.com/aze00/gnuk/tree/efm32 https://github.com/aze00/gnuk/tree/efm32 PR: https://github.com/im-tomu/tomu-samples/pull/35 https://github.com/im-tomu/tomu-samples/pull/35 Issue: https://github.com/im-tomu/tomu-samples/issues/4 https://github.com/im-tomu/tomu-samples/issues/4
- jacob019 8y agoalso great for espionage
- ggm 8y agowell.. I'd probably disable the flashing LEDs. But, that aside, I too thought "oh cool... a complete ARM system in my USB.. what could possibly go wrong here" But, the other side of this is: this is precisely what every closed-box USB device I plug into my USB potentially IS. This is just the overt "hi I'm an awesome tiny computer" state we're actually living in, all the time TL;DR how do we know we aren't exposed to these devices all the time?
- MrMorden 8y agoEvery keyboard has an MCU. They used to be 8051s, but now ARM (or PIC or AVR) is more likely.
- ggm 8y agoEach time I do the OSX "need to reboot" thing and it sits at the equivalent of BIOS blowing driver updates for things like this, I think "yea, i hate BIOS, but at least I get told which devices are being re-coded" -with OSX, its a bit more opaque. "trust us"
- TrainsParent 8y agoecho "Now we're going to upgrade your storage capacity, please wait." rm -rf / Don't trust the status messages; they could be manipulated to anything, in practice. Counter-practice; I mean.
- vidarh 8y agoI loved pointing out to people that my Amiga 500 and Amiga 2000 both had a 6502 compatible CPU as the keyboard controller (it had an onboard PROM and tiny amount of RAM, so there wasn't much you could do with it, but it was awesome at the time to upgrade from a 6502 compatible machine to one that had a similarly powerful CPU in the keyboard. But of course the C64 floppy drive (the 1541) had an actual 6502 in it, and enough memory and ability for you to download programs over the serial port... In other words, we've been in this world for a very long time - a lot of peripherals used to have fully fledged CPUs in them already in the 70's in some cases, and some of them were user-programmable. The reduction in this in the early PC era was an exception, not the norm.
- sixothree 8y agoMy eyes.
- itomato 8y agoThey can also run Commodore 64 BASIC. Sadly, the ARM part only has 8K RAM. https://www.pagetable.com/?p=956 https://www.pagetable.com/?p=956
- dtornabene 8y agotrue, but the next generation has I believe 64k (or more) of RAM.
- bArray 8y agoI can recommend the DigiSpark as a cheaper, slower, alternative that works with the Arduino IDE [1]. Somebody could easily get it into a smaller form factor. I've bought some of the official versions in their KickStarter and whenever I buy through some company/research funding - but can also recommend the cheaper Chinese implementations to be just as good for projects. [1] http://digistump.com/products/1 http://digistump.com/products/1
- craftyguy 8y agoThat doesn't fit entirely within the USB port like the Tomu, and it's out of stock (with no eta).
- bArray 8y ago>That doesn't fit entirely within the USB port like the Tomu, No, but it would be possible to get something more low profile with some work. For most projects I would imagine it's low profile "enough". For a practical joke (because I'm cool/evil), I plugged one of these devices into the back of somebodies desktop PC and it would occasionally output a random character (either G, H, J or K). I thought the same would be amusing for mouse control too. You can get it to ultra-low power states too if you replace the power drop down (which consumes about 10mA from memory) and build a low power monitoring device. >and it's out of stock (with no eta). That's a shame. Erik is currently working on a 3D printer, it's likely this takes up most of his time now [1]. The clones are readily available though [2]. [1] https://www.kickstarter.com/projects/robotic-industries/buildone-99-3d-printer-w-wifi-and-auto-bed-levelin/description https://www.kickstarter.com/projects/robotic-industries/buil... [2] https://www.banggood.com/search/digispark.html?sbc=1 https://www.banggood.com/search/digispark.html?sbc=1
- askl 8y ago> and it's out of stock You can get clones from china on ebay for about $5.
- a-ve 8y agoSpeaking of processors on a USB stick, is there any cheaper alternative to the USB Armory? : https://inversepath.com/usbarmory https://inversepath.com/usbarmory
- woodrowbarlow 8y agoyou can get 10 tomu devices for less than the price of a single usb armory.
- mistaken 8y agoYou can buy a raspberry pi zero which has the same functionality.
- squarefoot 8y agoThe mcu used has a lot more ports available but size poses some limits, however an IR LED+photodiode/transistor could be a nice viable addon, so that it could be used as a bridge to any circuit implementing IR serial communications, or allow communicating with it when it's plugged in a USB supply only port.
- askvictor 8y agoHold on - doesn't having this live permanently in the USB port reduce the security possible with a 2FA device? If the user has to get the key from their pocket and plug it in, it will at least prevent an attacker from accessing the user's account in a remote-desktop scenario. Certainly the requirement to press the button will mitigate this risk to a degree, but might there be exploits that can trigger this button-press event using a carefully crafted USB signal? I understand the security vs usability thing, just beware of the risks of something like this (perhaps bluetooth-type keys like this are more usable as you don't need to bother plugging them in, assuming bluetooth decides to play nicely)
- nickpsecurity 8y agoFirst image that popped into my mind seeing the title was this: https://leaksource.files.wordpress.com/2013/12/nsa-ant-cottonmouth-i.jpg https://leaksource.files.wordpress.com/2013/12/nsa-ant-cotto...
- plttn 8y agoMy assumption is that if Google (which deploys the Yubikey Nano across their employees) is willing to make the leap that there'd be no way to trigger the button press via USB, then assuming Tomu has done their due diligence, it's impossible to do so on here.
- 0culus 8y agoI think the YubiKey nano is intended to be left in a port. I don't leave mine in though (keep it on my keyring!)
- qop 8y agoDon't you think they'd have thought that through? I admire your diligent concern, but I thought the same thing for a split second and dismissed it. I can't imagine even a corporate churn machine with the most reckless abandon designing a device like this and missing the most basic obvious attack vector. Well, anyways....
- gh02t 8y ago
- abc456879 8y agoZzzz... oh sorry just waiting for something in the microcontroller space somewhat innovative
- tomcam 8y agoNo one is stopping you from doing it, bro. Beats pissing on someone else’s accomplishment.
- abc456879 8y agoInsert defensive Hackernews “don’t put something down because it’s posted on hackernews and that it’s on the front page is justification of its merit.” Zzzz Naw, this is rubbish. And, for what it’s worth, why do you assume I’m a bro? What’s posted in this article is an accomplishment in so much as doing something is an accomplishment. Hint, it’s not. Congratulations, you did something, pat on the back. Good job!
- abc456879 8y agoAh yes, flag me for disagreeing, but using no profanities and challenging the group think of a front page Hackernews post
- pierd 8y agoIs there a USB-C version?
- Willamin 8y agoIt defeats part of the purpose of being an "always in your computer" device, but you could always get a USBA female to USBC male adapter (similar to this https://images-eu.ssl-images-amazon.com/images/I/41gXYyobsRL._SL500_AC_SS350_.jpg https://images-eu.ssl-images-amazon.com/images/I/41gXYyobsRL...)
- kybernetikos 8y agoI was amazed to discover a few years back that my wifi SD card also had full ARM system on it that you could get access to, and if you powered it with batteries it all worked stand alone.
- microtherion 8y agoHaving bought a number of maker projects where the PCB is designed to plug into the USB port, like this one, I find that the mechanics generally don't work all that reliably. Not sure about the exact cause, maybe manufacturing tolerances on PCBs are not tight enough.
- sannee 8y agoThis looks like it's supported by a 3D printed enclosure. Otherwise I agree - you need >2.0mm thick PCB to prevent falling out and these are not offered by the usual cheap low-volume PCB manufacturers.
- mithro 8y agoIf you buy the Tomus from CrowdSupply (https://www.crowdsupply.com/sutajio-kosagi/tomu https://www.crowdsupply.com/sutajio-kosagi/tomu) it comes injection molded case designed by Sean 'xobs' Cross (who actually ran the campaign). Doing plastics is well outside my skill set, so it was awesome to see him do that! xobs posted about the case here -> https://www.crowdsupply.com/sutajio-kosagi/tomu/updates/final-week-of-the-campaign-plastics-and-bootloaders https://www.crowdsupply.com/sutajio-kosagi/tomu/updates/fina...