From ccd649e9229cebdaaee9c28aacf40dd523454ff3 Mon Sep 17 00:00:00 2001 From: kesenhoo Date: Sat, 14 Mar 2015 17:17:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6Security=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=96=B0Enterprise=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +- SUMMARY.md | 7 +- best-security.md | 24 +- enterprise/app-compatibility.md | 5 + .../app-restrictions.md | 2 +- enterprise/index.md | 47 ++++ enterprise/work-launcher.png | Bin 0 -> 230452 bytes enterprise/work-policy-ctrl.md | 5 + security/device-management-policy.md | 139 +++++++++++ .../device-mgmt-activate-device-admin.png | Bin 0 -> 42791 bytes .../enterprise/device-management-policy.md | 48 ++-- security/enterprise/index.md | 13 -- security/security-ssl.md | 84 ++++--- security/security-tips.md | 215 +++++++++--------- 14 files changed, 410 insertions(+), 184 deletions(-) mode change 100644 => 100755 best-security.md create mode 100644 enterprise/app-compatibility.md rename security/security-gms-provider.md => enterprise/app-restrictions.md (77%) create mode 100755 enterprise/index.md create mode 100755 enterprise/work-launcher.png create mode 100644 enterprise/work-policy-ctrl.md create mode 100755 security/device-management-policy.md create mode 100755 security/device-mgmt-activate-device-admin.png delete mode 100644 security/enterprise/index.md mode change 100644 => 100755 security/security-ssl.md mode change 100644 => 100755 security/security-tips.md diff --git a/README.md b/README.md index 8adf7db26..68c04e578 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,10 @@ Google Android团队在2012年的时候开设了**Android Training**板块 - 编写:[craftsmanBai](https://github.com/craftsmanBai) - - 原文: -这些课程文章告诉你怎样让app数据得到安全保护。 +下面的课程教你如何确保应用程序数据的安全。 -#### [安全要点](security/security-tips.html) -怎样执在执行多个任务的同时保护app数据和用户数据安全。 -#### [HTTPS和SSL的安全](security/security-ssl.html) -怎样确保app进行网络传输时是安全的。 +## [安全要点](security/security-tips.html) -#### [企业级开发](security/enterprise/index.html) -怎样为企业级的app实施设备管理策略。 +怎样执在执行多个任务的同时确保应用程序数据和用户数据的安全。 + +## [HTTPS和SSL的安全](security/security-ssl.html) + +如何确保应用程序在进行网络传输时是安全的。 + +## [更新你的Security Provider对抗SSL漏洞攻击](security/security-gms-provider.html) + +如何使用和更新Google Play services security provider来对抗SSL漏洞攻击。 + +## [企业级开发](enterprise/index.html) + +如何为企业级应用程序实施设备管理策略。 diff --git a/enterprise/app-compatibility.md b/enterprise/app-compatibility.md new file mode 100644 index 000000000..96133c066 --- /dev/null +++ b/enterprise/app-compatibility.md @@ -0,0 +1,5 @@ +# Ensuring Compatibility with Managed Profiles + +> 编写: - 原文: + +待认领进行编写,有意向的小伙伴,可以直接修改对应的markdown文件,进行提交! diff --git a/security/security-gms-provider.md b/enterprise/app-restrictions.md similarity index 77% rename from security/security-gms-provider.md rename to enterprise/app-restrictions.md index 221f11217..abc8f4c74 100644 --- a/security/security-gms-provider.md +++ b/enterprise/app-restrictions.md @@ -1,4 +1,4 @@ -# 为防止SSL漏洞而更新Security +# Implementing App Restrictions > 编写: - 原文: diff --git a/enterprise/index.md b/enterprise/index.md new file mode 100755 index 000000000..dd9f539cc --- /dev/null +++ b/enterprise/index.md @@ -0,0 +1,47 @@ +# 创建企业级应用 + +> 编写:[craftsmanBai](https://github.com/craftsmanBai) - - 原文: + +![](work-launcher.png) + +Android框架提供安全支持、数据分离、企业环境管理的功能。作为应用开发者,通过适当地处理企业安全和功能限制,你可以让你的应用程序吸引更多的企业客户。也可以修改你的应用使技术管理员可远程配置使用企业资源。 + +为了帮助企业将安卓设备和应用程序进入工作场所,Google通过Android for Work为设备的分配和管理提供了一套API和服务。通过这项计划,企业可以连接到企业移动性管理(EMM)供应商,将Android整合到工作中。 + +通过下面的链接获取,可以了解更多关于如何更新您的Android应用程序来支持企业环境或建立企业解决方案的信息。 + + +## 企业级应用开发 + +了解在企业环境中如何使您的应用程序运行顺畅,限制设备的功能和数据访问。通过加入限制进一步支持企业使用你的app,让管理员可以远程配置使用你的应用程序: + +确保与管理兼容: + +[http://developer.android.com/training/enterprise/app-compatibility.html](http://developer.android.com/training/enterprise/app-compatibility.html +) + +加入应用限制: + +[http://developer.android.com/training/enterprise/app-restrictions.html](http://developer.android.com/training/enterprise/app-restrictions.html) + +应用限制计划: + +[http://developer.android.com/samples/AppRestrictionSchema/index.html](http://developer.android.com/samples/AppRestrictionSchema/index.html) + + +应用限制执行者: + + +[http://developer.android.com/samples/AppRestrictionEnforcer/index.html](http://developer.android.com/samples/AppRestrictionEnforcer/index.html) + +## 设备与应用管理 + +学习如何为应用程序建立策略控制器,使企业的技术管理人员来管理设备,管理企业应用程序,并提供访问公司资源的权限: + +建立工作策略控制: + +[http://developer.android.com/training/enterprise/work-policy-ctrl.html](http://developer.android.com/training/enterprise/work-policy-ctrl.html) + +基本管理模型: + +[http://developer.android.com/samples/BasicManagedProfile/index.html](http://developer.android.com/samples/BasicManagedProfile/index.html) diff --git a/enterprise/work-launcher.png b/enterprise/work-launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..3bbd83544e255ca9b7956f6324738aad2e1ab437 GIT binary patch literal 230452 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

A%x@J`*kAP2qCm}UHh%+mTzWFm~BmY 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 z z8qu61{@_2stXOv*;+ZSdtnAD(KswQd`OvuW(@`jp3ep4N02*km3T#&959c=VB1`%C z;&)NdZ23ScNsuqK zwOSuW=!|VDEAY$dL7(AD|J}JDI}xsPF&3F@#9qWquO&0z?&H-apj!`f%%EsftzWK0f^#_cxEAM1bsN%Y2scl*V8J zYdsQv^RrN`)Bf=PVS)7dh^Met;h+dakjZ%pQ@Jq7%__0QhsL4|Lh`uvG3MuwQL7~uxi&*FGU!IUKOF$&2^e1rkqleC_BZM zQcUHh&%L~ue9?QF8}(0Ex~q{2-!*w9qhC&$+BKv;UD}m22SIKqmTIuo^m>P#lZ9$L~sDz*2 z^90|o)!BRdCYyd*(ils)5^T{K6Dgru23ZDW44Z~V*tv2gp$rI+ynK9uy~idjIP;mP z5{V)V%(df!;o(TNwlH&rpid|K^Fz<^{$u+|WJtJBJXK=fWW)B}0IV?&$Hscb6RmTQ z_2{QD%h!eoT##7n5XZ=Opue}h^Y{2Ab?|2#wLF7Qz|3oieOLEUoL%VVQ^gB!FVKrH{ ztO} zB#1&@jvIV!c9Jii7~{pp3?Qgu_`x?`KQKT4}}gYd7%Ax7@*CrAj0NKDqlT{_v^q(9TMG%kJR0=)W(j6z0|At!9to z^J(daruOkuNB5#+K(J8i)o7dIyY;6n#sbELK-TPWqObfl`l74QJ8xXN zsX}LCAcQ!(JzBSGk!rFk6-FDg{J}RKp%R2#zGgjt_Rtsj+h?DIN`y!?SE5tU?mvHT zbCRE(A4MZiu5AsgaN|4So_}ar#BPnAC&p|%UwYEczovTwaAW{;(}a(H3bo@J^kp|g z94}ftv-WOMBAhr~JEQEhcrFM6l*;8Soq)+UxzF~KF71_O&~)n3Zc2RwOR2xIl*xZy zX1a>Tu?B&3=}Fs{FbYFktf&3y&#xlH`r~M0zgYTVO1X4fiVTg-L#GI@n`3RtQ2FV@ zveP?Ro>e-EFmGP0jV-k_6iX!Yw_c{0v+AsV6@ zyygAy!@q2WlFfN9&+A%q$N;Xn6NZ+-r+ya>?zIbp(PY(f+CC4AfvCb&Q%4wi{&D(l zd@s5-VD&vq5o9@CMlW5TNf+N*4QN8FkO*elO@=EqR`m5D5L~l*9Th2QLpCPLU`aaW z_R5v3sd$3am!>8=cd#Bv+uEAuR}bx`n)<+$yVFqgyx^7IN} zvN-z_^CIoz!pU)lzw}=bakIcul%KyP|C{P?fgn9R=;Ps(L;YpYtzo0^;%-gq)-Nu#KRV6FoUL=%3fn1D|{bq&GCC*e~8VM zI^W&#aBj}j+WtEu zR?@$vrluvJ=d)eDj=Wn}n(R1{i|Vyf77uAnpwrH*vXK2N0IWnMgi+|4EXph;7sqYe zNkgY4mZHO!!M^~oa9_frv6m@Y?z(2978IFM#~IzbvkwN__e#qj6TW5i~P3DqV*5DI}35GlodukYc~W8vtANo0X*Z&5WTo1dx4)uXNbrFP6>n{xG z0Rxx5{v7e%XGm_k8!TRKhO6#?`XGGb=itTfxp?Zd_8F=*c>mABy&r?iZ-J*Db@5Dc09GF; z`ftT;f<2ED?0yXOmV04t+Swf}onQ(n7;DTipTu?!>N5YF6m3iCr3y{%$8(NSgc7Jf z{S~5pdn_>W$7d3|@oDnZV7(u%x(x<~;XnQY?D>wp?rA}gR(9;(^V9HwpMxvk0#7|+ z$73O${rTof2uNb&OHUH)`a0^)4=%ZQ3L#L{2u6k&h^zqpbR!@Ps8)+sqp={+QhJ3_Vl^^{|A~A+#Jtz)=Zb9CAj(yc;d@YtK0h_O%2uuI^+5B(*#dHiu!>cU9@=G7I?bgaV1Ma^VD9c z8!3^ty(zm0qA&KeFyk%jh<6X{ zy}&LHo6*6UhnLKfvuT4!dgNXgW5PD(?4=jy0-7nUkqG(+`l*c!B8CSzAq|bVP2|`T z$0f00?gSrv{dtTGbAfsKMV76G8?Vj>rBZgFu3T>i|E5da-4x}Ej8+z44X?28vHfaz z+lTBTt(9FQrYGUm?>jA*%y(5sN0HBb6|THJ|NRo%CELogwlf?Qy<_Is1XHUKv}2~` zXZgl~*V(>o1yV|et2O?~4R2vCj(K+MP-dR%@!<5=`}l`fUdJu#Hf9+2rDKykIX>EL zg#ip3+VlMI#2XkPiUkA4z{o1N>FzwOpp;GbuHFPXfz3N@98+<+Kgq9HV}Ezi)$ooV zb~+$;?97x+HKnGMX*`dO5kC0{>e{zkW@QP*Go3%i8}l@r2bMXb(I@ORkdjaa^hFW1 zAndFRJ=61?8mI5cFT3lfi}4&@2{+x9r=yIE)!HpKwwo@oo1}6)qYA88XOG`@rHyA) z&Eq+H0`@-b^m8trVT3q-gz(9SP&d45>BQ5e14Ai!&*fM0RKMgX33VA*3rJ(Sdz%$5 zvOORW0y)>DcK8T0hmV%@k)=$55Xfo;Diw@MFs+trt5jsG3P>5jY8~^Vjq%RYF~)9Q zZ*L{V4-SW?)7wN@D$B!uk`BoI`iz^xN`GsFVA z>p{Jhfl|5JP)KVDk&@W$@z3-9Oo8T zS<_adHGQ=j^^rlu&;ZSvWG-oAl)Y{~oDQ|-Er<7W`SGI|k(Oz@G|%t~%>BQJxb2?I z05faX5LN9U|L`x{vhI#16~gX@g1~BfZhTjMVZsU=8^e6&j}hN~kb?WTQOJGIBj0!) zeaZD!xVZ!YRwGGB($w|IA}1xP5>YXI{Pmt^xpCb_Zdt#H`8ejb4V(G*Z@r7Zd-X+j z9X-rsV;*gw5(I2twt}~B+RA&kT}(v=gu=%0KRx?6lO5M3ZxVaQ%s5xiPdU|qHwh0c zvpd{7eu%7%O8U|?o=K(kgt9p zefcf6>U1dyq=n${{4DcHLhVf1Qeh21MHKSt@nd}R^;f9LFl*CMv>wjKiE)dE5#29$ zdfc{`pJ4UDmpj3G-w@pY3vlNL^98vO&k#QJOTG14L1bTd%gmoN#Z)NdpeDgRq&R3EyL04QK_E%^rEW$@gHlp zAa1$GrkYxfe6bHg#Ka-w8_%J4-oR2TCrouaN16?qN}Y1ljg-h*jn`(U`NJo_&9B^Y zC)ci7M@uPgSi6DCSFYxb6H^>(HqZv5K(b|MgpGqkG~$FxD4Cd_=P&nspD(<=x0HU$ z(~2R6cTXLnq7}yX%rRI-@s1Bb-{8WrI%zyBPH5{rR&Rpa@3pCkOq1s(_sPS^*S?Rw z;?|{=>J@@kyUj$a=_-!G(@yQD>y*-(Kn8qubU(XC4-zU}09B^&9FI;BJ#>6d{EOkY zUiv!Mw;C8Bi_ZFkBbYlrfao7yI96v8&z0-p_8)@p{=L(1xj8flVCo3+m1ix$S}Hg> zWgLX$AFbYoNEE+$@CA;WCNc<5IbExP#2A`U#PS`RsU15`V|pe_6`gD&MWvFngavTr zVkhCQ=CMxgl`+siWXI>g$k~n0uwsAw$MUs^JMV+XzX&rY@_5Psabg0w_ZieRcP?6N zga<@YY>_s3w)$@}Y*DWI%VH~~Weqa|N4VotW-K6%<19s(HQy24Gh%+KG5x(2+pA31 zRko$V_%>96SS5r>KF`KU+XGliIkG}q@fOZ;RcgX8%xn;}S2pQ8oBC8+H*0%8HJG7D z_nGMpse!=lrtNzMS$a>D+?2I31WtElD+&a8;g4~CUeZoyhRkwbJ2CZ=Ga5Zd3%=G0 zfnaEGkjk<_%s`#l02)clwn15-qGm8|@s`8;&@$-S=7uD;sRkiBE0Ib$=U%&);xV3$ zLlD>rBVCY<72k^KDa8Jl>~2sjtu&!AmdKk)V%s0?G)_wkK~V4G(L?)~d+ZTDa>cdW zwPibfeFOAI6|P>rmO#ji?})X^oc5m?ALGBjxSP+s@B9^X%uXTqy^z~AEP;4h6Jp8e{2a4!OtFgQ)bEA-|8^64TqR5< z3B)l{sX~=>rdSYu?7DlIr2uOviMe!QpIrz$;x24T)|o_iR;-D06VLe*Kw#mA3=nhE z$bEZqc6o`6Ppgx$)oDMo;bH`aUqAFBC$w_C>dYy>kBMWZYZ3KT%aF%Upb({&C<}nB zYSpG?lXQN_9m?xkb7y<1d$uy2Z_jx=MLvIrRS(>|f{4ZpV&C(2qq`Wg4C9ciwtiM= zFY~M^YOA&eorh&|Wm2oLWOkQP`w$w4gc;4{dXP;?Vl(;lx(nd}k zLd+b)46n#NnwCiHgpeGZpQWLaLeocqznkdAgzcL7!~AKTYCUYO3;=8Nqg)_nWh6%K;`H#ud{Tv zTS&bppeuXj11nLe9uRrXRnXyiVd*)Gq*HTI-!g*KhQZ6nrXVV1veICtqIa`ITHKw> zbYK(&46Im2Fg$=7sBv5;#Bm#$w#DfM5Znzbjb`WM5rUrQb&C2m-<`a?ke}{_F<9-$ z%n9_dam4bquF>ogq8_DWvel%m^lAC+q|B2R0@**nWTU~~JpT+2yz(MDmMv#(-$1^* z5^$o~;=t@Q}~5I5Yc>AaFUS#IIZMo*4XAy+xIl{nw7UV+7iq!eS~GcYOK*l>ugM27UAp zV$~*SEv@mHf-I9US@0X9FEXu8kIBM7TWgHch$O*8A$Wr3lYwob$i_Zx`3CH4&-QL> zbUwzX=mF~H=g>zEA=Yd;=kc^_vs=rJ?a-2TInY`o+@d5s%chdUrZo>w?SnG8ONtE~ zs1m{v=PJ`b<^-!KWZisBk%FpTU1%(!V^f!@!-7!;0ztFg7Jc9cWwE3=R%Z8yP|m)tHllM$$%<%3phZe!7d6+OTQnIKr6B zKcw?jr*P)JZ_Alnm;(54q>sMpbX~Ku_0q0c>f`BGaz)Jy+O)R~oE2hnZYL@$3e& zv~4r>k2YR{0e)-rMNXU!$a31cY`C?YzUEXxmJoScC2h3@o0BHdLZ5vq;Om^nGr%y4ic+xAL$4bqh1)@G+O=A~|XL`RFQ|i4Yq1}YJY0gu< z$tf+KMr)3>8nl!;O|rGvR%}7MbB#AHWvZyV3$ zrxwplK#<4Nv|BKDV(G;56q&5wJYA5L&4W&x6el@wIvtSZVqf^Re@Nj08c+n<)5 z?kateDFM7PhADe$`PsN`U23vSdB#fFW)ul$t>gQ7 zV6epL@jjh1J}L2g-UGUzyjuwW@ZLH z{d+JumXA*vU~aq%anDCjEuLiot8nqmT0AY?hZK2RmXA4*_3NjaF3iA*)1f-oei8?O zPSw^UJyz?587h@npQ?r8IoE*y@d=nX zXO{gUuHmAv6)Q&I`CGZgDs53>at(tJ!V27R?Qy({D03dG2hBNsuhjh(1_lSHj|`#* z`}N-~MOJE$^|Wl0p<`o*;xb_8^}5Dx8?ee2)ks%&LuW z#}C5vvCauY2+Yxg@a+c?&H22&j`t0ejEKV;5ld%>oYL1Vl`x;gnUQiYV3l=tI@MjS z9gv;CspEO?_eqTCPDly?Q%B*me}cLF{ZQ@eJVpj^V6TnmvGGg*OAuKx^E*Cdfpi#k zGLDmD@XgPA6@;aD1`%=8w`AfefR<7mZp_ot2|>A4(Mg!A)8D~^2|^4C(aUGd-@K-n zxTm5{*jRk-Pcd)(L8uLs;_29}(bsJ}Cq{ENItXm>Nc%^vL2S42Ie8fIjnBHaEV9Gk zR0kn(rEf`%&yz7(X?3CDG&EV|qL4Hker5Hk3eSUpMD*x7C@=ByX})7b$&mJ9#WS^navqkU zo9he)l(K|~3^T2iP5U{(lHv#F&uL1!>>P{ef*X9=m(XX!e5~P{h>C*s0|gycE}*wI z5e7jJ+H8)|nn1dS)w~8=WHWv~z%uT}GfA5;4A3g19VhfhRpuM>)N4))rMuH?<;INZ z3Hsovz;ZbY2IJ^HEOtKzAOD%$*}GtF2TV^QjvS!S!P8?ql4>9Az9IVc(hHn+3|6-*ULFgEQ|w16 zrPX$bB%i!b3bcyP4Te!!MGG=DV&T~49OCc)9P`w})@i?sP*${CmgyQ8CO4P_@%*>p zw|~+Cu5Js;%#>{&+$)}yI_>^p`gK}S^yZE-Aq0t5&XL~`ow$3%q$L8aSl-EJcu{uJifuiLgo zU3N+$X+vwiG~a^Q`waZfPj${6>0|Z;;>dnmAy_sNH5wIFY4tB-U=iYJ{BeA69$ zr#5J>SGNzA0rU-9y@oN}R&59J0x(HFD+K4yx4KuQGX~gri(uI~#_?Q#E|HkMG7G%kwcRJQ*s)WZ5rq^=; zr}yGKVAvDX(JWxWFtpt2@e;N`m%WUY15vEro*Rc7gw9*84ta!^Jnr`; z%vzefh7AA^ZHZJilcm6!oO1Xo`TvfHJKr+SY(@4Is4QLkg@4!mCNAK|zNS#FZfcnUCEFGu{?ujXxUg!lKTVkhbU z`&Z!5t9d-@1DHEMfVk@;UOe;NFZBV~{Vn+8UxujGA;85zGQ5gl<$8>Y-~4zwHlrR@ z*jDSO=G<$7OyAiVQ@@>^$Mc*y3mRC_c=vQ+Zq)Ev-!R8S$Xe6xiW1GHOAtTtuN=cH ziktc{gy|{Ukp19Zw=gGA?Ze!0FXG)l3C&VGF_ztY=_&YwU+fs4DHu$KRuZn-ur%U% zhUvne-f%HSz;7LT!J3hF16iJDW3I=N-I4Z5u7dzxtMoI8WPt7k4`%&##83Wf*FB@8 zwUmK%)&J9f4*Onko@5DBYM5K!i+JBpL9{`c6$Gm{Vv2ovG-3GIN!a4001BW zNklM>;sY#%q z~;aEQn2%Xs(f5wzdCE`1D)z_!bKzsIT# zwo&ZVxSe>C7;6298{P@4H}`(s`fXhdC+$wG6;^31-$-p>5OcbfSBngYCD1mShDuJ_ zK0}{roczio&x7t%(uF7L{d^}F#=4lyz@t$W+z>c>xdigS~#8? zc6ilK#q>ivtTMl1Bh`UnjMBW>lt(HdkW%ntmtM(JN5^<<;xMvSBT8MS%ScLeu{t^P zQE%Tc3@}P`f-E62A^dcIKi`gqxW6^g;bwxswpZD4P48>E9vjc22OSfcKvYBAbT_P7 zAf9v6J>wY%73P+2q&hU>#^;3tuyQ8L3E$UWj5P4CM_*vZD5NNZEU%hUNN2j7Gw}t0 zm9j|-T#ngljc-$D3q1-1`UYV8)e8#U`GFsS!~60gl&FHZ=`K5Vdp(kNcQZ(%iDksx z@(n~o%P{)f$5S{naIFm@6doCZ=SxLFSe_(_hcohcL{U`07b(!P;4K%d8*pTiw_z!{ z5BM3jRFCC@t&~B_jnlotCV}<5%5>{5d6|b4U};StEp4i`E_kXKqnVqVV{mBDvK?Jo z;rRK?^lyG6=(5dx?(#0O8B56gA{J^V7JJq{ zg{e0a-J3ieIJ9yZ(eNN~U&OpHwBxobV?9Udzy+rJX0^(fmv7?k*(2SzZBy0Ik1A}hD#WTDtY(!B{Vsoh+9mw8rBc1 zdqbKtW3S2}%TGfr#A11mxKiPZeQUVq#Ia5t7WVqmnz!-kTHs*dJs-`-TpGSGI!Qd| zJ8w`Yl5Y+yr?KfW1}YWI5{ai2f>GSCD0L&?Lo4#-H&lN_yN4VZfJy5k8R2Q16z<*UHATKG-8oXyC4o zbXFsVkz3r$Aj-AFY0h_FLA0jbH_ZIz%UM~ix_F-3@tL)-^UOXoM&0DCZGu2%)r3i+ zT)V!&>a|TSX7{sXK@gB=tJxOVR!J%qsk^kKN|Hjgpx1h^v zu7OqhuOtk4Y{M1~A9{|}x?LKc!ka8)_X%7GC&=U!X>*YSGymV|wbP2m+KWhbTt|c^ z5ld%(oVAovnx;y;z9;6~u~&svK<1^`K9ki;k0k_J27GhbIu1?0$_5j6f6w$aT^D50 zySev*@$3;Lt!b{=N^;2!Hl9m}?~pPb@au;h$U=I$)KXE=$pFX#U>PBKtZxMerpMSp+(kC$Nin*{<|Og#h?hS{ zbo;xZxncwDOK%|(pcbQG!Asj^I3dLm!sM;<3K&1|GF5r!m=uJiKdDe%XN{qSC#0tX zhxpZleu}UxXivdgIc=CSYf2fCB$Y6Qz;6Tp3hAZW!@xk2=&W)Lug6&!238?&z!;ee z#Y;Q$vcAecdEe6_{k`!$tBmWcZPFWFW`7sitU zyh+@7?Nq96ftL%6pe_tc*9pP{Rv!JEirX8NeokC;9fRvPFR31ckz6k*wpW>n|+w(IHN zu&s9m;+vcm|ZW#?3xMCLEzhKo;AQ)=oJgS?)6&01BYJVpN_wX z7D16SRWVfi7q$yHop=^Nd`Wd?6s@qv)Yj|h-?V*6#`BCoRw{hoa0vjvap*;+olAH@ z*nTSDY5{#90XG^%9Z=kz4t5(~FSOeE9{Tl(t%&wK^5jja2L0x^fKz zp|$*%p0laIrUNCCq!Auf6@2~U4T6GTixuGHcV$-D@4Qk#_%Q7co z|I3)&-?Ecw%T*S|ZTJ6H{_n*5@&Dd#6`yN`IeG~5#FrtcIP*P|#cN{KMYJ!yg=O`s zYm2aSCU6NPTC<^VkS(?T%o4;)dY2Vt=k7;(Eg{N3-tPfgeFJ=QWD8@Wk}r|2(nuV5 z8S~87Y>d)MvGPyS?)>R?Tx{dX#3+2{3tpOn%$DQWs% zK^Smb-!g`bK+(Npg<0UI*BC3_AE~9O>H50zz0@8Uu2VccJ{iqvX z=OCUcv7Tn%da$$N%owJYZ>Dki9jq9rFWGpWN&M4=`={3L;NNe!j3HNkFUkV<)0%iq z2e>tWs#W=9Z4IyKsKd5ajJ=L|@)0}Nwp%@Z(mB@q>2+)pV~&l(V-L7^dez_tjxXE5 z>=n1Od=cZBDhkU|o}3`*TvJoYP#A<+(Op^;m#+1`m4lVh2S^zbI2K8JslRe&EyXZW z%7U2Q#}OGjmf{|lZj@3I1_6~Qvgu?UXQNf=b}>bmoxITm&Tm4g1Z^rvDT%_+HC4SA2NYC!0 zJFnuIqvL$>@O~lK{_lM7vpj^|D#Y&0A_h0 zy-l-;1kbNr&wo0;p5JcoM;RAS1WYtt1yod9+eW&(Q$V^qr36H}Lpr3pyF>aS-2wvA zARyf(0s_+AAPfQn()I88*810Stt(#U%sKnK`+1*u&rAZ{(@Kw<46wM=rW^iyi_=%t zA-XMMO1Arh=+x{sX)M!9d@Q~i?*03VJ}fa`$0O7b0go(Q)BGcYYa58Zyc#6^8{JaJ zCEe5R=Fr2hn+sb@ie|%$MYloI2eHNA#F@GLh-^m-OcTHP7yJALXcJ$P2lP7gKV%xc zGyC@`=^%S>gO`x@+4T_{G2E0QAcYKbj(hMW_mYv5>f?LwcSG^LXTv{OpPKvQ`zuM zOCP%+fuQIfTd{lbwNq+F8Ln2%cQ-rZt!m2O-T}keVHUE{4zd*v35AE}Gchc>@3bP3 za5&%oL*$i;rsYj~JwLH|UqYB5pU840JeI}c?(ZBN%-Nywkb07Vd^lfK|7X^O{eq;T zm1@I}YLX2@EpJ~SRPg()<$o_YC=$ne$GePk-YmqgPN<@ZBeIdXpA}Q2Ec8SW4IsQyK# z#^0~-ecAtHTduu2lLGBd0&*z#*nC$jyZ zkoGN02K@`>YJrK5aEni)g~Ia*$!~_FhEJMS7Jg3r4ZoXGNk1f5j%zk*O_tFNsNb7XPQH-9V#_)ya99AA}Hum*q0E$*0u)d7KrBF!}1e6}3JK)XqJ}zcicc&^MGhg_eT2U;U%XxSOcvraJiiiFzP4 zzqH{W&v1RnBN1iCElQj3nC>fhulM&47p$9r$VqxDI6FZyjE9-f@Pc;f>^3UUw}xDI}BT)T~acS20MB_R1h zx1x=f2}}qf@AY0BN~*o|ef9?NrIU4b??JmnN6QeekFjeZlRvWu{KVPfX(r!PaqXRP z(CmJS|4x7k@wn|F?xZvQN=0zq;I&d=EHJ|M2J)9gBG>-i^io*cnr;2*90{r9KdO1< zWb??Tmk^_&#__UJkA~@l+V-qz!;_tDDiQ+4h8rlqC+aAMbwU5`dk&`#*D^?_+d+Q( z+=rqCGw?W~TXr))Qq12kvh8bB3FW^3R*UOLVrkTo_`zEK7rooy%LINRg3ql*o~n6; zLRW5w`|V@%ykC?|1;*8_?U_+Qo*}FGz!WzHa?HCXnHLRw(6o=K+n-V+%7Mlz-f@7yR8MnB&bQ>nQ$$ z_m>J8ETcwe1ifk#h_~v2%QR0pcPVSlQb#ab$NhaPH1=6K#G#$9;9yraVW-GR90#n? zg7YJ{VQqKVR`=bfWE-ykn#){5?}bd24cWN<-tWI|n(h?+mUK`|E+h_>Bz2@5_&60_ zEthamM6}|!H;>bBm_tE!cnUraz>g8SASHl$TQOG4uaB$*D#xNs7W3BaNt2yX? z>Ef@~EY0&N=7fsHu1FG7K9th1J2BJc7MB7%nwt{#B)9OJY~)T~qaA$pW!atOPUkl% z>m}9=OD8KeZqriRfw^vhu;(3Ae8~pwkQiy;Ngxw?u0mt=*Q=$$d+!{B zv7k#(seee&2>yT&w?62?+N5)jv%9dVZTB`t-|OL}{G#@6k;HP#44m5aQ6-_(kxGcO z&EroZ5=Ze#t3bAvk9y&o)%o`ULBm6aE$0^JsuYuJrq-9xAW}R|Rq^J10Ed2C!}t1L zYgCTb#}s z!dKD}R65mlvxUZA9@vk-9&~>Sd+`NRgK?{mV#XoAJmpOkVNnr^7-L!X_MbT$OMSGfhCM?CLZGZITcgYSt!sJH?VC%lzA&f#SVrgK+Vd^g zN9sXnd3=uItsw<$Xr;x)hU>b%L$p^epu4|}o+|>A=NCo!L9gU!q}l4rPwy~@<`x_G z7>DcpnH*}{vL_t$EF+H(zjvgOSV+z*{ne<5JYEdO3-FWdfJ7KI-J5?;=z*h?Qu5Q4 zVoNMnc>kyVX8}ix>&=l*!`-ssQhP9mQ7F{NmXa&#EpF8D;`j8fed>ZLta`8O0Y|Zi z&aV0M<4|2R0W><(*XDTI_eCR_m?LduuMGZ6DH+tJ@GrVt z_Lr=e>&<%B>!)w`yS(_S-eV|WB|zkvZ7Zv)cu!NW_eU@C4#XQEF4AKO{u&m~*KqYW zK|gl8kn853ikQ8{Pn&jbMc>~izj&#~UEmj5dE-0p{*PlVv>l>X>}6e2nw=NztBI>F zV@{6zaW_Hr)jOm{Ln1fp*S%%neG02F@E@jTQrUe*PTK_FZVNz-Vmd6F)}OE03%-=bN-in z0L1+ZNgxv6K9{ss5N2E@n&|adJ6Qc;{#-SN@xCC=yUIeGcOiPO`MSk{9;zkNck$)Li z!Gnp*J4pOZC;{#Gm3~_CpeI@Um^=MbOPc0=VD{f7gMSm>z8PnPi3+j!@F&YRs3ae+ zu|Ni_90#}}EQ$)#odvR`$t?ekw7@-IzdjhqvgeiBtNr8M{_C4`Jtw=I#<7W?{Inkt zvr^+Iim~b{XBImOpWNrKm0p%!hwZ{|ZFva@;|3xL1)W^th(+;R;d?Qw2-9OXig-CK zvl3`GuXl1Xmi}NwO=~TLHrzN4wkH?g22#jW;Jqc#Mn>Pq$HO=AA6KqQ=hShlEhDp` zAU5~hxA^LjX?{{|@U<#Qe<9TFY0YVU1}*1Nf~Ge6HO6BRZad_NC&gB7Et@_o=mfEU zw8-L}kOn(riZF*Dnx!uJf7$aP6>%POjZwRkMd!mQtf&Ago5e{2L^;i4f;QPjPiOz`_dB^>eNmQ!}JxkQjJ&deMBy#$u# z4+YLC!l{QJ{_t7|7SNNhB$7hZe}bzO(r?AQi&Ye=zydyB4eY5HIrEj;{E{iSM19 zcudt14`E@1RW*_JAYYQ%XZ%UK#PX4dGFeKUFgSmLOVTV65`>`qujEHEj`iTR=8=sA zQ|Dy=J;+W=#ora+Rr8`@I;xIBq?zJcx&hSnavYKawiaUP`cnF=lWy zw0R=0&0bcLwp??kz!PQLs2%MrqfvoDiAPbFwv9t3?1n~wVlXQp#5-gC_)8Qq9t!U{ zAc`G@JN`B4J!V!l&IOAcxhd*oHVgZqj-0e$E~ht*PZ)E{K|1Dls~E45`&aD~R=Okh zL)PWYr&cZ)=in1{MIz*w@w$*$G}Mm?hRn{qB{5%qZy?KRd|~;)XuY^RF1-E7J`z4S zVaS4%v<-RZ%>j?ZY)lfA)_0~vy^+NiLqsfUu=itl-u|0Dicq}RzUtUFHSb>HB^Gyo zC-0Mz5|7dz2A9bCwI=o@>6xWCvE1_+WdctA$e=6u1dm?>sgzL}Y6FHpde0jK&GC_t zCSt;wKFYj8*EPf`6-@FqCdBd*Kt+O|5}!BGB%7g7lOdYb)}#M(ZOIOfGzE@SII^ow zBRcZecmMa<5n0xF91}hIxwrUbCG+?)V%jpIg_j1utOIWC;Dtv5lbnhdqI3_=PJ`$_ zp~=3*DG}vm$V@I}SdP+w9==)~eL<68*w-$Jfxgep8|}(H$60eQCN=bWR_jkiIBX86a$;vpkP_hZx%UWO-1;;B)iy#xuU4?>E|@ z0FM0t?H7EWg!1?QDVF}H%8>HYnkQ$hNS!$pAAO>vZ|Aa~2K6N_CM`ZX-R^bY!KGBg z+9uoP5m*z1PHG&BW`VERG5^&jTZ+%cX|sNK9JAui87l^_#)Vh8=!IPLpW=LGB$Uw+ zj;x==C|tmhn?ZyalNIWTb6nBuRuwT4%C@h+FC6tmKeR%xa6~RyVn;`!iqvNzPF_F> zc^Rs}{ZTzu5PEQLE(4CPnQL^yN16B_(D*zk_*J*;>o*b5Yu>)YxL?dC3)x z1^AytpYNk$%c)Q%cBBQ8nX019&wR-RJDmQapqHxaAfcCfi>H4Q)K7=rj-=L2P7y*8 z8y3pf)Dr9Fe%?K7zu#*K`AnW8|N>g_#NzEli&RZy8B;@V%h$=n}(v3d}Y&6 zK{}dczrw0wf{0TQDW7!3s=&Cr$H8vm%Az*1F|VO6zf3v9poRvfOL#f8*T9pZy#;$R z{xtS}Ej&e017RzgK8rak$uzue`S$bCL;M{z{hwG5jx=){!emk}Nl zl5DRi6Y+6W`708J7XJtr(dWOv*t4EV@7jsu2&~i>GDy_(L%sPmn2MfS8}^d`N|Iaj zB@P}PDQ7>4=?k?P^HLh?PKc5?8{`6mO05!3J52P0cz#7am!^2OvR0cb!gH57xfvqE zbd!{g=P#3ph*tR7RF3#awe$o=P)I!r1;>_KES{ba`dV1Nr@4;5Zn=BTM(ym1ihO zhh9^t6;L;cS7vb&r5mv7=x}VMXiprt(t-RpRfL^r_nPqdDLUGqDdfK%6zol%hd_}X z#*ptu2F!7H!hHx;Z;KX6LYY}n1wJP>rw>YBW(|FMXU)qzt9Y0-E)(1LnZ_g;CE5TN zb4FYD!g)rc&7g4y(Mg4HlkgjK^3%jSl>t?e@bty`i}gre#dJe5LXU3ZyYe($((0+M5q5EuoIqs8YV>E-J?X&)`_akO$rWE4IdHwut(=d z@m5{NEW>V(iDaiuVAuIv!LzKP^lc>W*BoSIq;YO3a|`E7Oo;H8a3E!gLr3>6WN46Z zS0;?#3TDa)79vO~VfL&N(xftG3-|s1EWq-gGXiEp^rZ85GyF(LMcNINS{jZ&nd#rQ z*cPa77ef@8MrmzZW+Ia+BYRR`5A!Q=4RUR7D(`KK-4qXgXiwf5bASERRjBnL@YeFz zrMD?Rx2>OJPAO?Wqfe_~ZcE2bj&p9R8!ngXqYl)=Z-fjtZBb!VKMXRvyD=)8jM;Q^ zf72tgeiC6D5JevS0v8EGZ`}c5*g}hAu3pQfviNf-C`hVt>kQvfE5>{z9R)NC_JiFM z`3&bqPEPB_V3%BCcN9I%W8KMY=94Je7W$&d#o=<ALkEADqVnB16KyP|9HDF<$A z!_|8x2be{b!B@35!96r-npV8oV|QZ43qwP%=LkNn+Fr;|{alNfsed>{rA0-KFiW7# z98(D}S{(^#Xf?7`<-B|dlAzJnkz-74bA(phzmQ*tllXg?GGSfUj+%iBUpR@P$Z~%B zK!h}#uKyGip2wv%ep}#Q1T{!jF>xqTM@`@X@5qHYHl(cNz`^>cVXy8SM!@DUBptqU zO~-&_&cW~$CdKt`mW#_khnI-UiC6^Pe8fZ#XCXx$V zIDPB7#RwO=K*J2rzCySrlQ;{{nGw-}Zs88i+;(;6LMdBC*+Dkh+n9`UAZ~9CWqJ`| zm)lHGQ8{&Il&5YMtW;$6z6zDh5)~1Cn{jx$<-wmZ)y+3PYCt#p zpnR!*&7<4r)I?cT)#CB)GV{_$M@I)P)QD5>isd6NUD6Ey#Mt}6oHANcOqm6*KkZ4Q zqwkKF8d3VpaD_GkFPelg#&WHS)TJZ}NnRH86pZb$Zx9(`kfKLPq2kqrZee*Id%#hD5|toK6%RxmrSQl4r#7ug?tna>c>tCO{OE8bY0DqZ7-iLTYn&qpQ6 z68(dNh|Zl*`N#qD7@_sKgwj0&E!+l7}DyYqf_L=t1{-4j8}C~T&!=vY(T(}^G3@s_zNqyXRKE-A}b*-uKLQy z)k^jzr_!vgUixogb|Nw#NBYrzGGkH@+Q-?W9T{kR#=$fQEg-snF*i)NYC}Xl5nnyw zk1JDTZ=&9@LF3`I=B-EgQ|0sCMkc?$?6eb6eISQ+^4#k@ou8F$J@HG{p5WL-KMJjQ#KWp;G9sGBt{>-}$Of+FuvduaHq$E5^w(PQ#;jHhTK>^J+&&a|dG18Z?8g+sf$yOogj(=@+mvOFB= z^~f+2_E+juP0h|~{}z3juWGsS-AOp)NxZggpS;?%=jju1Lou_k|3Bud1qh{U8G==JsY^#A2fjj-caW=!dZk+H7SyN^HxG?x35^ z2prdge4paxW};CLK_*H=AfRI>8&WQ8e*!w^u;)&ow>cZL(Q zBtyDC?j=!)xo!`lt@>;P+1lIRX*cW&t?Y~>@4yy(LTDr5=;%nvq%M%ge=l7R_KR+g z7$ls7%gqjT%MsClH+9AuS~(2)RNo@|Ko6LKVIQx5`XNu0?S5+A8V8n zlMOZ;!Imp2g`gwz7=93S#PW5JMayvNOaP@U&%4wbW>((@<7w}As#xv_Qx;_yIbY}+V*a!9_;;^WVyq zg3-wmcc@#gt<@7zox)>I^Ue@V;{^?7!m_|q?eSq0n!r$3Va%S5-fBVi1> z6^Q%ci}{=k{w`IT{{5Ry>Y(UN47aH05gbn@K1uMzSg*!{*RFfpH=Y7}daDG$*f)iG zZm~cqM9b2Jfj{6tpKEHc5D*Z2cT?U{e%`YfDTj!je?R%Q>Xv!mQ8E9d{kp@dkSzGM zNkt4LS!d7#bmZg6j()pm1$e;xyWqoLmyiK)CfqLT;!w|!KU1{-uC9VB_1me+um%8d z7V@5uSfm7BcWi7;6}RvmaH!CAEP0N4{^X=?FWI zLbk0>w@szj-p4X7L&O<5AzL|AR0j1ts3^4(00)apOOcAy72pCDS;VQ6gmsv`|sZH@uOq*$2`|kNMlaM?`wglaK zQ;N7FQV2N@9?ey4UEBgec@`u2@Z$dZbR>?5ZEAJ(SU>gQ26I3P6f4v-r4G*zA!Sl& z!3*l6t$k0r9TaW;(K8`{@6x|3$#XVcSp}*;yyM0%C};upOKNKBM_D>jDypF$KT!Eq z2HHFhxOsTO)R|vxFaQ1>URlW+lQBZ2bUhG8sdVd~e(+DzqQZ{+yURurj^qO_WT9@P z-3zjLeGj-1^tf?y`|*0?en7NJ{QI=s4?=thQ9(%1cQAT9M@OVtx$l(U#+r-e0nfLFEPpXE5^O?F!7SFO< zCbBu-7% zc1kN*8JU=-=jQfYhbOIgg}skSLEXWHiSGj~4!JC@s=|oDp#d8|2F^?Cwz#dZxa^H% z4MY@dDBM_CZhrnqZC0eZ1vclwxw$zQ8(?H){A@=KUXY?#ikm#Lb$t)e8bC(MsMXmh zQ{m>>)&MCP86E{uVb#`_c~eVE1aA0Dx!Mlki%FMs4t~hU$gW4T6)YI|p2j2HLHFu< zdNC_5Jyfx>@PI-mCMLH2{l4-a0I-`gbMT27(Xb8++X;X=f=Bgsu|AfAxd*Xm`nO4D zwzfY~hAC-iM!@yadeHs}aoBctcD~lu4o^+t4i68@vNJI;;l&Su#y1!t!4^WvR zp~$6#;8nIRE+}x|s!BRK0)Faa1JbcOnyOGfqxH@I{_5|WSNMHYKC5A%nj>XsXBQSM z=PGr$RR{p{a9{mGBqwcXNC9h!jW(10r`KZpJlV?IuPrSs zWQ=kjA0I6^SmS`|i23zP71lcc{{5TOJa(|M12wa-fPb4r+1Fq>g6NuG8z&&L4;azG zWFZN}$IMKs+O#`EKxF`I?N6hxwxPm-5*r`tOchx`FB!Z`k1;1DG44s=0hA4@u4in_ z5&4Ibd46HxjgC%3(oOs8fGfw*_Pt;Ya6bK@NdgjO?EboSCOS>iZSDLqqfv+^ArYbI{zs#TR-{g7pTcq_GKz?$X37$0?^R?jmyPQc z_UhK3)h6qBn8TS3B@0=cnkZ7=pQo7l%r~xgwu*%lIX*X@T=eT-3Jq>gU$oE6^RZ;n zv~Y>Jy01R0TCFh}yVuU~V;V;4I{x_D>Q8!}Micfy#f6-*Cg*!@CGrfvSytJeN)ao! zm$5dPesNH4y(L`A9f8V%yt=6=SEx2)YFIJzpX1}m%E~MO2V(z#08q2IiSpAcD{T5) ziYx#JA$2`TKI?uc0|NsuBR`jwA;X{!pzUDlPf&Eg;!a*(exD~1L|&y=H(aKYtH}8! z0tLqc5alc(7i#L@n=KYE>bT<1ZEa-v`T4@`yQtQa1&M(YTwiYi2N=&2ApqEheI^L7 zmc+#O1r-(54=Y}E9U=^3_FjOFc!~0$j=^0$J0Ih+yx5 zMMr1r(!arGk{ZT}z+MBzr2owd&3YndPoFKWcyqDA@@A&+DbkidZiG5O*^%;`=lb8j zm+6XI?U34tjZ>0}*TxGxpf>uv&#nsrnF@KjC3L_}f-VsI=c3tj`3Edkr8MJ%0%Ww~c(132`#6a4^- z0Kb})d=`gc%h=x3;v#cxYSoK+P{4q{(AJKEO+yD%$*(*SSmOda_Wk?!u%-`%y1`af zq7Ww%xAXbw-uG|w!k`gSg!HQSij#g%@N02uoInX0n7(`ygAL&HGvM3+TSux58Y#o| zb#&YwZrnQm{Z{%~S=qmnEXk>l<)^lr@Dp$bq#rv88Xg{e`{UU=zV_6lq`eoDlF0=H z)P(3ri107ijaqRxZia;hu`0kJL+)k@>wTdXFth><_U!%0O#!=cR>oH8D~_smt%%kWPVD{HkX zF}VS4tM+Z^{q9$YvnQ!vD$!%UU%h(onB!<`|FhUj^_d6$%>sv9k5qbDiQ<1^t?x?|G;RfIYUn0BjV%&j4UI7@V%Q5k%sGFGt%L_UXQ$ z;vNPclK6mRY;0_?J~A>g4FCXi=W62)V!-`aV#ogcVSc(>=%Fi|v;@8h$((4^fcYzY zG_c23Q^Jq`{0Xgvz!ZQ2mut-uOjiE;qfu?thA(+Ls^&Vz(Xt7X$sImiff9vZg(=C& zWdw7(zA_%$JG`)HAO%VX^jbK$uCA^#U-4GxFhz=LIZ#ZCqnHe0w zH>42__9fCF26IGfK#*8Wg2S)V=Hh?8l*qOJ}nO%tZq zf9$!#`{qlA0Dygo9}5cD)7yJ{P7i#V;u$x!{~y|iT_#Csx|H5AuAT${H5jgGilwsb zF71bmMj?-v*xoS^lkZL|(cnES*4n*3u#KbAW@TlC+T{SX#eh=@I%u-wlW_M{a~&G- zL$*zU^xL;6Cv6AR4}acD_J3kfI(xc5wFDb)ieKdq={=Yf=spVAxTgmAltleHuHw>{Pw*a8) zd)jp^yZ8D2zN5Xp9#}Cja0l#W%8LpZIbbwrWOMT+32Pp6DEOHhqISG@4GnnF z=4OF`lx;@XpyMmN!iPr%BCd}c6O=t&iUR7^jo4{t1Pq@6O11(BZm=4~58R>Hz-72H zni}_jZanM@HMs4_kLQcESkX!X6ek5pYMJ~RxCU;0JNp!vD4_r;xA*;l90wjIyTLca zY-RaDmcmK;bVc*q^S#9;JA(bm!en53(h{N2!7Ydm5?Cfms!Nm(WY+&R8b7B)#ct9!ggggZXUgU1b0(^%xj)tuO zacWS5bs>+C#ZEsyVlI2 z%a0E9M(8XkCzz@S*K-pnfj2fitszT?N6YyH07OpU6zETGpA#eTyFVqM*nroV+$sn# z5g31fM-7R%xenCOJe_CuYyz?5`)~SfgY9%NOO4}AVwDj)ODT9san5n7ngr~W>VqHs z!L=d7Ts$CTlYyGB1d0{hNrL;T$%6sF|6rEoHXuR+#y)FNpk)Ix2TqFJ@H-}0dPGZ1 z&<*;4vxMZ4p;%gPF@(Mf99LKy*R3;2bQMlGIdOi$olGeLBl8ovLYBakx%sKr9WHj# zicqdrIJ`9wGjz$b2GL9Mb8_M!X4l`;?*UrlYfTNXba5dqK&0Wk{)Y=Yn%~9#*7RE% zIWI4-(K`-8bl*QkF|Hdy*Xh-!;NX&vhibxJN3(JZE^QvJ$$%NjmT0VcEf`y@)q= zDu%Ak>Sq+IwGFsvnv|QN5otqNzgfZ;jeEx$%n}UD;+8{W7YRnZ zbb!E^FZ=RC8?V0=dBS=ZHS3*Om_Bcfkh}51G@y~5`k;XWjRxG@{?#@QJXAy&lLsvB z%ZwfHhu+NagAD?H1f3gL(5Rw*ec?!;LV#58ys_6%{GYjIf=UbHl~e2MN%tomH~><+ zZ2bh2`z{wuxunuZcJM^gfkg=_6fi?PHegu7Ru_1i%pgxPH7&$VP@9|Iyg<}%ucarB zM@#$#>JHYkfwMS2uUoY9=kTx(L>+*K4XL!Xw2%N}Tt>Y>nUTj~o*kTG{A`*yP!b%0 zlfIoG@qjt*us8*nz`a;PtFC?8hf)0Yd9SzH+dddIR?v9R_Wp);T?e@F;Jh&*T ztURg|CxWymfof@Q7X@r-3&?nw+z_XJtE3b^HGBE*9}GaTu(0|^YCxyna@GG53{+=M zP7XIX^#;bh>D5(s@$?((F|Ch)JPd#@rqWpryqLgN59DFomuWZ#dJIrrU`)b&Oq&9G z2)J$2Gc!91mg8AGZ@w@9YtGY{M8fNvZy^F3_CFfm%@=_X!;SDVyFU=fz~W-o9LX<< z7-hx?z{>z(HXlwP1Ck0D@c-l9mo+Y+d@uP{oQ+QIR9@kONTd%W0z-G;T)ARz!HQdt zXVK2PsHx%5rJ#b79=ywc9Uut)0%UK{DC8RW{eyiGC;;P!<7+o6q>9A>b3EHkRolK= zae2#|O~_(SmZqf$qn1F^<%{`%X$>>5em76oJ;`8uzxi?n3V=1eA4W>FS)*d8{ZYYU z(disQeSv!dq-T84{Z$w)aE6ID3xP)XpP|JMP5(e0e`i~eh%cLfRmNUeO$WXJ_2NSn zl0y(#MifCNkH*;0ni-?i3mIjxi{axd!9nSlt=Duds(E}LiZ@l~?eWlcw9JkeG1n>` z(>G{A&%%A;}_$wDOBcDmVle|nepZU%N-u^C7N!O?&pnNq?q zs4X*xfz>AS19C|Rr0#*_bKA#kbJ8RV>oy0b)X|rzqnkF8_t~w{;6lL7w$mp21D*7g zBrTn>v(4F8$UI9tSIi6_6RkcvvWHrM;4_j#5in4u!a%yFFql2eOeiB!2xOfcGa>8r zgsW4UktkPTOWyt*KUToiu{3Y?V1E<_S0!J^;_XF`O+u_+W{n}{04^L)x?=ij^&a85 zHpEbZCV9kvc^%|r*wo_8R|TG;9Q#w;n84z;&0(xu85!Ug(GVtBBd|b&^TS=iYbFYTkLQ)6YaKqO z=Xd#WDH$;%JJNt~as@*%0MU-~ViPZR#M)W&*+_)39$&zW>p^4;Bj$i5=F`9a(fl6V zTX}wRqINbDA_HUN#DJ4F6gA05{_l=U;l>@_TOgk61D>s1>3%xOnCxl`*-yQ{X#GPc zzvwJ6$~V{GUv?ff*rw99@P2DvU@kNNfUIe<;ErT1QmB?K9KQDTy^c5>t$Kxyl?^E) z3$Iz3Rs_;Yu1v$2ggI|j6c#FfG7uGJg{^d+s^^HKj&U90ixcjnT~TntQ>Dxik%R8p z-b%z4dRRY{;|Dvlzi$v(VwOFMlC)IB?Zxn{vB-d40eom+edme!U>63SqX7*DOjo$i zp#Onp{O9NhAKu63UC+IBkVp>048Mk!7QzfaDA4cU?s6-hegRt!P$6NT6H1U7xB=G^ zXv!4ow8FfZLw=a#2gVxA7g7_4B2ot&^FU{B!H!x5jJy?Ow)KIx?yI2Z>vspX>Cf!3MvomTm9ZHQ z9(;13l6<Zoob_nVsl1q3tws>bbnhxLP7hg z2RC$kydWT{mDV93;GSV(qr3~PJ?Jm&dWF_~5hf-kZcco9;+YD3WkOpqf=KGvJMn9} zBqk8>O?!;mdy#G%ttar2L_kHtB5Xi*c(@jn7P^AR4r6a8^i6tzv*z)Gf%B4bwXhHv z%wwic_)KaAgCO`l>pBg>x!wrr*;z-21268?QhOZ*W4QqPZ!QX-6AB-XZHhk`b#smE zxWPJC^MVP;!d=B5CJH5KU^>}#!Pv(fgdwmJ4Zf^0-2#SBW?*4!;KvV3%%k3Pyo|V_ zt`#@$)-9`d!vA^=9qW^NU)Yu|I!t*R2{}zMmZPrWDD(PyAZ(lmd(00+j*@x~gjQ6e}$R{sJp4d8y?qwC8yKDBVGO3osilwuIc8liLKriYavLw9s053 zdxSw!owr|+@B6e0xqiub{g-h($a3&5dA}POCxU-BQEiuZh=39NysRu(C_7zAOcSOw8kCvfMoK+~fRd2nMl>D1R=3tDICiyvYD{vuF~4f>eP&CN1G<;>`+ zg%VggIvU2tSi_{?@pF(P`2Nf!u>q#VtDx*+X0Y%wd^TG7Z`B@Wi!%t712u4ys2YSC6=*Rw=I+?kx zuBL`)WOPa5mp0UL)Vi@aeI!aVpc89;07o)GC0EcK*d8ujm%0WuWIb-K`5)BOk|XB$ zRS00w?p72@y~~CKoNhdk3@YGHJ6)8=?rSrp@Eo_anWyPM=$>|7U<2Rr43*-5k&=Sfw{0|>mW{UaN$WJFv zPQlDojz_@bhlUd=U?iX`;M#;3qID7ks#_KqbSJGl*f5_DXcEGNyob#(t?iaIZ;Ifv z2%61;fRjEDOw?PBV8?`50Kotg??8c)px{ssPM5p|E({e%RBtwMpuC;;SSF?nVac^dvi8*%QbaWIcv2Se7 zC%u&HS8Lo?1+j^THKaZwZ4yR>t1D_xD8=Jwm>fRlV8sz4b$*?0>QfNR9N8Uwr3|(K zyK!nsr5e1Rxb0q~)n1c9nR=_Cop^ulvO-ehx3B_p(u^47nD%OBccH)hw692f7ti8w z?Mo&9&Te})G6ePk1p>5ZQCpiq+VVwVM@I)BSBMi;m8=#GS=`Jzgh)UH1JfH=H@J5h z@lHl*njmKZ8uBC*XfWW)`+Ay$&D-^gBty1L{i&b^!3(NuH#Ep$kx2`pugN z+yT=+0W77k)Cd;!3=hj6FE${6Gtzo81~-G8oP26-jzK*C#s`F#=I-wJU>C^jo?QB; zD7=!5_;4~Tna41zC_+!lH% zvZkSSbuCApO0hsUIo&W6o{5D|bV5kjv*!ZEW)XA2B zm0Ma`T1aSB5JpEwgG)8tjy6u}+nx&nVonxB<|ZMJUSMcORm4<0!{%3>+u-lhYnbN) z)4f8vwO(RgM`_$nAU+m$+m5W)YNI@(yI*yiKh&JB1D28<&C?CRfgUAhz#5n-# zho#EOV&LHbxDf+RDa^AP0ONo|upEQ1uIq}te~TL+WxfBU{T7O^K(qmSKig<1G@!F& zDADS4@LJjL*(xD|YGPUt1fJP_pkkVjd#7#1~(+n%#;x@j6)An(+IhPQ9P> zb(C@xwMHAmHSAS#%)U9g<^8Q;Knd%`?=>tSA)HC97e3piW;dxLfhhtkAW{>7$f8Bx zxAp-BdzEetJRD4l3kN?41E7ZjPr)4ARIr(e)z~_Z>M6DQ<@R9%RKP)sj){RDRn=t( zl%hLDk@rUKgX)^ zf-#_`wGVUQjhhM*Eh6aFx!;D+Eiu99l#qKHC5-sNk`AB&7TY|Sy#Fr4=6+!EFZ}OM zD_+=ySQ4ek|F~fkiAm@J#EX>H9YLvfpbZR5!Db77velUZE9TG1$uRIQ&S;*YG>gp+ znPy76zRu3xp=xIyzyRtmsN0VtEMe`S^h@1sD4ST(QuaC&3W}0^N=WpB?72AqU{t zBoHc>2SP7^!MO?|qYmQ}W>9+>IgNU|8AjWj=uFe#w(0?q4V;tiduO;_;IhM}0Tmqks>F0GGjT5Du0AHazLl^C$@P&KbDIO^`YbfBP_o$hTvX9QeZ_Ta%Ug zr7!uXLPG#3uzL@BAk32Ty*n%)S{A@W0A96HCg%_U57L_!+`sk$|+LSE3?6p zC<~CZ0m;kwB8+Zy<}4e8@8JUgGL91 zA=I#-`EqRGt%&YYS1_3+iBZo<57%`YfJ3l4K(_P&zp5eN+PT5GjRAY1mkM<`FOQbOv7M_8E}0v6mZ%VL%^iE*>$~+V2RnF ze|&V@7OJp+lC#Y#2goYp;;-*w z*0H6?5ojux%Oj45vu(tktLhV-XudDrWO=i~F{l%QM=fM#0;jZz;`o{uKF7<^$k63S!dsJbV-1||ZCA+t3Wkn;Pn6Hbs`f=sfd)q>5im?)5hRdhlqCd8 zz_Fz$01fz&I^;Z&FGXP!xPxzvjq^(wu(|RoqAowIE#xeRMDj{L=&979G zB}Vub#2~{Rr`_>DPgw#x2_`q`yL!3y0ki?(*2fE&7AaTvP4U<6?ctALqXKXSXb#qf zWK#SB6E+9d2f4HWZbp`f2cy5gKP>13=l}*oKy!@!mtsx|n_tLjs#=Smq9Q4fKlc^y z-w(w(sUbvCI6UL}_-~0Iu>m3*>NCscT5HhI5)fEX7eqb^OQ~|iTusJxyF@9je zvYU2O!n~adt@2H%uj|ExkR|xh*1>^b0q+`aheF5FlD->^pX~qy9|4;qlHy)q!6;%V zo&;pr;1B3kM%qG9zuoBKyvxpmf`GG?jVEH*iG$b{^wY>`rVT#O#9YCcC(JOApMhOYn>zt> zw1M>Td&jth>&ElbbyD*R_zhq>f`Jd<2%1k9%iY9;+@LtFwG)An72JzkaO$x~yWk$d zLVsW;hkdjI6Dh#5!jBy!B2XJk?*)Qg22N!EHgJ9VBDrn@3`^p|BBX{7W5m8)>nsbW zH#feccYAfFM|WPyz$S=|jr|lH4W$1Nu(V;+D9++55u2_VxLLq729I|x!yat~<^?`X z5`hp(67@^~++WA_P6JXI5AUSLNf-%T54tw)JpajN>*NH+4*33eXWI@62Ed&KxBtHh zYc~LU76Z{(z-G}a@Jd^8UkX)179Z!ACR!KzPndOguj#uX0$ceaOEWcTRzD?`f}>#h zmx)zv|KAmNjqei+RLlu}4jf5cDpg-LuiJUJM(?98!vjB^S>>@!U#ja<;_ z9}fvw&HVx5POuMqNeQ~J_O#hH5PdO_4M>Je4+=At8Ns|lBymw*YrfW8;J~(gX>gC} zpE}He-o-^yknOgDj1Q0mv5~e#;3EEysCNvGG~CvPW82omb|&`3PKOhl6HIK|wr$&**fx76w(<7{bWoUFRp*wYdE?|AT_0-rk1G6lAs_z=Xic=Mp1_?+>BTM{Y0TugRXDpDGgNIyfXng?(2mKcS#+gYXj!@albbyUE}Jp}_f zt|{ZUFGddSWYx*SvI_k5pCmOk&dO@KCapPqlAsvj^6R0l?L7r8(C@SC>hS9WSjPx6 zxxlO~gq>Okh5qp&KjdF%NefD*B4x3|o~Ls*5(dy+6!N{}Lj`17@zZG!OEpMELv)ht z9U>LQ8UtIKL{tA{++r0|CY!V_G9)oz3d2sLD)Ia&R2s#D2=JeSYuD=r06>*}w_^G& zKLcG|237rAP{G`>dj=1aNA1aN{6?MoZ+n*1do9PryzC9tBJg2liP)p(M`P zkELw+rD5_45eg!m!{R@=^>D)ta=O~-aV_eOM}BSX%+39uRq8lWVb@&!BOPx1BgrBa za@sT=hT7#L;MA(KiAj-(k6-2hDf^c543~HwcPfY;pCEmdXpD~pGg%9CYB&;PD~qJc zLq!og<~F|dxV8a&DoU!zt}yMgJPYXAUQ9TT_knT_mExkUH}utZJy8B0^DwzsxY*(Q zvbSp7@gal;_n#^th&jOAWq*7|juG*FVa~pe@hNxW3bWA%!=UK$puP$^G(*o8MtP3C z6+RU@um@K~QrfRQB&k4m#1&K}NR=dCvG^Mb{)5qVe2}~|hRs$gfc;0&?T1WiQIV+!6jsn;-Oj1kZ3`su((?I= zupc-BrMIP3z&JD*y`TcV!$-9=(&Ta&v_9+EDz;vw41Jqu@wmY%c;M}CPD4wbk4VP; z>d*mi=P~9T`+3Px`nomgQTGNv>4TK^N+7&aF(c!f!$GaamHXK^783MF&cmnjN%5iQ zHpzXx?8o@YkRG{P!JTVf+S}da^!P|E^h?*#th3)rO1aJ}W5e&+Ra~mnTMq>n?=%A3 zr|Bc7mD+bfHNB_Htk>V10iWzOyHUieCDpo556YKblOrEu4V`NbZX@bij~}_RuXYwE zQCSg~3;^l!!!@i*gf8lgc5pBSH6zv`c9}3{IJ^Xvr0z4*p7u9U)lnY%JSDl+>40>E z(cj7=3$^?@$I{LfIOq%wS$Mb8a}wlvu!e3anpSMsK+ixYAlLSNW;gANjFy$~qBf3I z)CF&Pp&8U*V1SWgy%bS}Xj8ZoQ##c-S#R`Vl%>mc-@aDg6ws4y_roggN;YRT?Lz0d zJN8Mn@5y=$B#0|&)bwen3uBPhi(temkuc4fVEYlhUY$}pu%`%4^f!I#l)=)b6$Dy2 zkxzo<1Sk`V`v=hDSV>44=~awGBi(L|z*0SrjFKdyIg)hh*Wd4#qU5jg!4{Pds0v0( zDO-2%H&O}1s!KL41g8oI*(r_4I%U}Zo?*~AN|f?okBao}vc+JQa({aY1)&j-)A8Dz zl7IoEAyL1;sDJQbTF>uR)f45>|NrPK6FtArw?jivouC-+ms;jz70chK(4ql1M?9!N z&i+o#iXZ-0$#SE{os5UUl~vUqXUgtCPa{pTx{!Ag$b#7KUs;Y5U!>|M8R4LM_k$#} zVxzDj(6Y7~O%CxG)!hisUusdd^7<(ILA{gE7s81OM)Szo%>@*+t2EC6v4buzkL{Zo zwAl1ush}zg;Y7QwG7XFW*rQ|7rnED3d^W&i_|q2$h#l1}I}uq2_F zl2qq_jHy7?T+M^xV%!T;U$Vf=O#R3I40+`GaN8En5kb;=;%$Y=Pk(v@`Jkv(>?~*w zBIFDsOxkER{|!(L*2O%nhlJNla-v?BeJ+v9kVp;8ztFS53TkSl76hTHmGOgpf3UX( z39#71vkS%OutLND?y#ec#%OP!fe3L6Sn@$culKPerSfE-53Gg}O;K zI(Utb87qU{sBWN|P`Ift48s_Ju|XM|Rh-b5WHYqgmsG`}AOmTh4xJuKWxt9{{30-< zTnAn6#5+EhA=;)meB>cx{6NyIW?v~*6B;TJKw(w1l@efY9+l?PsZv<}4hi`yerQ@8 z8{X~~Q=@#jT-%$wLG~LRtzkd&2qo+JQt9@A@6J&Cw#B#-vzdMgHZ>jXGm>3 zSsOcg!_;ALw6`9_p5%xjTJB?{-?+s!IIT)ZMj-vychodyS?5} z;tYX_W4@P&KM=odj4$Agxt-14?9ta(z$KpL(UL?0Ak4o*JG$zu)Dn@k!XT2VHwd)I z=aO)$jH7A%?@qYd+pyR7A6>MpEZo>hp++kD>v#P3RMdSW7iDP4=!R+Pvktm3-3r2~ z6)_btfbON)u~p7~n;LaTr}AeMk=$&_CRA)lNVqJMvx9X&t!dlw%r9BI5m2KYY{RW@ zgQtqqhGIPOrVG68-rQA`UMe!SN%9RT%0bL5@V=^*m2eyJT@8^!B8^W_HiI2u!t^if zpy8mxnczN4<=SC~aeQ-k5(__s(_0OhiE^_B5!Mk}dZoyb$PkbggYA`%rs&@|(xV12 za>~Ia0iy7tz4_uSM+I5XRSzgGowWq5Oo7ozlkgMD<_q$p=ea^?06%*l!2Co2?-mFq zuq7kXtJV9$yDCNQpF@@cWBBj6r#B%8qxI(yEjP~k?WBjf*Gh+$s>rRCn8m?SF@!j) zqx}p%!p!1-@5$yhsus}bgY{KcYDER@@$QAZPhTenP{%^xyAKTEXk2I9+3CUsiyxOI zV1#TG+bP_T-&D|3!3KH#nBGCBcfv1!8o%U4bG}44d|{v@3=d_Y@svi>_c+{qH=ym&{1Iq1GHOA5ZZ|NCY1MNmc?3C3!x%I&PhLbDKKz{$=V3xhl8;%ZL=)f50CD$} zU5GQ2A+eK0 zF7$=R z)>m3liPmtZ#D%O1&t#iBIQs5I2#y35Y7`jw-E!!E_vb`9bFf*FW>)i0S>;S zDOW;J2UuxAI|t+R)G#s*khD&;+P>a8R64V$=IlyBZ8rkTExELk%mMeSV$y{7W($_t<&z;+XAdORd$n zFklNZ1Di1<7x5>9_a~#mz@ZAE4UwR;oqsi+Ge|S7)QEK-oML?+JBXowHG^H>~{}gQvy7*6}sDi?Paf=*vQ)BTAHhI z?^}<&Cy&abFf(*{g5V>tDz&h+pu@fI-%(=!zn@yBKdR8AoGH(?I(g1OgXnBF${zJs z8mkz$7^P(iNQ?lD`@clLn*o^w_Y(3>zGWBsQ}(bQ)SYupdGt9LuN}c4;YIcsEY%*o zwFrH6#nH7Pm_HX_z>sRC%n?P@GE*jc4AhXrl>i6lL@7<(nmTImqIfvr@x zBE|xZ2E8T57>zTl82yV3qmemO7C&SWmv48M95>SZ@8-$kaqx1!|9&k>?3wf5C8m5k zA(KvxG``FH0?Y*>QElmzYAa{G+EBB(B)>e;HYh2xB)tf^+pDG-guhx!E>uzlX7%*C zQ6RUz+EG_0PRiE&{M045IJpSLTqQu$^ z>359If5$a3MOY}}!n%4fP1W;Rkw!mWoo35U@gj=IrB9(2m-<|Sb)iyA>4I_&(*M+5 z7sXrRu*!rxNVI{F$XN@iq24JYORV&Upw}&-iA>f5jPTTVw1l*{6yJMB12TX~b_C`P zIvG9m%Wn(L8msxiM^*(wh!cr>Ia+FV|M&}#U2S3Ix^}dvws8lSZ0|*`eI2&0345!m zu>}lWQ2(<5+Ec?Cs4-}*a$2EjC(fF!CumZ&<}2lwe{7}fWF9AQK*?d0C1aVrRVk1{uW|*1N~fGD#^@3BoWS^hpOcNiTxLS%!OugbulT z+wwP>|7vwoVdbcN$K4ewcW<#I{f^G!JskrY6}=8t?@H6 zc9-456jg7l)@;A?8a5PN^6?#K9(TbQL^)`2> zc^}ABOm`r2jNG}8cnD*cl^9xJCC{0oN646oDO9Xi9MMUj_u;s{wjB%#FxZzv=^VqB zUuEkSK56fg60Mpe^*q_y+utVTy$5$)b|>v`ZS@MrwQ$2E4}$;M7;145XV!sT{X5{k z!wAOU$!>dB#0aj|Y6B|#GBt(lnKVY%nCDh~y8qyZljE>5wu-OV^ctm7DZkV))bKPI zP@md)ddj9=9B$k<6`(+4g#Z9J1iTGA-$mi;Z3pCK5bYZ^=%A$F_I`3A6pe`LP1M{+ zuZ>%XS$wZ5?HdJB0j?YIV*SaGDn%JFALZp`HmV+5D5q0fa7ex7c)5Eceo5Q+$P~7W zT$3P!?{dz`&)wkJjan||&jiG^93*E)sN+;vm)n@KN`#7o+;^%khEbB6&juVHMmd7} zPfn<3cz@{Xfr&ua#Q=r|^N zH_}}FI@mFLZnoH`R_1yE9g`!_y|flrFfS+YR5Erq^HL<>{#T-G@j`=F%%}_0vmI4q z5SdC1+izt>Uce1E)vRAzr+Ohu4N!50V1jsee<1KwgU=qsjo6*CCl@_HJ>BjckU!V% zA34{KewFPB<1f<$fM8UD8=sQnY80o?GPxe$$oL*Q#9P@Ji31l>Z;MmNxa$A|p?$nt zmv@4y4`+Dx+i4S{$V#|5hC64r4sW0;if*g2T#2fm(tj4@(8P4=!%o`7BiKtnYqio6 zG7i<(5s=L<_uVJ*`jT!i!)>kwvA!YJ-adaCDm#jXZvjtv8C{);ks=J`n^c_1Wf!UQ z?1uwT@6UeGTE`2H!#ZTW3t(W`lGB<7T^GQa1V1@B`5&ee(_wSoo`5h-eO;X2BqN+? z1}CzxuiVQbF2jx%Tl6+35`d+#_mmk&YkTCinqTM#r^Wj_EQH^21e+Vle(KNUC%1sO z#x!C6JBY8(8e!o29nJb}lBGrl`-OR)mkg2g%TqVZspMYj3?6?DZ)>F?>-z>|-cg_D zQCi2>H4{Q3oQTM<;yPml#N$uws1-R$&fHKqTY5Q%-XZD~LxwlK6ZAVFR|<1fhF!S= zx*KWj5C%VP!JO}v&uDc$*(E>MO`RgmeC^413~b@+!`-BD?h`7V>BxA8iJ7TKkJ6dF z5|xxoH(!(7`&zXZ0xsZXcW{K{7aN+qY>0y01G$b-%%Wg|k6c^y%2y}=R|%Z%16^4w zmd&>OE;IW)Jn+DogI#Z8k2{z5GnNCTydQ1cD!>C=v!>7=UufZ%)yKAaoUqaW@&_

(-Q+r09=aJejs#5NL)_HcTD?xiI? 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 编写: - 原文: + +待认领进行编写,有意向的小伙伴,可以直接修改对应的markdown文件,进行提交! diff --git a/security/device-management-policy.md b/security/device-management-policy.md new file mode 100755 index 000000000..478a4e44b --- /dev/null +++ b/security/device-management-policy.md @@ -0,0 +1,139 @@ +# 使用设备管理策略增强安全性 + +> 编写:[craftsmanBai](https://github.com/craftsmanBai) - - 原文: + +Android 2.2(API Level 8)之后,Android平台通过设备管理API提供系统级的设备管理能力。 + +在这一小节中,你将学到如何通过使用设备管理策略创建安全敏感的应用程序。比如某应用可被配置为:在给用户显示受保护的内容之前,确保已设置一个足够强度的锁屏密码。 + +## 定义并声明你的策略 + +首先,你需要定义多种在功能层面提供支持的策略。这些策略可以包括屏幕锁密码强度、密码过期时间以及加密等等方面。 + +你须在res/xml/device_admin.xml中声明选择的策略集,它将被应用强制实行。在Android manifest也需要引用声明的策略集。 + +每个声明的策略对应[DevicePolicyManager](http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html)中一些相关设备的策略方法(例如定义最小密码长度或最少大写字母字符数)。如果一个应用尝试调用XML中没有对应策略的方法,程序在会运行时抛出一个[SecurityException](http://developer.android.com/reference/java/lang/SecurityException.html)异常。 + +如果应用程序试图管理其他策略,那么强制锁force-lock之类的其他权限就会发挥作用。正如你将看到的,作为设备管理权限激活过程的一部分,声明策略的列表会在系统屏幕上显示给用户。 +如下代码片段在res/xml/device_admin.xml中声明了密码限制策略: + +```xml + + + + + +``` +在Android manifest引用XML策略声明: + +```xml + + + + + + +``` + +## 创建一个设备管理接受端 + +创建一个设备管理广播接收端(broadcast receiver),可以接收到与你声明的策略有关的事件通知。也可以对应用程序有选择地重写回调函数。 + +在同样的应用程序(Device Admin)中,当设备管理(device administrator)权限被用户设为禁用时,已配置好的策略就会从共享偏好设置(shared preference)中擦除。 + +你应该考虑实现与你的应用业务逻辑相关的策略。例如,你的应用可以采取一些措施来降低安全风险,如:删除设备上的敏感数据,禁用远程同步,对管理员的通知提醒等等。 + +为了让广播接收端能够正常工作,请务必在Android manifest中注册下面代码片段所示内容。 + +```xml + + + + + + +``` + +## 激活设备管理器 + +在执行任何策略之前,用户需要手动将程序激活为具有设备管理权限,下面的程序片段显示了如何触发设置框以便让用户为你的程序激活权限。 + +通过指定[EXTRA_ADD_EXPLANATION](http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#EXTRA_ADD_EXPLANATION)给出明确的说明信息,以告知用户为应用程序激活设备管理权限的好处。 + +```java +if (!mPolicy.isAdminActive()) { + + Intent activateDeviceAdminIntent = + new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); + + activateDeviceAdminIntent.putExtra( + DevicePolicyManager.EXTRA_DEVICE_ADMIN, + mPolicy.getPolicyAdmin()); + + // It is good practice to include the optional explanation text to + // explain to user why the application is requesting to be a device + // administrator. The system will display this message on the activation + // screen. + activateDeviceAdminIntent.putExtra( + DevicePolicyManager.EXTRA_ADD_EXPLANATION, + getResources().getString(R.string.device_admin_activation_message)); + + startActivityForResult(activateDeviceAdminIntent, + REQ_ACTIVATE_DEVICE_ADMIN); +} +``` + +![](device-mgmt-activate-device-admin.png) + +如果用户选择"Activate",程序就会获取设备管理员权限并可以开始配置和执行策略。 +当然,程序也需要做好处理用户选择放弃激活的准备,比如用户点击了“取消”按钮,返回键或者HOME键的情况。因此,如果有必要的话,策略设置中的*[onResume()](http://developer.android.com/reference/android/app/Activity.html#onResume())*方法需要加入重新评估的逻辑判断代码,以便将设备管理激活选项展示给用户。 + +## 实施设备策略控制 + +在设备管理权限成功激活后,程序就会根据请求的策略来配置设备策略管理器。要牢记,新策略会被添加到每个版本的Android中。所以你需要在程序中做好平台版本的检测,以便新策略能被老版本平台很好的支持。例如,“密码中含有的最少大写字符数”这个安全策略只有在高于API Level 11(Honeycomb)的平台才被支持,以下代码则演示了如何在运行时检查版本: + +```java +DevicePolicyManager mDPM = (DevicePolicyManager) + context.getSystemService(Context.DEVICE_POLICY_SERVICE); +ComponentName mPolicyAdmin = new ComponentName(context, PolicyAdmin.class); +... +mDPM.setPasswordQuality(mPolicyAdmin, PASSWORD_QUALITY_VALUES[mPasswordQuality]); +mDPM.setPasswordMinimumLength(mPolicyAdmin, mPasswordLength); +if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mDPM.setPasswordMinimumUpperCase(mPolicyAdmin, mPasswordMinUpperCase); +} +``` + +这样程序就可以执行策略了。当程序无法访问正确的锁屏密码的时候,通过设备策略管理器(Device Policy Manager)API可以判断当前密码是否适用于请求的策略。如果当前锁屏密码满足策略,设备管理API不会采取纠正措施。明确地启动设置程序中的系统密码更改界面是应用程序的责任。例如: + +```java +if (!mDPM.isActivePasswordSufficient()) { + ... + // Triggers password change screen in Settings. + Intent intent = + new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD); + startActivity(intent); +} +``` + +一般来说,用户可以从可用的锁屏机制中任选一个,例如“无”、“图案”、“PIN码”(数字)或密码(字母数字)。当一个密码策略配置好后,那些比已定义密码策略弱的密码会被禁用。比如,如果配置了密码级别为“Numeric”,那么用户只可以选择PIN码(数字)或者密码(字母数字)。 + +一旦设备通过设置适当的锁屏密码处于被保护的状态,应用程序便允许访问受保护的内容。 + +```java +if (!mDPM.isAdminActive(..)) { + // Activates device administrator. + ... +} else if (!mDPM.isActivePasswordSufficient()) { + // Launches password set-up screen in Settings. + ... +} else { + // Grants access to secure content. + ... + startActivity(new Intent(context, SecureActivity.class)); +} +``` diff --git a/security/device-mgmt-activate-device-admin.png b/security/device-mgmt-activate-device-admin.png new file mode 100755 index 0000000000000000000000000000000000000000..1be1831e39c1a1b1be608e17b090cdd76f4f2393 GIT binary patch literal 42791 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 em-eimfBNgr%B{UW&h(AyO|O6e literal 0 HcmV?d00001 diff --git a/security/enterprise/device-management-policy.md b/security/enterprise/device-management-policy.md index bbfefecec..478a4e44b 100644 --- a/security/enterprise/device-management-policy.md +++ b/security/enterprise/device-management-policy.md @@ -1,23 +1,23 @@ -# 使用设备管理条例增强安全性 +# 使用设备管理策略增强安全性 > 编写:[craftsmanBai](https://github.com/craftsmanBai) - - 原文: +Android 2.2(API Level 8)之后,Android平台通过设备管理API提供系统级的设备管理能力。 -在Android 2.2(API Level 8)之后,Android平台通过设备管理API提供了系统级的设备管理能力。 +在这一小节中,你将学到如何通过使用设备管理策略创建安全敏感的应用程序。比如某应用可被配置为:在给用户显示受保护的内容之前,确保已设置一个足够强度的锁屏密码。 -在这一课中,你将学到如何通过使用设备管理策略创建一个对安全敏感的应用程序。比如某应用可被配置为:在给用户显示受保护的内容之前,确保已设置一个足够强度的锁屏密码。 - -## 定义声明你的策略 +## 定义并声明你的策略 首先,你需要定义多种在功能层面提供支持的策略。这些策略可以包括屏幕锁密码强度、密码过期时间以及加密等等方面。 你须在res/xml/device_admin.xml中声明选择的策略集,它将被应用强制实行。在Android manifest也需要引用声明的策略集。 -每个声明的策略对应[DevicePolicyManager](http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html)中一些相关设备的策略方法(例如定义最小密码长度或最少大写字母字符数)。如果一个应用尝试调用在XML中没有对应策略的方法,程序在运行时便会抛出一个[SecurityException](http://developer.android.com/reference/java/lang/SecurityException.html)异常。 + +每个声明的策略对应[DevicePolicyManager](http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html)中一些相关设备的策略方法(例如定义最小密码长度或最少大写字母字符数)。如果一个应用尝试调用XML中没有对应策略的方法,程序在会运行时抛出一个[SecurityException](http://developer.android.com/reference/java/lang/SecurityException.html)异常。 如果应用程序试图管理其他策略,那么强制锁force-lock之类的其他权限就会发挥作用。正如你将看到的,作为设备管理权限激活过程的一部分,声明策略的列表会在系统屏幕上显示给用户。 如下代码片段在res/xml/device_admin.xml中声明了密码限制策略: -``` +```xml @@ -26,7 +26,7 @@ ``` 在Android manifest引用XML策略声明: -``` +```xml = Build.VERSION_CODES.HONEYCOMB) { } ``` -这样程序就可以执行策略了。当程序无法访问使用的正确的锁屏密码的时候,通过设备策略管理器(Device Policy Manager)API可以判断当前密码是否适用于请求的策略。如果当前锁屏密码满足策略,设备管理API不会采取纠正措施。明确地启动设置程序中的系统密码更改界面是应用程序的责任。例如: +这样程序就可以执行策略了。当程序无法访问正确的锁屏密码的时候,通过设备策略管理器(Device Policy Manager)API可以判断当前密码是否适用于请求的策略。如果当前锁屏密码满足策略,设备管理API不会采取纠正措施。明确地启动设置程序中的系统密码更改界面是应用程序的责任。例如: -``` +```java if (!mDPM.isActivePasswordSufficient()) { ... // Triggers password change screen in Settings. @@ -121,10 +120,11 @@ if (!mDPM.isActivePasswordSufficient()) { } ``` -一般来说,用户可以从可用的锁屏机制中任选一个,例如“无”、“图案”、“PIN码”(数字)或密码(字母数字)。当一个密码策略配置好后,那些比已定义密码策略弱的密码会被禁用。比如,如果配置了密码级别为“数字”,那么用户只可以选择PIN码(数字)或者密码(字母数字)。 -一旦设备通过设置适当的锁屏密码并保护好后,应用程序便被允许访问受保护的内容。 +一般来说,用户可以从可用的锁屏机制中任选一个,例如“无”、“图案”、“PIN码”(数字)或密码(字母数字)。当一个密码策略配置好后,那些比已定义密码策略弱的密码会被禁用。比如,如果配置了密码级别为“Numeric”,那么用户只可以选择PIN码(数字)或者密码(字母数字)。 -``` +一旦设备通过设置适当的锁屏密码处于被保护的状态,应用程序便允许访问受保护的内容。 + +```java if (!mDPM.isAdminActive(..)) { // Activates device administrator. ... diff --git a/security/enterprise/index.md b/security/enterprise/index.md deleted file mode 100644 index 12bc8f321..000000000 --- a/security/enterprise/index.md +++ /dev/null @@ -1,13 +0,0 @@ -# 为企业开发 - -> 编写:[craftsmanBai](https://github.com/craftsmanBai) - - 原文:[http://developer.android.com/training/enterprise/index.html](http://developer.android.com/training/enterprise/index.html) - - -在这堂课中,你将会学到API和为企业开发时应用程序的技术。 - -## Lessons - -* [使用设备管理策略加强安全](device-management-policy.html) - - 在这堂课中,你将学会如何学会如何去创建一个通过使用设备管理策略管理内容访问权限的具有安全意识的应用程序。 - diff --git a/security/security-ssl.md b/security/security-ssl.md old mode 100644 new mode 100755 index 2a045ee43..f7529e9e5 --- a/security/security-ssl.md +++ b/security/security-ssl.md @@ -2,22 +2,21 @@ > 编写:[craftsmanBai](https://github.com/craftsmanBai) - - 原文: - SSL,传输层安全([TSL](http://en.wikipedia.org/wiki/Transport_Layer_Security)),是一个常见的用来加密客户端和服务器通信的模块。 -但是应用程序错误地使用SSL可能会导致应用程序的数据在网络中被恶意攻击者拦截。为了帮助你确保这种情况不在你的应用程序中发生,这篇文章突出讲解了使用网络安全协议常见的陷阱和使用[Public-Key Infrastructure(PKI)](http://en.wikipedia.org/wiki/Public-key_infrastructure)时一些值得关注的问题。 +但是应用程序错误地使用SSL可能会导致应用程序的数据在网络中被恶意攻击者拦截。为了帮助你确保这种情况不在你的应用中发生,这篇文章主要说明使用网络安全协议常见的陷阱和使用[Public-Key Infrastructure(PKI)](http://en.wikipedia.org/wiki/Public-key_infrastructure)时一些值得关注的问题。 ## 概念 -一个典型的SSL使用场景是,服务器配置中包含了一个证书,并且有匹配的公钥和私钥。作为SSL客户端和服务端握手的一部分,服务端通过使用[public-key cryptography(公钥加密算法)](http://en.wikipedia.org/wiki/Public-key_cryptography)进行证书签名来证明它有私钥。 +一个典型的SSL使用场景是,服务器配置中包含了一个证书,有匹配的公钥和私钥。作为SSL客户端和服务端握手的一部分,服务端通过使用[public-key cryptography(公钥加密算法)](http://en.wikipedia.org/wiki/Public-key_cryptography)进行证书签名来证明它有私钥。 -然而,任何人都可以生成他们自己的证书和私钥,因此一次简单的握手不能证明服务端具有匹配证书公钥的私钥。一种解决这个问题的方法是让客户端拥有一套或者更多的可信赖的证书。如果服务端提供的证书不在其中,那么它将不能得到客户端的信任。 +然而,任何人都可以生成他们自己的证书和私钥,因此一次简单的握手不能证明服务端具有匹配证书公钥的私钥。一种解决这个问题的方法是让客户端拥有一套或者更多可信赖的证书。如果服务端提供的证书不在其中,那么它将不能得到客户端的信任。 -这种简单的方法有一些缺陷。服务端应该根据时间升级到强壮的密钥(key rotation),更新证书中的公钥。不幸的是,现在客户端app需要根据服务端配置的变化来进行更新。如果服务端不在应用程序开发者的控制下,问题将变得更加麻烦,比如它是一个第三方网络服务。如果程序需要和任意的服务器进行对话,例如web浏览器或者email应用,这种方法也会带来问题。 +这种简单的方法有一些缺陷。服务端应该根据时间升级到强壮的密钥(key rotation),更新证书中的公钥。不幸的是,现在客户端应用需要根据服务端配置的变化来进行更新。如果服务端不在应用程序开发者的控制下,问题将变得更加麻烦,比如它是一个第三方网络服务。如果程序需要和任意的服务器进行对话,例如web浏览器或者email应用,这种方法也会带来问题。 -为了解决这个问题,服务端通常配置了知名的的发行者证书(称为[Certificate Authorities(CAs)](http://en.wikipedia.org/wiki/Certificate_authority).提供的平台通常包含了一系列知名可信赖的CAs。在Android4.2(Jelly Bean),Android现在包含了超过100CAs在每个发行版中更新。和服务端相似的是,一个CA拥有一个证书和一个私钥。当为一个服务端发布颁发证书的时候,CA用它的私钥为服务端签名。客户端可以通过服务端拥有被已知平台CA签名的证书来确认服务端。 +为了解决这个问题,服务端通常配置了知名的的发行者证书(称为[Certificate Authorities(CAs)](http://en.wikipedia.org/wiki/Certificate_authority).提供的平台通常包含了一系列知名可信赖的CAs。Android4.2(Jelly Bean)包含了超过100CAs并在每个发行版中更新。和服务端相似的是,一个CA拥有一个证书和一个私钥。当为一个服务端发布颁发证书的时候,CA用它的私钥为服务端签名。客户端可以通过服务端拥有被已知平台CA签名的证书来确认服务端。 然而,使用CAs又带来了其他的问题。因为CA为许多服务端证书签名,你仍然需要其他的方法来确保你对话的是你想要的服务器。为了解决这个问题,使用CA签名的的证书通过特殊的名字如 gmail.com 或者带有通配符的域名如 *.google.com 来确认服务端。 -下面这个例子会使这些概念具体化一些。在这个片段中,[openssl](http://www.openssl.org/docs/apps/openssl.html)工具的客户端命令关注Wikipedia服务端证书信息。端口为443因为默认为HTTPS。这条命令将open s_client的输出发送给openssl x509,根据[X.509 standard](http://en.wikipedia.org/wiki/X.509)格式化证书中的内容。特别的是,这条命令需要subject参数,包含服务端名字和issuer来确认CA。 +下面这个例子会使这些概念具体化一些。[openssl](http://www.openssl.org/docs/apps/openssl.html)工具的客户端命令关注Wikipedia服务端证书信息。端口为443,因为默认为HTTPS。这条命令将open s_client的输出发送给openssl x509,根据[X.509 standard](http://en.wikipedia.org/wiki/X.509)格式化证书中的内容。特别的是,这条命令需要subject,包含服务端名字和issuer来确认CA。 ``` $ openssl s_client -connect wikipedia.org:443 | openssl x509 -noout -subject -issuer @@ -25,7 +24,7 @@ subject= /serialNumber=sOrr2rKpMVP70Z6E9BT5reY008SJEdYv/C=US/O=*.wikipedia.org/O issuer= /C=US/O=GeoTrust, Inc./CN=RapidSSL CA ``` -可以看到是RapidSSL CA颁发给匹配*.wikipedia.org服务端的证书。 +可以看到RapidSSL CA颁发给匹配*.wikipedia.org的服务端证书。 ## 一个HTTP的例子 @@ -38,11 +37,11 @@ InputStream in = urlConnection.getInputStream(); copyInputStreamToOutputStream(in, System.out); ``` -是的,它就是这么简单。如果你想要剪裁HTTP的请求,你可以把它投到 [HttpURLConnection](http://developer.android.com/reference/java/net/HttpURLConnection.html).Android关于[HttpURLConnetcion](http://developer.android.com/reference/java/net/HttpURLConnection.html)文档中还有进一步的例子关于怎样去处理请求,响应头,posting的内容,管理cookies,使用代理,抓responses等等。但是就这些确认证书和域名的细节而言,Android框架已经通过API来为你考虑这些细节。下面是其他的需要关注的问题。 +是的,它就是这么简单。如果你想要修改HTTP的请求,你可以把它扔到 [HttpURLConnection](http://developer.android.com/reference/java/net/HttpURLConnection.html).Android关于[HttpURLConnetcion](http://developer.android.com/reference/java/net/HttpURLConnection.html)文档中还有更贴切的例子关于怎样去处理请求、响应头、posting的内容、cookies管理、使用代理、抓responses等等。但是就这些确认证书和域名的细节而言,Android框架已经通过API来为你考虑这些细节。下面是其他需要关注的问题。 ## 服务器普通问题的验证 -假设替代从[getInputStream()](http://developer.android.com/reference/java/net/URLConnection.html#getInputStream())接受内容,它抛出了一个异常: +假设从[getInputStream()](http://developer.android.com/reference/java/net/URLConnection.html#getInputStream()接受内容,会抛出一个异常: ``` javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. @@ -58,21 +57,24 @@ javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorExcepti ``` 这种情况发生的原因包括: + 1.[颁布证书给服务器的CA不是知名的。](http://developer.android.com/training/articles/security-ssl.html#UnknownCa) + 2.[服务器证书不是CA签名的而是自己签名的。](http://developer.android.com/training/articles/security-ssl.html#SelfSigned) + 3.[服务器配置缺失了中间CA](http://developer.android.com/training/articles/security-ssl.html#MissingCa) -下面将会分别讨论当你保持和服务器的安全连接时如何去解决这些问题。 +下面将会分别讨论当你和服务器安全连接时如何去解决这些问题。 ## 无法识别证书机构 -在这种情况中,[SSLHandshakeException](http://developer.android.com/reference/javax/net/ssl/SSLHandshakeException.html)异常产生的原因是你有一个不被系统信任的CA。可能是你的证书来源于新CA而不被安卓信任,也可能是你的app运行版本较老没有CA。更多的时候,一个CA不知名是因为它不是公开的CA,而是政府,公司,教育机构等组织私有的。 +在这种情况中,[SSLHandshakeException](http://developer.android.com/reference/javax/net/ssl/SSLHandshakeException.html)异常产生的原因是你有一个不被系统信任的CA。可能是你的证书来源于新CA而不被安卓信任,也可能是你的应用运行版本较老没有CA。更多的时候,一个CA不知名是因为它不是公开的CA,而是政府,公司,教育机构等组织私有的。 幸运的是,你可以教会[HttpsURLConnection](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html)学会信任特殊的CA。过程可能会让人感到有一些费解,下面这个例子是从[InputStream](http://developer.android.com/reference/java/io/InputStream.html)中获得特殊的CA,使用它去创建一个密钥库,用来创建和初始化[TrustManager](http://developer.android.com/reference/javax/net/ssl/TrustManager.html)。[TrustManager](http://developer.android.com/reference/javax/net/ssl/TrustManager.html)是系统用来验证服务器证书的,这些证书通过使用[TrustManager](http://developer.android.com/reference/javax/net/ssl/TrustManager.html)信任的CA和密钥库中的密钥创建。 -在新的TrustManager中,下面这个例子初始化了一个新的[SSLContext](http://developer.android.com/reference/javax/net/ssl/SSLContext.html),提供了一个[SSLSocketFactory](http://developer.android.com/reference/javax/net/ssl/SSLSocketFactory.html),你可以从[HttpsURLConnection](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html)中覆盖[SSLSocketFactory](http://developer.android.com/reference/javax/net/ssl/SSLSocketFactory.html)。这样连接中会使用你的CA来进行证书验证。 +给定一个新的TrustManager,下面这个例子初始化了一个新的[SSLContext](http://developer.android.com/reference/javax/net/ssl/SSLContext.html),提供了一个[SSLSocketFactory](http://developer.android.com/reference/javax/net/ssl/SSLSocketFactory.html),你可以覆盖来自[HttpsURLConnection](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html)的默认[SSLSocketFactory](http://developer.android.com/reference/javax/net/ssl/SSLSocketFactory.html)。这样连接时会使用你的CA来进行证书验证。 -下面是一个华盛顿的大学的CA使用例子 +下面是一个华盛顿的大学的组织性的CA的使用例子 ``` // Load CAs from an InputStream @@ -112,19 +114,20 @@ InputStream in = urlConnection.getInputStream(); copyInputStreamToOutputStream(in, System.out); ``` -使用一个常用的知道你的CA的TrustManager,系统可以确认你的服务器证书来自于一个可信任的发行者。 +使用一个常用的了解你CA的TrustManager,系统可以确认你的服务器证书来自于一个可信任的发行者。 -注意:许多网站描述了一种简陋的二选一方案是否安装TrustManager。如果这样你最好不要加密通讯过程,因为任何人都可以在公共wifi热点下,使用他们伪装成你的服务器的代理发送你的用户流量,进行DNS欺骗,来攻击你的用户。然后攻击者便可记录用户密码和其他个人资料。这种方式奏效是因为攻击者可以生成一个证书,并且缺少可以验证该证书是否来自受信任的来源的TrustManager。你的app可以同任何人会话。所以不这样做,暂时的也不行。如果你能总是让你的app信任服务器证书的发行者,那么你可以这么做。 +注意:许多网站提供了简陋的二选一方案是否安装TrustManager。如果你这样做还不如不加密通讯过程,因为任何人都可以在公共wifi热点下,使用伪装成你的服务器的代理发送你的用户流量,进行DNS欺骗,来攻击你的用户。然后攻击者便可记录用户密码和其他个人资料。这种方式奏效是因为攻击者可以生成一个证书,并且缺少可以验证该证书是否来自受信任的来源的TrustManager。你的应用可以同任何人会话。所以不这样做,暂时的也不行。如果你能始终让你的应用信任服务器证书的发行者,那么你可以这么做。 ## 自签名服务器证书 第二种[SSLHandshakeException](http://developer.android.com/reference/javax/net/ssl/SSLHandshakeException.html)取决于自签名证书,意味着服务器就是它自己的CA。这同未知证书权威机构类似,因此你同样可以用前面部分中提到的方法。 -你可以创建你自己的TrustManager,这一次直接信任服务器证书。这有之前提到的将你的app直接捆绑证书的所有缺点,但是可以安全的执行。然而,你应该小心确保你的自签名证书拥有合适的强密钥。到2012年,一个2048位65537指数位一年到期的RSA签名是合理的。当轮换密钥时,你应该查看权威机构(比如[NIST](http://www.nist.gov/))的建议([recommendation](http://csrc.nist.gov/groups/ST/key_mgmt/index.html))来了解哪种密钥是合适的。 + +你可以创建你自己的TrustManager,这一次直接信任服务器证书。有之前提到的将你的应用直接捆绑证书的所有缺点,但是可以安全的执行。然而你应该小心确保你的自签名证书拥有合适的强密钥。到2012年,一个2048位65537指数位一年到期的RSA签名是合理的。当轮换密钥时,你应该查看权威机构(比如[NIST](http://www.nist.gov/))的建议([recommendation](http://csrc.nist.gov/groups/ST/key_mgmt/index.html))来了解哪种密钥是合适的。 ## 缺少中间证书颁发机构 -第三种SSLHandshakeException情况的产生于缺少中间CA。大多数公开的CA不直接给服务器签名。相反,他们使用它们主要的机构(简称根认证机构)证书来给中间认证机构签名,他们这样做,因此根认证机构可以离线存储减少危险。然而,操作系统典型的比如安卓只信任直接地根认证机构,在服务器证书(由中间证书颁发机构签名)和证书验证者(只知道根认证机构)之间留下了一个缺口。为了解决这个问题,服务器并不SSL握手的过程中向客户端发送它的证书,而是一系列从服务器到必经的任何中间机构到达根认证机构的证书。 +第三种SSLHandshakeException情况的产生于缺少中间CA。大多数公开的CA不直接给服务器签名。相反,他们使用它们主要的机构(简称根认证机构)证书来给中间认证机构签名,他们这样做,因此根认证机构可以离线存储减少危险。然而,操作系统典型的比如安卓只信任直接地根认证机构,在服务器证书(由中间证书颁发机构签名)和证书验证者(只知道根认证机构)之间留下了一个缺口。为了解决这个问题,服务器并不在SSL握手的过程中只向客户端发送它的证书,而是一系列的从服务器到必经的任何中间机构到达根认证机构的证书。 下面是一个 mail.google.com证书链,以openssls_client命令显示: @@ -139,7 +142,7 @@ Certificate chain --- ``` 这里显示了一台服务器发送了一个Thawte SGC CA为mail.google.com颁发的证书,Thawte SGC CA是一个中间证书颁发机构,Thawte SGC CA的证书由被安卓信任的Verisign CA颁发。 -然而,配置一台服务器不包括中间证书机构是不常见的。例如,一台服务器导致安卓浏览器的错误和app的异常: +然而,配置一台服务器不包括中间证书机构是不常见的。例如,一台服务器导致安卓浏览器的错误和应用的异常: ``` @@ -152,10 +155,11 @@ Certificate chain ``` 更有趣的是,用大所属桌面浏览器访问这台服务器不会导致类似于完全未知CA的或者自签名的服务器证书导致的错误。这是因为大多数桌面浏览器缓存随着时间的推移信任中间证书机构。一旦浏览器访问并且从一个网站了解到的一个中间证书机构,下一次它将不需要中间证书机构包含证书链。 -一些站点故意这样做为的是让二级服务器用来提供资源服务。比如,他们可能会让他们的主HTML页面用一台拥有全部证书链的服务器来提供,但是像图片,CSS,或者JavaScript等这样的资源用不包含CA的服务器来提供,以此节省带宽。不幸的是,有时这些服务器可能会提供一个在app中呼叫的web服务。 +一些站点故意这样做目的是让二级服务器用来提供资源服务。比如,他们可能会让他们的主HTML页面用一台拥有全部证书链的服务器来提供,但是像图片,CSS,或者JavaScript等这样的资源用不包含CA的服务器来提供,以此节省带宽。不幸的是,有时这些服务器可能会提供一个在应用中调用的web服务。 这里有两种解决这些问题的方法: * 配置服务器使它包含服务器链中的中间证书颁发机构 + * 或者,像对待不知名的CA一样对待中间CA,并且创建一个TrustManager来直接信任它,就像在前两节中做的那样。 @@ -176,14 +180,14 @@ java.io.IOException: Hostname 'example.com' was not verified ``` 服务器配置错误可能会导致这种情况发生。服务器配置了一个证书,这个证书没有匹配的你想连接的服务器的subject或者命名空间中二选一的subject。一个证书被许多不同的服务器使用是可能的。比如,使用 [openssl](http://www.openssl.org/docs/apps/openssl.html) s_client -connect google.com:443 |openssl x509 -text 查看google证书,你可以看到一个subject支持 *google.con *.youtube.com, *.android.com或者其他的。这种错误只会发生在你在连接的服务器名称没有被证书列为可接受。 -不幸的是另外一种原因也会导致这种情况发生:[虚拟化服务](http://en.wikipedia.org/wiki/Virtual_hosting))。当用HTTP同拥有一个以上主机名的服务器共享时,web服务器可以从 HTTP/1.1请求分别出客户端需要的目标主机名。不行的是,使用HTTPS会使情况变得复杂,因为服务器必须知道在发现HTTP请求前返回哪一个证书。为了解决这个问题,新版本的SSL,特别是TLSV.1.0和之后的版本,支持[服务器名指示(SNI)](http://en.wikipedia.org/wiki/Server_Name_Indication),允许SSL客户端为服务端指定目标主机名,从而返回正确的证书。 -幸运的是,从安卓2.3开始,[HttpsURLConnection](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html)支持SNI。不幸的是,Apache HTTP客户端不这样,这也是我们不鼓励用它的原因之一。如果你需要支持安卓2.2或者更老的版本或者Apache HTTP客户端的一个解决方法是,建立一个可选的虚拟化服务并且使用特别的端口,这样服务端就能够清楚该返回哪一个证书。 +不幸的是另外一种原因也会导致这种情况发生:[虚拟化服务](http://en.wikipedia.org/wiki/Virtual_hosting)。当用HTTP同时拥有一个以上主机名的服务器共享时,web服务器可以从 HTTP/1.1请求中找到客户端需要的目标主机名。不行的是,使用HTTPS会使情况变得复杂,因为服务器必须知道在发现HTTP请求前返回哪一个证书。为了解决这个问题,新版本的SSL,特别是TLSV.1.0和之后的版本,支持[服务器名指示(SNI)](http://en.wikipedia.org/wiki/Server_Name_Indication),允许SSL客户端为服务端指定目标主机名,从而返回正确的证书。 +幸运的是,从安卓2.3开始,[HttpsURLConnection](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html)支持SNI。不幸的是,Apache HTTP客户端不这样,这也是我们不鼓励用它的原因之一。如果你需要支持安卓2.2或者更老的版本或者Apache HTTP客户端,一个解决方法是建立一个可选的虚拟化服务并且使用特别的端口,这样服务端就能够清楚该返回哪一个证书。 -用不使用你的虚拟服务的主机名更换[HostnameVerifier](http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html)而不是用服务器默认的来替换,是很重要的选择。 +采用不使用你的虚拟服务的主机名[HostnameVerifier](http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html)而不是服务器默认的来替换,是很重要的选择。 -注意:替换[HostnameVerifier](http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html)可能会非常危险,如果另外一个虚拟服务不在你的控制下,因为中间人攻击可能会直接使流量到达另外一台服务器而超出你的考虑。 -如果你仍然确定你想要覆盖主机名验证,这里有一个为了单[URLConnection](http://developer.android.com/reference/java/net/URLConnection.html)替换验证过程的例子 +注意:替换[HostnameVerifier](http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html)可能会非常危险,如果另外一个虚拟服务不在你的控制下,中间人攻击可能会直接使流量到达另外一台服务器而超出你的预想。 +如果你仍然确定你想覆盖主机名验证,这里有一个为单[URLConnection](http://developer.android.com/reference/java/net/URLConnection.html)替换验证过程的例子 @@ -212,10 +216,10 @@ copyInputStreamToOutputStream(in, System.out); ## 关于直接使用SSL Socket的警告 -到目前为止,这些例子聚焦于使用HttpsURLConnection上。有时一些app需要让SSL和HTTP分开。举个例子,一个email应用可能会使用SSL的变种,SMTP,POP3,IMAP等。在那些例子中,应用程序会想使用[SSLSocket](http://developer.android.com/reference/javax/net/ssl/SSLSocket.html)直接连接,与HttpsURLConnection做的方法相似。 -这种技术到目前为止处理了证书验证问题,也应用于SSLSocket中。事实上,当使用常规的TrustManager时,传递给HttpsURLConnection的是SSLSocketFactory。如果你需要一个带常规的SSLSocket的TrustManager,跟随下面的步骤使用SSLSocketFactory来创建你的SSLSocket。 -注意:SSLSocket不具有主机名验证功能。它取决于它自己的主机名验证,通过传入预期的主机名调用[getDefaultHostNameVerifier()](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html#getDefaultHostnameVerifier())。进一步需要注意的是,当发生错误时,[HostnameVerifier.verify()](http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html#verify(java.lang.String, javax.net.ssl.SSLSession))不知道抛出异常,而是返回一个布尔值,你需要进一步明确的检查。 -下面是一个演示的方法。这个例子演示了当它连接gmail.com 443端口并且没有SNI支持的时候,你将会接收到一个mail.google.com的证书。你需要确保证书的确是mail.google.com的。 +到目前为止,这些例子聚焦于使用HttpsURLConnection上。有时一些应用需要让SSL和HTTP分开。举个例子,一个email应用可能会使用SSL的变种,SMTP,POP3,IMAP等。在那些例子中,应用程序会想使用[SSLSocket](http://developer.android.com/reference/javax/net/ssl/SSLSocket.html)直接连接,与HttpsURLConnection做的方法相似。 +这种技术到目前为止处理了证书验证问题,也应用于SSLSocket中。事实上,当使用常规的TrustManager时,传递给HttpsURLConnection的是SSLSocketFactory。如果你需要一个带常规的SSLSocket的TrustManager,采取下面的步骤使用SSLSocketFactory来创建你的SSLSocket。 +注意:SSLSocket不具有主机名验证功能。它取决于它自己的主机名验证,通过传入预期的主机名调用[getDefaultHostNameVerifier()](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html#getDefaultHostnameVerifier())。进一步需要注意的是,当发生错误时,[HostnameVerifier.verify()](http://developer.android.com/reference/javax/net/ssl/HostnameVerifier.html#verify(java.lang.String, javax.net.ssl.SSLSession)不知道抛出异常,而是返回一个布尔值,你需要进一步明确的检查。 +下面是一个演示的方法。这个例子演示了当它连接gmail.com 443端口并且没有SNI支持的时候,你将会收到一个mail.google.com的证书。你需要确保证书的确是mail.google.com的。 ``` @@ -240,14 +244,30 @@ socket.close(); ``` ## 黑名单 -SSL 主要依靠CA来确认证书来自正确无误服务器和域名的所有者。在较少的情况下,CA被欺骗,或者在[Comodo](http://en.wikipedia.org/wiki/Comodo_Group#Breach_of_security)和[DigiNotar](http://en.wikipedia.org/wiki/DigiNotar)的例子中,一个主机名的证书被颁发给了除了服务器和域名的拥有者之外的人,导致被破坏。 +SSL 主要依靠CA来确认证书来自正确无误服务器和域名的所有者。少数情况下,CA被欺骗,或者在[Comodo](http://en.wikipedia.org/wiki/Comodo_Group#Breach_of_security)和[DigiNotar](http://en.wikipedia.org/wiki/DigiNotar)的例子中,一个主机名的证书被颁发给了除了服务器和域名的拥有者之外的人,导致被破坏。 为了减少这着危险,安卓可以将一些黑名单或者整个CA列入黑名单。尽管名单是以前是嵌入操作系统的,从安卓4.2开始,这个名单在以后的方案中可以远程更新。 ## 阻塞 -一个app可以通过阻塞技术保护它自己免于受虚假证书的欺骗。这是简单运用使用未知的CA的例子,限制app信任的CA的仅来自被app使用的服务器。阻止了来自系统中另外一百多个CA的欺骗而导致的app安全通道的破坏。 +一个应用可以通过阻塞技术保护它自己免于受虚假证书的欺骗。这是简单运用使用未知CA的例子,限制应用信任的CA仅来自被应用使用的服务器。阻止了来自系统中另外一百多个CA的欺骗而导致的应用安全通道的破坏。 ## 客户端验证 -这篇文章聚焦在SSL的使用者安全的同服务器对话上。SSL也支持服务端通过验证客户端的证书来确认客户端的身份。文外,这种技术也与TrustManager的特性相似。可以参考在[HttpsURLConnection](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html)文档中关于创建一个常规的[KeyManager](http://developer.android.com/reference/javax/net/ssl/KeyManager.html)的讨论。 +这篇文章聚焦在SSL的使用者同服务器的安全对话上。SSL也支持服务端通过验证客户端的证书来确认客户端的身份。这种技术也与TrustManager的特性相似。可以参考在[HttpsURLConnection](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html)文档中关于创建一个常规的[KeyManager](http://developer.android.com/reference/javax/net/ssl/KeyManager.html)的讨论。 + + +## nogotofail:网络流量安全测试工具 + +对于已知的TLS/SSL漏洞和错误,nogotofail提供了一个简单的方法来确认你的应用程序是安全的。它是一个自动化的、强大的、用于测试网络的安全问题可扩展性的工具,任何设备的网络流量都可以通过它。 +nogotofail主要应用于三种场景: + +* 发现错误和漏洞。 + +* 验证修补程序和等待回归。 + +* 了解应用程序和设备产生的交通。 + +nogotofail 可以工作在Android,iOS,Linux,Windows,Chrome OS,OSX环境下,事实上任何需要连接到Internet的设备都可以。Android和Linux环境下有简单易用获取通知的客户端配置设置,以及本身可以作为靶机,部署为一个路由器,VPN服务器,或代理。 +你可以在nogotofail开源项目访问该工具。 + diff --git a/security/security-tips.md b/security/security-tips.md old mode 100644 new mode 100755 index 9bebc1a13..1000cc9f1 --- a/security/security-tips.md +++ b/security/security-tips.md @@ -2,231 +2,240 @@ > 编写:[craftsmanBai](https://github.com/craftsmanBai) - - 原文: -Android的安全特性体现在操作系统显著地减少了应用程序的安全问题带来的影响。你可以在默认的系统设置和文件权限设置中建立app,避免了安全带来的一些头疼问题。 -帮助你建立app的一些核心安全特性如下: +Android的安全性体现在系统显著地减少了应用程序安全问题带来的影响。你可以在默认的系统设置和文件权限设置的环境下建立应用,避免了一堆头疼的安全问题。 -* Android应用程序沙盒,将你的app数据和代码执行同其他程序隔开。 -* 鲁棒性实现常见安全功能的应用框架,例如密码学应用,权限控制,安全IPC -* ASLR, NX,ProPolice,safe_iop,OpenBSD dlmalloc,OpenBSD calloc,Linux mmap_min_addr等技术减少了常见内存管理错误。 -* 加密文件系统可以保护丢失的或被盗走的设备的数据。 -* 用户权限控制限制了访问系统详细情况和用户数据。 -* 应用程序权限以单个app为基础控制了应用程序的数据。 +帮助你建立应用的部分核心安全特性如下: -尽管如此,熟悉Android安全特性是很重要的。遵守这些习惯将其作为好的代码风格,将会减少不经意间给用户带来的安全问题。 +* Android应用程序沙盒,将你的应用数据和代码同其他程序隔开。 +* 具有鲁棒性实现了常见安全功能的应用框架,例如密码学应用,权限控制,安全IPC +* 使用ASLR, NX,ProPolice,safe_iop,OpenBSD dlmalloc,OpenBSD calloc,Linux mmap_min_addr等技术,减少了常见内存管理错误。 +* 加密文件系统可以保护丢失或被盗走的设备数据。 +* 用户权限控制限制访问系统详细情况和用户数据。 +* 应用程序权限以单个应用为基础控制其数据。 + +尽管如此,熟悉Android安全特性仍然很重要。遵守这些习惯将其作为优秀的代码风格,能够减少无意间给用户带来的安全问题。 ## 数据存储 +--------------------------------------------------------------- -对于一个Android的应用程序来讲,最为常见的安全问题是存放在设备上的数据能否被其他app获取。在设备上存放保存数据有三种基本的方式: +对于一个Android的应用程序来说,最为常见的安全问题是存放在设备上的数据能否被其他应用获取。在设备上存放数据基本方式有三种: ### 使用内存储器 -默认情况下,你在[内存储器](http://developer.android.com/guide/topics/data/data-storage.html#filesInternal)中创建的文件只有你的app可以访问。这种机制被Android加强了并且对于大多数应用程序都是有效的。 -你应该避免在IPC文件中使用[MODE_WORLD_WRITEABLE](http://developer.android.com/reference/android/content/Context.html#MODE_WORLD_WRITEABLE)或者[MODE_WORLD_READABLE](http://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE)模式,因为它们不对特殊程序提供限制数据访问的功能,它们也不对数据格式提供任何控制。如果你想同其他app的进程共享数据,你可以使用一个[content provider](http://developer.android.com/guide/topics/providers/content-providers.html),它给其他apps提供了可读可写的权限并且可以逐项动态的获取权限。 +默认情况下,你在[内存储器](http://developer.android.com/guide/topics/data/data-storage.html#filesInternal)中创建的文件只有你的应用可以访问。这种机制被Android加强了并且对于大多数应用程序都是有效的。 +你应该避免在IPC文件中使用[MODE_WORLD_WRITEABLE](http://developer.android.com/reference/android/content/Context.html#MODE_WORLD_WRITEABLE)或者[MODE_WORLD_READABLE](http://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE)模式,因为它们不为特殊程序提供限制数据访问的功能,它们也不对数据格式进行任何控制。如果你想与其他应用的进程共享数据,可以使用[content provider](http://developer.android.com/guide/topics/providers/content-providers.html),它给其他应用提供了可读写权限以及逐项动态获取权限。 -如果想对一些敏感数据提供特别的保护,你可以选择使用应用程序无法直接获取的密钥来加密本地文件。例如,密钥可以存放在[密钥库](http://developer.android.com/reference/java/security/KeyStore.html),使用用户密码保护的密钥,而不存储在设备上。尽管这种方式不能在具有root权限时监视用户输入的密码的情况下保护数据,但是它可以提供对没有进行[文件系统加密](http://source.android.com/tech/encryption/index.html)的丢失的设备的保护。 +如果想对敏感数据进行特别保护,你可以使用应用程序无法直接获取的密钥来加密本地文件。例如,密钥可以存放在[密钥库](http://developer.android.com/reference/java/security/KeyStore.html)而非设备上,使用用户密码进行保护。尽管这种方式无法在具有root权限时监视用户输入的密码的情况下保护数据,但是它可以为未进行[文件系统加密](http://source.android.com/tech/encryption/index.html)已丢失的设备提供保护。 ### 使用外部存储器 -建立在[外部存储](http://developer.android.com/guide/topics/data/data-storage.html#filesExternal)的文件,比如sd卡,是全局可读写的。 -因为外部存储可以被用户移除并且可被任何应用修改,应用不应该使用外部存储存储敏感信息。 -当处理从外部存储来的数据时应用应该[执行输入验证](http://developer.android.com/training/articles/security-tips.html#InputValidation)(参看输入验证章节) -我们强烈建议应用在动态加载之前不把可执行或者是class文件存储到外部存储中。 -如果一个应用从外部存储检索可执行文件,在动态加载之前,他们应该被签名和加密验证。 +创建于[外部存储](http://developer.android.com/guide/topics/data/data-storage.html#filesExternal)的文件,比如SD卡,是全局可读写的。 +由于外部存储器可被用户移除并且能够被任何应用修改,因此不应使用外部存储存储应用的敏感信息。 +当处理来自外部存储器的数据时,应用程序应该[执行输入验证](http://developer.android.com/training/articles/security-tips.html#InputValidation)(参看输入验证章节) +我们强烈建议应用在动态加载之前不要把可执行文件或class文件存储到外部存储器中。 +如果一个应用从外部存储器检索可执行文件,那么在动态加载之前它们应该进行签名与加密验证。 -### 使用content providers +### 使用Content Providers -[ContentProviders](http://developer.android.com/guide/topics/providers/content-providers.html)提供一个结构存储机制,可以限制你自己的应用,或者导出给其他应用程序允许访问。 -如果你不打算为其他应用提供访问你的[ContentProvider](http://developer.android.com/reference/android/content/ContentProvider.html)功能,在manifest中标记他们为[android:exported=false](http://developer.android.com/guide/topics/manifest/provider-element.html#exported)即可。 -当建立一个由其他应用为使用而导出的[ContentProvider](http://developer.android.com/reference/android/content/ContentProvider.html),你可以为读写指定一个单一的[许可](http://developer.android.com/guide/topics/manifest/provider-element.html#prmsn),或者在manifest中为读写指定确切的许可。我们强烈建议你把你的许可限制在那些必要的事情上来完成临近的任务。 -记住,通常显示新功能稍后加入许可要比把许可拿开并且打断已经存在的用户要容易。 +[ContentProviders](http://developer.android.com/guide/topics/providers/content-providers.html)提供一个结构存储机制,可以限制你自己的应用或者导出给其他应用程序允许访问。 +如果你不打算为其他应用提供访问你的[ContentProvider](http://developer.android.com/reference/android/content/ContentProvider.html)功能,那么在manifest中标记他们为[android:exported=false](http://developer.android.com/guide/topics/manifest/provider-element.html#exported)即可。 +要建立一个给其他应用使用而导出的[ContentProvider](http://developer.android.com/reference/android/content/ContentProvider.html),你可以为读写操作指定一个单一的[permission](http://developer.android.com/guide/topics/manifest/provider-element.html#prmsn),或者在manifest中为读写操作指定确切的许可。我们强烈建议你限制权限给手头要求完成的任务。 +记住,通常显示新功能稍后加入许可比把许可撤走并打断已经存在的用户更容易。 -如果你正在使用ContentProvider在相同开发者的应用间来分享数据,使用签名级别[android:protectionLevel](http://developer.android.com/guide/topics/manifest/permission-element.html#plevel)的许可是更可取的。 -签名许可不需要用户确认,所以这提供一个更好的用户体验并且更能控制ContentProvider访问。 -ContentProviders也可以通过声明[android:grantUriPermissions](http://developer.android.com/guide/topics/manifest/provider-element.html#gprmsn)元素并且在触发组件的Intent对象中使用[FLAG_GRANT_READ_URI_PERMISSION](http://developer.android.com/reference/android/content/Intent.html#FLAG_GRANT_READ_URI_PERMISSION)和[FLAG_GRANT_WRITE_URI_PERMISSION](http://developer.android.com/reference/android/content/Intent.html#FLAG_GRANT_WRITE_URI_PERMISSION)标志提供更颗粒状的访问。 -这些许可的作用域可以通过[grant-uri-permission](http://developer.android.com/guide/topics/manifest/grant-uri-permission-element.html)元素进一步的限制。 -当访问一个ContentProvider时,使用参数化的查询方法,比如[query()](http://developer.android.com/reference/android/content/ContentProvider.html#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String)), [update()](http://developer.android.com/reference/android/content/ContentProvider.html#update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[])),和[delete()](http://developer.android.com/reference/android/content/ContentProvider.html#delete(android.net.Uri, java.lang.String, java.lang.String[]))来避免来自不被新人的数据潜在的SQL注入。 -注意,如果提交到方法之前的选择是通过连接用户数据建立的,使用参数化的方法是不够的。 -不要对“写”的许可安全有一个错误的观念 -考虑“写”的许可允许sql语句使得一些数据被确认使用创造性的WHERE从句并且分析结果变为可能。 -例如:一个入侵者可能在通话记录中通过修改一条记录来侦察一个存在的特定的电话号码,只要那个电话号码已经存在。 -如果content provider数据有可预见的结构,“写”许可也许与提供了“读写”等效了。 +如果你使用Content Provider仅在自己的应用中共享数据,使用签名级别[android:protectionLevel](http://developer.android.com/guide/topics/manifest/permission-element.html#plevel)的许可是更可取的。 +签名许可不需要用户确认,当应用使用同样的密钥获取数据时,这提供了更好的用户体验,也更好地控制了Content Provider数据的访问。 +Content Providers也可以通过声明[android:grantUriPermissions](http://developer.android.com/guide/topics/manifest/provider-element.html#gprmsn)并在触发组件的Intent对象中使用[FLAG_GRANT_READ_URI_PERMISSION](http://developer.android.com/reference/android/content/Intent.html#FLAG_GRANT_READ_URI_PERMISSION)和[FLAG_GRANT_WRITE_URI_PERMISSION](http://developer.android.com/reference/android/content/Intent.html#FLAG_GRANT_WRITE_URI_PERMISSION)标志提供更细致的访问。 +这些许可的作用域可以通过[grant-uri-permission](http://developer.android.com/guide/topics/manifest/grant-uri-permission-element.html)进一步限制。 +当访问一个ContentProvider时,使用参数化的查询方法,比如[query()](http://developer.android.com/reference/android/content/ContentProvider.html#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String), [update()](http://developer.android.com/reference/android/content/ContentProvider.html#update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]),和[delete()](http://developer.android.com/reference/android/content/ContentProvider.html#delete(android.net.Uri, java.lang.String, java.lang.String[])来避免来自不信任源潜在的SQL注入。 +注意,如果提交方法之前的selection是通过连接用户数据建立的,使用参数化的方法是不够的。 +不要对“写”权限有一个错误的观念。 +考虑“写”权限允许sql语句,使得部分数据使用创造性的WHERE语句并且解析结果变为可能。 +例如:入侵者可能在通话记录中通过修改一条记录来检测某个特定存在的电话号码,只要那个电话号码已经存在。 +如果content provider数据有可预见的结构,提供“写”权限也许等同于同时提供了“读写”权限。 -## 使用权限 +## 使用许可 -因为安卓沙盒使应用程序隔开,程序必须显式地共享资源和数据。为了拥有附加的功能,他们通过声明他们需要的权限,而基本的沙盒不提供这些功能,包括访问设备比如相机的特性。 +因为安卓沙盒将应用程序隔开,程序必须显式地共享资源和数据。它们通过声明他们需要的权限来获取额外的功能,而基本的沙盒不提供这些功能,比如相机访问设备。 ### 请求许可 -我们建议一个应用请求的许可数量最小化,不具有访问敏感的许可可以减少无意中滥用那些许可的风险,可以让用户更能接受,并且使得攻击者对应用减少兴趣。 +我们建议最小化应用请求的许可数量,不具有访问敏感资料的权限可以减少无意中滥用这些权限的风险,可以增加用户接受度,并且减少应用可被攻击者攻击利用。 -如果你的应用有一种可以设计出不需要任何许可的方法,那最好不过。例如:与其请求访问设备信息来建立一个标识,不如建立一个[GUID](http://developer.android.com/reference/java/util/UUID.html)(这个例子也在[Handling User Data](http://developer.android.com/training/articles/security-tips.html#UserData)中有讨论)。 +如果你的应用可以设计成不需要任何许可,那最好不过。例如:与其请求访问设备信息来建立一个标识,不如建立一个[GUID](http://developer.android.com/reference/java/util/UUID.html)(这个例子在[Handling User Data](http://developer.android.com/training/articles/security-tips.html#UserData)中有说明)。 -除了请求许可之外,你的应用可以使用[许可](http://developer.android.com/guide/topics/manifest/permission-element.html)来保护安全敏感的IPC并且会暴露给其他应用:比如[ContentProvider](http://developer.android.com/reference/android/content/ContentProvider.html)。总的来说,我们建议使用访问控制而不是在可能的地方让用户确认许可,因为许可会是用户困惑。例如,考虑在许可上为应用间的IPC通信使用单一开发者提供的[签名保护级别](http://developer.android.com/guide/topics/manifest/permission-element.html#plevel) +除了请求许可之外,你的应用可以使用[permissions](http://developer.android.com/guide/topics/manifest/permission-element.html)来保护可能会暴露给其他应用的安全敏感的IPC:比如[ContentProvider](http://developer.android.com/reference/android/content/ContentProvider.html)。通常来说,我们建议使用访问控制而不是用户权限确认许可,因为许可会使用户感到困惑。例如,考虑在权限设置上为应用间的IPC通信使用单一开发者提供的[签名保护级别](http://developer.android.com/guide/topics/manifest/permission-element.html#plevel) -不要产生许可再次授权,这只有当一个应用通过IPC暴露数据才会发生,因为它有一个指定的许可,但是并不要求它的IPC接口的任何客户端许可。潜在影响的更多细节,和这种问题发生的频率在USENIX: [http://www.cs.be rkeley.edu/~afelt/felt_usenixsec2011.pdf](http://www.cs.berkeley.edu/~afelt/felt_usenixsec2011.pdf)研究论文中都有提供。 +不要泄漏受许可保护的数据。只有当应用通过IPC暴露数据才会发生这种情况,因为它具有特殊权限,却不要求任何客户端的IPC接口有那样的权限。更多细节带来的潜在影响以及这种问题发生的频率在USENIX: [http://www.cs.be rkeley.edu/~afelt/felt_usenixsec2011.pdf](http://www.cs.berkeley.edu/~afelt/felt_usenixsec2011.pdf)研究论文中都有说明。 ### 创建许可 -一般来说,你应该力求建立拥有尽量少许可的应用,直至满足你的安全需要。建立一个新的许可对于大多数应用是相对不常见,因为[系统定义的许可](http://developer.android.com/reference/android/Manifest.permission.html)覆盖很多情况。在适当的地方使用已经存在的许可执行访问检查。 +通常,你应该力求建立拥有尽量少许可的应用,直至满足你的安全需要。建立一个新的许可对于大多数应用相对少见,因为[系统定义的许可](http://developer.android.com/reference/android/Manifest.permission.html)覆盖很多情况。在适当的地方使用已经存在的许可执行访问检查。 -如果你必须建立一个新的许可,考虑是否你能使用[签名许可](http://developer.android.com/guide/topics/manifest/permission-element.html#plevel)完成你的任务。签名许可对用户是透明的并且只允许相同开发者签名的应用访问同应用执行许可检查一样。如果你建立一个[危险的许可](http://developer.android.com/guide/topics/manifest/permission-element.html#plevel),那么用户需要决定是否安装这个应用。这会使其他开发着困惑,也使用户困惑。 +如果必须建立一个新的许可,考虑能否使用[signature protection level](http://developer.android.com/guide/topics/manifest/permission-element.html#plevel)来完成你的任务。签名许可对用户是透明的并且只允许相同开发者签名的应用访问,与应用执行许可检查一样。如果你建立一个[dagerous protction level](http://developer.android.com/guide/topics/manifest/permission-element.html#plevel),那么用户需要决定是否安装这个应用。这会使其他开发者困惑,也使用户困惑。 -如果你建立一个危险的许可,那么会有非常多的复杂情况需要你考虑: +如果你要建立一个危险的许可,则会有多种复杂情况需考虑: -* 许可必须有一个字符串简短的表述给用户他们将要要求做出的安全策略 -* 许可字符必须做很多语言的国际化 -* 用户也许由于对一个许可风险的困惑或者知晓而选择不安装应用 +* 对于用户将要做出的安全决定,许可需要用字符串对其进行简短的表述。 +* 许可字符串必须保证语言的国际化。 +* 用户可能对一个许可感到困惑或者知晓风险而选择不安装应用 +* 当许可的创造未安装的时候,应用可能要求许可。 -上面每一个因素都都应用开发者提出一个重要的非技术的挑战,这也是我们劝阻使用危险许可的原因。 +上面每一个因素都为应用开发者带来了重要的非技术挑战,同时也使用户感到困惑,这也是我们不建议使用危险许可的原因。 ## 使用网络 -网络交易具有很高的安全风险,因为它涉及到传送私人的数据。人们对移动设备的隐私关注日益加深,特别是当设备进行网络交易时,因此app采用最好的方式保护用户诗句是非常重要的。 +网络交易具有很高的安全风险,因为它涉及到传送私人的数据。人们对移动设备的隐私关注日益加深,特别是当设备进行网络交易时,因此应用采取最佳方式保护用户数据安全极为重要。 ### 使用IP网络 -android上面的网络与Linux环境上的差别不是很大。主要考虑的是保证对敏感数据使用适当的协议,比如使用[HTTPS进行网络传输](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html)。我们在任何服务器支持HTTPS的地方更愿意使用HTTPS而不是HTTP,因为移动设备频繁连接不安全的网络,比如公共的WiFi热点。 +android下的网络与Linux环境下的差别并不大。主要考虑的是确保对敏感数据采用了适当的协议,比如使用[HTTPS进行网络传输](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html)。我们在任何支持HTTPS的服务器上更愿意使用HTTPS而不是HTTP,因为移动设备频繁连接不安全的网络,比如公共WiFi热点。 -认证的、加密的socket级别的通信可以使用[SSLSocket](http://developer.android.com/reference/javax/net/ssl/SSLSocket.html)类轻松的实现。根据Android设备使用WiFi连接不安全网络的频率,对于所有应用来说,使用安全网络是强烈被支持的。 +认证加密socket级别的通信可通过使用[SSLSocket](http://developer.android.com/reference/javax/net/ssl/SSLSocket.html)类轻松实现。由于Android设备使用WiFi连接不安全网络的频率,对于所有应用来说,使用安全网络是极力鼓励支持的。 -我们见过一些应用使用[本地网络](http://en.wikipedia.org/wiki/Localhost)端口处理敏感的IPC。我们不鼓励这种方法因为这些接口是可以被设备上的其他应用访问的。取而代之,在可以认证的地方使用一个android IPC机制,例如[Service](http://developer.android.com/reference/android/app/Service.html)(比使用回环还糟的是绑定INADDR_ANY,因为你的应用也许收到任何地方来的请求。我们也已经见识过了)。 +我们发现部分应用使用[localhost](http://en.wikipedia.org/wiki/Localhost)端口处理敏感的IPC。不鼓励这种方法是因为这些接口可被设备上的其他应用访问。相反,你应该在可认证的地方使用android IPC机制,例如[Service](http://developer.android.com/reference/android/app/Service.html)(比使用回环还糟的是绑定INADDR_ANY,因为你的应用可能收到来自任何地方来的请求,我们也已经见识过了)。 -一个有必要重复的常见的议题是,保证你不信任从HTTP或者其他不安全协议下载的数据。这包括在[WebView](http://developer.android.com/reference/android/webkit/WebView.html)中的输入验证和相对于http的任何响应。 +一个有必要重复的常见议题是,确保不信任从HTTP或者其他不安全协议下载的数据。这包括在[WebView](http://developer.android.com/reference/android/webkit/WebView.html)中的输入验证和对于http的任何响应。 ### 使用电话网络 -SMS是Android开发者使用最频繁的电话协议。开发者应该记住这个协议主要是设计为用户与用户之间的交流,它并不适用一些应用的目的。由于SMS的限制,我们强烈建议使用[Google Cloud Messaging](http://developer.android.com/google/gcm/index.html)(GCM)和IP网络发送数据消息给设备。 +SMS协议是Android开发者使用最频繁的电话协议,主要为用户与用户之间的通信设计,但对于想要传送数据的应用来说并不合适。由于SMS的限制性,我们强烈建议使用[Google Cloud Messaging](http://developer.android.com/google/gcm/index.html)(GCM)和IP网络从web服务器发送数据消息给用户设备应用。 -很多开发者没有意识到SMS在网络上或者设备上不是加密的或者牢固验证的。尤其是,任何SMS接收者应该预料到恶意用户也许已经给你的应用发送了SMS:不要指望未验证的SMS数据执行敏感操作。你也应该注意到SMS在网络上也许会遭到冒名顶替并且/或者拦截,在Android设备本身上面,SMS消息是通过广播intent传递的,所以他们也许会被其他拥有[READ_SMS](http://developer.android.com/reference/android/Manifest.permission.html#READ_SMS)许可的应用截获。 +很多开发者没有意识到SMS在网络上或者设备上是不加密的,也没有牢固验证。特别是任何SMS接收者应该预料到恶意用户也许已经给你的应用发送了SMS:不要指望未验证的SMS数据执行敏感操作。你也应该注意到SMS在网络上也许会遭到冒名顶替并且/或者拦截,对于Android设备本身,SMS消息是通过广播intent传递的,所以他们也许会被其他拥有[READ_SMS](http://developer.android.com/reference/android/Manifest.permission.html#READ_SMS)许可的应用截获。 ## 输入验证 -不管应用运行在什么平台上,功能不完善的输入验证是最常见的影响应用安全问题之一。Android有平台级别的对策,用于减少应用的公开输入验证问题,你应该在可能的地方使用这些功能。同样需要注意的是,安全类型语言的选择倾向去减少输入验证问题的可能。我们强烈建议使用Android SDK建立你的应用。 +无论应用运行在什么平台上,功能不完善的输入验证是最常见的影响应用安全问题之一。Android有平台级别的对策,用于减少应用的公开输入验证问题,你应该在可能的地方使用这些功能。同样需要注意的是,选择类型安全的语言能减少输入验证问题。 -如果你使用native代码,那么任何从文件读取的数据,通过网络接收的,或者通过IPC接收的都有可能引入安全问题。最常见的问题是[缓存溢出](http://en.wikipedia.org/wiki/Buffer_overflow),[释放后使用](http://en.wikipedia.org/wiki/Double_free#Use_after_free),和[off-by-one](http://en.wikipedia.org/wiki/Off-by-one_error)错误。Android提供一些技术比如ASLR和DEP减少这些错误的可利用性,但是他们没有解决基本的问题。小心处理指针和管理缓存可以预防这些问题。 +如果你使用native代码,那么任何从文件读取的,通过网络接收的,或者通过IPC接收的数据都有可能引发安全问题。最常见的问题是[buffer overflows](http://en.wikipedia.org/wiki/Buffer_overflow),[use after free](http://en.wikipedia.org/wiki/Double_free#Use_after_free),和[off-by-one](http://en.wikipedia.org/wiki/Off-by-one_error)。Android提供安全机制比如ASLR和DEP以减少这些漏洞的可利用性,但是没有解决基本的问题。小心处理指针和管理缓存可以预防这些问题。 -动态,基于语言的字符串,比如JavaScript和SQL,都常遭受由转义字符和[脚本注入](http://en.wikipedia.org/wiki/Code_injection)带来的输入验证问题。 +动态、基于字符串的语言,比如JavaScript和SQL,都常受到由转义字符和[脚本注入](http://en.wikipedia.org/wiki/Code_injection)带来的输入验证问题。 -如果你使用提交到SQL Database或者Content Provider查询中数据,SQL也许会是个问题。最好的防御是使用参数化的查询,同ContentProviders中讨论的那样。限制权限为只读或者只写可以减少SQL注入潜在危害。 +如果你使用提交到SQL Database或者Content Provider的数据,SQL注入也许是个问题。最好的防御是使用参数化的查询,就像ContentProviders中讨论的那样。限制权限为只读或者只写可以减少SQL注入的潜在危害。 -如果你不能使用上面提到的安全功能,我们强烈建议使用结构严谨的数据格式并且验证符合期望的格式。黑名单策略与替换危险字符是一种有效的策略,这些技术在实践中是易错并且当错误可能发生的时候应该尽量避免。 +如果你不能使用上面提到的安全功能,我们强烈建议使用结构严谨的数据格式并且验证符合期望的格式。黑名单策略与替换危险字符是有效的,但这些技术在实践中是易错的并且当错误可能发生的时候应该尽量避免。 ## 处理用户数据 -一般来说,最好的处理方法是最小化反问敏感或个人数据的API使用。如果你有对数据的访问并且可以避免存储或者传输信息,那就不要存储或者传输数据。最后,考虑如果有一种你的应用逻辑可能被实现为使用hash或者不可逆形式的数据的方法。例如,你的应用也许使用一个email地址的hash作为主键,避免传输或存储email地址,这减少无意暴露数据的机会,并且它也能减少攻击者尝试利用你的应用的机会。 +通常来说,处理用户数据安全最好的方法是最小化获取敏感数据用户个人数据的API使用。如果你对数据进行访问并且可以避免存储或传输,那就不要存储和传输数据。最后,思考是否有一种应用逻辑可能被实现为使用hash或者不可逆形式的数据。例如,你的应用也许使用一个email地址的hash作为主键,避免传输或存储email地址,这减少无意间泄漏数据的机会,并且也能减少攻击者尝试利用你的应用的机会。 -如果你的应用访问私人数据,比如密码或者用户名,记住司法权也许要求你提供一个你使用和存储这些数据的隐私策略的解释。所以采用最小化访问用户数据的安全最佳实践也许也是单纯的顺从。 +如果你的应用访问私人数据,比如密码或者用户名,记住司法也许要求你提供一个使用和存储这些数据的隐私策略的解释。所以遵守最小化访问用户数据最佳的安全实践也许只是简单的服从。 -你也应该考虑你应用是否会疏忽的暴露个人信息给其他方,比如广告第三方组件或者你应用使用的第三方服务。如果你不知道为什么一个组件或者服务请求个人信息,那么就不要提供给它。一般来说说,通过减少你应用中访问个人信息,将会减少这个区域潜在的问题。 +你也应该考虑你应用是否会疏忽暴露个人信息给其他方,比如广告第三方组件或者你应用使用的第三方服务。如果你不知道为什么一个组件或者服务请求个人信息,那么就不要提供给它。通常来说,通过减少应用访问个人信息,会减少这个区域潜在的问题。 -如果必须访问敏感数据,评估这个信息是否必须要传到服务器,或者是否可以被客户端操作。考虑客户端上使用敏感数据运行的任何代码避免传输用户数据 -保证你不会无意中通过过渡自由的IPC,world writable文件,或者网络socket暴露用户数据给其他设备上的应用。这是一个再次授权的特别的例子,在[请求权限](http://developer.android.com/training/articles/security-tips.html#RequestingPermissions)章节中讨论。 +如果必须访问敏感数据,评估这个信息是否必须要传到服务器,或者是否可以被客户端操作。考虑客户端上使用敏感数据运行的任何代码,避免传输用户数据 +确保不会无意间通过过渡自由的IPC、world writable文件、或网络socket暴露用户数据给其他设备上的应用。这里有一个泄漏权限保护数据的特别例子,在[Requesting Permissions](http://developer.android.com/training/articles/security-tips.html#RequestingPermissions)章节中讨论。 -如果请求全球唯一标识符,建立一个大的,唯一的数字并保存它。不要使用电话标识,比如与个人信息相关的电话号码或者IMEI。这个话题在[Android Developer Blog](http://android-developers.blogspot.com/2011/03/identifying-app-installations.html)中有更详细的讨论,应用开发这应该谨慎的把log写到机器上。 +如果需要GUID,建立一个大的、唯一的数字并保存它。不要使用电话标识,比如与个人信息相关的电话号码或者IMEI。这个话题在[Android Developer Blog](http://android-developers.blogspot.com/2011/03/identifying-app-installations.html)中有更详细的讨论。 -在Android中,log是共享资源,一个带有[READ_LOGS](http://developer.android.com/reference/android/Manifest.permission.html#READ_LOGS)许可的应用可以访问。即使电话log数据是临时的并且在重启之后会擦除,不恰当的记录用户信息也会无意的泄漏用户数据给其他应用。 +应用开发者应谨慎的把log写到机器上。在Android中,log是共享资源,一个带有[READ_LOGS](http://developer.android.com/reference/android/Manifest.permission.html#READ_LOGS)许可的应用可以访问。即使电话log数据是临时的并且在重启之后会擦除,不恰当地记录用户信息会无意间泄漏用户数据给其他应用。 ## 使用WebView -因为[WebView](http://developer.android.com/reference/android/webkit/WebView.html)能包含HTML和JavaScript浏览网络内容,不恰当的使用会引入常见的web安全问题,比如[跨站脚本攻击](http://en.wikipedia.org/wiki/Cross_site_scripting)(JavaScript注入)。Android包含一些机制通过限制WebView的能力到你应用请求的功能最小化来减少这些潜在问题的范围。 +因为[WebView](http://developer.android.com/reference/android/webkit/WebView.html)能包含HTML和JavaScript浏览网络内容,不恰当的使用会引入常见的web安全问题,比如[跨站脚本攻击](http://en.wikipedia.org/wiki/Cross_site_scripting)(JavaScript注入)。Android采取一些机制通过限制WebView的能力到应用请求功能最小化来减少这些潜在的问题。 -如果你的应用没有在WebView内直接使用JavaScript,不要调用[setJavaScriptEnabled()](http://developer.android.com/reference/android/webkit/WebSettings.html#setJavaScriptEnabled(boolean))。我们见过这个方法在简单的代码中执行,也许会导致在产品应用中改变用途:所以如果必要的化移除它。默认的,WebView不执行JavaScript,所以跨站脚本攻击不可能产生。 +如果你的应用没有在WebView内直接使用JavaScript,不要调用[setJavaScriptEnabled()](http://developer.android.com/reference/android/webkit/WebSettings.html#setJavaScriptEnabled(boolean)。某些样本代码使用这种方法,可能会导致在产品应用中改变用途:所以如果不需要的话移除它。默认情况下WebView不执行JavaScript,所以跨站脚本攻击不会产生。 -使用[addJavaScriptInterface()](http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String))要特别的小心,因为它允许JavaScript执行通常保留给Android应用的操作。只把addJavaScriptInterface()暴露给可靠的输入源。如果不受信任的输入是被允许的,不受信任的JavaScript也许会执行Android方法。总的来说,我们建议只把addJavaScriptInterface()暴露给你应用apk内包含的JavaScript。 +使用[addJavaScriptInterface()](http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String)要特别的小心,因为它允许JavaScript执行通常保留给Android应用的操作。只把[addJavaScriptInterface()](http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String)暴露给可靠的输入源。如果不受信任的输入是被允许的,不受信任的JavaScript也许会执行Android方法。总得来说,我们建议只把[addJavaScriptInterface()](http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String)暴露给你应用内包含的JavaScript。 -如果你的应用通过WebView访问敏感数据,你也许想要使用[clearCache()](http://developer.android.com/reference/android/webkit/WebView.html#clearCache(boolean))方法来删除任何存储到本地的文件。服务端的header,比如no-cache,能用于指示应用不应该缓存特定的内容。 +如果你的应用通过WebView访问敏感数据,你也许想要使用[clearCache()](http://developer.android.com/reference/android/webkit/WebView.html#clearCache(boolean)方法来删除任何存储到本地的文件。服务端的header,比如no-cache,能用于指示应用不应该缓存特定的内容。 ### 处理证书 -一般来说,我们建议请求用户证书频率最小化:使得钓鱼攻击更明显,并且降低其成功的可能。取而代之使用授权令牌然后刷新它。 +通常来说,我们建议请求用户证书频率最小化--使得钓鱼攻击更明显,并且降低其成功的可能。取而代之使用授权令牌然后刷新它。 -可能的情况下,用户名和密码不应该存储到设备上,取而代之,使用用户提供的用户名和密码执行初始认证,然后使用一个短暂的,特定服务的授权令牌。可以被多个应用访问的service应该使用[AccountManager](http://developer.android.com/reference/android/accounts/AccountManager.htmls)访问。 +可能的情况下,用户名和密码不应该存储到设备上,而使用用户提供的用户名和密码执行初始认证,然后使用一个短暂的、特定服务的授权令牌。可以被多个应用访问的service应该使用[AccountManager](http://developer.android.com/reference/android/accounts/AccountManager.htmls)访问。 如果可能的话,使用AccountManager类来执行基于云的服务并且不把密码存储到设备上。 使用AccountManager获取[Account](http://developer.android.com/reference/android/accounts/Account.html)之后,进入任何证书前检查[CREATOR](http://developer.android.com/reference/android/accounts/Account.html#CREATOR),这样你就不会因为疏忽而把证书传递给错误的应用。 -如果证书只是用于你建立的应用,那么你能使用[checkSignature()](http://developer.android.com/reference/android/content/pm/PackageManager.html#checkSignatures(int, int))验证访问AccountManager的应用。另一种选择,如果一个应用要使用证书,你可以使用一个[KeyStore](http://developer.android.com/reference/java/security/KeyStore.html)来储存。 +如果证书只是用于你创建的应用,那么你能使用[checkSignature()](http://developer.android.com/reference/android/content/pm/PackageManager.html#checkSignatures(int, int)验证访问AccountManager的应用。或者,如果一个应用要使用证书,你可以使用[KeyStore](http://developer.android.com/reference/java/security/KeyStore.html)来储存。 ## 使用密码学 -除了提供数据隔离之外,支持完整的文件系统加密,并且提供安全交流通道。Android提供大量加密算法来保护数据。 +除了采取数据隔离之外,支持完整的文件系统加密,并且提供安全交流通道。Android提供大量加密算法来保护数据。 -一般来说,尝试使用最高级别的以存在framework的实现能支持你的用例,如果你需要安全的从一个已知的位置取回一个文件,一个简单的HTTPS URI也许就足够了,并且这部分不要求任何加密知识。如果你需要一个安全隧道,考虑使用[HttpsURLConnection](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html)或者[SSLSocket](http://developer.android.com/reference/javax/net/ssl/SSLSocket.html),要比使用你自己的协议好。 +通常来说,尝试使用最高级别的已存在framework的实现来支持,如果你需要安全的从一个已知的位置取回一个文件,一个简单的HTTPS URI也许就足够了,并且这部分不要求任何加密知识。如果你需要一个安全隧道,考虑使用[HttpsURLConnection](http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html)或者[SSLSocket](http://developer.android.com/reference/javax/net/ssl/SSLSocket.html)要比使用你自己的协议好。 -如果你发现你的确需要实现你自己的协议,我们强烈建议你不要实现你自己的加密算法。使用已经存在的加密算法,比如[Cipher](http://developer.android.com/reference/javax/crypto/Cipher.html)类中提供的AES或者RSA的实现。 +如果你发现你的确需要实现你自己的协议,我们强烈建议你不要自己实现加密算法。使用已经存在的加密算法,比如[Cipher](http://developer.android.com/reference/javax/crypto/Cipher.html)类中提供的AES或者RSA。 -使用一个安全的随机数生成器([SecureRandom](http://developer.android.com/reference/java/security/SecureRandom.html))来初始化加密的key([KeyGenerator](http://developer.android.com/reference/javax/crypto/KeyGenerator.html))。使用一个不受由安全随机数生成器生成的key严重削弱算法的优点,而且有能允许离线攻击。 +使用一个安全的随机数生成器([SecureRandom](http://developer.android.com/reference/java/security/SecureRandom.html))来初始化加密的key([KeyGenerator](http://developer.android.com/reference/javax/crypto/KeyGenerator.html))。使用一个不安全随机数生成器生成的key严重削弱算法的优点,而且可能遭到离线攻击。 -如果你需要存储一个key来重复使用,使用类似于[KeyStore](http://developer.android.com/reference/java/security/KeyStore.html)的机制,提供一种机制长期储存和检索加密的key。 +如果你需要存储一个key来重复使用,使用类似于[KeyStore](http://developer.android.com/reference/java/security/KeyStore.html)的机制,提供长期储存和检索加密key的功能。 ## 使用进程间通信 一些Android应用试图使用传统的Linux技术实现IPC,比如网络socket和共享文件。我们强烈鼓励使用Android系统IPC功能,比如[Intent](http://developer.android.com/reference/android/content/Intent.html),[Binder](http://developer.android.com/reference/android/os/Binder.html),[Messenger](http://developer.android.com/reference/android/os/Messenger.html)和[BroadcastReceiver](http://developer.android.com/reference/android/content/BroadcastReceiver.html)。Android IPC机制允许你为每一个IPC机制验证连接到你的IPC和设置安全策略的应用的身份。 -很多安全元素通过IPC机制共享。Broadcast Receiver, Activitie,和Service都在应用的manifest中声明。如果你的IPC机制不打算给其他应用使用,设置`android:exported`属性为false。这对由同一个UID内多个进程应用,或者你在开发后期决定不想通过IPC暴露功能但是你又不想重写代码是很有用的。 +很多安全元素通过IPC机制共享。Broadcast Receiver, Activitie,和Service都在应用的manifest中声明。如果你的IPC机制不打算给其他应用使用,设置`android:exported`属性为false。这对于同一个UID内包含多个进程的应用,或者在开发后期决定不想通过IPC暴露功能并且不想重写代码的时候非常有用。 -如果你的IPC打算让别的应用访问,你可以通过使用Permission标记设置一个安全策略。如果IPC是相同开发者应用间的,使用[签名级的许可](http://developer.android.com/guide/topics/manifest/permission-element.html#plevel)更好一些。 +如果你的IPC打算让别的应用访问,你可以通过使用Permission标记设置一个安全策略。如果IPC是使用同一个密钥签名的独立的应用间的,使用[signature](http://developer.android.com/guide/topics/manifest/permission-element.html#plevel)更好一些。 ### 使用意图 -Intent是Android中异步IPC机制的首选。根据你应用的需求,你也许使用[sendBroadcast()](http://developer.android.com/reference/android/content/Context.html#sendBroadcast(android.content.Intent)),[sendOrderedBroadcast()](http://developer.android.com/reference/android/content/Context.html#sendOrderedBroadcast(android.content.Intent, java.lang.String))或者直接的intent来指定一个应用组件。 +Intent是Android中异步IPC机制的首选。根据你应用的需求,你也许使用[sendBroadcast()](http://developer.android.com/reference/android/content/Context.html#sendBroadcast(android.content.Intent),[sendOrderedBroadcast()](http://developer.android.com/reference/android/content/Context.html#sendOrderedBroadcast(android.content.Intent, java.lang.String)或者直接的intent来指定一个应用组件。 注意,有序广播可以被接收者“消费”,所以他们也许不会被发送到所有的应用中。 -如果你打算在必须发送给一个指定的receiver的地方发送一个intent,这个intent必须被直接的发送给这个receiver。 +如果你要发送一个intent给指定的receiver,这个intent必须被直接的发送给这个receiver。 + +intent的发送者能在发送的时候验证接受者是否有一个许可指定了一个non-Null Permission。只有有那个许可的应用才会收到这个intent。如果广播intent内的数据是敏感的,你应该考虑使用许可来保证恶意应用没有恰当的许可无法注册接收那些消息。这种情况下,可以考虑直接执行这个receiver而不是发起一个广播。 -intent的发送者能在发送的时候验证接受者是否有一个许可指定了一个non-Null Permission。只有有那个许可的应用才会收到这个intent。如果在广播intent内的数据是敏感的,你应该考虑使用一个许可来保证恶意应用没有恰当的许可无法注册接收那些消息。那种环境下,你也许也考虑直接执行这个receiver而不是发起一个广播。 +注意:intent过滤器不能作为安全特性--组件可被intent显式调用,可能会没有符合intent过滤器的数据。你应该在intent接收器内执行输入验证,确认对于调用接收者,服务、或活动来说格式正确合理。 ### 使用服务 -[Service](http://developer.android.com/reference/android/app/Service.html)经常被用于为其他应用提供功能供其使用。每一个service类必须在它的包的AndroidManifest.xml中有相应的声明。 +[Service](http://developer.android.com/reference/android/app/Service.html)经常被用于为其他应用提供服务。每个service类必须在它的manifest文件进行相应的声明。 + +默认情况下,Service不能被导出和被其他应用执行。如果你加入了任何intent过滤器到服务蛇呢光明中,那么它默认为可以被导出。最好明确声明[android:exported](http://developer.android.com/guide/topics/manifest/service-element.html#exported)元素来确定它按照你设想的运行。可以使用[android:permission](http://developer.android.com/guide/topics/manifest/service-element.html#prmsn)保护Service。这样做,其他应用在他们自己的manifest文件中将需要声明相应的[](http://developer.android.com/guide/topics/manifest/uses-permission-element.html)元素来启动、停止或者绑定到这个service上。 + +一个Service可以使用许可保护单独的IPC调用,在执行调用前通过调用[checkCallingPermission()](http://developer.android.com/reference/android/content/Context.html#checkCallingPermission(java.lang.String)来实现。我们建议使用manifest中声明的许可,因为那些是不容易监管的。 -默认的,Service被导出并且可以被其他应用执行。可以在manifest文件中的标记使用[android:permission](http://developer.android.com/guide/topics/manifest/service-element.html#prmsn)保护Service。这样做,其他应用在他们自己的manifest文件中将需要声明一个相应的元素来启动,停止或者绑定到这个service上。 +### 使用binder和messenger接口 -一个Service可以保护单独的具有许可的IPC调用它,在执行那个调用的实现之前,通过调用[checkCallingPermission()](http://developer.android.com/reference/android/content/Context.html#checkCallingPermission(java.lang.String))实现保护。我们一般建议使用manifest中声明的许可,因为那些是不容易监管的 +在Android中,[Binders](http://developer.android.com/reference/android/os/Binder.html)和[Messenger](http://developer.android.com/reference/android/os/Messenger.html)是RPC-style IPC的首选机制。必要的话,他们提供一个定义明确的接口,促进彼此的端点认证。 -### 使用binder和AIDL接口 +我们强烈鼓励在一定程度上设计不要求指定许可检查的接口。Binder和[Messenger](http://developer.android.com/reference/android/os/Messenger.html)不在应用的manifest中声明,因此你不能直接在Binder上应用声明的许可。它们在应用的manifest中继承许可声明,[Service](http://developer.android.com/reference/android/app/Service.html)或者[Activity](http://developer.android.com/reference/android/app/Activity.html)内实现了许可。如果你打算创建一个接口,在一个指定binder接口上要求认证和/或者访问控制,这些控制必须在Binder和[Messenger](http://developer.android.com/reference/android/os/Messenger.html)的接口中明确添加代码。 -在Android中,[Binders](http://developer.android.com/reference/android/os/Binder.html)是RPC-style IPC的首选机制。必要的话,他们提供一个定义明确的接口,促进彼此的端点认证。 -我们强烈鼓励在一定程度上设计不要求接口指定许可检查的接口。Binder不在应用的manifest中声明,并且因此你不能直接在Binder上应用声明的许可。Binder继承在应用在manifest中[Service](http://developer.android.com/reference/android/app/Service.html)或者[Activity](http://developer.android.com/reference/android/app/Activity.html)声明的,Service或者Activity内实现了的许可。如果你打算建立一个接口,在一个指定binder接口上要求验证并且(或者)要求访问控制,这些控制必须在接口中清楚的在代码中添加。 +如果提供一个需要访问控制的接口,使用[checkCallingPermission()](http://developer.android.com/reference/android/content/Context.html#checkCallingPermission(java.lang.String)来验证调用者是否拥有必要的许可。由于你的应用的id已经被传递到别的接口,因此代表调用者访问一个Service之前这尤其重要。如果调用一个Service提供的接口,如果你没有对给定的Service访问许可,[bindService()](http://developer.android.com/reference/android/content/Context.html#bindService(android.content.Intent, android.content.ServiceConnection, int)请求也许会失败。如果调用你自己的应用提供的本地接口,使用[clearCallingIdentity()](http://developer.android.com/reference/android/os/Binder.html#clearCallingIdentity()来进行内部安全检查是有用的。 -如果提供一个需要访问控制的接口,使用[checkCallingPermission()](http://developer.android.com/reference/android/content/Context.html#checkCallingPermission(java.lang.String))来验证Binder的主叫者是否拥有必要的许可。因为你的应用的id已经被传递到别的interface,所以代表访问一个Service之前这尤其重要。如果执行一个service提供的接口,如果你没有对给定的service的访问许可,[bindService()](http://developer.android.com/reference/android/content/Context.html#bindService(android.content.Intent, android.content.ServiceConnection, int))请求也许会失败。如果调用一个你自己应用提供的本地的接口,使用[clearCallingIdentity()](http://developer.android.com/reference/android/os/Binder.html#clearCallingIdentity())来消除内部的安全检查也行是有用的。 +更多关于用服务运行IPC的信息,参见[Bound Services](http://developer.android.com/guide/components/bound-services.html) ### 利用广播接收机 [Broadcast receivers](http://developer.android.com/reference/android/content/BroadcastReceiver.html)是用来处理通过[intent](http://developer.android.com/reference/android/content/Intent.html)发起的异步请求。 -默认的,receiver是导出的并且可以被其他任何应用执行。如果你的BroadcastReceiver打算让其他应用使用,你也许想要在应用的manifest文件中使用元素对receiver应用安全许可。这将阻止没有恰当许可的应用发送intent给这个BroadcastReceiver。 +默认情况下,receiver是导出的,并且可以被任何其他应用执行。如果你的[BroadcastReceiver](http://developer.android.com/reference/android/content/BroadcastReceiver.html)打算让其他应用使用,你也许想在应用的manifest文件中使用[](http://developer.android.com/guide/topics/manifest/receiver-element.html)元素对receiver使用安全许可。这将阻止没有恰当许可的应用发送intent给这个[BroadcastReceiver](http://developer.android.com/reference/android/content/BroadcastReceiver.html)。 ## 动态加载代码 -我们强烈不鼓励从应用apk文件外加载代码。这样做显著增加了应用泄漏的可能,取决于代码注入或者代码篡改,也增加了版本管理和应用测试的复杂性。最终,它会使得不可验证一个应用的行为,所以它也许在一些环境下被进制。 +我们极为不鼓励从应用文件外加载代码。由于代码注入或者代码篡改这样做显著增加了应用暴露的可能,同事也增加了版本管理和应用测试的复杂性。最终可能造成无法验证应用的行为,因此在某些环境下应该被限制。 -如果你的应用确实动态加载了代码,最重要的事情是记住运行动态加载的代码与应用apk具有相同的安全许可。用户决定安装你的应用是基于你的id,他们期望你提供任何在应用内运行的代码,包括动态加载的代码与动态加载代码结合的重要的安全风险是代码需要代码需要来自可信资源。 +如果你的应用确实动态加载了代码,最重要的事情是记住运行动态加载的代码与应用具有相同的安全许可。用户决定安装你的应用是基于你的id,他们期望你提供任何运行在应用内部的代码,包括动态加载的代码。 -如果这个模块是之间在你的apk中包含,那么他们不能被其他应用修改,不论代码是本地库或者是使用DexClassLoader加载的类这都是事实。我们见过很多应用实例尝试从不安全的位置加载代码,比如从网络上通过非加密的协议下载或者从world writable位置(比如外部存储)。这些位置会允许网络上的人在传输过程中修改其内容,或者允许用户设备上的另一个应用修改其内容。 +动态加载代码主要的风险在于代码来源于可确认的源头。 +如果这个模块是之间直接包含在你的应用中,那么它们不能被其他应用修改,不论代码是本地库或者是使用[DexClassLoader](http://developer.android.com/reference/dalvik/system/DexClassLoader.html)加载的类这都是事实。我们见过很多应用实例尝试从不安全的地方加载代码,比如从网络上通过非加密的协议或者从world writable位置(比如外部存储)下载数据。这些地方会允许网络上其他人在传输过程中修改其内容,或者允许用户设备上的其他应用修改其内容。 ## 在虚拟机器安全性 -编写运行在虚拟机的安全代码是一个精心研究的话题,很多问题并不特指在Android上。 -相比尝试重新讲解这些话题,我们推荐你熟悉已有的文献。 +Dalvik是安卓的运行时虚拟机(VM).Dalvik是特别为安卓建立的,但许多其他虚拟机相关的安全代码的也适用于安卓。一般来说,你不应该关心与自己有关的虚拟机的安全问题。你的应用程序在一个安全的沙盒环境下运行,所以系统上的其他进程无法访问你的代码或私人数据。 + +如果你想更深入了解虚拟机的安全问题,我们建议您熟悉一些现有文献的主题。推荐两个比较流行的资源: + * [http://www.securingjava.com/toc.html](http://www.securingjava.com/toc.html) * [https://www.owasp.org/index.php/Java_Security_Resources](https://www.owasp.org/index.php/Java_Security_Resources) -这个文档集中于Android专有的并/或者与其他环境不同地方。对于有在其他环境上的VM编程经验开发者,这有这有两个普遍的问题也许对于编写Android应用来说有些不同: +这个文档集中于安卓与其他VM环境不同地方。对于有在其他环境下有VM编程经验开发者来说,这里有两个普遍的问题可能对于编写Android应用来说有些不同: -* 一些虚拟机,比如JVM或者.net,担任一个安全的边界作用,代码与底层操作系统能力相隔离。在Android上,Dalvik VM不是一个安全边界:应用沙箱是在系统级别实现的,所以Dalvik可以在同一个应用与native代码相互操作没有任何约束。 +* 一些虚拟机,比如JVM或者.net,担任一个安全的边界作用,代码与底层操作系统隔离。在Android上,Dalvik VM不是一个安全边界:应用沙箱是在系统级别实现的,所以Dalvik可以在同一个应用与native代码相互操作,没有任何安全约束。 -* 已知的手机上的存储限制,对来发者来说,想要建立模块化应用和使用动态类加载是很常见的。当这么做的时候,要考虑两个资源:一个是你在哪里恢复你的应用逻辑,另一个是你在哪里存储它们。不要从未验证的资源使用动态类加载器,比如不安全的网络资源或者外部存储,因为那些代码可能被修改为包含恶意的行为。 +* 已知的手机上的存储限制,对来发者来说,想要建立模块化应用和使用动态类加载是很常见的。要这么做的时候需要考虑两个资源:一是在哪里恢复你的应用逻辑,二是在哪里存储它们。不要从未验证的资源使用动态类加载器,比如不安全的网络资源或者外部存储,因为那些代码可能被修改为包含恶意行为。 -## 在本地代码的安全 +## 本地代码的安全 一般来说,对于大多数应用开发,我们鼓励开发者使用Android SDK而不是使用[Android NDK](http://developer.android.com/tools/sdk/ndk/index.html) 的native代码。编译native代码的应用更为复杂,移植性差,更容易包含常见的内存崩溃错误,比如缓冲区溢出。 -Android使用Linux内核编译并且与Linux开发相似,如果你打算使用native代码,安全最佳实践尤其有用。这篇文档讨论这些所有的最佳实践实在太短了,但是最受欢迎的资源之一是“Secure Programming for Linux and Unix HOWTO”,在这里可以找到[http://www.dwheeler.com/secure-programs +Android使用Linux内核编译并且与Linux开发相似,如果你打算使用native代码,安全策略尤其有用。这篇文档讨论的最佳策略实在太少了,但最受欢迎的资源之一“Secure Programming for Linux and Unix HOWTO”,在这里可以找到[http://www.dwheeler.com/secure-programs Android](http://www.dwheeler.com/secure-programs)。 -和大多数Linux环境之前的一个重要区别是应用沙箱。在Android中,所有的应用运行在应用沙箱中,包括那些用native代码编写的应用。在最基本的级别中,对于开发者来说,一种考虑它的好的办法与Linux相似,知道每一个应用被分配一个具有非常有限权限的唯一UID。这里讨论的比[Android Security Overview](http://source.android.com/tech/security/index.html)中更细节化,你应该熟悉应用许可,即使你使用的是native代码。 - -下一篇:[使用HTTPS与SSL](security-ssl.html) +与大多数Linux环境的一个重要区别是应用沙箱。在Android中,所有的应用运行在应用沙箱中,包括用native代码编写的应用。在最基本的级别中,与Linux相似,对于开发者来说最好的方式是知道每个应用被分配一个权限非常有限的唯一UID。这里讨论的比[Android Security Overview](http://source.android.com/tech/security/index.html)中更细节化,你应该熟悉应用许可,即使你使用的是native代码。