Security Principles for Mobile Applications
The challenge when building a secure mobile application is how we balance ease of use with security. Applications that are easy to use are the ones that succeed. However, any compromise on security could have disastrous consequences. Mobile applications that handle payments have more stringent security protocols when compared to utility applications. However, to succeed, it has to be just as easy to use.
These were the topics of discussion at Rootconf’s Data Privacy Conference held in April 2021. The roundtable, moderated by Suman Kar, included Madhusudhan Sambojhu from Able.do, Chirayu Desai from Calyx Institute, and Apurva Jaiswal, Engineering Manager at Zeta.
Zeta develops cloud-native mobile-first banking and payment platforms that meet these exact requirements. We aim to move away from lengthy checkout forms and OTP-based payment authorization. Our platform allows merchants to securely accept payments from around the world and allows customers to make these payments with a single swipe.
Let us discuss some of the security principles we follow at Zeta when designing our mobile applications.
Zero-trust Principle
Adopting a zero-trust approach is important when it comes to securing data on applications. Organizations building the application should ensure they have implemented all necessary security measures to protect user data. They should not depend on the application hosts for this.
There are 2 types of data that we need to secure in mobile applications:
- Data at rest.
- Data at motion.
All sensitive data should be saved in vault storage and should be accessible with explicit consent from the user.
Since mobile devices are sandboxed from day one, it helps protect application data, stored on the device’s internal storage, from hackers and other applications on the device. Some tools that can be used to secure data are Charles proxy, Wireshark, Firebase, and SonarQube.
[su_youtube_advanced url=”https://www.youtube.com/watch?v=f-boD_oQ5ts&ab_channel=PhaniMarpaka” autoplay=”no”]
At Zeta, we ensure user data is opaque to the cloud provided and is end-to-end protected. We distill and sanitize the network edges. We ensure end-to-end authentication and access control using IAM and RBAC.
Listed below are some best practices we have adopted at Zeta when building mobile applications.
Mobile Application Security
Mobile application security is the measures taken by the application developer to secure the applications from external threats. A breach in mobile security gives hackers access to the user’s personal information, their current location, banking information, and much more. Some best practices are:
- Perform root checks using Google SafetyNet API and Rootbeer. On iOS devices check for functions that should not be available in a non-rooted device.
- Use SSL Pinning to prevent attackers from analyzing your application functionality and the way it communicates with the server.
- Build strong and customizable authentication flows: — Phone number + OTP, Phone number + OTP + password
- Do not allow concurrent logins.
- Analyze user behavior and trigger re-authentication in case of risks.
- Have a strong device binding ID (Device ID + Sim ID)
- Do not issue tokens when the device binding ID changes.
- Server triggered data wipeout.
- Screen record and screen capture protection.
- Launcher image protection.
APK Security
It is not enough to secure your application while it is being used. It is critical to ensure your application is hosted and distributed from a secure platform. This prevents hackers from gaining access to your code repository and exploiting it to gain unauthorized access to user data. Some best practices are:
- Never distribute APKs through APK/IPA files. Use standard firebase app distribution/testflight.
- Never release debug builds.
- Assume whatever goes in APK is public information :- The Native Development Kit (NDK), Prefer server-side secrets
- Implement code obfuscation.
- Incorporate proguard rules in your builds.
Identity Establishment and Authentication
When onboarding a customer on your mobile application, it is important to establish their identity. This allows us to ensure only that person has access to the application on their device. Some best practices are:
- Challenge a user using multiple identity vectors such as phone number, email, bank account number, and password. Challenges should be sent on different communication channels
- Each vector is identified by a specific IdP.
- Implement Social Authentication.
- Use penny testing to verify a user’s account.
- Successful authentication leads to a 256 bit AES symmetric key between server and client using ECDHE-ECDSA-AES256 bit key exchange.
- Subsequent device sessions are established using OATH-based HOTP of monotonically increasing session count.
- 256 bit Symmetric Keys.
- OATH-based HOTP for authentication.
- Key setup using ECDHE-ECDSA-AES256 bit.
- Real-time locating system (RTLS) optimized transport based on TLS 1.2. : — Key exchange through ECDHE-ECDSA-AES256 bit key (Equivalent to RSA 372 bit), Encryption, authentication, and integrity check through AES 128 bit in counter mode with SHA-256 based HMAC.
Transaction
Securing transaction data is the most important aspect of mobile security. Any vulnerabilities here can lead to the application user losing money and cause irrevocable setbacks to your application.
- Non-repudiable transactions.
- Private keys protected using Secure Module on Device or Password+Scrypt.
- Non-verifiable random key material on the device.
- Key rotation after every successful online transaction.
Assume the mobile application code/library is public
This should be the basic assumption an organization makes when building a mobile application. To ensure there are no compromises to an application’s security, organizations need:
- Ensure their mobile team is kept up to date with and implements the latest security guidelines and practices in the industry.
- Ensure all security checks and protocols are enforced when deploying code.
- Have their mobile application regularly audited by external auditors.
[su_youtube url=”https://www.youtube.com/watch?v=VRBPbQYoytY&ab_channel=PhaniMarpaka”]
At zeta, we believe in building and nurturing a strong team that understands security and follows the importance of:
- Code peer reviews.
- Static application security testing.
- Regular security testing team by Zeta’s internal security team.
- Regular application security testing by 3rd party vendors such as SISA.
Conclusion
There cannot be any compromise in terms of security when building mobile applications. Apart from setting up security protocols, organizations should ensure their employees are kept up to date with the latest trends in security. Organizations can use tools to enforce security protocol and ensure their applications are secure.
It is also important to educate end-users about best practices around mobile applications. Users should only download applications from trusted application hosts. Downloading applications directly from a website or elsewhere could lead to security breaches.
Zeta Suite is rethinking payments from core to the edge, algorithms to form factors, applications to solutions. Having built a modern stack that Financial Institutions (FIs) can use for debit, credit, and prepaid cards, loans, authentication, and Fraud and Risk Management (FRM), Zeta invites you to join their journey in democratizing payments. Check out the openings on < careers.zeta.tech >
Thanks