Android Developer Guide in Singapore
These are the essential Android apps you need, whether you’re outfitting the latest Pixel phone or plugging along with a much older device.
Android Developer Fundamentals is an instructor-led course created by the Google Developers Training team. Students learn basic Android programming concepts and build a variety of apps, starting with Hello World and working their way up to apps that use content providers and loaders.
Android software development is the process by which new applications are created for the Android devices operating system. Applications are usually developed in Java programming language using the Android software development kit (SDK), but other development environments are also available.Android’s keystore has been available for many years, providing app developers with a way to use cryptographic keys for authentication and encryption. Keystore keeps the key material out of the app’s process space, so that the app cannot inadvertently reveal it to the user where it could be phished, leak it through some other channel, or have it compromised in the event of a compromise of the app. Many devices also provide hardware-based security for keystore keys in secure hardware, which keeps the key material out of the Android system entirely, so that the key material cannot be leaked even by a Linux kernel compromise. In the vast majority of Android devices, secure hardware is a special mode of the main CPU, with hardware-enforced isolation from the Linux kernel and Android userspace. Alternatively, some devices use a separate secure microprocessor.Android provides APIs that allow the app to determine whether a given keystore key is in secure hardware, but these APIs could be unreliable if the operating system has been compromised. Key attestation provides a way for a device’s secure hardware to verify that an asymmetric key is in secure hardware, protected against compromise of the Android OS.
Suppose you’re developing an app to provide a bank’s customers with access to their bank balance, transaction history, and bill pay system. Security is important; you don’t want anyone who picks up the user’s phone to have access to their the bank account. One approach would be to use the user’s web site password. But that’s often inconvenient for the user because web sites often demand long, complex passwords, which are inconvenient on a small touchscreen.
With Android Keystore, you can generate an asymmetric authentication key, such as a 256-bit ECDSA key, and have each user sign in with their complex web password once, then register the public key in the bank’s customer account database. Each time they open the app, you can execute a challenge-response authentication protocol using that ECDSA key. Further, if you make the key authentication-bound, the user can authenticate with their lock screen passcode or fingerprint each time they open the app. That allows them to use the simpler and more convenient authentication mechanism on their phone.
If an attacker compromises Android and attempts to extract the key, they shouldn’t be able to because the key is in secure hardware.
As an app developer, key attestation allows you to verify on your server that the ECDSA key your app requested actually lives in secure hardware. Note that there’s little point in using the attestation in your app itself; if the Android OS is uncompromised and trustworthy, then you can just use the KeyInfo class introduced in 6.0 to discover whether the key is in secure hardware. If it is compromised, then that API and any attempt you make to validate the attestation on device are both unreliable.
评论
发表评论