Show HN: Get encrypted data from people that don’t know how to encrypt
github.com
github.com
Here's a tip: If you generate an email from the content of the contact form anyway, why not make it an encrypted mail? It's rather easy if you use mailx from the heirloom-mailx package that is part of Debian, Ubuntu and probably a lot of other Linux/BSD/UNIX distributions. Here are the required steps:
In ~/.mailrc:
set smime-ca-dir=/home/user/smime
set smime-ca-file=/home/user/smime/1_Intermediate.crt
set smime-encrypt-user@example.com=/home/user/smime/2_user@example.com.crt
Then every mail sent to user@example.com using "mailx" will be encrypted using S/MIME.Got no local MTA installed? You can make mailx send the mail directly via SMTP:
$ echo mail body | mailx -s "subject" -S smtp=mail.example.com:25 -S smtp-use-starttls user@example.com
I'd be happy with HTTPS upload and PGP encryption before writing to disk or forwarding. I think the biggest risk of a secure upload server is a vulnerability exposing a disk full of secure content in the future.
Imagine:
Alice generates a link.
Sends the link to Bob over an unencrypted/unauthenticated link.
Mallory intercepts the link. Generates his own link and send that link to bob.
Bob enters the confidential information on Mallory's link.
Mallory sees the confidential information, and then sends it to Alice's original link.
The only way to prevent this type of attack is sending the link over a secure channel. But if you already have a secure channel - what's the use case?You can use Whatsapp, or some other E2E-encrypted service that is easy to use, and then transmit the sensitive data over encrypted email, which is more convenient for long-form text.
This might not be enough for the app use cases, but we are working on more solutions so the user can be sure that it is going to the right person.
Regarding the last statement, lets assume the "secure" channel they have is chat app, like slack, for example, it will store the content indefinitely and will be there in clear text, not only slack can see it but if a smartphone/computer is lost,stolen or accessed by someone else they will be able to see all history and content sent through it.
It's fine to have someone snoop and see the link, as long as they can't change the link in transit.
Please feel free to ask any question and I will try to answer the best I can.
Note: The project is open-source so you can self-host it. Contributions are welcome.
Edit: to fix typo
I regularly want to send encrypted data to companies that don't know how to decrypt it. The number of firms that ask for sensitive info to be emailed across (or not much better - use dropbox) is crazy.
Anyone got any good solutions to this?
Its not elegant, but in the end I find it reasonably good compromise between security and practicality.
You then have to communicate the password out-of-band, as emailing it would defeat the purpose. It may be hard to read over the phone and you have to trust it was not written down and the file is not then stored/forwarded unencrypted. Explaining the process to someone non-technical may be challenging.
Symmetric crypto is a mess, asymmetric would be great if secure key exchange could be easy. If only the software was as ubiquitous as zip handling is in the OS.
The recipient's identity is the key to opening the content - no need to communicate anything out-of-band. Depending on the file format chosen, you get DRM features limiting granular actions on the file beyond view/edit.
To open the protected files, your recipients will have to download/install the (free) app from Microsoft. This is generally pretty painless.
Definitely worth checking out, especially good for consultants' workflows.
This is the product page: https://www.microsoft.com/en-us/cloud-platform/azure-informa...
All encryption is handled client-side in js (they recently became maintainers of that library as well, iirc). The message can also expire after x days and the recipient can reply.
I'm not sure if I like how they're basically inventing their own encryption scheme for emails instead of supporting pgp, but for these use-cases it's quite slick.
Could be quite useful. The biggest problem is the recipient not having a compatible decompresser that can decrypt the archive.
Added the suggestion to the discussion issue on github: https://github.com/whitesmith/hawkpost/issues/41
> or use the official server (that is running an exact copy of this repo)
Is there any project that attempts to prove claims like this?I don't know what that would look like; it would probably just move the point of trust, just interested to see it if such a thing exists.
Either way, I added that line to the readme so readers could easily test the project.
(In open source software the solution to this problem is "well, you could always just host your own instance" ;))
> In open source software the solution to this problem is
> "well, you could always just host your own instance"
That doesn't always work though - end-users can't trust you more because you host it instead of using the version hosted by the OSS team for whom it's the main focus. (Arguably they should actually trust the latter more!)Consider Keybase for example. If someone builds a service on top of Keybase, their end-users can't trust them with their private keys* if they host it themselves instead of using upstream hosting.
*I know this is not required in order to use Keybase - I use it with gnupg and keep my keys local. It's the easiest example of needing to trust Keybase, though.
Enterprise security teams know, of course, that email is insecure, and that partners and clients want to send sensitive stuff via email. So they buy these products and stand them up, and then instruct their partners to follow a link to upload their documents or sensitive emails, rather than using their email client.
The box itself forwards the email to user inside the enterprise.
I think there's something useful here, but, like 'Tepix said: a simple form on an HTTPS site is already doing 99.999% of the useful work here (that's all the expensive enterprise products do, too).
A direction you can take this to be even more useful is to strip and sanitize attachments, as a way of quarantining malicious email.
It uses client side encryption, dyn. created keys, and the message is deleted after first retrieval.
A slightly different usecase than the OP, still using it for all my clients.
One unique proposition that Private Forms has is a form-builder so you can create custom forms rather than just contact forms.
Which moves the threat to state actors willing to substitute certs, and that's the point at which the web fails you totally anyway.
"Subresource Integrity (SRI) is a security feature that enables browsers to verify that files they fetch (for example, from a CDN) are delivered without unexpected manipulation. It works by allowing you to provide a cryptographic hash that a fetched file must match."
[0] https://developer.mozilla.org/en-US/docs/Web/Security/Subres...
@chomponthis: hit me up if you want to work on making either or both plugins work for HawkPost, email in profile.
note: I also have been contributing to hawkpost.
That is, it's much easier for an average developer to install this on their server than it is for them to understand the security well enough to guarantee that no one else is snooping on said server. Right?
https://github.com/Spark-Innovations/SC4
Live demo:
SC4 has been through a security audit.
We actually use Keybase as well, and that was one of our inspirations for the exact same reasons! Since one of our main use-cases was to receive secure data from non-tech-savvy people we wanted to remove as much friction as possible, and that included sending the encrypted blob. We're actually thinking of ways of integrating Hawkpost with Keybase.io, namely fetching/verifying keys (as we already do with keyservers).
A complete in-browser RSA encrypted message sharing for one-time use. Like transferring passwords via unsecure channels (aka Skype).
It generates a keypair in the browser (offline) and guides also unexperienced users through the process. Frankly, its a dirty hack, but it does the job haha.
Except for the message signing and auto-emailing, I've implemented something similar:
Blogpost: https://0day.work/easy-pgp-composer-encrypting-pgp-messages-...
You can also set the maximum number of messages you wish to receive through that box.
I think these measures will help users avoid spam.
Some sort of integration with vault looks like a nice idea.
Lest your unencrypted messages one day be used in a fishing expedition to facilitate oppression at the hands of the current political regime.
$ echo "Hello world" > message.txt
gpg --sign message.txt
$ gpg --verify message.txt.gpg
gpg: Signature made Wed 19th october 2016, 12:19:19 CEST using RSA key ID D9AE6E9E
gpg: Good signature from "John Smith <john.smith@example.com>"
$ echo "evil" > message.txt
$ gpg --verify message.txt.gpg
gpg: Signature made Wed 19th october 2016, 12:19:19 CEST using RSA key ID D9AE6E9E
gpg: Good signature from "John Smith <john.smith@example.com>"Sounds like a UX problem than a technical one. It's equivalent to me zipping up a folder, changing the contents of that folder, then expecting the zip file to have the change as well.
Off-topic, I think in addressing people with 'they' is more polite when the gender is ambiguous, despite the stats being in your favour.
For detached signatures:
gpg --verify message.sig message
For signed files: gpg --verify message.sig
gpg --output message --decrypt message.sig
It's all documented¹.Dvh: what are you getting at?
To get the expected result, the user would have to use either
$ gpg --clearsign
(makes it obvious that the message is part of the resulting message.txt.asc file) or
$ gpg --detachsign
(which creates a .txt.sig file) or
$ gpg -a --detachsign
(which creates a .txt.asc file).
But let's be honest, SSL and pgp are the best we can do to secure comms from http to smtp today?
Key/cert management is an epic fail from a usability pov. Is it done? Yes, because there is NO other choice. But pgp will never ever be anything but a niche application for the paranoid.
SSL? I don't think anyone is going to argue it doesn't need to be scrapped and rewritten from scratch or replaced entirely.
Encryption must be transparent for it to be ubiquitous. We're not there yet. I know this is a hard problem to solve but someone eventually will.
The UX is just horrendous, and none of the GUI tools improve on that.