Upgrade to Pro — share decks privately, control downloads, hide ads and more …

End-to-End Encryption of Distributed Applications

End-to-End Encryption of Distributed Applications

In today's internet connected environment protection from hackers when developing a distributed or internet connected application is crucial. This talk will discuss the options available to us as developers for encrypting the traffic between the nodes of our distributed applications to insure that even intercepted messages are un-readable, and un-encryptable by an adversary. To achieve this we will use one-time and self-destructible private keys, along with dispensable, one-use secrets to generate our encrypted message. We will then learn how to structure our message for transmission to insure it is decryptable by the receiving party, with little risk of being compromised during transmission. To end, we will learn how to decrypt the messages received "on the fly", using only the supplied crypted message itself. This talk is aimed at mid-level Python users but is understandable by beginners.

Avatar for Jeff Lambert

Jeff Lambert

March 11, 2017

Other Decks in Programming

Transcript

  1. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] The need

    for applications to speak in encrypted messages is no longer an after-thought it is a requirement
  2. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] A method

    of communicating where only the authorized users can read the messages
  3. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] Even if

    an ISP is asked to supply a customers communications, it will only appear as..
  4. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] The recent

    WikiLeaks show that even.. The CIA could not break End-to-End Encryption
  5. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] They had

    to create malware that “uses” the app on your phone in order to read the messages. Or Keyloggers that capture the message as you enter it into the program before it is encrypted
  6. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] We don't

    want to store our keys somewhere they can be hacked/stolen. They need to be generated and one-time use only.
  7. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] When encrypting

    our messages, we also don't want to know the password. They need to be generated and one-time use only.
  8. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] We want

    to sign our message so we know it was not tampered with during transit.
  9. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] We don't

    want someone monitoring our network traffic to easily recognize the format of our messages. The structure should be random.
  10. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] There are

    too many constants, even when the payload and secret are different
  11. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] This is

    partly because the header contains information about what algorithm is used and the type of token So it will remain constant if these are the same
  12. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] Our separator

    could be more random It is currently a random three digit number
  13. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] In JSON

    Web Tokens (JWT) Even with a new secret, parts of the message structure and output are always the same
  14. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] In blanket

    Our secret is random and the output is always different, even with the same input
  15. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] We can

    randomize the size and location of the separator to further disguise the structure of our messages
  16. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] We can

    use a hardware secret generator Like YubiKey or Embedded Chips
  17. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] Over time

    our own sequence, even though more random, could be discovered. So we should constantly improve our own code and think of ways to break it
  18. End-to-End Encryption in Distributed Applications @jeffinkoguru – [email protected] For more

    information you can visit.. github.com/jpadilla/pyjwt or github.com/JeffinkoGuru/blanket