sroddy / flutter_string_encryption

Cross-platform string encryption using common best-practices (AES/CBC/PKCS5/Random IVs/HMAC-SHA256 Integrity Check).
https://pub.dartlang.org/packages/flutter_string_encryption
Other
57 stars 41 forks source link

Feature Request: Diffie-Hellman Key Exchange #2

Open paulreimer opened 6 years ago

paulreimer commented 6 years ago

This library works great, and really helps for symmetric encryption where both sides already have the key, but it doesn't provide for any secure key exchange (yet). I believe Diffie-Hellman can be used to do that, is that something that could be added to this library eventually?

Personally my use case is for bootstrapping an IoT device with wifi credentials, over mobile Bluetooth.

RobbertH commented 6 years ago

Diffie-Hellman is a start, but built on it is Station-to-Station protcol which uses digital signatures in order to prevent man-in-the-middle attacks. Just a suggestion ;)

paulreimer commented 6 years ago

@RobbertH That's a cool protocol! There are a few times I've used DH that I probably could/should have used that instead.

In my case (IoT device) that would be a place where I would have to personalize the firmware for each device, whereas with pure DH I can re-use the same binary image. (I'm trying to avoid that personalization step, I'd probably use full-on PKI if I did). In my setup, physical security is required to push a reset button, which activates time-limited Bluetooth hardware only for the DH exchange, but in my nightmares I think about all the ways that MITM could still happen.