• 移动端
    访问手机端
    官微
    访问官微

    搜索
    取消
    温馨提示:
    敬爱的用户,您的浏览器版本过低,会导致页面浏览异常,建议您升级浏览器版本或更换其他浏览器打开。

    Android8.0中对指纹的新要求

    来源:安智客 2017-12-15 09:20:45 Android 指纹 金融安全
         来源:安智客     2017-12-15 09:20:45

    核心提示fingerprint Hal通过指纹厂商的驱动程序访问指纹硬件。在这一层,如果不在TEE中实现,则是指纹HAL层库,直接访问指纹硬件驱动。目前Google要求指纹必须在TEE中实现,因此此处的HAL层也可以称之为指纹CA。

      我们先来看一张指纹在Android6.0版本上的架构层次图:

    Android8.0中对指纹的新要求

      指纹应用层,也就是手机上的指纹设置,这是Android系统层定义的指纹管理入口。

      1,system/core/rootdir/init.rc中启动system/core/Fingerprintd指纹的守护进程。

    Android8.0中对指纹的新要求

      fingerprintd的代码实现如下目录:

    Android8.0中对指纹的新要求

      Fingerprintd把IFingerprintDaemon远程服务,注册到serivcemanager。

      2,SystemServer 会启动指纹的系统服务FingerprintService。

      framework层中的FingerprintService调fingerprintd服务,调用FingerprintDaemonProxy.cpp里面的方法。

      /frameworks/base/services/java/com/android/server/SystemServer.java中

      mSystemServiceManager.startService(FingerprintService.class);

      Android系统在加载SystemServer,启动FingerprintService指纹系统服务。

      /frameworks/base/services/core/java/com/android/server/fingerprint/FingerprintService.java

      3,FingerprintSetvice调用fingerprintd的接口,与fingerprint Hal层通信

      /frameworks/base/core/java/android/hardware/fingerprint/

      fingerprintd的代码FingerprintDaemonProxy.cpp会打开HAL层。

    Android8.0中对指纹的新要求

      4,fingerprint Hal通过指纹厂商的驱动程序访问指纹硬件。

      在这一层,如果不在TEE中实现,则是指纹HAL层库,直接访问指纹硬件驱动。

      目前Google要求指纹必须在TEE中实现,因此此处的HAL层也可以称之为指纹CA。

      一般情况下,指纹CA代码会在如下目录,

      /hardware/libhardware/include/hardware/fingerprint.h

      /hardware/libhardware/modules/fingerprint

      不同厂商的TEE系统,指纹厂商必须进行适配。

      5,指纹TA。

      由于在TEE系统已经接管了指纹硬件SPI接口,因此指纹TA中封装了操作指纹函数接口。

      那指纹驱动现在还有啥作用?

      \kernel-3.18\drivers\misc\mediatek\fingerprint\

      主要是GPIO的设置以及设备服务操作等等。

    Android8.0中对指纹的新要求

    Android8.0中对指纹的新要求

      Android O版本对指纹有啥特别要求?

      我们前面也介绍过《Android O新特性之Treble介绍》,在Android O以及以后的版本当中,Android更新了框架,引入了一套叫HIDL的语言来定义Freamework与HAL之间的接口。

      Android O 没有了fingerprintd。

      fingerprintService.java 调用HIDL接口,HIDl接口的实现类可以由指纹厂家自行去实现。

      BiometricsFingerprint.cpp 文件是IBiometricsFingerprint接口的实现类。

      android.hardware.biometrics.fingerprint@2.1-service.rc启动fps_hal 服务。

      BiometricsFingerprint.cpp 文件,会在构造函数中去打开HAL。其他没变。

      文章以指纹分析作为一个例子,主要是阐述Android8.0新版本架构给vendor厂商带来的改变。也就是说以后的VTS测试将是各厂商需要重点关注的。

    责任编辑:韩希宇

    免责声明:

    中国电子银行网发布的专栏、投稿以及征文相关文章,其文字、图片、视频均来源于作者投稿或转载自相关作品方;如涉及未经许可使用作品的问题,请您优先联系我们(联系邮箱:cebnet@cfca.com.cn,电话:400-880-9888),我们会第一时间核实,谢谢配合。

    为你推荐

    猜你喜欢

    收藏成功

    确定