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

Crypto wallets security: for developers

Julia Mezher
February 22, 2022
3.4k

Crypto wallets security: for developers

Julia Mezher

February 22, 2022
Tweet

Transcript

  1. Security Software Engineer Julia Potapenko @julepka We help companies to

    protect their sensitive and valuable data. OWASP Zhytomyr Leader. Contributor to OWASP security standards and guides. Women Who Code Kyiv Director
  2. OWASP Open Web Application Security Project A nonpro f it

    foundation that works to improve the security of software OWASP Top 10 OWASP ASVS OWASP WSTG OWASP MASVS/MSTG https://owasp.org/www-project-mobile-security-testing-guide/ https://owasp.org/www-project-application-security-veri f ication-standard/ https://owasp.org/www-project-web-security-testing-guide/ https://owasp.org/www-project-top-ten/
  3. How does it work? Your account = your seed /

    private key Loosing seed / private key = loosing the account Wallet gives access to several accounts The main challenge is to secure seed / private keys
  4. Similar to banking apps, cryptocurrency wallets operate user funds, meaning

    security baseline should be nearly the same. Threat vectors considerations • Authentication • Local storage • Platform trust • Cryptography • Communication • User education • Supply chain
  5. User Authentication LOCAL VS REMOTE If the app provides users

    access to a remote service, some form of authentication, such as username/password authentication, is performed at the remote endpoint. No sensitive data should be stored locally on the mobile device. Instead, data should be retrieved from a remote endpoint when needed and only be kept in memory. If sensitive data is still required to be stored locally, it should be encrypted using a key derived from hardware backed storage which requires authentication. – OWASP MASVS 4.1, 2.11, 2.12
  6. User Authentication LOCAL VS REMOTE If the app provides users

    access to a remote service, some form of authentication, such as username/password authentication, is performed at the remote endpoint. No sensitive data should be stored locally on the mobile device. Instead, data should be retrieved from a remote endpoint when needed and only be kept in memory. If sensitive data is still required to be stored locally, it should be encrypted using a key derived from hardware backed storage which requires authentication. – OWASP MASVS 4.1, 2.11, 2.12 But what about deanonymisation? Non-custodial wallets are usually fat clients
  7. Password policy Password rotation when leaked Defences against brute-force attacks

    Step-up authentication Biometry veri f ication User Authentication
  8. Know your platform What kind of storage should be used

    to deliver the best security guarantees?
  9. Know your platform What kind of storage should be used

    to deliver the best security guarantees? Is it a f ile? Can you steal it? Can other apps access it? What about integrity? And Encryption?
  10. Know your platform What kind of storage should be used

    to deliver the best security guarantees? Is it a f ile? Can you steal it? Can other apps access it? What about integrity? And Encryption? It is a developer’s responsibility to know how the storage works on the platform you use.
  11. 000003.log is a storage f ile of web-extension. You can

    copy it from one browser and paste into another. Know your platform
  12. Objection tool that allows to access Keychain of the device,

    no jailbreak required Know your platform
  13. Cryptography How to encrypt the data with a password? You

    decided to pick AES. You need a key length of 256 bits but the password is shorter. You use a hash function SHA256.
  14. Cryptography How to encrypt the data with a password? You

    decided to pick AES. You need a key length of 256 bits but the password is shorter. You use a hash function SHA256. KDF (Key Derivation Function)
  15. Cryptography How to encrypt the data with a password? You

    decided to pick AES. You need a key length of 256 bits but the password is shorter. You use a hash function SHA256. KDF (Key Derivation Function) Your pick PBKDF2. You need to specify number of rounds for it. Similar to some example in the Internet you pick 2 000.
  16. Cryptography How to encrypt the data with a password? You

    decided to pick AES. You need a key length of 256 bits but the password is shorter. You use a hash function SHA256. KDF (Key Derivation Function) Your pick PBKDF2. You need to specify number of rounds for it. Similar to some example in the Internet you pick 2 000. 310 000
  17. Cryptography How to encrypt the data with a password? You

    decided to pick AES. You need a key length of 256 bits but the password is shorter. You use a hash function SHA256. KDF (Key Derivation Function) Your pick PBKDF2. You need to specify number of rounds for it. Similar to some example in the Internet you pick 2 000. 310 000 CBC or GCM mode? Random IV? … ? ? ?
  18. Cryptography How to encrypt the data with a password? You

    decided to pick AES. You need a key length of 256 bits but the password is shorter. You use a hash function SHA256. KDF (Key Derivation Function) Your pick PBKDF2. You need to specify number of rounds for it. Similar to some example in the Internet you pick 2 000. 310 000 CBC or GCM mode? Random IV? … ? ? ? Don’t roll your own crypto Use Themis https://github.com/cossacklabs/themis Use libsodium
  19. Cryptography Comes from mvayngrib/react-native-crypto library… that uses react-native-randombytes library… that

    uses Stanford Javascript Crypto Library (SJCL) for synchronous random values generation. React Native mobile app example
  20. Cryptography Comes from mvayngrib/react-native-crypto library… that uses react-native-randombytes library… that

    uses Stanford Javascript Crypto Library (SJCL) for synchronous random values generation. SJCL random values generator relies on mouse movements and keyboard listeners. React Native mobile app example
  21. How to identify a good library Looks alive Built for

    required platform Easy to use, hard to misuse Covered with tests Documentation Secure Performance Licence
  22. Useful tools Automate and add to PRs SonarQube Snyk Dependabot

    SAST (Static Application Security Testing): https://owasp.org/www-community/ Source_Code_Analysis_Tools DAST (Dynamic Application Security Testing): https://owasp.org/www-community/ Vulnerability_Scanning_Tools
  23. Useful links [Article] Crypto wallets security as seen by security

    engineers: https://www.cossacklabs.com/blog/crypto-wallets-security/ [Article] Security of React Native libraries: the bad, the worse and the ugly: https://www.cossacklabs.com/blog/react-native-libraries-security/ [Article] React Native security: things to keep in mind: https://www.cossacklabs.com/blog/react-native-app-security/ [Slides] Why can’t developers make it secure: https://speakerdeck.com/julep/why-cant-developers-make-it-secure