保存密文的方法和装置
技术领域
本申请涉及终端领域,具体涉及一种保存密文的方法和装置。
背景技术
随着增强移动宽带(enhanced mobile broadband,eMBB)、高清视频等大数据量业务的出现,电子设备面临存储空间不足的问题。与电子设备连接的外置存储器(如安全数码(secure digital,SD)卡)能够解决存储空间不足的问题,为了保障数据安全,外置存储器中的数据需要加密保存。
外置存储器的密钥被锁屏口令加密后存储在电子设备的可擦除分区中,当用户对电子设备实施工厂级重置(factory reset)时,可擦除分区内加密的密钥(即,密文)来不及保存即被删除,从而导致外置存储器中的数据无法解密。
发明内容
本申请提供了一种保存密文的方法和装置,能够解决电子设备执行工厂级重置后外置存储器中的数据无法解密的问题。
第一方面,提供了一种保存密文的方法,包括:获取加密指令,所述加密指令指示加密外置存储器中的文件;根据所述加密指令获取第一账号标识的特征值;使用所述第一账号标识的特征值加密第一密钥,生成第一密文,其中,所述第一密钥用于加密第二密钥,所述第二密钥用于加密所述外置存储器中的第一文件;加密所述第一账号标识的特征值,生成第二密文;将所述第一密文和所述第二密文存储于不可擦除分区。
加密指令为用户在加密设置界面加密外置存储器时触发的指令,电子设备获取加密指令后生成第一密文和第二密文,并将第一密文和第二密文存储在电子设备的不可擦除分区中,这样,在用户对电子设备实施工厂级重置前,电子设备已完成了第一密文和第二密文的安全存储;电子设备完成了工厂级重置后,可以从不可擦除分区恢复第一密钥,随后利用第一密钥解密出外置存储器中的第二密钥,并利用第二密钥解密出外置存储器中的文件,从而解决了工厂级重置后外置存储器中的文件无法被解密的问题。
可选地,所述方法还包括:获取切换账号的指示信息;根据所述指示信息校验所述第一账号标识;所述第一账号标识校验通过后,获取第二账号标识的特征值;根据所述第二账号标识的特征值更新所述第一密文和所述第二密文。
用户可以在账号登录界面切换当前登录的账号标识(如,第一账号标识),用户在账号登录界面触发电子设备生成切换账号的指示信息后,电子设备可以要求用户输入第一账号标识对应的密码,对第一账号标识进行校验。第一账号标识校验通过后,说明切换账号标识的用户为合法用户,电子设备可以获取用户输入的第二账号标识,并计算第二账号标识的哈希值(特征值的一个示例),随后利用第二账号标识的哈希值更新所述第一密文和所述第二密文,其中,电子设备可以先解密出第一密钥,再使用第二账号标识的哈希值生成更新后的第一密文,随后加密第二账号标识的哈希值生成更新后的第二密文。上述方案在确定当前用户(切换账号标识的用户)为合法用户后,利用当前用户的账号标识(第二账号标识)更新第一密文和第二密文,解除了第一账号标识对应的加密和解密外置存储器的权限,从而确保了外置存储器中数据的安全性。
可选地,所述方法还包括:在工厂级重置完成后,校验所述第一账号标识;当所述第一账号标识校验成功时,解密所述第一密文和所述第二密文,生成所述第一密钥。
电子设备执行工厂级重置后会启动账号校验机制,该机制要求账号校验成功后才能正常使用电子设备。校验工厂级重置前最后登录的账号标识(如,第一账号标识),可以确保电子设备执行工厂级重置后的用户为合法用户,从而确保了外置存储器中数据的安全性。
可选地,所述校验所述第一账号标识,包括:
当工厂级重置保护(factory reset protection,FRP)状态已被触发时,校验所述第一账号标识。
可选地,所述方法还包括:使用默认值加密所述第一密钥,生成第三密文;加密所述默认值,生成第四密文;将所述第三密文和所述第四密文存储于所述不可擦除分区。
由于用户可能会切换账号,电子设备执行工厂级重置后继续使用第一账号标识或者第二账号标识加密保存第一密钥存在泄密风险,电子设备可以在解密出第一密钥后使用默认值加密保存第一密钥,从而确保了外置存储器中数据的安全性。
可选地,所述方法还包括:将所述第三密文和所述第四密文从所述不可擦除分区拷贝至可擦除分区;根据所述可擦除分区中的所述第三密文和所述第四密文生成所述第一密钥;根据所述第一密钥解密所述外置存储器中加密的第一文件。
可选地,所述校验所述第一账号标识之前,所述方法还包括:获取recovery界面触发的工厂级重置指令;根据所述工厂级重置指令格式化可擦除分区中的数据。
可选地,所述使用所述第一账号标识的特征值加密第一密钥,包括:调用密钥管理模块keymaster TA执行:使用所述第一账号标识的特征值加密所述第一密钥;所述加密所述第一账号标识的特征值,包括:调用所述keymaster TA执行:加密所述第一账号标识的特征值。
可选地,所述将所述第一密文和所述第二密文存储于不可擦除分区,包括:调用可信执行环境应用程序接口执行:将所述第一密文和所述第二密文存储于所述不可擦除分区。
可选地,所述第一密钥还用于加密第三密钥,所述第三密钥用于加密所述外置存储器中加密的第二文件。
可选地,所述方法还包括:根据所述加密指令获取锁屏口令的特征值;使用所述锁屏口令的特征值加密所述第一密钥,生成第五密文;加密所述锁屏口令的特征值,生成第六密文;将所述第五密文和所述第六密文存储于可擦除分区。
可选地,所述使用所述锁屏口令的特征值加密所述第一密钥,包括:调用keymaster TA执行:使用所述锁屏口令的特征值加密所述第一密钥;所述加密所述锁屏口令的特征值,包括:调用所述keymaster TA执行:加密所述锁屏口令的特征值。
可选地,所述方法还包括:获取设置界面触发的用户级重置指令;根据所述用户级重置指令将所述第五密文和所述第六密文备份至所述不可擦除分区。
可选地,所述根据所述用户级重置指令将所述第五密文和所述第六密文备份至所述不可擦除分区,包括:根据所述用户级重置指令从所述第五密文和所述第六密文中解密出所述第一密钥;使用默认值加密所述第一密钥,生成第七密文;加密所述默认值,生成第八密文;将所述第七密文和所述第八密文存储在所述不可擦除分区中。
可选地,所述方法还包括:在用户级重置完成后,将所述第七密文和所述第八密文从所述不可擦除分区拷贝至所述可擦除分区;从所述可擦除分区中的所述第七密文和所述第八密文中解密出所述第一密钥;根据所述第一密钥解密所述外置存储器中加密的所述第一文件。
可选地,所述可擦除分区为data分区,所述锁屏口令的特征值为所述锁屏口令的哈希值。
可选地,所述不可擦除分区为sec_storage分区,所述第一账号标识的特征值为所述第一账号标识的哈希值。
第二方面,提供了一种另一种保存密文的方法,包括:显示外置存储器的加密设置界面;接收用户在所述加密设置界面上进行的第一操作;响应于所述第一操作,加密所述外置存储器中的文件;接收所述用户的第二操作;响应于所述第二操作,显示工厂级重置设置界面;接收所述用户在所述工厂级重置设置界面进行的第三操作;响应于所述第三操作,进行工厂级重置;显示账号校验界面;接收所述用户在所述账号校验界面输入的校验信息;当所述校验信息校验通过时,并且,当接收到用户访问所述外置存储器中的文件的操作时,解密所述外置存储器中加密的文件。
加密指令为用户在加密设置界面加密外置存储器时触发的指令,电子设备获取加密指令后生成第一密文和第二密文,并将第一密文和第二密文存储在电子设备的不可擦除分区中,这样,在用户对电子设备实施工厂级重置前,电子设备已完成了第一密文和第二密文的安全存储;电子设备在完成了工厂级重置后,可以从不可擦除分区恢复第一密钥,随后利用第一密钥解密出外置存储器中的第二密钥,并利用第二密钥解密出外置存储器中的文件,从而解决了工厂级重置后外置存储器中的文件无法被解密的问题。
第三方面,提供了一种保存密文的装置,包括用于执行第一方面或第二方面中任一种方法的单元。该装置可以是终端设备,也可以是终端设备内的芯片。该装置可以包括输入单元和处理单元。
当该装置是终端设备时,该处理单元可以是处理器,该输入单元可以是通信接口;该终端设备还可以包括存储器,该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该终端设备执行第一方面或第二方面中的任一种方法。
当该装置是终端设备内的芯片时,该处理单元可以是芯片内部的处理单元,该输入单元可以是输出接口、管脚或电路等;该芯片还可以包括存储器,该存储器可以是该芯片内的存储器(例如,寄存器、缓存等),也可以是位于该芯片外部的存储器(例如,只读存储器、随机存取存储器等);该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该芯片执行第一方面或第二方面中的任一种方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被保存密文的装置运行时,使得该装置执行第一方面或第二方面中的任一种方法。
第五方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被保存密文的装置运行时,使得该装置执行第一方面或第二方面中的任一种方法。
附图说明
图1是一种适用于本申请的装置的硬件系统的示意图;
图2是一种适用于本申请的装置的软件系统的示意图;
图3是本申请提供的一种加密设置界面的示意图;
图4是本申请提供的一种加密确认界面的示意图;
图5是本申请提供的一种加密过程界面的示意图;
图6是本申请提供的一种保存密钥的方法的示意图;
图7是本申请提供的一种加密流程的示意图;
图8是本申请提供的一种用户级重置场景中备份和恢复密钥的方法的示意图;
图9是本申请提供的一种用户级重置场景中存储区域的密文存储变化情况的示意图;
图10是本申请提供的一种工厂级重置场景中备份密钥的方法的示意图;
图11是本申请提供的一种账号登录界面的示意图;
图12是本申请提供的一种账号切换时存储区域的密文存储变化情况的示意图;
图13是本申请提供的一种工厂级重置设置界面的示意图;
图14是本申请提供的一种工厂级重置确认界面的示意图;
图15是本申请提供的一种工厂级重置过程界面的示意图;
图16是本申请提供的一种工厂级重置场景中恢复密钥的方法的示意图;
图17是本申请提供的一种账号校验界面示意图;
图18是本申请提供的一种工厂级重置场景中存储区域的密文存储变化情况的示意图;
图19是本申请提供的一种保存密文的装置的示意图;
图20是本申请提供的一种保存密文的电子设备的示意图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
图1示出了一种适用于本申请的装置的硬件系统。
装置100可以是手机、智慧屏、平板电脑、可穿戴电子设备、车载电子设备、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、投影仪等等,本申请实施例对装置100的具体类型不作任何限制。
装置100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
需要说明的是,图1所示的结构并不构成对装置100的具体限定。在本申请另一些实施例中,装置100可以包括比图1所示的部件更多或更少的部件,或者,装置100可以包括图1所示的部件中某些部件的组合,或者,装置100可以包括图1所示的部件中某些部件的子部件。图1示的部件可以以硬件、软件、或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元。例如,处理器110可以包括以下处理单元中的至少一个:应用处理器(application processor,AP)、调制解调处理器、图形处理器(graphics processing unit,GPU)、图像信号处理器(image signal processor,ISP)、控制器、视频编解码器、数字信号处理器(digital signal processor,DSP)、基带处理器、神经网络处理器(neural-network processing unit,NPU)。其中,不同的处理单元可以是独立的器件,也可以是集成的器件。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。例如,处理器110可以包括以下接口中的至少一个:内部集成电路(inter-integrated circuit,I2C)接口、内部集成电路音频(inter-integrated circuit sound,I2S)接口、脉冲编码调制(pulse codemodulation,PCM)接口、通用异步接收传输器(universal asynchronous receiver/transmitter,UART)接口、移动产业处理器接口(mobile industry processor interface,MIPI)、通用输入输出(general-purpose input/output,GPIO)接口、SIM接口、USB接口。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K、充电器、闪光灯、摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现装置100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194和摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI)、显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现装置100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现装置100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号接口,也可被配置为数据信号接口。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194、无线通信模块160、音频模块170和传感器模块180。GPIO接口还可以被配置为I2C接口、I2S接口、UART接口或MIPI接口。
USB接口130是符合USB标准规范的接口,例如可以是迷你(Mini)USB接口、微型(Micro)USB接口或C型USB(USB Type C)接口。USB接口130可以用于连接充电器为装置100充电,也可以用于装置100与外围设备之间传输数据,还可以用于连接耳机以通过耳机播放音频。USB接口130还可以用于连接其他装置100,例如AR设备。
图1所示的各模块间的连接关系只是示意性说明,并不构成对装置100的各模块间的连接关系的限定。可选地,装置100的各模块也可以采用上述实施例中多种连接方式的组合。
充电管理模块140用于从充电器接收电力。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的电流。在一些无线充电的实施例中,充电管理模块140可以通过装置100的无线充电线圈接收电磁波(电流路径如虚线所示)。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为装置100供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量、电池循环次数和电池健康状态(例如,漏电、阻抗)等参数。可选地,电源管理模块141可以设置于处理器110中,或者,电源管理模块141和充电管理模块140可以设置于同一个器件中。
装置100的无线通信功能可以通过天线1、天线2、移动通信模块150、无线通信模块160、调制解调处理器以及基带处理器等器件实现。
天线1和天线2用于发射和接收电磁波信号。装置100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在装置100上的无线通信的解决方案,例如下列方案中的至少一个:第二代(2th generation,2G)移动通信解决方案、第三代(3thgeneration,3G)移动通信解决方案、第四代(4th generation,5G)移动通信解决方案、第五代(5th generation,5G)移动通信解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波和放大等处理,随后传送至调制解调处理器进行解调。移动通信模块150还可以放大经调制解调处理器调制后的信号,放大后的该信号经天线1转变为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(例如,扬声器170A、受话器170B)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
与移动通信模块150类似,无线通信模块160也可以提供应用在装置100上的无线通信解决方案,例如下列方案中的至少一个:无线局域网(wireless local areanetworks,WLAN)、蓝牙(bluetooth,BT)、蓝牙低功耗(bluetooth low energy,BLE)、超宽带(ultra wide band,UWB)、全球导航卫星系统(global navigation satellite system,GNSS)、调频(frequency modulation,FM)、近场通信(near field communication,NFC)、红外(infrared,IR)技术。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,并将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频和放大,该信号经天线2转变为电磁波辐射出去。
在一些实施例中,装置100的天线1和移动通信模块150耦合,装置100的天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络和其他电子设备通信。该无线通信技术可以包括以下通信技术中的至少一个:全球移动通讯系统(globalsystem for mobile communications,GSM),通用分组无线服务(general packet radioservice,GPRS),码分多址接入(code division multiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-divisioncode division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,IR技术。该GNSS可以包括以下定位技术中的至少一个:全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigationsatellite system,GLONASS),北斗卫星导航系统(beidou navigation satellitesystem,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS),星基增强系统(satellite based augmentation systems,SBAS)。
装置100可以通过GPU、显示屏194以及应用处理器实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194可以用于显示图像或视频。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD)、有机发光二极管(organic light-emitting diode,OLED)、有源矩阵有机发光二极体(active-matrix organic light-emitting diode,AMOLED)、柔性发光二极管(flex light-emitting diode,FLED)、迷你发光二极管(mini light-emitting diode,Mini LED)、微型发光二极管(micro light-emitting diode,Micro LED)、微型OLED(Micro OLED)或量子点发光二极管(quantum dotlight emitting diodes,QLED)。在一些实施例中,装置100可以包括1个或N个显示屏194,N为大于1的正整数。
装置100可以通过ISP、摄像头193、视频编解码器、GPU、显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP可以对图像的噪点、亮度和色彩进行算法优化,ISP还可以优化拍摄场景的曝光和色温等参数。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的红绿蓝(red green blue,RGB),YUV等格式的图像信号。在一些实施例中,装置100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当装置100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。装置100可以支持一种或多种视频编解码器。这样,装置100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1、MPEG2、MPEG3和MPEG4。
NPU是一种借鉴生物神经网络结构的处理器,例如借鉴人脑神经元之间传递模式对输入信息快速处理,还可以不断地自学习。通过NPU可以实现装置100的智能认知等功能,例如:图像识别、人脸识别、语音识别和文本理解。
外部存储器接口120可以用于连接外部存储卡,例如安全数码(secure digital,SD)卡,实现扩展装置100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能(例如,声音播放功能和图像播放功能)所需的应用程序。存储数据区可存储装置100使用过程中所创建的数据(例如,音频数据和电话本)。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如:至少一个磁盘存储器件、闪存器件和通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令和/或存储在设置于处理器中的存储器的指令,执行装置100的各种处理方法。
装置100可以通过音频模块170、扬声器170A、受话器170B、麦克风170C、耳机接口170D以及应用处理器等实现音频功能,例如,音乐播放和录音。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也可以用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170或者音频模块170的部分功能模块可以设置于处理器110中。
扬声器170A,也称为喇叭,用于将音频电信号转换为声音信号。装置100可以通过扬声器170A收听音乐或免提通话。
受话器170B,也称为听筒,用于将音频电信号转换成声音信号。当用户使用装置100接听电话或语音信息时,可以通过将受话器170B靠近耳朵接听语音。
麦克风170C,也称为话筒或传声器,用于将声音信号转换为电信号。当用户拨打电话或发送语音信息时,可以通过靠近麦克风170C发声将声音信号输入麦克风170C。装置100可以设置至少一个麦克风170C。在另一些实施例中,装置100可以设置两个麦克风170C,以实现降噪功能。在另一些实施例中,装置100还可以设置三个、四个或更多麦克风170C,以实现识别声音来源和定向录音等功能。处理器110可以对麦克风170C输出的电信号进行处理,例如,音频模块170与无线通信模块160可以通过PCM接口耦合,麦克风170C将环境声音转换为电信号(如PCM信号)后,通过PCM接口将该电信号传输至处理器110;从处理器110对该电信号进行音量分析和频率分析,确定环境声音的音量和频率。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动装置100平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,例如可以是电阻式压力传感器、电感式压力传感器或电容式压力传感器。电容式压力传感器可以是包括至少两个具有导电材料的平行板,当力作用于压力传感器180A,电极之间的电容改变,装置100根据电容的变化确定压力的强度。当触摸操作作用于显示屏194时,装置100根据压力传感器180A检测所述触摸操作。装置100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令;当触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定装置100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定装置100围绕三个轴(即,x轴、y轴和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。例如,当快门被按下时,陀螺仪传感器180B检测装置100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消装置100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航和体感游戏等场景。
气压传感器180C用于测量气压。在一些实施例中,装置100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。装置100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当装置100是翻盖机时,装置100可以根据磁传感器180D检测翻盖的开合。装置100可以根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测装置100在各个方向上(一般为x轴、y轴和z轴)加速度的大小。当装置100静止时可检测出重力的大小及方向。加速度传感器180E还可以用于识别装置100的姿态,作为横竖屏切换和计步器等应用程序的输入参数。
距离传感器180F用于测量距离。装置100可以通过红外或激光测量距离。在一些实施例中,例如在拍摄场景中,装置100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(light-emitting diode,LED)和光检测器,例如,光电二极管。LED可以是红外LED。装置100通过LED向外发射红外光。装置100使用光电二极管检测来自附近物体的红外反射光。当检测到反射光时,装置100可以确定附近存在物体。当检测不到反射光时,装置100可以确定附近没有物体。装置100可以利用接近光传感器180G检测用户是否手持装置100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式或口袋模式的自动解锁与自动锁屏。
环境光传感器180L用于感知环境光亮度。装置100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测装置100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。装置100可以利用采集的指纹特性实现解锁、访问应用锁、拍照和接听来电等功能。
温度传感器180J用于检测温度。在一些实施例中,装置100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,装置100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,装置100对电池142加热,以避免低温导致装置100异常关机。在其他一些实施例中,当温度低于又一阈值时,装置100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称为触控器件。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,触摸屏也称为触控屏。触摸传感器180K用于检测作用于其上或其附近的触摸操作。触摸传感器180K可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于装置100的表面,并且与显示屏194设置于不同的位置。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
按键190包括开机键和音量键。按键190可以是机械按键,也可以是触摸式按键。装置100可以接收按键输入信号,实现于案件输入信号相关的功能。
马达191可以产生振动。马达191可以用于来电提示,也可以用于触摸反馈。马达191可以对作用于不同应用程序的触摸操作产生不同的振动反馈效果。对于作用于显示屏194的不同区域的触摸操作,马达191也可产生不同的振动反馈效果。不同的应用场景(例如,时间提醒、接收信息、闹钟和游戏)可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器192可以是指示灯,可以用于指示充电状态和电量变化,也可以用于指示消息、未接来电和通知。
SIM卡接口195用于连接SIM卡。SIM卡可以插入SIM卡接口195实现与装置100的接触,也可以从SIM卡接口195拔出实现与装置100的分离。装置100可以支持1个或N个SIM卡接口,N为大于1的正整数。同一个SIM卡接口195可以同时插入多张卡,所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容外部存储卡。装置100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,装置100采用嵌入式SIM(embedded-SIM,eSIM)卡,eSIM卡可以嵌在装置100中,不能和装置100分离。
上文详细描述了装置100的硬件系统,下面介绍装置100的软件系统。软件系统可以采用分层架构、事件驱动架构、微核架构、微服务架构或云架构,本申请实施例以分层架构为例,示例性地描述装置100的软件系统。
如图2所示,采用分层架构的软件系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,软件系统可以分为四层,从上至下分别为应用程序层、应用程序框架层、安卓运行时(Android Runtime)和系统库、以及内核层。
应用程序层可以包括相机、图库、日历、通话、地图、导航、WLAN、蓝牙、音乐、视频、短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用程序编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层可以包括一些预定义的函数。
例如,应用程序框架层包括窗口管理器、内容提供器、视图系统、电话管理器、资源管理器和通知管理器。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏、锁定屏幕和截取屏幕。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频、图像、音频、拨打和接听的电话、浏览历史和书签、以及电话簿。
视图系统包括可视控件,例如显示文字的控件和显示图片的控件。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成,例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供装置100的通信功能,例如通话状态(接通或挂断)的管理。
资源管理器为应用程序提供各种资源,比如本地化字符串、图标、图片、布局文件和视频文件。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于下载完成告知和消息提醒。通知管理器还可以管理以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知。通知管理器还可以管理以对话窗口形式出现在屏幕上的通知,例如在状态栏提示文本信息、发出提示音、电子设备振动以及指示灯闪烁。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理、堆栈管理、线程管理、安全和异常的管理、以及垃圾回收等功能。
系统库可以包括多个功能模块,例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:针对嵌入式系统的开放图形库(opengraphics library for embedded systems,OpenGL ES)和2D图形引擎(例如:skia图形库(skia graphics library,SGL))。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D图层和3D图层的融合。
媒体库支持多种音频格式的回放和录制、多种视频格式回放和录制以及静态图像文件。媒体库可以支持多种音视频编码格式,例如:MPEG4、H.264、动态图像专家组音频层面3(moving picture experts group audio layer III,MP3)、高级音频编码(advancedaudio coding,AAC)、自适应多码率(adaptive multi-rate,AMR)、联合图像专家组(jointphotographic experts group,JPG)和便携式网络图形(portable network graphics,PNG)。
三维图形处理库可以用于实现三维图形绘图、图像渲染、合成和图层处理。
二维图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层可以包括显示驱动、摄像头驱动、音频驱动和传感器驱动等驱动模块。
下面结合显示拍照场景,示例性说明装置100的软件系统和硬件系统的工作流程。
当用户在触摸传感器180K上进行触摸操作时,相应的硬件中断被发送至内核层,内核层将触摸操作加工成原始输入事件,原始输入事件例如包括触摸坐标和触摸操作的时间戳等信息。原始输入事件被存储在内核层,应用程序框架层从内核层获取原始输入事件,识别出原始输入事件对应的控件,并通知该控件对应的应用程序(application,APP)。例如,上述触摸操作为单击操作,上述控件对应的APP为相机APP,相机APP被单击操作唤醒后,可以通过API调用内核层的摄像头驱动,通过摄像头驱动控制摄像头193进行拍摄。
下面以装置100为例介绍本申请提供的保存密文的方法。
为了保障外置存储器中的文件的安全,可以对外置存储器中的文件加密后存储在外置存储器中,解密这些文件的密钥存储在装置100的内部存储器中,这样,外置存储器中的内容只能在装置100中作为明文被读出,当外置存储器与其他电子设备连接时,由于其他电子设备未存储密钥,外置存储器中的内容无法被其他电子设备解密,从而保障了外置存储器中的文件的安全。
外置存储器可以是SD卡,也可以是U盘或其他类型的存储器,外置存储器可以通过插入的方式与装置100建立数据连接,也可以通过有线或无线方式与装置100建立数据连接,本申请对外置存储器的具体类型和外置存储器与装置100的连接方式不做限定。下面以SD为例进行说明。
用户可以在图3所示的加密设置界面触发对SD卡的加密过程。用户可以点击图3中的“加密存储卡”,进入图4所示的加密设置确认界面,随后,用户点击图4中的“加密存储卡”,确认对SD卡中的文件进行加密,加密过程的界面如图5所示。本申请对加密过程中采用的加密算法不做限定。
SD卡中的文件完成加密后,文件加密密钥(file encryption key,FEK)需要被妥善保存。一种保存FEK的方法是对FEK进行多次加密后再存储于可擦除分区,该方法如图6所示。
用户在图3所示的加密设置界面触发对SD卡的加密过程后,SD卡加密设置模块生成加密指令,基于锁屏口令的设置情况,加密指令调用的模块有两种情况。
情况一:锁屏口令未设置。
SD卡加密模块通过该加密指令调用加密管理模块(Vold)对FEK进行加密,在用户未设置锁屏口令的情况下,后续可以使用默认值(empty auth)对加密FEK的密钥(fileencryption key encryption key,FEKEK)进行加密,下文会详细介绍加密FEK的过程。
情况二:锁屏口令已设置。
SD卡加密模块通过该加密指令调用锁屏服务(LockSettingsService)获取口令哈希值,随后,锁屏服务将口令哈希值传输至加密管理模块(Vold),以便于后续使用口令哈希值对加密FEK的密钥进行加密。上述口令哈希值是基于锁屏口令生成的信息,例如,锁屏服务在用户设置锁屏口令时对锁屏口令进行哈希计算生成口令哈希值,在用户触发SD卡的加密后获取先前保存的口令哈希值并将口令哈希值传输至加密管理模块。
Vold负责加密解密核心功能的实现,Vold通过调用加密库或解密库,触发针对SD卡的加密逻辑或解密逻辑。
当文件系统(如,eCryptfs)在SD卡中创建文件时,文件系统针对每个文件生成一个随机数,例如,当eCryptfs创建一个新文件时,利用内核提供的随机函数创建一个随机数,该随机数即FEK。FEK用于加密SD卡中的文件,以及用于解密SD卡中被加密的文件。
可选地,eCryptfs采用开放优良保密协议(open pretty good privacy,OpenPGP)的文件格式存放加密文件,加密文件可以被分成多个逻辑块(extent),每个逻辑块的大小是可调的,但每个逻辑块的大小通常不会大于物理页的尺寸。
SD卡中的文件被加密后,FEK需要被加密保存。Vold在用户设置SD卡加密时卸载文件系统,并重新挂载文件系统,此时生成一个随机数,该随机数即FEKEK(第一密钥的一个示例)。FEKEK用于加密FEK(第二密钥的一个示例),其中,FEKEK由Vold设置到内核的密钥环(keyring),文件系统在对FEK进行加密时从keyring中获取FEKEK。加密后的FEK存储于加密文件的元数据(meta data)中。
FEK被加密后,FEKEK也需要被加密保存。由于Vold属于富执行环境(richexecution environment,REE)中的模块,安全性不满足要求,无法对FEKEK进行加密,Vold可以通过客户应用(client application,CA)调用可信执行环境(trust executionenvironment,TEE)中的密钥管理模块,即,keymaster可信应用(trust application,TA),由keymaster TA完成对FEKEK的加密。
keymaster TA可以利用口令哈希值并根据高级加密标准(advanced encryptionstandard,AES)对FEKEK进行加密,生成密文1(第五密文的一个示例)。随后,keymaster TA可以利用硬件唯一密钥(hardware unique key,HUK)并根据AES对口令哈希值进行加密,生成keymaster_key_blob(第六密文的一个示例)。keymaster TA将密文1和keymaster_key_blob存储在可擦除分区(/data路径)中。
由于不同装置的HUK具有唯一性,使用HUK对口令哈希值进行加密,保证了上述keymaster_key_blob只能在装置100上解密,从而确保了SD卡中加密文件的安全性。
图6涉及的加密流程如图7所示。
若当前SD卡存在两个待加密的文件(文件1和文件2),文件系统针对这两个文件生成两个随机数,即,FEK1和FEK2;随后,文件系统使用FEK1加密文件1,并使用FEK2加密文件2。
文件1和文件2完成加密后,文件系统从keyring中获取FEKEK,并使用FEKEK分别对FEK1和FEK2进行加密,加密后的FEK1保存在文件1的元数据中,加密后的FEK2保存在文件2的元数据中。
随后,Vold通过CA调用keymaster TA,由keymaster TA使用口令哈希值对FEKEK进行加密;随后,keymaster TA使用硬件HUK对口令哈希值进行加密。
当需要解密SD卡中的加密文件时,装置100执行图7所示的加密流程的逆过程,例如,Vold通过CA调用keymaster TA执行下列解密步骤:keymaster TA从可擦除分区中获取keymaster_key_blob和密文1,首先利用HUK解密keymaster_key_blob,获得口令哈希值,随后利用口令哈希值解密密文1,获得FEKEK。Vold从keymaster TA获取FEKEK后,将FEKEK设置到keyring,文件系统从keyring获取FEKEK,解密出FEK,再利用FEK解密出SD卡中的解密文件。
例如,eCryptfs打开一个加密文件时,通过下层文件系统读取该加密文件头部的元数据,将该元数据交予Keystore模块(包含keymaster TA的模块);Keystore模块从keyring获取FEKEK,利用FEKEK对元数据中加密后的FEK进行解密,生成FEK;随后,eCryptfs利用FEK解密该加密文件。在对加密文件进行解密时,加密文件的各个逻辑块(extent)被读入缓存页(page cache),通过Kernel Crypto API进行解密。
当装置100执行第一类重置(也称为“用户级重置”,即,用户从系统设置菜单对装置100进行重置)时,可擦除区的数据将被清空,此时,装置100可以备份密文1和keymaster_key_blob,从而避免密文1和keymaster_key_blob被删除导致SD卡中的文件无法解密。用户级重置的备份流程如图8所示。
用户通过设置界面控制装置100恢复出厂设置。装置100校验用户输入的锁屏口令,例如,装置100对用户输入的锁屏口令进行计算,得到口令哈希值,随后将计算得到的口令哈希值与保存的口令哈希值进行对比,若这两个口令哈希值相同,则确定校验通过。
校验通过后,应用程序框架层(framework)发送恢复出厂设置的广播消息。Vold收到该广播消息后启动备份密钥流程,通过CA调用keymaster TA从可擦除分区解密出FEKEK,随后使用默认值(empty auth)加密FEKEK,并使用HUK加密该默认值,加密后的FEKEK和默认值(第七密文和第八密文的一个示例)被保存在不可擦除分区。
本申请中,不可擦除分区指的是第二类重置(也称为“工厂级重置”,即,用户不通过系统设置菜单对装置100进行重置)过程中不会被擦除数据的存储区域,不可擦除分区可以是/sec_storage,也可以是TEE中其他安全存储区域,如重放保护内存块(replayprotected memory block,RPMB)。
装置100恢复出厂设置并重启后,检测SD卡是否在位。当SD在位时,keymaster TA将加密后的FEKEK和默认值从不可擦除分区拷贝至可擦除分区,从而可以利用加密后的FEKEK和默认值恢复FEK,解密SD卡中的文件。
综上所述,装置100执行用户级重置前后,存储区域存储的密钥变化情况如图9所示。
用户指示装置100进行用户级重置后,触发装置100执行密钥备份。在密钥备份阶段,可擦除分区中存储有密文1和keymaster_key_blob,密文1和keymaster_key_blob经过解密和加密,以“默认值加密的FEKEK和HUK加密的默认值”的形式存储于不可擦除分区。
密钥备份完成后,装置100进入格式化阶段。在格式化阶段,可擦除分区内的数据被清除,不可擦除分区内的数据被保留。
格式化完成后,装置100进入密钥恢复阶段。在密钥恢复阶段,不可擦除分区内的密文(默认值加密的FEKEK和HUK加密的默认值)被拷贝至可擦除分区,从而完成了密钥恢复。
上述用户级重置过程中,用户需要通过系统设置菜单对装置100进行格式化,装置100有机会备份可擦除分区中的密文(加密后的FEKEK),使得SD卡中的文件在装置100格式化后仍能被解密。然而,当用户不通过系统设置菜单对装置100实施第二类重置(即,工厂级重置)时,可擦除分区内的密文会在未拷贝至不可擦除分区的情况下被删除,从而导致装置100格式化后SD卡中的文件无法解密。
下面介绍本申请提供的保存密文的方法的另一实施例,能够使装置100经过工厂级重置后SD卡中的文件仍可以被解密。该实施例可以与上文所述的“用户级重置”实施例共同应用于装置100上,也可以单独应用于装置100上。
用户在图3所示的设置界面触发对SD卡的加密后,装置100执行图10所示的密钥备份流程。如图10所示,SD卡加密设置模块通过加密指令调用账号登录模块进行后续处理。基于账号登录情况,账号登录模块的处理方式有以下两种。
情况三:用户未登录账号。
账号登录模块显示图11所示的账号登录界面,提示用户登录账号(如荣耀账号)。账号登录成功后,账号登录模块计算账号标识(identifier,ID)的哈希值,随后,将账号ID的哈希值传输至Vold。
情况四:用户已登录账号。
账号登录模块获取账号ID的哈希值,并将账号ID的哈希值传输至Vold。可选地,若账号登录模块在用户触发SD卡加密前未计算账号ID的哈希值,则账号登录模块在用户触发SD卡加密时计算账号ID的哈希值;若账号登录模块在用户触发SD卡加密前已计算账号ID的哈希值,则账号登录模块在用户触发SD卡加密时直接获取账号ID的哈希值。
Vold获取账号ID的哈希值后,通过CA调用keymaster TA,由keymaster TA对FEKEK进行加密和备份。
keymaster TA可以利用账号ID的哈希值并根据AES对FEKEK进行加密,生成密文2(第一密文的一个示例)。随后,keymaster TA可以利用HUK并根据AES对账号ID的哈希值进行加密,生成keymaster_key_blob_bak(第二密文的一个示例)。keymaster TA调用TEE API将密文2和keymaster_key_blob_bak存储在不可擦除分区(/sec_storage路径)中,从而完成了FEKEK的备份。
由于不同装置的HUK具有唯一性,使用HUK对账号ID的哈希值进行加密,保证了上述keymaster_key_blob_bak只能在装置100上解密,从而确保了SD卡中加密文件的安全性。
图10所示的方法中,用户通过设置界面触发对SD卡的加密后,装置100可以在执行工厂级重置前的任一时刻备份FEKEK,即使后续装置100执行了工厂级重置,也能够在重启后恢复FEKEK,从而解决了工厂级重置后SD卡中的文件无法被解密的问题。
可选地,装置100执行图10所示的方法后,若用户切换了登录的账号ID,则Vold获取新的账号ID的哈希值,并利用新的账号ID的哈希值更新密文2和keymaster_key_blob_bak,更新过程如图12所示。
下面说明装置100执行工厂级重置后解密SD卡中的文件的过程。
用户先将装置100锁屏(或关机),然后可以按组合键(如,“音量键”+“电源键”)使装置100进入recovery模式,显示如图13所示的工厂级重置设置界面。随后,用户点击“恢复出厂设置”后装置100显示图14所示的确认界面。用户在图13所示的界面点击“恢复出厂设置”后,装置100执行工厂级重置,显示图15所示的工厂级重置界面。
装置100完成工厂级重置后重启,运行开机向导程序,执行图16所示的密钥恢复流程。
开机向导程序调用手机找回模块确定工厂级重置保护(factory resetprotection,FRP)状态是否已触发。手机找回模块通过防盗CA调用防盗TA确定FRP状态是否已触发,若FRP状态已触发,则手机找回模块显示图17所示的账号校验界面,该账号校验界面所校验的账号为FRP状态关联的账号(即,装置100执行工厂级重置前最后一次登录的账号)。用户在该界面输入正确的密码后,手机找回模块通知Vold账号校验成功。随后,Vold通过CA调用keymaster TA执行下列密钥恢复步骤。
keymaster TA从不可擦除分区中获取keymaster_key_blob_bak和密文2,首先利用HUK解密keymaster_key_blob_bak,获得账号ID的哈希值,随后利用账号ID的哈希值解密密文2,获得FEKEK。
keymaster TA使用默认值(empty auth)重新加密FEKEK,生成第三密文,并使用HUK加密该默认值,生成第四密文。加密后的FEKEK和默认值作为备份密钥被保存在不可擦除分区(/sec_storage路径)。随后,keymaster TA将加密后的FEKEK和默认值拷贝至可擦除分区(/data路径),以便于对SD卡中的文件进行加密或解密时使用。装置100执行工厂级重置后旧的锁屏口令被清除,上述实施例使得装置100可以在未设置新的锁屏口令的情况下使用默认值作为密钥解密SD卡。
可选地,keymaster TA可以不使用默认值加密FEKEK,直接将keymaster_key_blob_bak和密文2从不可擦除分区拷贝到可擦除分区,在这种情况下,装置100可以提示用户设置新的锁屏口令,以便于使用新的锁屏口令加密FEKEK。
当需要对SD卡中的文件进行加密时,keymaster TA从可擦除分区解密出FEKEK,通过Vold将该FEKEK传输至密钥环。文件系统使用FEK对SD卡中的文件加密后,从密钥环中获取FEKEK,使用FEKEK对FEK进行加密,加密后的FEK保存在文件的元数据中。
当需要对SD卡中的文件进行解密时,keymaster TA从可擦除分区解密出FEKEK,通过Vold将该FEKEK传输至密钥环。文件系统使用FEKEK从SD卡的文件的元数据中解密出FEK,随后使用FEK解密该文件。
综上所述,装置100执行工厂级重置前后,存储区域存储的密钥变化情况如图18所示。
用户指示装置100对SD卡中的文件进行加密时,触发装置100执行密钥备份。在密钥备份阶段,可擦除分区中存储有密文1和keymaster_key_blob,不可擦除分区内存储有密文2和keymaster_key_blob_bak,其中,密文1是使用口令哈希值加密的FEKEK,keymaster_key_blob是使用HUK加密的口令哈希值,密文2是使用账号ID的哈希值加密的FEKEK,keymaster_key_blob_bak是使用HUK加密的账号ID的哈希值。
用户指示装置100执行工厂级重置后,装置100进入工厂级重置阶段,并执行格式化。在工厂级重置阶段,可擦除分区内的数据被清除,不可擦除分区内的数据被保留。
格式化完成后,装置100进入密钥恢复阶段。在密钥恢复阶段,不可擦除分区内的密文(密文2和keymaster_key_blob_bak)经过解密和加密,以“默认值加密的FEKEK和HUK加密的默认值”的形式被拷贝至可擦除分区,从而完成了密钥恢复。
上文详细介绍了本申请提供的保存密文的方法的示例。可以理解的是,相应的装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请可以根据上述方法示例对保存密文的装置进行功能单元的划分,例如,可以将各个功能划分为各个功能单元,也可以将两个或两个以上的功能集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图19是本申请提供的一种保存密文的装置的结构示意图。该装置1900包括处理单元1910和输入单元1920。
输入单元1920用于:获取加密指令,所述加密指令指示加密外置存储器中的文件;
处理单元1910用于:根据所述加密指令获取第一账号标识的特征值;使用所述第一账号标识的特征值加密第一密钥,生成第一密文,其中,所述第一密钥用于加密第二密钥,所述第二密钥用于加密所述外置存储器中的第一文件;加密所述第一账号标识的特征值,生成第二密文;将所述第一密文和所述第二密文存储于不可擦除分区。
可选地,输入单元1920还用于:获取切换账号的指示信息;
处理单元1910还用于:根据所述指示信息校验所述第一账号标识;所述第一账号标识校验通过后,获取第二账号标识的特征值;根据所述第二账号标识的特征值更新所述第一密文和所述第二密文。
可选地,处理单元1910还用于:确定FRP状态是否已被触发;当所述FRP状态已被触发时,校验所述第一账号标识;当所述第一账号标识校验成功时,解密所述第一密文和所述第二密文,生成所述第一密钥。
可选地,处理单元1910还用于:使用默认值加密所述第一密钥,生成第三密文;加密所述默认值,生成第四密文;将所述第三密文和所述第四密文存储于所述不可擦除分区。
可选地,处理单元1910还用于:将所述第三密文和所述第四密文从所述不可擦除分区拷贝至可擦除分区;根据所述可擦除分区中的所述第三密文和所述第四密文生成所述第一密钥;根据所述第一密钥解密所述外置存储器中的文件。
装置1900执行保存密文的方法的具体方式以及产生的有益效果可以参见方法实施例中的相关描述。
图20示出了本申请提供的一种电子设备的结构示意图。图20中的虚线表示该单元或该模块为可选的。设备2000可用于实现上述方法实施例中描述的方法。
设备2000包括一个或多个处理器2001,该一个或多个处理器2001可支持设备2000实现方法实施例中的方法。处理器2001可以是通用处理器或者专用处理器。例如,处理器2001可以是中央处理器(central processing unit,CPU)、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其它可编程逻辑器件,如分立门、晶体管逻辑器件或分立硬件组件。
处理器2001可以用于对设备2000进行控制,执行软件程序,处理软件程序的数据。设备2000还可以包括通信单元2005,用以实现信号的输入(接收)和输出(发送)。
例如,设备2000可以是芯片,通信单元2005可以是该芯片的输入和/或输出电路,或者,通信单元2005可以是该芯片的通信接口,该芯片可以作为终端设备或其它电子设备的组成部分。
又例如,设备2000可以是终端设备,通信单元2005可以是该终端设备的收发器,或者,通信单元2005可以是该终端设备的收发电路。
设备2000中可以包括一个或多个存储器2002,其上存有程序2004,程序2004可被处理器2001运行,生成指令2003,使得处理器2001根据指令2003执行上述方法实施例中描述的方法。可选地,存储器2002中还可以存储有数据。可选地,处理器2001还可以读取存储器2002中存储的数据(如,第一密文和第二密文),该数据可以与程序2004存储在相同的存储地址,该数据也可以与程序2004存储在不同的存储地址。
处理器2001和存储器2002可以单独设置,也可以集成在一起,例如,集成在终端设备的系统级芯片(system on chip,SOC)上。
本申请还提供了一种计算机程序产品,该计算机程序产品被处理器2001执行时实现本申请中任一方法实施例所述的方法。
该计算机程序产品可以存储在存储器2002中,例如是程序2004,程序2004经过预处理、编译、汇编和链接等处理过程最终被转换为能够被处理器2001执行的可执行目标文件。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现本申请中任一方法实施例所述的方法。该计算机程序可以是高级语言程序,也可以是可执行目标程序。
该计算机可读存储介质例如是存储器2002。存储器2002可以是易失性存储器或非易失性存储器,或者,存储器2002可以同时包括易失性存储器和非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和设备的具体工作过程以及产生的技术效果,可以参考前述方法实施例中对应的过程和技术效果,在此不再赘述。
在本申请所提供的几个实施例中,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例的一些特征可以忽略,或不执行。以上所描述的装置实施例仅仅是示意性的,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统。另外,各单元之间的耦合或各个组件之间的耦合可以是直接耦合,也可以是间接耦合,上述耦合包括电的、机械的或其它形式的连接。
应理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
总之,以上所述仅为本申请技术方案的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。