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

Don't F it up: How to simplify your security decisions and protect yourself when building a healthcare app

Don't F it up: How to simplify your security decisions and protect yourself when building a healthcare app

Matheus Cardoso

June 04, 2019
Tweet

More Decks by Matheus Cardoso

Other Decks in Technology

Transcript

  1. Don’t F it up! @ AltConf 2019 How to simplify

    your security decisions and protect yourself when building a healthcare App.
  2. techcrunch.com/2019/03/17/medical-health-data-leak Prescriptions Illness information Blood test results Name, address, date

    of birth Insurance information Payment data Personal data Information on children
  3. techcrunch.com/2019/03/17/medical-health-data-leak Prescriptions Illness information Blood test results Name, address, date

    of birth Insurance information Payment data Personal data Information on children ePHI
  4. API

  5. API

  6. ( ) Public (Alice) Public (Bob) Private (Bob) Private (Alice)

    Public (Bob) Public (Alice) Hello Dr. Alice
  7. ( ) Public (Alice) Public (Bob) Private (Bob) Private (Alice)

    Public (Bob) Public (Alice) Hello Dr. Alice
  8. ( ) Public (Alice) Public (Bob) Private (Bob) Private (Alice)

    Public (Bob) Public (Alice) $&!@*#%?$&
  9. ( ) Public (Alice) Public (Bob) Private (Bob) Private (Alice)

    Public (Bob) Public (Alice) $&!@*#%?$&
  10. ( ) Public (Alice) Public (Bob) Private (Bob) Private (Alice)

    Public (Bob) Public (Alice) $&!@*#%?$&
  11. ( ) Public (Alice) Public (Bob) Private (Bob) Private (Alice)

    Public (Bob) Public (Alice) Hello Dr. Alice
  12. ( ) Public (Alice) Public (Bob) Private (Bob) Private (Alice)

    Public (Bob) Public (Alice) Hello Dr. Alice
  13. Public Key Service iOS Application IP Messaging Generate Key Pair

    Encrypt/Decrypt Catalog/Distribute Public Keys
  14. Public Key Service iOS Application IP Messaging Generate Key Pair

    Encrypt/Decrypt Store/Transmit encrypted Messages Catalog/Distribute Public Keys
  15. import VirgilCrypto // generate key pair let crypto = try!

    VirgilCrypto() let keyPair = try! crypto.generateKeyPair() 1
  16. // decrypt message let decryptedData = try crypto.decrypt( encryptedData, with:

    keyPair.privateKey) let message = String( data: decryptedData, encoding: .utf8) 6
  17. ( ) Public (Alice) Public (Bob) Private (Bob) Private (Alice)

    Public (Bob) Public (Alice) Hello Alice
  18. ( ) Public (Alice) Public (Bob) Private (Bob) Private (Alice)

    Public (Bob) Public (Alice) Something else
  19. ( ) Public (Alice) Public (Bob) Private (Bob) Private (Alice)

    Public (Bob) Public (Alice) Something else
  20. // sign and encrypt message let signedData = try crypto.signThenEncrypt(

    "Hello Bob!".data(using: .utf8)!, with: keyPair.privateKey, /* to sign! */ for: [k])
  21. // decrypt and verify signature let verifiedData = try crypto.decryptThenVerify(

    signedData, with: keyPair.privateKey, using: k /* to verify! */)
  22. // decrypt and verify signature let verifiedData = try crypto.decryptThenVerify(

    signedData, with: keyPair.privateKey, using: k /* to verify! */) No need to be a Cryptographer