7 ms·
Show HN: SeKey: An SSH Agent for OS X, Using Secure Enclave and TouchID, in Rust
- galadran 9y agoI'm amazed there's a market for this kind of thing. Since the 1990s its been known how to implement an undetectable backdoor in hardware based crypto which leaks your keys to an attacker. E.g. http://paper.ijcsns.org/07_book/201006/20100623.pdf http://paper.ijcsns.org/07_book/201006/20100623.pdf details how to do it for Elliptic Curves. But its been studied since https://link.springer.com/content/pdf/10.1007%2F3-540-69053-0_6.pdf https://link.springer.com/content/pdf/10.1007%2F3-540-69053-... The tl;dr is that any device in which you can't check the implementation or get the private key out (i.e. Secure Enclave, TPM etc), can leak your key to a passive attacker in a way that you provably can't detect.
- jmileham 9y agoBecause this research exists, there can't possibly be a market for a security product whose threat model might not include a malicious hardware manufacturer?
- galadran 9y agoAdmittedly its less of a risk with your SSH keys than with say your bitcoin wallet. (There's a clear economic incentive there and most bitcoin hardware wallets have pretty low levels of assurance). But nonetheless, the number of people who are security conscious enough to lock their keys into their hardware, but not worried about malicious hardware seems quite limited.
- hateduser2 9y ago>But nonetheless, the number of people who are security conscious enough to lock their keys into their hardware, but not worried about malicious hardware seems quite limited. Maybe I'm wrong but it seems like you're misinterpreting these people. TouchID is an ease of use feature that you feel good about because you also get to improve your security (save for malignant hardware manufacturing). Its very easy and it improves your security. You don't have to be excessively security conscious to be interested in that. I like TouchID but I'm not a security obsessed person (although I'm not quite on the same level as your average joe), and im pretty sure its easy to sell this and any TouchID people to anyone regardless of how security conscious they are on the basis that using TouchID is even safer. I just don't like your view that people who like TouchID must be obsessive about security and understand it inside and out. Most people do things regardless of how much they understand.. you won't be an expert in everything.
- falcolas 9y agoOn the flip side, you can also demonstrably prove that private keys stored on disk can be exposed with a minimal intrusion of your user account, also with no indication they were leaked. Another layer of security is never bad.
- thisacctforreal 9y agoAdditional layers of security can be bad when they reduce usablity, reduce accessibility/availability, or increase complexity too much. As usual it's trade-offs all the way down.
- pvg 9y agoThat market exists because the market for perfectly secure but completely impractical products is much smaller, roughly zero.
- geofft 9y agoMy threat model excludes hardware compromise because it's dead easy for an attacker in the position of sticking malicious hardware into my laptop to e.g. run a malicious BIOS that notices when I'm doing crypto operations and wakes up and steals secrets off the CPU. If I worried about that I wouldn't use my computer at all. I think the market for people whose threat model includes hardware compromise is extremely tiny. It should include purchasers of external Bitcoin hardware wallets, as you suggest, but it probably doesn't include the average SSH user deciding whether to trust hardware built into their laptop. Also, in the specific case of macOS, your hardware manufacturer can more easily just ship you a malicious ssh binary or ssh-agent....
- falcolas 9y agoVery cool project. I’ve done similar things with yubikeys before, having it built into the hardware is great. Can it also support a pin to go with the biometric auth?
- ntrippar 9y agoas far i read in the documentation no. i will do more research on the implementation. also you device has to be unlocked for the enclave to work. https://developer.apple.com/documentation/security/ksecattraccessiblewhenunlockedthisdeviceonly https://developer.apple.com/documentation/security/ksecattra...
- floatboth 9y agoFor TPMs on non-Apple computers: https://github.com/ThomasHabets/simple-tpm-pk11 https://github.com/ThomasHabets/simple-tpm-pk11 But with TPM there's no external unlock mechanism like Touch ID, the TPM unlock happens from the operating system.
- nyolfen 9y agosee also the really excellent kyptonite, which i found linked here a few months ago and i've been positively delighted with: https://krypt.co/ https://krypt.co/ i'm not a security expert, and i have a lot more trust in my iphone for managing secrets than my personally configured linux pc's.
- srcmap 9y agoI have a slightly different point of view: In Linux, I can easily monitor how much data, what kind of data are transferred to the remote IP and disable them on per apps base anytime I want. In IOS, I can't do any of that. At most, I can only disable an app from using cell data. If anyone else know how to do monitor/block network connection on per APP base in IOS, I would love to hear about it. For me, it is a different between "trust" and "trust and verify". I use IOS and have some level of trust on Apple/IOS. But I don't trust majorities of the IOS APPs for security/privacy.
- samat 9y agoFYI, IOS is operating system for routers by Cisco. iOS is operating system for mobile devices by Apple.
- _hyn3 9y agoThe funny part is the parent's comment applies perfectly well to either.
- staplers 9y agoIf anyone else know how to do monitor/block network connection on per APP base in IOS, I would love to hear about it. I've been seeking a Little Snitch type connection monitor/firewall for iOS for some time. I believe Apple purposely makes this difficult/impossible on iPhones due to the constant metrics/analytics sent to Apple servers. Look at what they have done with turning off bluetooth and wifi from the Control Center.. It's really eye-opening to see how often Apple products ping home.
- viraptor 9y ago> Can’t import preexisting key That makes me sad :( Does anyone know if that's a SE limitation, or the app's?
- ntrippar 9y agoit's SE limitation :(. also makes me sad, will be awesome if you can import a key generated by yourself. so if you reinstall you can import again to the enclave
- viraptor 9y agoI was thinking more in terms of: I trust openssl to generate a non-broken key. (Yeah, even with all its faults...) But if SE turns out to use generate bad keys, like the recent popular issue, I can't use a better one instead.
- tedchs 9y agoIt's common for hardware security tokens like this to limit themselves to self-generated private keys. The intent is the device needs to provide a guarantee that the private key is not otherwise accessible, whereas it would be if the user generated it, perhaps wrote it to disk, provided it to the SE, and perhaps SEs on other devices.
- 0culus 9y agoYubiKeys allow you to load your own private key, which turned out to be a great feature. [0] [0]: https://www.yubico.com/support/security-advisories/ysa-2017-01/ https://www.yubico.com/support/security-advisories/ysa-2017-...
- raphaeljlps 9y agoI may be talking shit, but for what I understand of SE, it wouldn't make sense to loose the data if you reinstall macOS. I tried to look up the info, but the only thing I found was this: "But because its backing storage is physically part of the Secure Enclave, you can never inspect the key’s data." https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_secure_enclave?language=objc https://developer.apple.com/documentation/security/certifica... That means that it get stored in SE instead of your computer's hard drive. Also, Apple have instructions to clean Secure Enclave if you're going to sell your macbook pro with touchid.
- epistasis 9y agoI would love to see this usable as a U2F device too.
- deleted 9y ago[deleted]
- abhv 9y agoThis is a really cool project. I just tried to compile it myself, and code-signed it with my mac dev key. I changed the assets/sekey.entitlements file by replacing 5E8NNEEMLP with my own hex id for my developer key. However, when i run ./bundle/Sekey.App/.../sekey, i keep getting a "Killed 9" message. When i run the unsigned version, the binary at least runs (shows the -h messages). Any hints on how to fix?
- ntrippar 9y agothats because the code signing its invalid. you are signing the whole app? or only the binary. could be many reasons, one is the lack of the provisioning profile on your computer (for your key).
- arete 9y agoAwesome work, this is a really cool idea and well executed.
- _hyn3 9y agoVery, very cool. To use a public key with something like Userify (https://userify.com https://userify.com, plug ssh key management) or a service like Github, use --export-key to export the public key in OpenSSH format: sekey --export-key <key-id> (see also in the readme that you can use sekey --list-keys to get key ID's.) This is seriously such an awesome project that I might have to get a new MBP just for this.
- deleted 9y ago[deleted]
- froderick 9y agoThis looks useful. I'd love to use this with gopass (https://github.com/justwatchcom/gopass https://github.com/justwatchcom/gopass). It would have to support preexisting keys for that to work for me. I wonder if the limitation around elliptic curve keys originate with the Secure Enclave, or is that just the one type of key this tool supports?