SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Android Fingerprint
Authentication
Gabriel Bernardo Pereira
gabeira@gmail.com
Me
Senior Android Developer
● Team Leader
● Tech Leader
● iOS Developer
● QA
● Business Analyst
● Java2 ME
linkedin.com/in/gabeira
What to expect
● Problem / Solutions
● Alternative implementations
● Native Google Support
● UI Guidelines
● Requirements / Implementation
● Cryptography
● Best Practices
● Google Sample and live Code (if we have time)
Reference:
androidauthority.com/how-to-add-fingerprint-authentication-to-your-android-app-747304
https://www.wired.com/story/android-unlock-pattern-or-pin/
Biometrics
https://www.howtogeek.com/226689/how-to-improve-fingerprint-recognition-with-touch-id/
developer.samsung.com/galaxy/pass
slideshare.net/SamsungBusinessUSA/
how-to-use-samsung-pass-to-replace-your-passwords
developer.android.com/about/versions/marshmallow/android-6.0.html
UI Guidelines
material.io/guidelines/
patterns/fingerprint.html
Requirements
● Device supports fingerprint
○ fingerprintManager.isHardwareDetected()
● Android version supported
○ Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
● Fingerprint enabled
○ ActivityCompat.checkSelfPermission(this, Manifest.permission.USE_FINGERPRINT) !=
PackageManager.PERMISSION_GRANTED
● Fingerprint configured
○ fingerprintManager.hasEnrolledFingerprints()
● The lockscreen is secured
○ keyguardManager.isKeyguardSecure()
How to implement
Fingerprint Handler
Fingerprint Handler
Cryptography
● KeyStore
● KeyGenerator
● Cipher
● CryptoObject
docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html
Generate new secret Key
keyStore = KeyStore.getInstance("AndroidKeyStore")
val keyGenerator =
KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES,
"AndroidKeyStore")
keyStore.load(null)
keyGenerator.init(
KeyGenParameterSpec.Builder(KEY_NAME,
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
//Configure this key so that the user has to confirm identity with fingerprint each time they use it//
.setUserAuthenticationRequired(true)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
.build())
keyGenerator.generateKey()
Cipher
Used for encrypting/decrypting data
Use various types of algorithms:
Symmetric bulk encryption (e.g. AES)
Asymmetric encryption (e.g. RSA)
Password-based encryption (e.g. PBE)
How to init Cipher
cipher = Cipher.getInstance(
KeyProperties.KEY_ALGORITHM_AES + "/"
+ KeyProperties.BLOCK_MODE_CBC + "/"
+ KeyProperties.ENCRYPTION_PADDING_PKCS7)
keyStore.load(null)
val key = keyStore.getKey(KEY_NAME, null) as SecretKey
cipher.init(Cipher.ENCRYPT_MODE, key)
Create CryptoObject with cipher
val cryptoObject = FingerprintManager.CryptoObject(cipher)
val helper = FingerprintHandler(this)
helper.startAuth( fingerprintManager , cryptoObject )
Best practices
● Consider backwards compatibility;
● Provide alternate methods of authentication;
● Clearly indicate when your app is “listening” for user input;
● If the device cannot support finger authentication, then
explain why;
● Provide the user with plenty of feedback.
Google Dialog Sample
github.com/
googlesamples/
android-FingerprintDialog
Let's Code (baby steps)
github.com/
gabeira/
FingerprintKotlin
Available on Slideshare

Weitere ähnliche Inhalte

Was ist angesagt?

Cross-Browser-Testing with Protractor & Browserstack
Cross-Browser-Testing with Protractor & BrowserstackCross-Browser-Testing with Protractor & Browserstack
Cross-Browser-Testing with Protractor & BrowserstackLeo Lindhorst
 
Refine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated testRefine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated testMalang QA Community
 
User Interface Testing. What is UI Testing and Why it is so important?
User Interface Testing. What is UI Testing and Why it is so important?User Interface Testing. What is UI Testing and Why it is so important?
User Interface Testing. What is UI Testing and Why it is so important?Maveryx
 
Mobile application development
Mobile application developmentMobile application development
Mobile application developmentEric Cattoir
 
Perils of Page-Object Pattern
Perils of Page-Object PatternPerils of Page-Object Pattern
Perils of Page-Object PatternAnand Bagmar
 
Performance testing interview questions and answers
Performance testing interview questions and answersPerformance testing interview questions and answers
Performance testing interview questions and answersGaruda Trainings
 
Reinforcement Learning with Sagemaker, DeepRacer and Robomaker
Reinforcement Learning with Sagemaker, DeepRacer and RobomakerReinforcement Learning with Sagemaker, DeepRacer and Robomaker
Reinforcement Learning with Sagemaker, DeepRacer and RobomakerAlex Barbosa Coqueiro
 
Flutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | EdurekaFlutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | EdurekaEdureka!
 
Visualization, storage and comparison results of performance testing by using...
Visualization, storage and comparison results of performance testing by using...Visualization, storage and comparison results of performance testing by using...
Visualization, storage and comparison results of performance testing by using...Anton Shapin
 
How to Break your App - Best Practices in Mobile App Testing
How to Break your App - Best Practices in Mobile App TestingHow to Break your App - Best Practices in Mobile App Testing
How to Break your App - Best Practices in Mobile App TestingDaniel Knott
 
The story of SonarQube told to a DevOps Engineer
The story of SonarQube told to a DevOps EngineerThe story of SonarQube told to a DevOps Engineer
The story of SonarQube told to a DevOps EngineerManu Pk
 
Introduction to mobile application development
Introduction to mobile application developmentIntroduction to mobile application development
Introduction to mobile application developmentChandan Maurya
 
how to use fiddler (Ver eng)
how to use fiddler (Ver eng)how to use fiddler (Ver eng)
how to use fiddler (Ver eng)용진 조
 
What is new in Firebase?
What is new in Firebase?What is new in Firebase?
What is new in Firebase?Sinan Yılmaz
 
Types of Software Testing
Types of Software TestingTypes of Software Testing
Types of Software TestingNishant Worah
 

Was ist angesagt? (20)

Sonarqube
SonarqubeSonarqube
Sonarqube
 
Cross-Browser-Testing with Protractor & Browserstack
Cross-Browser-Testing with Protractor & BrowserstackCross-Browser-Testing with Protractor & Browserstack
Cross-Browser-Testing with Protractor & Browserstack
 
LambdaTest
LambdaTestLambdaTest
LambdaTest
 
Refine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated testRefine your ci:cd pipeline with automated test
Refine your ci:cd pipeline with automated test
 
User Interface Testing. What is UI Testing and Why it is so important?
User Interface Testing. What is UI Testing and Why it is so important?User Interface Testing. What is UI Testing and Why it is so important?
User Interface Testing. What is UI Testing and Why it is so important?
 
Mobile application development
Mobile application developmentMobile application development
Mobile application development
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
 
Azure DevOps
Azure DevOpsAzure DevOps
Azure DevOps
 
Cucumber ppt
Cucumber pptCucumber ppt
Cucumber ppt
 
Perils of Page-Object Pattern
Perils of Page-Object PatternPerils of Page-Object Pattern
Perils of Page-Object Pattern
 
Performance testing interview questions and answers
Performance testing interview questions and answersPerformance testing interview questions and answers
Performance testing interview questions and answers
 
Reinforcement Learning with Sagemaker, DeepRacer and Robomaker
Reinforcement Learning with Sagemaker, DeepRacer and RobomakerReinforcement Learning with Sagemaker, DeepRacer and Robomaker
Reinforcement Learning with Sagemaker, DeepRacer and Robomaker
 
Flutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | EdurekaFlutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | Edureka
 
Visualization, storage and comparison results of performance testing by using...
Visualization, storage and comparison results of performance testing by using...Visualization, storage and comparison results of performance testing by using...
Visualization, storage and comparison results of performance testing by using...
 
How to Break your App - Best Practices in Mobile App Testing
How to Break your App - Best Practices in Mobile App TestingHow to Break your App - Best Practices in Mobile App Testing
How to Break your App - Best Practices in Mobile App Testing
 
The story of SonarQube told to a DevOps Engineer
The story of SonarQube told to a DevOps EngineerThe story of SonarQube told to a DevOps Engineer
The story of SonarQube told to a DevOps Engineer
 
Introduction to mobile application development
Introduction to mobile application developmentIntroduction to mobile application development
Introduction to mobile application development
 
how to use fiddler (Ver eng)
how to use fiddler (Ver eng)how to use fiddler (Ver eng)
how to use fiddler (Ver eng)
 
What is new in Firebase?
What is new in Firebase?What is new in Firebase?
What is new in Firebase?
 
Types of Software Testing
Types of Software TestingTypes of Software Testing
Types of Software Testing
 

Ähnlich wie Android Fingerprint Authentication

Breaking Fraud & Bot detection solutions
Breaking Fraud & Bot detection solutionsBreaking Fraud & Bot detection solutions
Breaking Fraud & Bot detection solutionsMayank Dhiman
 
What new in Android n and Tensor Flow - Updates from Google #IO16
What new in Android n and Tensor Flow - Updates from Google #IO16What new in Android n and Tensor Flow - Updates from Google #IO16
What new in Android n and Tensor Flow - Updates from Google #IO16GBG Mumbai
 
Moving to tdd bdd
Moving to tdd bddMoving to tdd bdd
Moving to tdd bddKim Carter
 
Mobile html5 today
Mobile html5 todayMobile html5 today
Mobile html5 todayIdo Green
 
JET BI - mobile solutions for business
JET BI - mobile solutions for businessJET BI - mobile solutions for business
JET BI - mobile solutions for businessNadezhda Avramenko
 
Desenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoDesenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoJuliano Martins
 
Deepak_Raghav Resume done
Deepak_Raghav Resume doneDeepak_Raghav Resume done
Deepak_Raghav Resume doneDeepak Raghav
 
Novidades do Google IO 2015
Novidades do Google IO 2015Novidades do Google IO 2015
Novidades do Google IO 2015Jose Papo, MSc
 
Daffodil Android App Development Portfolio
Daffodil Android App Development PortfolioDaffodil Android App Development Portfolio
Daffodil Android App Development PortfolioAshok Surendran
 
臉 - The Face Detection Functions on Android
臉 - The Face Detection Functions on Android臉 - The Face Detection Functions on Android
臉 - The Face Detection Functions on AndroidPRADA Hsiung
 
Pentesting Android Applications
Pentesting Android ApplicationsPentesting Android Applications
Pentesting Android ApplicationsCláudio André
 
Android Test 環境あれこれ
Android Test 環境あれこれAndroid Test 環境あれこれ
Android Test 環境あれこれtsutomuhayakawa
 
WebCamp Zagreb 2014 mirror api
WebCamp Zagreb 2014   mirror apiWebCamp Zagreb 2014   mirror api
WebCamp Zagreb 2014 mirror apidselmanovic
 
Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009sullis
 
Ganesh_Ichake_4_Years_experience
Ganesh_Ichake_4_Years_experienceGanesh_Ichake_4_Years_experience
Ganesh_Ichake_4_Years_experienceGanesh Ichake
 
Getting Started with Android Development
Getting Started with Android DevelopmentGetting Started with Android Development
Getting Started with Android DevelopmentEdureka!
 

Ähnlich wie Android Fingerprint Authentication (20)

Breaking Fraud & Bot detection solutions
Breaking Fraud & Bot detection solutionsBreaking Fraud & Bot detection solutions
Breaking Fraud & Bot detection solutions
 
What new in Android n and Tensor Flow - Updates from Google #IO16
What new in Android n and Tensor Flow - Updates from Google #IO16What new in Android n and Tensor Flow - Updates from Google #IO16
What new in Android n and Tensor Flow - Updates from Google #IO16
 
Android Made Simple
Android Made SimpleAndroid Made Simple
Android Made Simple
 
Moving to tdd bdd
Moving to tdd bddMoving to tdd bdd
Moving to tdd bdd
 
Mobile html5 today
Mobile html5 todayMobile html5 today
Mobile html5 today
 
JET BI - mobile solutions for business
JET BI - mobile solutions for businessJET BI - mobile solutions for business
JET BI - mobile solutions for business
 
Desenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoDesenvolvimento Mobile Híbrido
Desenvolvimento Mobile Híbrido
 
Deepak_Raghav Resume done
Deepak_Raghav Resume doneDeepak_Raghav Resume done
Deepak_Raghav Resume done
 
Novidades do Google IO 2015
Novidades do Google IO 2015Novidades do Google IO 2015
Novidades do Google IO 2015
 
Our Design and We Services
Our Design and We Services Our Design and We Services
Our Design and We Services
 
Daffodil Android App Development Portfolio
Daffodil Android App Development PortfolioDaffodil Android App Development Portfolio
Daffodil Android App Development Portfolio
 
臉 - The Face Detection Functions on Android
臉 - The Face Detection Functions on Android臉 - The Face Detection Functions on Android
臉 - The Face Detection Functions on Android
 
Pentesting Android Applications
Pentesting Android ApplicationsPentesting Android Applications
Pentesting Android Applications
 
Android Test 環境あれこれ
Android Test 環境あれこれAndroid Test 環境あれこれ
Android Test 環境あれこれ
 
WebCamp Zagreb 2014 mirror api
WebCamp Zagreb 2014   mirror apiWebCamp Zagreb 2014   mirror api
WebCamp Zagreb 2014 mirror api
 
Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009Getting Started with Android - OSSPAC 2009
Getting Started with Android - OSSPAC 2009
 
Ganesh_Ichake_4_Years_experience
Ganesh_Ichake_4_Years_experienceGanesh_Ichake_4_Years_experience
Ganesh_Ichake_4_Years_experience
 
Working with Multiple Android Screens
Working with Multiple Android ScreensWorking with Multiple Android Screens
Working with Multiple Android Screens
 
Getting Started with Android Development
Getting Started with Android DevelopmentGetting Started with Android Development
Getting Started with Android Development
 
Tracking across devices
Tracking across devices Tracking across devices
Tracking across devices
 

Android Fingerprint Authentication