7、在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务
浅谈Android(安卓)

浅谈Android--嵌入式操作系统Android(读音:[ˈændrɔid],中文俗称安卓)是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google成立的Open Handset Alliance (OHA,开放手持设备联盟)持续领导与开发中。
--题记.维基百科说起嵌入式系统,曾经在保罗大叔的著作《黑客与画家》里看到多次,然后不明所以,就去查了嵌入式系统。
如果说嵌入式系统给我的第一印象是硬件,那么是我还不知道嵌入式在我生活里已经出现了很多年了。
大到冰箱,自动存款机(ATM),小到电子手表,遥控器。
在维基百科解答后,我对嵌入式直观的理解,是一种特定的植入硬件并极具针对性的计算机系统。
后来慢慢了解嵌入式的软件方面,就知道了嵌入式操作系统,而其中的佼佼者,就是如今已经超越ios,占据半壁江山的Android。
之所以会说Android,原因有二:一,因为Android如今炙手可热,在新一季度的日本手机软件营销额上,以Java等语言为Android系统开发的Apps,疯狂揽金,李开复断言在两年内,中国内地手机游戏软件市场,将会百花齐放;二,我虽并非研究Java也非致力于Android系统,但是Android系统的内核,却是我所熟悉的Linux内核。
而我将自己的开发平台转移到Linux系统,并以Python,Perl以及Lisp语言作为未来的生存工具,所以,就让我们谈一谈Android。
题记中套用维基百科对于Android的介绍,主要的目的,就是为了澄清一件事实“认知”——Android并没有真正的中文名。
Google并没有为Android命名,只有为其版本取名,且翻译成中文:4.2.x Jelly Bean 果冻豆,4.0.x Ice Cream Sandwich 冰激凌三明治,3.x.x HoneyComb 蜂巢,2.3.x Ginger Bread 姜饼。
而“安卓”一词,也是我们自己对其中文简称,就像Facebook并没有为其在中国大陆市场取名一样。
Broidmobi CTS 测试全解

Broadmobi CTS 测试全解目录Android 软件兼容性测试简介 (1)CTS简介 (1)CTS在android软件兼容性测试的意义 (2)CTS在终端上的测试详解 (2)CTS 终端需求 (2)CTS组成 (2)摩尔实验室开展Android CTS认证测试服务 (3)1. 终端下载版本以及准备 (4)2. 编译 (6)源码编译 (6)SDK编译 (8)CTS编译 (8)3. USB连接 (9)4. 准备测试 (10)5. 开始测试 (12)6. 调试 (14)7. 测试结果 (15)Android 软件兼容性测试简介Android兼容性测试(CTS)和连带的兼容性定义文档(CDD),是一个确保终端设备与特定版本Android(比如Android2.2,2.3,3.0)兼容的自管理程序。
CTS测试集包含大约24,000个在Android设备上运行的测试用例,这些用例分别针对电话、图形、相机、GPS、触摸屏、无线网等功能。
Google针对每个主要Android版本公布了CDD文档,其中指出了对CTS中每类测试的具体要求。
CTS简介CTS拥有兼容性测试包。
CTS是一个自动化的测试工具,其中包括两个主要的软件组件:CTS测试工具可以运行在您的台式机和管理测试执行。
连接的移动设备或模拟器上执行个别测试案例。
作为JUnit测试,并打包为Android是用Java编写测试用例。
apk文件运行在实际设备上的目标。
手机设备需要通过Android的兼容性测试(CTS),以确保在android上开发的程序在手机设备上都能运行。
你的设备只有满足CDD的规定并且通过CTS,才有可能获得Android的商标和享受Android Market的权限。
这里有可能指的是需要你自己去向google申请的。
CTS在android软件兼容性测试的意义通过CTS测试之后便允许在设备上使用Android商标,它标志着该设备能够良好兼容软件市场中的数十万应用程序。
Android APK反编译得到Java源代码和资源文件

Android APK反编译得到Java源代码和资源文件2011年3月9日iStar发表评论阅读评论这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。
在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。
一.反编译Apk得到Java源代码首先要下载两个工具:dex2jar和JD-GUI,前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
以下是下载地址:dex2jar:/files/dex2jar-0.0.7-SNAPSHOT.zip JD-GUI:/files/jdgui.zip具体步骤:1.首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;2.解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。
在命令行下定位到dex2jar.bat所在目录,运行dex2jar.bat classes.dex生成classes.dex.dex2jar.jar3.运行JD-GUI,打开上面生成的jar包,即可看到源代码了。
二.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件如果是只是汉化软件,这将特别有用。
首先还是下载工具,这次用到的是apktool,下载地址:/p/android-apktool/,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。
具体步骤:1.将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe,apktool.bat,apktool.jar;2.在命令行下定位到apktool.bat文件夹,输入以下命令:apktool d C:\***.apk C:\***文件夹命令行解释:apktool d [要反编译的apk文件 ] [输出文件夹],特别注意:你要反编译的文件一定要放在C盘的根目录里;3.将反编译完的文件重新打包成apk,很简单,输入apktool b c:\***文件夹(你编译出来文件夹)即可。
Android逆向分析工具与方法

1Android分析工具1.1分析工具经过试验,推荐的工具为:模拟器可以使用逍遥安卓;反编译,编译,smali代码注入,APK签名等等可以使用Android Killer;开发IDE可以使用Android Studio;一般的反编译和运行APK可以使用Android Killer + 逍遥安卓,注意连接逍遥安卓模拟器的方法是使用adb connect 127.0.0.1:21503,最好使用逍遥自带的adb工具。
1.APKtoola)直接编译和反编译APK文件;b)到smali语言级别;c)可以解析二进制的AndroidManifest.xml文件2.APKStudio图形界面的apktool;3.APK IDE小米出的apk反编译,打包集成工具,类似ApkStudio;集成了jd-gui,dex2jar等;4.android Killer集成了apktool,dex2jar, jd-gui等工具,同时支持搜索,类方法提取,代码插入等工具;同时支持动态连接android devices,自动编译,签名,安装,运行程序等操作。
易用性上,这几类工具的排名是:AndroidKiller> APK IDE >APKStudio>APKTool.5.JEB反编译工具,商业的,效果据说比开源的要好;6.Dex2jar可以直接把classes.dex转换成Jar包,内部是把Dalvik字节码转换成了Java字节码;7.enjarifygoogle自己出的工具,把dhttps:///google/enjarify/8.jad把某个.class文件转换成源码形式,本质是把Java字节码转换成java源码;9.jd-gui本质上和jad一样,但是是图形界面的,并且可以批量反编译整个Jar包文件;10.androguard包含了许多工具,可以对某个APK文件进行测绘,比如权限信息,函数调用图,指令级别的函数调用图,交互分析环境;11.IDEa)Eclipseb)AndroidStudioc)IDEA12.JDBa)JDK自带的调试JAVA程序的调试器,可以用来调试APK;13.IDA14.Mercury,现在改名叫Drozera)是一个渗透测试工具;15.Androguarda)一堆python脚本工具;b)有一个可以生成函数调用图;1.2分析平台系统1.2.1Santoku本质是一款Ubuntu Linux系统,上面集成了各种Android工具,包括开发,逆向,渗透测试,恶意代码分析等各个安全方向。
CTS测试的相关方法

CTS 认证背景:首先明确Android系统版本,不同版本需要下载对应CTS和CTS Verifier包,详见3.1。
例如东芝L5450C机型,使用RTD2993机芯,基于Android4.2系统。
方案商:Realtek机芯提供商:泰霖本文以RTD2993为例,RTD2993已通过Google CTS认证。
目的:用于CTS认证参考。
包含:CTS测试、合作方式、CTS认证流程等。
目录目录CTS 认证 (1)背景: (1)目的: (1)目录 (2)一合作方式 (3)二测试环境和工具 (4)三CTS测试 (5)3.1 RT2993测试 (5)3.2遇到的问题 (7)3.3失败项和解释 (8)四CTS Verifier测试 (10)4.1 RT2993 测试 (10)4.2 遇到的问题 (10)4.3 失败项和解释 (11)一合作方式方案商(Mstar、MTK、Realtek等)维持系统公版软件CTS状态,ODM和外协厂(泰霖等)确保后续软件更改不影响CTS认证,并负责测试CTS和CTS Verifier,然后出测试报告给客户(东芝、三洋等),最后客户使用对应的软件版本和测试报告到Google获取CTS证书。
在东芝第一次向Google申请CTS认证时期(2星期~4星期),东芝要求不要改动Android 部分,可以更改TV部分。
当第一次获取CTS证书后,每次的升级版本必须再次向google取得认证,时间缩短到一周内。
向Google提交的报告:CTS测试报告(包含自动生成的测试报告和未通过项的解释)CTS Verifier 测试报告在进行CTS认证前,东芝会进行CTS测试项的核对。
如下面文档描述:RTD2993 CDD checksheet with comment_1二测试环境和工具测试电脑:需安装Ubuntu系统(推荐12.04,需安装SDK和Java JDK)。
需要串口线一根、网线一根。
CTS测试工具包和CTS verifier测试apk。
211171336_基于SM2_的云端双方协同签名方案设计与应用

第31卷第1期北京电子科技学院学报2023年3月Vol.31No.1Journal of Beijing Electronic Science and Technology Institute Mar.2023基于SM2的云端双方协同签名方案设计与应用∗许盛伟㊀邓㊀烨㊀田㊀宇北京电子科技学院,北京市㊀100070摘㊀要:针对当前国内对基于国密算法的协同签名方案的相关研究较少,方案的效率和安全性难以达到实际应用需求等问题,本文对基于SM2的协同签名方案进行优化设计和应用㊂通过提出私钥分片方案和移动智能终端私钥安全管理技术,保障了用户私钥安全㊂方案中私钥分别存储在移动智能终端和云端,移动智能终端使用私钥进行数字签名时,需要和云端联合签名服务器协同工作,保证在签名过程中的敏感数据安全性和签名结果的合法性㊂同时本方案结合SM2算法的特点优化实现了云端双方协同签名系统,采用自主设计的预计算技术提高了协同签名效率㊂通过实验验证和性能测试,本方案在安全性方面优于同类且在效率上不受损失,易于成果转化,可以广泛应用于移动办公㊁即时通信和网络音视频会议等应用中㊂关键词:私钥分片;协同签名;移动智能终端;国密算法中图分类号:TN915.08㊀㊀㊀文献标识码:A文章编号:1672-464X (2023)1-01-08∗㊀基金项目:国家重点研发计划(项目编号:2022YFB3104402);中央高校基本科研业务费专项资金资助(项目编号:328202221)∗∗㊀作者简介:许盛伟(1976-),男,教授,博士生导师,研究方向为大数据安全㊁人工智能与密码应用㊂邓㊀烨(1999-),男,硕士研究生,主要研究方向为密码应用(E-mail:dyaipai@)㊂田㊀宇(1998-),男,硕士研究生,主要研究方向为零信任安全㊂引㊀言㊀㊀当前国外的密码研究水平处于前沿位置,并且有较为完善的密码产品和体系,国内的大型企业㊁银行等资本雄厚的机构也青睐于使用外国的密码产品,但在美国的 棱镜门 事件发生后,我们不得不考虑其存在的后门问题,这使得我国网络安全甚至国家安全都受到了严重的威胁㊂上述这些数据和事件不断提醒我们推动国产化信息安全产品的研发和使用,把相关技术掌握在自己手中,努力建立健全密码产品体系及管理体制,亟需推进信息产品㊁密码产品的国产化替代㊂目前国内在对于保障信息安全的手段中起到重要作用的协同签名方案的研究多是基于国外算法如AES 等,基于国密算法的协同签名方案仅有几篇专利和少数论文,在安全性和效率方面都无法适应用户的需求㊂例如‘基于国密算法分片密钥技术的政务移动安全接入研究“[4]一文提出的基于SM9密钥分片的政务方案,虽然有着密钥分片的思想,但是缺乏对私钥安全性保护的方案,不符合密码安全要求,而本方案则提出了终端安全管理技术,通过PIN 码的设计保证了密钥管理的安全性,通过测试验证了本系统的设计思路是可行的㊂另如在‘基于组合密钥的智能电网多源数据安全保护“[5]中,提出了根据不同条件获得分片方案,把一个密钥分成若干个互不相同的子密钥片,然后把这些密钥分片组合生成新的密钥,分配到系统中的不同终端北京电子科技学院学报2023年上,这种方案过程繁琐,效率不高,在实际应用中难以适配,本系统与其相比在安全性得到保证的前提下运行效率有所提高㊂因此,本文基于这些问题与应用需求,在国家政务信息系统和关键基础设施国产化密码应用要求的指导下,对基于国密算法的协同签名方案进行设计和优化,该方案满足了移动智能终端对于协同签名以及一些通用密码服务等方面的安全需求,同时提升了协同签名过程的效率㊂本文提出的基于SM2算法的协同签名方案,主要贡献有三个方面:应用分片密钥技术,根据相关密码模块技术要求,提出了基于门限思想的密钥分片技术,实现移动智能终端和云端的密钥分片存储,使移动智能终端和云端不再存储完整的用户私钥,提高了抵抗同时攻击的能力,解决密钥管理的安全和密码运算的安全问题㊂同时基于密钥分片存储,提出移动智能终端私钥安全管理技术㊂该技术使用PIN码来设计实现,移动智能终端在执行数字签名㊁数据加密等操作时需要与云端联合运算,通过在移动智能终端设置PIN码并在云端验证,能够有效抵抗针对移动智能终端PIN码的离线暴力攻击,提升了安全强度㊂提出基于SM2国密算法的快速协同签名技术,针对国密算法的特点,设计了预计算的处理环节㊂简化了协同签名流程,提高了协同签名效率,且网络资源㊁硬件资源消耗较低,并具备很好的安全性㊂相较于之前的类似方案,本方案在安全性和效率方面皆得到了提高,具有很好的应用前景㊂基于SM2算法的协同签名方案的设计依托于拥有我国自主知识产权的SM2椭圆曲线公钥密码算法,可解决签名安全㊁终端存储密钥安全㊁个人隐私安全㊁数据安全㊁移动办公等安全问题,下一步将对本文成果进行系统集成,为日后的实际应用做好准备,为我国关键信息基础设施的国产化替代作出卓越贡献㊂1㊀相关知识1.1㊀门限法Shamir教授在1979年曾提出基于门限秘密共享的分布式签名[6],门限秘密共享指的是n 个实体分别持有私钥的一部分,当且仅当凑齐超过阈值数量的被分割密钥才可以恢复成完整密钥,从而完成签名或解密的工作㊂这种方法虽然实现了分布式签名,然而一旦私钥被恢复,持有完整私钥的一方就可以在其他实体不知晓的情况下任意使用私钥,造成极大的安全隐患㊂1.2㊀SM2签名算法2010年底,国家密码管理局公布了我国自主研制的 椭圆曲线公钥密码算法 (SM2算法)[7]㊂SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议, SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能㊂SM2签名算法包含了以下四个步骤㊂(1)初始化(Setup):给定安全参数λ,生成椭圆曲线参数params=(p,a,b,P,q)并输出㊂(2)密钥生成(Key):给定参数后,选择随机数xɪZ∗q作为私钥,计算Q=x㊃P作为公钥,输出(Q,x)作为公私钥对㊂(3)签名算法(Sign):给定参数params,私钥x以及消息m,签名者将执行以下步骤:①计算Z=H v(ENTL||IDA||a||b||pk),其中IDA是用户的可辩别标识,ENTL是IDA的长度,计算M=Z||M;②计算e=H v(M);③选择随机数kɪZ∗q,计算椭圆曲线点R =k㊃P=(x1,y1);㊃2㊃第31卷基于SM2的云端双方协同签名方案设计与应用㊀④计算r=x1+e mod q,s=(1+x)-1(k-r㊃x)mod q;⑤输出签名δ=(r,s)㊂(4)验证算法(Ver):给定参数params公钥Q=x㊃P,消息mᶄ以及它的签名δᶄ=(rᶄ,sᶄ),验证算法运行如下:①检验rᶄ,sᶄɪZ∗q是否成立;②设Mᶄ=Z||Mᶄ,计算eᶄ=H v(Mᶄ);③计算t=rᶄ+sᶄ,若t=0则验证不通过;否则计算椭圆曲线点Rᶄ=sᶄˑP+t㊃Q=(x1ᶄ, y1ᶄ),验证rᶄ=eᶄ+x1ᶄmod q是否成立,验证通过则输出1,否则输出0㊂2㊀方案设计及实现方法㊀㊀针对移动智能终端中对于身份认证㊁数字签名等密码应用的需求,本文设计并优化了基于SM2算法的协同签名方案,实现了在移动智能终端可以进行密钥分片的生成和安全存储㊂在本方案中主要是基于SM2算法,采用了密钥分片存储㊁协同签名技术以及终端私钥安全管理技术,同时针对SM2算法的特点对协同签名流程进行优化,实现了签名过程中的敏感数据安全性和签名结果的合法性,同时在签名速度方面得到提高㊂2.1㊀方案设计如图1所示,本方案设计了一个由云端㊁移动智能终端组成的基于SM2的云端双方协同签名方案㊂通过创新性的快速协同签名技术㊁密钥分片技术㊁终端私钥安全管理技术,使得本方案相较于同类方案,在安全性得到大大提升的同时保证了运行效率不受太多损耗㊂方案中的云端负责响应移动智能终端的密钥分片㊁协同签名请求,提供云端公㊁私钥分片生成功能;在密钥分片过程中向移动智能终端发送云端产生的云端公钥分片,同时接收移动智能终端发送的终端公钥分片,与移动智能终端交互完成密钥的分片;在协同签名过程中发送和接收移图1㊀本方案的设计架构图动智能终端发送的协同签名的各种中间值,与移动智能终端交互完成协同签名,接收到用户的ID㊁PIN码及公钥分片后,将向服务器密码设备发出储存申请将用户的ID㊁PIN码及公钥分片储存至服务器密码设备中,在云端需要用户口令㊁密钥数据时临时向服务器密码设备进行申请㊂移动智能终端部分通过app上集成的密码模块即移动智能终端密码模块提供分片密钥生成㊁更新和存储功能㊂其中封装了多种安全接口,支持多种开发语言,提供分片密钥存储和管理功能等㊂它由多个模块组成,包括SM2协同签名模块㊁验签模块㊁SM3杂凑模块㊁SM4加解密模块㊁密钥管理模块和通信模块,上层封装成SM2协同签名㊁验签接口,作为对外部提供的接口㊂其中密钥管理模块又包含密钥的生成㊁更新和存储㊂移动智能终端基于java实现,在安卓系统上运行㊂通过调用GmSSL库函数来完成一系列功能,其中GmSSL是个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密算法㊂云端密码模块则与密钥管理模块相互配合达成包括密钥生成㊁更新和存储等功能(通过调用云端密码设备)㊂密码机设备用于储存用户的PIN码,以及私钥分片㊂设备使用中安网脉基于云端密码设备的软硬件设备㊂㊃3㊃北京电子科技学院学报2023年本系统进行协同签名主要分为两个步骤,即密钥分片和协同签名㊂(1)密钥分片进行密钥分片时,主要调用密钥生成模块生成部分私钥,使用密钥存储模块进行公私钥的存储,在云端会将公私钥存储在云端密码设备中,此外,本系统还利用PIN码对移动智能终端私钥分片进行保护㊂(2)协同签名进行协同签名时,主要调用SM2协同签名模块;移动智能终端和云端的通信模块负责协同签名过程中的参数传递㊂(3)安全的传输协议移动智能终端与云端通信使用HTTPS安全传输协议,以保证用户PIN码㊁签名计算中间值不会泄露,以及预防可能遭到的重放攻击㊂2.2㊀实现方法(1)密钥分片技术密钥分片技术即将私钥分割为两个部分:第一分片子密钥和第二分片子密钥㊂第一分片子密钥存放到移动智能终端,第二分片子密钥则由云端服务器派生生成,两个分片子密钥完成协同签名㊂最后,完成的协同签名在移动智能终端生成,完整签名可以实现数据的不可否认和操作的不可抵赖㊂密钥分片具体流程如图2所示㊂定义p为大素数,Fp为有限域㊂选择a,bɪFp作为椭圆曲线E的参数,定义P为椭圆曲线E上的一点,并且将其作为群G的生成元㊂群G 的阶为q,M为待签名的消息,ENTL为IDT的长度,IDT为签名用户的名字㊂其余未注明变量均为计算的中间变量,pk为联合公钥,pk A为移动智能终端公钥分片,pk B为云端公钥分片,d A为移动智能终端私钥分片㊁d B为云端私钥分片㊂①移动智能终端随机秘密选择私钥分片d A ɪZ q,并计算公钥分片pk A=d AˑP,后将pk A传给云端㊂②云端随机秘密选择私钥分片d BɪZ q,计图2㊀密钥分片流程图算出公钥分片pk B=d BˑP与完整公钥pk= d A d B P-P,即pk=d B pk A-P,并将(pk,d B,pk A)储存至UsbKey中,将pk B传输给移动智能终端㊂③移动智能终端接受到云端的公钥分片后即可计算出公钥pk,pk=d A d B P-P,即pk=d A pk B-P,存储(pk,d A,pk B)㊂④移动智能终端设置PIN码,该PIN码和用户ID及其私钥绑定,并存储在Usbkey中㊂(2)快速协同签名技术移动智能终端密码模块使用第一分片子密钥对消息进行签名后,将部分签名结果s传递给云端服务器,云端服务器使用第二分片子密钥对签名结果变换后生成t并传回给移动智能终端㊂整个协同签名只使用两个报文(1个来回)就完成整个过程,简化了协同签名流程,提高了协同签名效率,网络资源㊁硬件资源消耗较低,也具备很好的安全性㊂协同签名流程如图3所示㊂①移动智能终端输入PIN码,加载密钥分片㊂②移动智能终端和云端进行相互验证,云端通过身份验证后即可向UsbKey申请与用户对应的密钥分片㊂移动智能终端秘密选择k AɪZ∗q,㊃4㊃第31卷基于SM2的云端双方协同签名方案设计与应用㊀图3㊀协同签名流程图并计算R A=k AˑP,RᶄA=k Aˑpk B,并将R A与RᶄA的值传给云端;在云端验证是否满足R A=d BˑRᶄA,若满足,则计算R B=k Bˑpk A,RᶄB=k BˑP,并将R B,RᶄB发送给移动智能终端㊂移动智能终端收到消息后,验证是否满足R B=d AˑRᶄB,若满足,则开始进行签名㊂③移动智能终端使用分片私钥生成部分签名sᶄ计算Rᶄ=R A+R B=(x A,y A),Z A=SM3 (ENTL ID T a b P pk),r=SM3(Z A M) +x A mod q,计算sᶄ=(k A+r)d A-1mod q然后将sᶄ的值发送给云端并请求云端进行协同签名㊂④云端计算t=(sᶄ+k B)d B-1mod q,生成部分签名,然后将t的值发送给移动智能终端㊂⑤移动智能终端计算s=t-r,并输出协同签名(r,s)㊂3㊀性能测试与分析㊀㊀云端测试环境:硬件环境:CPU:Intel Xeon(R)Bronze3106CPU@1.70GHzˑ16RAM:16.0GB软件环境:系统:Ubuntu20.04.3LTS64位测试平台:Qt Creator4.8.0Based on Qt 5.12.0(GCC5.3.1)移动智能终端测试环境:硬件环境:CPU:海思麒麟970处理器RAM:6.0GB软件环境:系统:Android10测试平台:Android studio11测试范围:对该协同签名方案的实际性能进行测试㊂3.1㊀性能测试性能数据如下图所示,程序运行资源消耗较低,资源占比仅维持在百分之十左右㊂图4㊀移动智能终端CPU测试图图5㊀移动智能终端内存测试图表1㊀性能测试数据序号测试项测试项描述值1协同签名速度平均每秒签名速度40次/秒2密钥生成速度平均每秒密钥生成90次/秒3.2㊀性能分析(1)密钥分片密钥分片技术将私钥分成两个部分,分别存㊃5㊃北京电子科技学院学报2023年放在移动智能终端与云端(移动智能终端私钥自己存储,云端私钥放在云端密码设备)㊂经过理论分析,SM2协议与ECMQV协议二者都基于椭圆曲线的计算,两者每次运算大约都需要1.5次标量乘,而经过实际运算,本系统实际测的公私钥生成并分片的效率与理论分析相差不大,大约在100次每秒,总体在可接受范围内㊂(2)协同签名从签名流程图来看,在传统的签名(r,s)中,r生成后s根据r的值随后生成,平均签名速度大约在40次每秒㊂但在本系统中r生成后,会由云端生成中间值t,随后在移动智能终端由r和t的值计算出s,虽然步骤变多,但是极大的提升了整个过程的安全性,并且由于创新性的加入了预计算处理过程,在代码中预先用SM3得到摘要缩短了所需时间㊂相较于市面上其他的联合签名系统,本系统优势明显㊂如罗永安,司亚利,刘文远[11]设计的联合签名需要双方公私钥,更多的初始数据带来了更多的计算过程,因此本方案在性能实现上更加优秀㊂4㊀安全性分析㊀㊀(1)有效防范中间人攻击防范中间人攻击的原则是必须对认证过程的传输者或是认证过程的本身真实性进行认证㊂为确保连接云端的移动智能终端安全,必须对每一用户或与之相连的终端设备进行有效的标识与鉴别,只有通过鉴别的用户才能被赋予相应的权限,进入APP并在规定的权限内操作㊂用户使用终端APP时,需要输入设定的密码才能使用,以保证对使用终端的用户的身份鉴别㊂同时,为防止非法用户能够通过反复输入密码,达到猜测用户密码的目的,本系统限制用户登录过程中连续输入错误密码的次数㊂当用户多次输入错误密码后,移动智能终端会自动锁定该用户或一段时间内禁止该用户登录,从而增加猜测密㊀㊀㊀码难度的目的㊂同时,本系统在移动智能终端APP中加入对设备MAC地址的识别,以保证对移动智能终端设备本身的身份鉴别;此外在用户还需要通过移动智能终端自带的身份识别(例如指纹识别㊁人脸识别等),再次保证使用移动智能终端的用户的身份的合法性㊂(2)有效防止抵赖问题完整的签名由移动智能终端和云端联合生成㊂可以实现数据的不可否认和操作的不可抵赖㊂随时间变化的椭圆曲线初始化参数可以防止重放攻击所导致的抗抵赖问题㊂(3)有效抵抗暴力破解移动智能终端密钥分片使用PIN码保护,但攻击人无法离线通过暴力尝试不同PIN码来恢复私钥分片㊂移动智能终端的保护方案并不报告加载私钥时使用的PIN码是否正确,加载的私钥是否恢复成功,必须请求云端服务器提供信息,方可知道尝试PIN码的正确性㊂云端服务器可以有效确认移动智能终端的签名的合法性,进而确认移动智能终端是否正确地恢复了私钥分片,可以有效锁定在线暴力破解PIN码的行为㊂5㊀结束语㊀㊀本文设计并实现了一个基于SM2算法的协同签名方案㊂该方案创新性地使用密钥分片技术㊁协同签名技术和移动智能终端私钥安全管理技术,可以为移动智能终端应用提供易用㊁安全的增强认证和数据安全保护,实现移动智能终端私钥的安全存储㊂此外,本方案对协议进行创新,通过针对SM2国密算法的特点对签名流程进行重新设计与算法优化,实现快速协同签名技术,通过功能测试和性能测试,与其他同类方案相比,本方案在提高了安全性的同时不损失其性能,且易于成果转化,对推动我国关键信息基础设施国密算法应用起到重要作用㊂㊃6㊃第31卷基于SM2的云端双方协同签名方案设计与应用㊀参考文献[1]㊀The43rd CNNIC China Internet Report.ChinaBroadcasts,2019,04:48(in Chinese). [2]㊀李兆斌,刘丹丹,黄鑫,等.基于国密算法的安全接入设备设计与实现[J].信息网络安全,2016.[3]㊀国家密码管理局.GM/T0009-2012.北京:中国标准出版社,2012:13-14.[4]㊀焦迪.基于国密算法分片密钥技术的政务移动安全接入研究[J].网络安全技术与应用,2020(9):28-30.[5]㊀高建,陈文彬,庞建民,等.基于组合密钥的智能电网多源数据安全保护[J].电信科学,2020,36(1):134-138.[6]㊀Shamir A.How to share a secret[J].Communi-cations of the ACM,1979,22(11):612-613.[7]㊀Chen Li-Quan,Zhu Zheng,Wang Mu-Yang,etal.A Threshold Group Signature Scheme forMobile Internet Application,Chinese Journalof Computers,2018,425(5):86-101(in Chi-nese).[8]㊀国家密码管理局.GM/T0028-2014.北京:中国标准出版社,2014:11-12.[9]㊀Chinese Encryption Administration.GM/T0003-2012SM2Elliptic Curve Public-KeyCryptography Algorithm.Beijing,China,2010.[10]㊀汪朝晖,张振峰.SM2椭圆曲线公钥密码算法综述[J].信息安全研究,2016,2(11):972-982.[11]㊀罗永安,司亚利,刘文远.基于椭圆曲线的联合签名及其在电子现金中的应用[J].华中师范大学学报(自然科学版),2008(3):350-354.[12]㊀苏吟雪,田海博.基于SM2的双方共同签名协议及其应用[J].计算机学报,2020,43(4):701-710.[13]㊀刘培鹤,闫翔宇,何文才,等.基于Android的密钥分存方案[J].计算机应用与软件,2018,35(2):320-324+333.[14]㊀王小云,于红波.SM3密码杂凑算法[J].信息安全研究,2016,2(11):983-994. [15]㊀彭绪富.电子政务中多方联合签名审批系统设计[J].微计算机应用,2008(4):29-32.[16]㊀陈明帅.基于Android的国密SSLVPN终端的研究与实现[D].北京:华北电力大学(北京),2021.[17]㊀施晓芳,赵少卡,王震懿.基于国密算法的Android智能终端SSL协议设计与实现[J].福建师大福清分校学报,2019(2):45-55+64.[18]㊀缪雨润.基于Qt的图形用户界面的研究与实现[D].南京:东南大学,2015.㊃7㊃㊃8㊃北京电子科技学院学报2023年Design and Application of a Cloud Bilateral CollaborativeSignature Scheme Based on SM2∗XU Shengwei㊀DENG Ye㊀TIAN YuBeijing Electronic Science and Technology Institute,Beijing100070,P.R.China Abstract:For the issue that few domestic research on collaborative signature scheme based on state crypto algorithm is available at present and existing schemes hardly satisfy the efficiency and security re-quirements for practical applications,an optimization design and applications of collaborative signature scheme based on SM2are presented in this paper,where a private key sharding scheme and a private key security management technology for the mobile intelligent terminal are proposed to ensure the secur-ity of the users private key.In our scheme,private key is separately stored in the mobile intelligent terminal and the cloud.When the private key is used by the mobile intelligent terminal for the digital signature,the mobile intelligent terminal is required to cooperate with the cloud collaborative signature server to guarantee the security of the sensitive data in the signature process and the legality of the sig-nature result.Meanwhile,combined with the characteristics of the SM2algorithm,an optimal cloud bi-lateral collaborative signature system is implemented,where an independently designed pre-calculation technology is adopted to improve the efficiency of the collaborative signature.Experimental verification and performance tests indicate that our design is superior in security than existing similar designs while keeping the efficiency,and is suitable for commercialization.Our design has a broad application pros-pect in mobile office,instant communication,network audio and video conference,etc. Keywords:private key sharding;collaborative signature;mobile intelligent terminal;state crypto algo-rithm(责任编辑:鞠㊀磊)。
A8平台
A8平台目录机器人的大脑------嵌入式控制器1.嵌入式说到嵌入式很多人对它很模糊,因为它没有一个特别明确的定义。
行业当中也没有十分明确的界定。
但对于嵌入式系统来说用到最多的定义是“嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
”1.1嵌入式系统嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。
通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。
事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。
从应用对象上加以定义,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。
国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
1.2 嵌入式设备嵌入式系统主要由嵌入式处理器、相关支撑硬件和嵌入式软件系统组成,它是集软硬件于一体的可独立工作的“器件”。
嵌入式处理器主要由一个单片机或微控制器 (MCU)组成。
相关支撑硬件包括显示卡、存储介质(ROM和RAM等)、通讯设备、IC卡或信用卡的读取设备等。
嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用闪存(Flash Memory)作为存储介质。
嵌入式软件包括与硬件相关的底层软件、操作系统、图形界面、通讯协议、数据库系统、标准化浏览器和应用软件等。
总体看来,嵌入式系统具有便利灵活、性能价格比高、嵌入性强等特点,可以嵌入到现有任何信息家电和工业控制系统中。
从软件角度来看,嵌入式系统具有不可修改性、系统所需配置要求较低、系统专业性和实时性较强等特点。
MTK-Android软件培训
内容提要
Android编译、调试环境搭建 � MTK Android编译、下载、启动 � Android 软件系统软件架构 � Android软件系统内存分配 � 总结 & Q/A
�
Android编译、调试环境搭建
�
Android编译环境搭建
� �
系统编译环境搭建 MMI应用层开发环境搭建 系统程序调试环境搭建 MMI应用程序调试环境搭建
用平台key来签名应用
�
Android.mk
LOCAL_PATH := $(call my-dir) Include $(CLEAR_VARS) # build all java files in the java subdirectory LOCAL_SRC_FILES :=$(call all-subdir-java-files) LOCAL_PACKAGE_NAME := LocalPackage LOCAL_CERTIFICATE := platform Include $(BUILD_PACKAGE)
�
重新制作uboot,kernel…目标库和临时文件
�
�
生成系统镜像
�
makeMtk用法例子
�
使用android原始函数和子程序,编译 AlarmClock程序包
� � �
$ source build/envsetup.sh $ cd packages/apps/AlarmClock $ TARGET_PRODUCT=ginwave75_gb2 mm
MTK Android编译
�
makeMtk用法
Usage: (makeMtk|mk) [options] project actions [modules] Options: -t, -tee : Print log information on the standard-out. -o, opt=bypass_argument_to_make : Pass extra arguments to make. -h, -help : Print this message and exit Projects: one of available projects. Actions: listp, listproject : List all available projects. check-env : Check if build environment is ready. check-dep : Check feature dependency. n, new : Clean and perform a full build. c, clean : Clean the immediate files(such as, objects, libraries etc.). r, remake : Rebuild(target will be updated if any dependency updats). bm_new : "new" + GNU make's "-k"(keep going when encounter error) feature. bm_remake : "remake" + GNU make's "-k"(keep going when encounter error) feature. mm : Build module through Android native command "mm"
Android教程01-平台概述
WebKit
基于开源WebKit的浏览器 支持CSS、Javascript、DOM、Ajax 基于PacketVideo OpenCORE平台 支持标准音频、视频 轻型数据库,支持多种平台
多媒体框架
SQLite
为多种应用提供2D、3D表面设计
音频处理
硬件虚拟层 User
space C/C++ library layer 硬件接口驱动 使Android平台逻辑与硬件接口分离
应用开发语言:Java Dalvik虚拟机
指令 : Dalvik Excutable 把java代码编译为Dalvik可执行文件(dex format)
Java标准库
核心库提供的Java
Bionic
Libc Function Libraries Native Servers Hardware Abstraction Libraries
C/C++库:被各种Android
组件使用通 过应用程序框架开发者可以使用其功 能包括: 媒体库:MPEG4 H.264 MP3 JPG PNG ..... WebKit/LibWebCore:Web 浏览引擎 SQLite 关系数据库引擎 2D,3D 图形库、引擎
Designed
for embedded environment
Supports multiple virtual machine processes per device Highly CPU-optimized bytecode interpreter Efficiently Using runtime memory
VMware和Ubuntu搭建android开发环境
虚拟机(vmware)安装Ubuntu10.04时间:2010-08-08 22:19来源:未知作者:笨笨狗点击:456次安装ubuntu的方式有很多,如CD安装、usb安装、硬盘安装、wubi安装、虚拟机安装等等。
各有各的特点,分别适合不同的需求。
本站会陆续贴出各个安装方式的终极教程,以备网友不时之需安装ubuntu的方式有很多,如CD安装、usb安装、硬盘安装、wubi安装、虚拟机安装等等。
各有各的特点,分别适合不同的需求。
本站会陆续贴出各个安装方法的终极教程,以备网友不时之需。
文本主要介绍ubuntu的虚拟机安装方法,其中不涉及vmware与ubuntu等等的配置内容。
虚拟机我采用的是VMware Workstation7.1版本,ubuntu是最新的10.04。
首页我们打开vmware,新建一个虚拟机,如下图。
我们选择Typical,点击Next:下面是选择通过什么途径安装,可以选择第二个(Installer disc image file),这个选项会使虚拟机会配置一些东西。
为体验一下完全地ubuntu安装过程,我们选择第三个,这相当于先建一个裸机,然后安装系统:点击Next,选择Linux,Version版本选择Ubuntu,ubuntu是linux一个的一个发行版本:下面这一步是给新建的这个虚拟机起一个名字,然后告诉程序这个虚拟机要保存在什么地方。
例如我给它起名叫‘My_Ubuntu',然后保存在我D盘,OS文件夹下的My_Ubuntu文件夹下:下面这一步是设置新建的虚拟机占用多少空间,可以根据自己的情况修改。
我选择的默认:最后显示虚拟机的一些信息,如下,点击Finish进入下一步:这样我们就新建了一个用来安装Ubuntu的祼机,接下来加载下载的iso文件来安装:首先找到Edit virtual machine settins点击出现一个设置界面,选择CD/DVD(IDE),然后在右边选择Use ISO image file,找到已经下载到本地的ubuntu10.04 iso文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
硬件服务的测试程序 我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务呢?在这一篇文章中,我们将在Android系统的应用层增加一个内置的应用程序,这个内置的应用程序通过ServiceManager接口获取指定的服务,然后通过这个服务来获得硬件服务。
一. 原理 参照在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务一文,在Application Frameworks层定义好自己的硬件服务HelloService,并提供IHelloService接口提供访问服务。
二. 使用Android SDK来开发Android应用程序 为了方便开发,我们可以在IDE环境下使用Android SDK来开发Android应用程序。开发完成后,再把程序源代码移植到Android源代码工程目录中。使用Eclipse的Android插件ADT创建Android工程很方便,这里不述,可以参考网上其它资料。工程名称为Hello,下面主例出主要文件:
主程序是src/shy/luo/hello/Hello.java: package shy.luo.hello; import shy.luo.hello.R; import android.app.Activity; import android.os.ServiceManager; import android.os.Bundle; import android.os.IHelloService; import android.os.RemoteException; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class Hello extends Activity implements OnClickListener { private final static String LOG_TAG = "shy.luo.renju.Hello";
private IHelloService helloService = null; private EditText valueText = null; private Button readButton = null; private Button writeButton = null; private Button clearButton = null;
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
helloService = IHelloService.Stub.asInterface( ServiceManager.getService("hello"));
valueText = (EditText)findViewById(R.id.edit_value); readButton = (Button)findViewById(R.id.button_read); writeButton = (Button)findViewById(R.id.button_write); clearButton = (Button)findViewById(R.id.button_clear);
readButton.setOnClickListener(this); writeButton.setOnClickListener(this); clearButton.setOnClickListener(this);
Log.i(LOG_TAG, "Hello Activity Created"); }
@Override public void onClick(View v) { if(v.equals(readButton)) { try { int val = helloService.getVal(); String text = String.valueOf(val); valueText.setText(text); } catch (RemoteException e) { Log.e(LOG_TAG, "Remote Exception while reading value from device."); } } else if(v.equals(writeButton)) { try { String text = valueText.getText().toString(); int val = Integer.parseInt(text); helloService.setVal(val); } catch (RemoteException e) { Log.e(LOG_TAG, "Remote Exception while writing value to device."); } } else if(v.equals(clearButton)) { String text = ""; valueText.setText(text); } } }
程序通过ServiceManager.getService("hello")来获得HelloService,接着通过IHelloService.Stub.asInterface函数转换为IHelloService接口。其中,服务名字“hello”是系统启动时加载HelloService时指定的,而IHelloService接口定义在Android.os.IHelloService中,具体可以参考在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务一文。这个程序提供了简单的读定自定义硬件有寄存器val的值的功能,通过IHelloService.getVal和IHelloService.setVal两个接口实现。
界面布局文件res/layout/main.xml: android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/value"> android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/edit_value" android:hint="@string/hint"> android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center"> android:id="@+id/button_read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/read"> android:id="@+id/button_write" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/write"> android:id="@+id/button_clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/clear"> 字符串文件res/values/strings.xml:
Hello Value Please input a value... Read Write Clear 程序描述文件AndroidManifest.xml:
package="shy.luo.hello" android:versionCode="1" android:versionName="1.0">