设置-安全-手机加密功能讲解


        此功能可以用来加密手机上的所有数据,包括 Google
帐户、应用数据、音乐和其他媒体信息、已下载的信息等。如果执行了加密操作,您每次开机时都必须输入数字 PIN
或密码。

请注意,上述 PIN
或密码与您在未加密状态下解锁手机时所用的相同,无法单独设置。

警告:加密操作无法撤消。要将手机恢复为未加密状态,唯一的方法是恢复出厂设置,但这会清除您的所有数据。

如果您的手机遭窃,加密可提供额外保护,某些组织可能要求或建议使用加密。在启用加密前,请先咨询您的系统管理员。很多情况下,您设置的加密 PIN
或密码是由系统管理员控制的。

在启用加密前,请做好以下准备:

(1) 设置锁定屏幕 PIN
或密码。

(2) 为电池充电。

(3) 为手机插上电源。

(4) 安排一个小时或更长时间进行加密过程,切勿中断此过程,否则会丢失部分或全部数据。

准备好启用加密后,请执行以下操作:

(1) 在主屏幕或“所有应用”屏幕中,触摸“设置”图标

(2) 依次触摸个人 >
安全 >
加密 >
加密手机

(3) 请仔细阅读关于加密的信息。

如果您没有为电池充电或为手机插上电源,则无法使用加密手机按钮。如果您改变主意,不希望加密手机了,请触摸“返回”按钮。

警告:中断加密过程会导致数据丢失。

(4) 触摸加密手机

(5) 输入锁定屏幕 PIN
或密码,然后触摸继续

(6) 再次触摸加密手机

此时加密过程开始,屏幕上会显示其进度。加密过程可能需要一个小时或更长时间,在此期间,您的手机可能会多次重新启动。

加密完成后,系统会提示您输入 PIN
或密码。

以后,您每次开机时都需要输入 PIN
或密码才能解密。

2、重置手机后,用户需要重新输入首次设置手机时需要输入的相同信息。如果用户一直是将数据备份到
Google 帐户的,则可通过设置过程中的某个选项恢复这些数据。

代码的解析:

一、加密的几种状态

http://osxr.org/android/source/frameworks/base/core/java/android/app/admin/DevicePolicyManager.java#1142

1117      * Result code for {@link #setStorageEncryption} and {@link #getStorageEncryptionStatus}:

1118      * indicating that encryption is not supported.

1119      */

1120     public static final int ENCRYPTION_STATUS_UNSUPPORTED = 0;

1121

1122     /**

1123      * Result code for {@link #setStorageEncryption} and {@link #getStorageEncryptionStatus}:

1124      * indicating that encryption is supported, but is not currently active.

1125      */

1126     public static final int ENCRYPTION_STATUS_INACTIVE = 1;

1127

1128     /**

1129      * Result code for {@link #setStorageEncryption} and {@link #getStorageEncryptionStatus}:

1130      * indicating that encryption is not currently active, but is currently

1131      * being activated.  This is only reported by devices that support

1132      * encryption of data and only when the storage is currently

1133      * undergoing a process of becoming encrypted.  A device that must reboot and/or wipe data

1134      * to become encrypted will never return this value.

1135      */

1136     public static final int ENCRYPTION_STATUS_ACTIVATING = 2;

1137

1138     /**

1139      * Result code for {@link #setStorageEncryption} and {@link #getStorageEncryptionStatus}:

1140      * indicating that encryption is active.

1141      */

1142     public static final int ENCRYPTION_STATUS_ACTIVE = 3;

二 、service的调用

http://osxr.org/android/source/frameworks/base/services/java/com/android/server/DevicePolicyManagerService.java#2029

2023     /**

2024      * Hook to low-levels:  Reporting the current status of encryption.

2025      * @return A value such as {@link DevicePolicyManager#ENCRYPTION_STATUS_UNSUPPORTED} or

2026      * {@link DevicePolicyManager#ENCRYPTION_STATUS_INACTIVE} or

2027      * {@link DevicePolicyManager#ENCRYPTION_STATUS_ACTIVE}.

2028      */

2029     private int getEncryptionStatus() {

2030         String status = SystemProperties.get("ro.crypto.state", "unsupported");

2031         if ("encrypted".equalsIgnoreCase(status)) {

2032             return DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE;

2033         } else if ("unencrypted".equalsIgnoreCase(status)) {

2034             return DevicePolicyManager.ENCRYPTION_STATUS_INACTIVE;

2035         } else {

2036             return DevicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED;

2037         }

2038     }

2039

三、最后调用

http://osxr.org/android/source/frameworks/base/services/java/com/android/server/DevicePolicyManagerService.java#2029

2005     /**

2006      * Get the current encryption status of the device.

2007      */

2008     public int getStorageEncryptionStatus() {

2009         return getEncryptionStatus();

2010     }

四、settings的使用(一)

http://osxr.org/android/source/packages/apps/Settings/src/com/android/settings/SecuritySettings.java#0145

0140         // Add options for device encryption

0141         DevicePolicyManager dpm =

0142                 (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);

0143

0144         if (UserId.myUserId() == 0) {

0145             switch (dpm.getStorageEncryptionStatus()) {

0146             case DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE:

0147                 // The device is currently encrypted.

0148                 addPreferencesFromResource(R.xml.security_settings_encrypted);

0149                 break;

0150             case DevicePolicyManager.ENCRYPTION_STATUS_INACTIVE:

0151                 // This device supports encryption but isn‘t encrypted.

0152                 addPreferencesFromResource(R.xml.security_settings_unencrypted);

0153                 break;

0154             }

0155         }

四、setting的使用(二)

0017 package com.android.settings;

0018

0019 import android.app.Activity;

0020 import android.app.Fragment;

0021 import android.app.StatusBarManager;

0022 import android.content.Context;

0023 import android.content.Intent;

0024 import android.os.Bundle;

0025 import android.os.Handler;

0026 import android.os.IBinder;

0027 import android.os.ServiceManager;

0028 import android.os.storage.IMountService;

0029 import android.util.Log;

0030 import android.view.LayoutInflater;

0031 import android.view.View;

0032 import android.view.ViewGroup;

0033 import android.widget.Button;

0034

0035 public class CryptKeeperConfirm extends Fragment {

0036

0037     public static class Blank extends Activity {

0038         private Handler mHandler = new Handler();

0039

0040         @Override

0041         public void onCreate(Bundle savedInstanceState) {

0042             super.onCreate(savedInstanceState);

0043

0044             setContentView(R.layout.crypt_keeper_blank);

0045

0046             if (Utils.isMonkeyRunning()) {

0047                 finish();

0048             }

0049

0050             StatusBarManager sbm = (StatusBarManager) getSystemService(Context.STATUS_BAR_SERVICE);

0051             sbm.disable(StatusBarManager.DISABLE_EXPAND

0052                     | StatusBarManager.DISABLE_NOTIFICATION_ICONS

0053                     | StatusBarManager.DISABLE_NOTIFICATION_ALERTS

0054                     | StatusBarManager.DISABLE_SYSTEM_INFO

0055                     | StatusBarManager.DISABLE_HOME

0056                     | StatusBarManager.DISABLE_RECENT

0057                     | StatusBarManager.DISABLE_BACK);

0058

0059             // Post a delayed message in 700 milliseconds to enable encryption.

0060             // NOTE: The animation on this activity is set for 500 milliseconds

0061             // I am giving it a little extra time to complete.

0062             mHandler.postDelayed(new Runnable() {

0063                 public void run() {

0064                     IBinder service = ServiceManager.getService("mount");

0065                     if (service == null) {

0066                         Log.e("CryptKeeper", "Failed to find the mount service");

0067                         finish();

0068                         return;

0069                     }

0070

0071                     IMountService mountService = IMountService.Stub.asInterface(service);

0072                     try {

0073                         Bundle args = getIntent().getExtras();

0074                         mountService.encryptStorage(args.getString("password"));

0075                     } catch (Exception e) {

0076                         Log.e("CryptKeeper", "Error while encrypting...", e);

0077                     }

0078                 }

0079             }, 700);

0080         }

0081     }

0082

0083     private View mContentView;

0084     private Button mFinalButton;

0085     private Button.OnClickListener mFinalClickListener = new Button.OnClickListener() {

0086

0087         public void onClick(View v) {

0088             if (Utils.isMonkeyRunning()) {

0089                 return;

0090             }

0091

0092             Intent intent = new Intent(getActivity(), Blank.class);

0093             intent.putExtras(getArguments());

0094

0095             startActivity(intent);

0096         }

0097     };

0098

0099     private void establishFinalConfirmationState() {

0100         mFinalButton = (Button) mContentView.findViewById(R.id.execute_encrypt);

0101         mFinalButton.setOnClickListener(mFinalClickListener);

0102     }

0103

0104     @Override

0105     public View onCreateView(LayoutInflater inflater, ViewGroup container,

0106             Bundle savedInstanceState) {

0107         mContentView = inflater.inflate(R.layout.crypt_keeper_confirm, null);

0108         establishFinalConfirmationState();

0109         return mContentView;

0110     }

0111 }

<string name="crypt_keeper_desc" product="tablet" msgid="3839235202103924154">"您可以加密自己的帐户、设置、已下载的应用及其数据、媒体和其他文件。加密平板电脑后,您每次开机时都需要输入数字 PIN 或密码才能解密。取消加密的唯一方法就是恢复出厂设置,但这会清除平板电脑上的所有数据。"\n\n"加密过程需要 1 小时或更长时间。在开始加密前,电池必须有电,并且在加密完成前必须一直连接电源。如果您中断加密过程,则会丢失部分或全部数据。"</string>

<string name="crypt_keeper_button_text" product="default" msgid="2008346408473255519">"加密手机"</string>

五、encryptStorage的来源

http://osxr.org/android/source/frameworks/base/core/java/android/os/storage/IMountService.java#0628

public int encryptStorage(String password) throws RemoteException {

0629                 Parcel _data = Parcel.obtain();

0630                 Parcel _reply = Parcel.obtain();

0631                 int _result;

0632                 try {

0633                     _data.writeInterfaceToken(DESCRIPTOR);

0634                     _data.writeString(password);

0635                     mRemote.transact(Stub.TRANSACTION_encryptStorage, _data, _reply, 0);

0636                     _reply.readException();

0637                     _result = _reply.readInt();

0638                 } finally {

0639                     _reply.recycle();

0640                     _data.recycle();

0641                 }

0642                 return _result;

0643             }

0644

针对手机加密之后,不插SD卡,SHARED宏开启 是无法进行OTA升级的。所以对系统进行了优化,在检测到手机加密状态之后,把升级包copy到cache目录下面,然后进行升级。

主要是在framework/base/.../os/ RecoverySystem.java

在调用installpackage(context,filepackage)里面进行 处理

判断,删除Cache,复制文件。

设置-安全-手机加密功能讲解,布布扣,bubuko.com

时间: 2024-10-13 00:44:39

设置-安全-手机加密功能讲解的相关文章

Kitkat的加密功能对应用做了什么?

本文只分析手机加密后,启动到输入密码的界面的流程. 一. 加密后,系统服务针对加密功能做了什么? 最先启动的是SystemServer,调用ServerThread的initAndLoop()方法,开始启动系统的其他的服务. 在该文件中搜索"crypt",得到如下内容: 1. private static final String ENCRYPTING_STATE = "trigger_restart_min_framework"; private static f

苹果iOS手机系统诊断功能是后门吗?

7月20日,美国知名苹果iOS手机系统侦破专家扎德尔斯基在2014年世界黑客大会(HOPE/X)用幻灯片讲演揭露了苹果手机存在系统级"后门".为此,7月23日,苹果公司立即做出回应如下(部分内容): 2.com.apple.mobile.file_relay(文件转发功能) "file_relay supports limited copying of diagnostic data from a device. This service is separate from u

给 Qt sqlite 增加加密功能

整合sqlite代码 开源的sqlite中没有实现加密的功能,所以如果需要加密功能,需要自己实现 sqlite3_keysqlite3_rekey 等相关函数 不过开源的 wxsqlite3中已经实现了加密,所以只要将这里的代码整合到qt 中就行,主要是将其实现的 sqlite3_key sqlite3_rekey 等函数添加到 qt 的 sqlite3.c 中 这里有一份已经整合好的代码qt_sqlite_driver.zip 直接解压到 qtbase\src\3rdparty 下就行 整合主

BitLocker加密功能

BitLocker加密功能 u 案例需求 怎样使用Windows 7的BitLocker功能加密磁盘驱动器,保护文件数据? u 知识提示 微软在Windows 7操作系统旗舰版中为用户提供了一种强悍的BitLocker加密功能,该技术最早出现在Vista系统中,BitLocker机密技术能够同时支持FAT和NTFS两种格式,用来加密保护用户数据,可以加密电脑的整个系统分区,页可以加密可移动的便携存储设备,如U盘和移动硬盘等.其中对U盘等移动设备存储进行加密的BitLocker TO GO就是最新

Exchange企业实战技巧:邮件中使用数字签名和邮件加密功能

SMTP最初是为了在封闭的网络中传送相对来说不太重要的简短邮件,因此SMTP传输邮件时,安全性不高.自从安全.多用途INTERNET邮件扩展(S/MIME)成为增强SMTP电子邮件安全功能的标准,使得实现邮件的安全性.可靠性成为可能.S/MIME通过加密来保护电子邮件的内容,使用数字签名来验证电子邮件发件人的身份. S/MIME主要提供两种安全的服务:数字签名.邮件加密 数字签名像是具有法律意义的传统签名的数字形式,提供的安全功能包括有: 1.身份验证 2.认可性 3.数据完整性 邮件加密提供了

oc,UITextFiled,怎么实现点击屏幕键盘自动隐藏和输入密码加密功能

ViewController.m #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; oc,UITextFiled,怎么实现点击屏幕键盘自动隐藏和输入密码加密功能oc,UITextFiled,怎么实现点击屏幕键盘自动隐藏和输入密码加密功能 UITextField * tf

vim 加密功能

- vim的加密功能的优点 1. 加密后,如果不知道密码,就看不到明文,包括root用户也看不了 - 缺点 1. 很明显让别人知道加密了,容易让别人把加密的文件破坏掉,包括内容破坏和删除: - 加密测试 ``` [[email protected] shell]# vim jiami.txt jaogj chy jaogaowe jaoghwq jaog (以上内容仅为测试内容) :X (这里注意是大写的X)回车: 输入密码: ************  (回车后就可以看到需要输入密码了) 请再

运算符、整形&amp;字符串pycharm功能讲解

1.运算符: 算术运算:+  -  *  /  **  %  // 赋值运算:=   +=  -=  *=  /=   %=  //= 算术运算符和赋值运算符结果是值 比较运算:==   <   >   <=   >=   !=   <> 成员运算:in    not in(判断某个东西是否在某个东西里面包含) 逻辑运算:and or not 比较运算符.成员运算符.逻辑运算符结果是布尔值 and or执行顺序: 先计算括号内的 从前到后 :结果是True,遇到or,不

U-Mail邮件系统存储加密功能保护隐私

近年来,邮件在商务往来中应用频繁,很多机密资料如客户信息.技术文档.财务数据等都通过邮件及其附件传输,这导致一旦邮件遭窃,就会给公司或个人造成重大损失.邮件被窃有几种可能,一是用户账号密码被盗:二是邮件在传输的过程中被人窃密:三是邮件存在公司邮件服务器上被窃密.那么该如何防止邮件被窃密呢? 对于第一种情况,U-Mail邮件系统可以设置密码规则,强制要求用户使用复杂密码,且不能使用弱密码库中的密码,还有就是能过滤XSS反射.SQL注入等: 第二种情况则可以通过购买加密的SSL证书,来将明码转化为乱