Android N Security Overview - Mobile Security Saturday at Ciklum

78
Android N Security Overview Constantine Mars, Sr. Android Developer @ DataArt, GDG Dnipro Co-Organizer +ConstantineMars @ConstantineMars

Transcript of Android N Security Overview - Mobile Security Saturday at Ciklum

Page 1: Android N Security Overview - Mobile Security Saturday at Ciklum

Android N Security Overview

Constantine Mars,Sr. Android Developer @ DataArt,GDG Dnipro Co-Organizer

+ConstantineMars@ConstantineMars

Page 2: Android N Security Overview - Mobile Security Saturday at Ciklum

Security?!! WTF?!!

Page 3: Android N Security Overview - Mobile Security Saturday at Ciklum

What happens if you do security right?

Page 4: Android N Security Overview - Mobile Security Saturday at Ciklum

What happens if you do security right?

Right. Absolutely nothing

Page 5: Android N Security Overview - Mobile Security Saturday at Ciklum

What happens if you do security wrong?

Page 6: Android N Security Overview - Mobile Security Saturday at Ciklum

Bad things happen

Page 7: Android N Security Overview - Mobile Security Saturday at Ciklum

The first simplest rule of security

Page 8: Android N Security Overview - Mobile Security Saturday at Ciklum

Don’t use the same password everywhere

Page 9: Android N Security Overview - Mobile Security Saturday at Ciklum

Security tool everyone has

Page 10: Android N Security Overview - Mobile Security Saturday at Ciklum

A key

Page 11: Android N Security Overview - Mobile Security Saturday at Ciklum

Hardware keys

Page 12: Android N Security Overview - Mobile Security Saturday at Ciklum

Presence of user when action happens

Page 13: Android N Security Overview - Mobile Security Saturday at Ciklum

Disclaimer: no more security basics

Page 14: Android N Security Overview - Mobile Security Saturday at Ciklum

Google I/O 2016 announces

Page 15: Android N Security Overview - Mobile Security Saturday at Ciklum

Allo messenger

Page 16: Android N Security Overview - Mobile Security Saturday at Ciklum

Android SecurityArchitecture

Page 17: Android N Security Overview - Mobile Security Saturday at Ciklum

Android Security Architecture

Page 18: Android N Security Overview - Mobile Security Saturday at Ciklum

Google’s focus on Users

Page 19: Android N Security Overview - Mobile Security Saturday at Ciklum

8 billion everyday app scans

Page 20: Android N Security Overview - Mobile Security Saturday at Ciklum

Security Services

Page 21: Android N Security Overview - Mobile Security Saturday at Ciklum

Security Features

Page 22: Android N Security Overview - Mobile Security Saturday at Ciklum

Permissions

Page 23: Android N Security Overview - Mobile Security Saturday at Ciklum

Runtime Permissions (M)

● Request permissions at runtime● Selective control permissions

Page 24: Android N Security Overview - Mobile Security Saturday at Ciklum

Runtime Permissions (M)

● Simplified installation process● Easier application upgrades● More understandable for users

Page 25: Android N Security Overview - Mobile Security Saturday at Ciklum

Requesting a Permission

Page 26: Android N Security Overview - Mobile Security Saturday at Ciklum

Handling Permissions Result

Page 27: Android N Security Overview - Mobile Security Saturday at Ciklum

UX Guidelines for Permissions (M)

● Educate in context for secondary

● Educate up-front for critical● Receive “yes” in 85%● 15.8% “no”● 3% “never ask again”

Page 28: Android N Security Overview - Mobile Security Saturday at Ciklum

Keystore

Page 29: Android N Security Overview - Mobile Security Saturday at Ciklum

Android Keystore

lets you store cryptographic keys in a container to make it more difficult to extract from the device. Once keys are in the keystore, they can be used for cryptographic operations with the key material remaining non-exportable.

The Keystore system is used by the KeyChain API as well as the Android Keystore provider feature that was introduced in Android 4.3 (API level 18).

Page 30: Android N Security Overview - Mobile Security Saturday at Ciklum

Android Keystore

Key material may be bound to the secure hardware (e.g., Trusted Execution Environment (TEE), Secure Element (SE)) of the Android device

Supporting wide range of algorithms

Page 31: Android N Security Overview - Mobile Security Saturday at Ciklum

Generating new key pair

Page 32: Android N Security Overview - Mobile Security Saturday at Ciklum

Signing data

Page 33: Android N Security Overview - Mobile Security Saturday at Ciklum

Verifying data

Page 34: Android N Security Overview - Mobile Security Saturday at Ciklum

Key Attestation (N)

Key Attestation gives you more confidence that the keys you use in your app are stored in a device's hardware-backed keystore.

Key attestation allows you to verify that an RSA or EC key pair has been created and stored in a device’s hardware-backed keystore within the device’s trusted execution environment (TEE).

Page 35: Android N Security Overview - Mobile Security Saturday at Ciklum

Get Certificate Chain from the KeyStore

Page 36: Android N Security Overview - Mobile Security Saturday at Ciklum

Key attestation

Page 37: Android N Security Overview - Mobile Security Saturday at Ciklum

Authentication

Page 38: Android N Security Overview - Mobile Security Saturday at Ciklum

Remembering and entering passwords and patterns is pain

Page 39: Android N Security Overview - Mobile Security Saturday at Ciklum

Smart Lock

● Smart Lock’s on-body detection reduces lock screen prompts by 50%

Page 40: Android N Security Overview - Mobile Security Saturday at Ciklum

Fingerprint

● Fingerprint increased usage of lockscreen to 90%+ on Nexus devices

Page 41: Android N Security Overview - Mobile Security Saturday at Ciklum

AndroidPay is critical about authentication

Page 42: Android N Security Overview - Mobile Security Saturday at Ciklum

Stronger authentication

● Tied to app secrets (KeyStore)● Credential verification in hardware (Trustzone)

Page 43: Android N Security Overview - Mobile Security Saturday at Ciklum

Fingerprint API (M)

Page 44: Android N Security Overview - Mobile Security Saturday at Ciklum

Fingerprint API (M)

Page 45: Android N Security Overview - Mobile Security Saturday at Ciklum

PIN security, Fingerprint and Gatekeeper

Page 46: Android N Security Overview - Mobile Security Saturday at Ciklum

Best practices

● Check KeyguardManager.isDeviceSecure() to identify that device has lockscreen or password protection.

● Use setUserAuthenticationValidityDurationSeconds during the key generation to set the duration for which authentication is valid:

Page 47: Android N Security Overview - Mobile Security Saturday at Ciklum

Best practices

When generating key - set authentication timeout and on body detection:

Page 48: Android N Security Overview - Mobile Security Saturday at Ciklum

Best practices

Page 49: Android N Security Overview - Mobile Security Saturday at Ciklum

Best practices

If no Fingerprint available - fall back to Gatekeeper and KeyguardManager.createConfirmDeviceCredentialIntent:

Page 50: Android N Security Overview - Mobile Security Saturday at Ciklum

Network security

Page 51: Android N Security Overview - Mobile Security Saturday at Ciklum

Restrict HTTP in Manifest

Page 52: Android N Security Overview - Mobile Security Saturday at Ciklum

Network Security Configuration (N)

Page 53: Android N Security Overview - Mobile Security Saturday at Ciklum

Domain level rules

Page 54: Android N Security Overview - Mobile Security Saturday at Ciklum

Debug-overrides

● Eliminate debugging-related code in your release build● Avoid writing custom code that removes security for debug and shipping it

When debugging an app that connects over HTTPS you may want to connect to a local development server, which does not have the SSL certificate for your production server. In order to support this without any modification to your app's code you can specify debug-only CAs that are only trusted when android:debuggable is true by using debug-overrides.

Page 55: Android N Security Overview - Mobile Security Saturday at Ciklum

Debug-overrides

Page 56: Android N Security Overview - Mobile Security Saturday at Ciklum

Trusted CAs

Page 57: Android N Security Overview - Mobile Security Saturday at Ciklum

Certificate pinning

Page 58: Android N Security Overview - Mobile Security Saturday at Ciklum

And one more thing:

User CAs are not trusted by default anymore

Page 59: Android N Security Overview - Mobile Security Saturday at Ciklum

Storage Encryption

Page 60: Android N Security Overview - Mobile Security Saturday at Ciklum

Storage Encryption

● Encryption required for all capable devices (M)● Backed by hardware and TrustZone (N)● Better UX with DirectBoot (N)

Page 61: Android N Security Overview - Mobile Security Saturday at Ciklum

Direct Boot

● Boot directly to the lock screen● Calls, SMS, TalkBack, alarms work after device reboot before unlock● Per-user disk encryption

Page 62: Android N Security Overview - Mobile Security Saturday at Ciklum

DirectBoot

● Credential encrypted storage, which is the default storage location and only available after the user has unlocked the device.

● Device encrypted storage, which is a storage location available both during Direct Boot mode and after the user has unlocked the device.

Page 63: Android N Security Overview - Mobile Security Saturday at Ciklum

directBootAware

Page 64: Android N Security Overview - Mobile Security Saturday at Ciklum

Using DirectBoot storage

Page 65: Android N Security Overview - Mobile Security Saturday at Ciklum

Verified Boot

Page 66: Android N Security Overview - Mobile Security Saturday at Ciklum

Verified Boot

Verified boot guarantees the integrity of the device software starting from a hardware root of trust up to the system partition. During boot, each stage verifies the integrity and authenticity of the next stage before executing it.

This capability can be used to warn users of unexpected changes to the software when they acquire a used device, for example.

Page 67: Android N Security Overview - Mobile Security Saturday at Ciklum

SafetyNet

Page 68: Android N Security Overview - Mobile Security Saturday at Ciklum

SafetyNet

A SafetyNet compatibility check allows your app to check if the device where it is running matches the profile of a device that has passed Android compatibility testing. The compatibility check creates a device profile by gathering information about the device hardware and software characteristics, including the platform build.

Page 69: Android N Security Overview - Mobile Security Saturday at Ciklum

SafetyNet attestation request

Page 70: Android N Security Overview - Mobile Security Saturday at Ciklum

SafetyNet response

Page 71: Android N Security Overview - Mobile Security Saturday at Ciklum

Sandboxing

Page 72: Android N Security Overview - Mobile Security Saturday at Ciklum

Sandboxing

● SELinux● Seccomp (N)● Mediaserver

hardening● ASLR randomness● Library load order

randomization● Integrity monitoring

Page 73: Android N Security Overview - Mobile Security Saturday at Ciklum

Mediaserver hardening

Page 74: Android N Security Overview - Mobile Security Saturday at Ciklum

What’s outside N security topic?

● Security Assesment Tools (Santoku, drozer, etc.)

● Eternal secrets of ADB and Manifest, Logs, etc.

● Exploits: sniffing network traffic, attacking services, providers

● SQL-injections● Man-in-the-middle attacks● Custom permissions protection● ProGuard and DexGuard● Reverse Engineering, DEX, GDB● Cross-compiling native

executables● Securing SharedPreferences● SQLCipher● etc...

Page 75: Android N Security Overview - Mobile Security Saturday at Ciklum

Links

● Adrian Ludwig talk on Google I/O 2016 https://youtu.be/XZzLjllizYs?list=PLOU2XLYxmsILe6_eGvDN3GyiodoV3qNSC

● FingerprintDialog sample https://github.com/googlesamples/android-FingerprintDialog ● Authentication samples for M

http://android-developers.blogspot.com/2015/10/new-in-android-samples-authenticating.html ● Android Security Essentials by Pagati Ogal Rai

https://www.packtpub.com/application-development/android-application-security-essentials ● Google Security Blog https://security.googleblog.com/ ● Android Security Bulletins https://source.android.com/security/bulletin/ ● Annual Security Review https://goo.gl/VpYom1

Page 76: Android N Security Overview - Mobile Security Saturday at Ciklum

Security Bulletins

Page 77: Android N Security Overview - Mobile Security Saturday at Ciklum

Android Annual Security Review

Page 78: Android N Security Overview - Mobile Security Saturday at Ciklum

Thank you :)

Constantine Mars,Sr. Android Developer @ DataArt,GDG Dnipro Co-Organizer

+ConstantineMars@ConstantineMars