2
votes

Utilisez la reconnaissance faciale pour Android pour authentifier plusieurs utilisateurs

Je cherche à créer une application pour authentifier les utilisateurs à l'aide de la reconnaissance faciale.

J'ai vérifié qu'Android fournit une invite biométrique pour authentifier l'utilisateur, mais je ne suis pas sûr que cette API puisse être utilisée pour mon cas d'utilisation. De plus, si je peux utiliser cette API, combien de données faciales peuvent être stockées sur un téléphone, où ces données seraient-elles stockées?

Si je ne parviens pas à réaliser ce que je recherche, grâce à la reconnaissance faciale, cela peut être fait en utilisant l'authentification par empreinte digitale. Si oui, combien d'empreintes digitales peuvent être stockées sur un appareil?


3 commentaires

Je ne pense pas qu'Android offre la reconnaissance faciale à plusieurs utilisateurs par défaut. Vous pouvez probablement l'implémenter manuellement. Même chose pour une empreinte digitale je pense. (Pour info, je pourrais me tromper, ce ne sont que mes pensées)


Impossible d'utiliser l'empreinte digitale / biométrique intégrée au framework Android pour plusieurs utilisateurs: Utilisez la nouvelle API d'empreintes digitales d'Android pour plusieurs utilisateurs et < a href = "https://stackoverflow.com/q/39556723/295004"> Est-il possible de collecter l'empreinte digitale d'un utilisateur avec Android? bien que matériel / SDK tiers disponible


Tout comme pour info, les API Android Biometrics ne prennent en charge que les capteurs implémentés par les OEM, ce qui est vraiment le seul moyen de sécuriser le pipeline d'authentification. par exemple. capteur d'empreintes digitales attaché à TrustedExecutionEnviornment, intégration avec KeyStore, stockage des données biométriques dans du matériel sécurisé, etc.


4 Réponses :


0
votes

Le nombre d ' images de visage ou d' images d'empreintes digitales ou de modèles d'empreintes digitales que vous pouvez enregistrer sur un appareil avec un nombre limité capacité d'espace de stockage comme un appareil Android. À partir de maintenant, votre appareil Android moyen sur le marché ne peut pas avoir plus de 32 Go d'espace de stockage gratuit.

Les images faciales occuperont probablement plus d'espace que les images d'empreintes digitales si vous avez l'intention de les conserver pour une utilisation future avec des fonctionnalités de qualité contrairement aux images d'empreintes digitales qui occuperont beaucoup moins d'espace de stockage dans une archive.

Selon que vous souhaitez enregistrer vos images faciales ou vos images d'empreintes digitales sous *. jpg , *. png , *. bmp ou l'un des autres formats d'image courants, le type de format d'image influencera également le nombre d'images de visage ou d'images d'empreintes digitales que vous enregistrerez. Par exemple, les images *. bmp peuvent prendre plus d'espace que les fichiers *. png ou *. jpg .

En ce qui concerne les images d'empreintes digitales, vous pouvez les traiter ultérieurement en modèles d'empreintes digitales à partir desquels vous pouvez archiver leurs données textuelles encodées. Cela ne prendra pas beaucoup de place dans votre espace de stockage car les modèles d'empreintes digitales utiliseront peu d'espace comme les données textuelles, contrairement à lorsque vous enregistrez l'image d'empreinte digitale complète.

Pour archiver vos données biométriques capturées à partir de votre appareil mobile, si vous voulez plus d'espace de stockage, vous feriez mieux d'envoyer vos données biométriques à un serveur cloud géré ou à un ordinateur distant quelque part avec un espace de stockage suffisant que votre appareil mobile. Avec la plupart des serveurs basés sur le cloud, vous pouvez demander plus d'espace de stockage à mesure que les besoins de stockage des données de votre application augmentent. Pour les serveurs distants physiques, vous devrez organiser une mise à niveau du disque dur vers un serveur avec une capacité de données beaucoup plus grande.

Vous pouvez également vous faciliter la tâche en écrivant du code d'authentification à exécuter côté serveur afin que votre appareil mobile soit utilisé à dessein pour capturer l'image de visage ou l'image d'empreinte digitale et l'envoyer pour l'archivage et l'authentification au serveur distant, puis une fois que le résultat de la correspondance (qu'il s'agisse d'une correspondance trouvée ou d'une correspondance non trouvée ) est déterminé, votre appareil Android reçoit le résultat de la correspondance et fait un rapport à l'utilisateur de votre Application d'authentification biométrique Android .

Vous pouvez envisager de demander à votre application Android d'appeler certains services Web qui envoient des données à vos serveurs distants dès que vous capturez une image de visage ou que vous inscrivez un modèle d'empreinte digitale.


0 commentaires

0
votes

C'est peut-être un retard, mais j'aimerais ajouter quelques remarques: Question rapide: pourquoi stocker des données biométriques alors que vous pouvez simplement autoriser l'appareil à gérer les données lui-même? De plus, pour l'authenticité des données, je suppose seulement que si l'appareil gère ces données par lui-même, nous sommes en quelque sorte sûrs que les données biométriques sont au moins authentiques parce que nous ne les avons pas stockées quelque part où nous pourrions les perdre ou accidentellement. manipuler ces données et ainsi de suite ...

Ce qui me fait conclure que lorsqu'un utilisateur définit la biométrie de son appareil, mon application utilisera simplement les données pour les authentifier si nécessaire, donc si l'utilisateur a changé ses données biométriques changera également dans mon application, ceci est ma propre opinion et approche, je pense que c'est proche de la redondance si mon application doit capturer les données que l'appareil possède déjà et si l'appareil ne dispose pas de ces données, j'instruirai l'utilisateur via mon application pour définir leurs authentifications biométriques. Remarque: cela peut ne pas s'appliquer à tout le monde, c'est juste ce que je pense être cohérent et économiseur pour les utilisateurs de l'application.

Voici mon implémentation:

ÉTAPE 1 => J'ajoute le code ci-dessous à mon Gradle, c'est une bibliothèque simple qui aide à consommer les API biométriques matérielles et à les rendre conviviales, vous pouvez même le cloner manuellement et modifier en votre goût.

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P){
        new BiometricManager.BiometricBuilder(MainActivity.this)
        .setTitle("Enter your print to access your wallet.")
        .setNegativeButtonText("Try pin instead")
        .build()
        .authenticate(new BiometricCallback() {
            @Override
            public void onSdkVersionNotSupported() {
                Log.e("SDK", "Not supported");
                /*
                 *  Will be called if the device sdk version does not support Biometric authentication
                 */
            }

            @Override
            public void onBiometricAuthenticationNotSupported() {
                Log.e("BIOMETRIC", "Not supported");
                /*
                 *  Will be called if the device does not contain any fingerprint sensors
                 */
            }

            @Override
            public void onBiometricAuthenticationNotAvailable() {
                Log.e("BIOMETRIC", "Authentication Not Available");
                /*
                 *  The device does not have any biometrics registered in the device.
                 */
            }

            @Override
            public void onBiometricAuthenticationPermissionNotGranted() {
                Log.e("BIOMETRIC", "Authentication Permission Not Granted");
                /*
                 *  android.permission.USE_BIOMETRIC permission is not granted to the app
                 */
            }

            @Override
            public void onBiometricAuthenticationInternalError(String error) {
                Log.e("BIOMETRIC", "Authentication Internal Error");

                /*
                 *  This method is called if one of the fields such as the title, subtitle,
                 * description or the negative button text is empty
                 */
            }

            @Override
            public void onAuthenticationFailed() {
                Log.e("BIOMETRIC", "Authentication Failed");
                /*
                 * When the fingerprint doesn’t match with any of the fingerprints registered on the device,
                 * then this callback will be triggered.
                 */
            }

            @Override
            public void onAuthenticationCancelled() {
                Log.e("BIOMETRIC", "Authentication Cancelled");
                    pinDialog();
                /*
                 * The authentication is cancelled by the user.
                 */
            }

            @Override
            public void onAuthenticationSuccessful() {
                Log.e("BIOMETRIC", "Authentication Successful");
                /*
                 * When the fingerprint is has been successfully matched with one of the fingerprints
                 * registered on the device, then this callback will be triggered.
                 */
            }

            @Override
            public void onAuthenticationHelp(int helpCode, CharSequence helpString) {
                Log.e("BIOMETRIC", "Authentication Help");
                /*
                 * This method is called when a non-fatal error has occurred during the authentication
                 * process. The callback will be provided with an help code to identify the cause of the
                 * error, along with a help message.
                 */
            }

            @Override
            public void onAuthenticationError(int errorCode, CharSequence errString) {
                Log.e("BIOMETRIC", "Authentication Error");
                setSelectedTab(0);
                /*
                 * When an unrecoverable error has been encountered and the authentication process has
                 * completed without success, then this callback will be triggered. The callback is provided
                 * with an error code to identify the cause of the error, along with the error message.
                 */
            }
        });
}

ÉTAPE 2 => J'ajoute l'autorisation nécessaire à mon manifeste, n'oubliez pas que vous devrez peut-être demander explicitement l'autorisation biométrique en fonction de la version du système d'exploitation Android.

<uses-permission android:name="android.permission.USE_BIOMETRIC" />

Enfin => Il suffit de lire les commentaires dans le code ci-dessous.

implementation(group: 'com.an.biometric', name: 'biometric-auth', version: '0.1.0', ext: 'aar', classifier: '')

Presque oublier, cette implémentation est pour l'empreinte digitale seulement pas pour la reconnaissance faciale, en fait, a localisé cette question à la recherche de l'implémentation de la reconnaissance faciale ... lol.

Codage heureux.


0 commentaires

0
votes

La bibliothèque biométrique AndroidX gère tous les facteurs de forme pour vous (visage, iris, empreinte digitale, etc.). Il fait tout cela sous le capot pour que vous, le développeur, l'implémentiez une fois et votre code fonctionnera partout, quel que soit le capteur biométrique utilisé par un appareil Android. Ce billet de blog et ce billet de blog montre comment implémenter l'API pour qu'elle fonctionne avec tous les facteurs de forme.

En ce qui concerne votre question "combien de données faciales peuvent être stockées sur un téléphone", heureusement, cela dépasse le cadre de votre application. Le framework gère tout cela pour vous dans les coulisses comme j'ai expliqué ici < / a>.


0 commentaires

0
votes

vous devez utiliser le modèle ml pour l'authentification faciale pour plusieurs utilisateurs, probablement tflite android.


0 commentaires