研究文章|开放获取
Taeyong公园,全度妍Geochang Sungtae Kim Jeong Hyun易建联, ”可控移动应用基于二进制代码分割保护计划”,移动信息系统, 卷。2020年, 文章的ID8813243, 11 页面, 2020年。 https://doi.org/10.1155/2020/8813243
可控移动应用基于二进制代码分割保护计划
文摘
移动应用蓬勃发展与扩张的移动设备,如智能手机、平板电脑,smartwatches和物联网设备。移动应用程序的功能和运行应用程序所需的个人信息类型多样化,增加安全发展的需要。特别是,Android应用程序很容易重新包装的攻击,因此各种代码保护技术应用了模糊和包装等。然而,与这些技术还可以应用保护残疾人与静态和动态分析。近年来,而不是使用这种应用程序级别的保护技术,采取了很多方法来监控平台级别的应用程序的行为。然而,在这种情况下,不仅不兼容的系统软件平台修改,但也不能自控功能提供了在用户级别和非常不方便。因此,在本文中,我们提出一个应用程序保护计划,可以将应用程序代码的一部分,它存储在一个单独的物联网设备和自控分割代码通过的部分应用。提出方案,部分应用程序执行只有当它匹配分割代码存储在物联网设备。它不需要复杂的加密技术来保护代码像现有的方案。它还提供了解决方案的参数依赖和注册时必须考虑实施再分配问题提出了代码分割方案。最后,我们提出和分析实验的结果提出的方案在实际设备。
1。介绍
移动技术的出现以来,移动应用迅速扩展。根据IDC的智能手机市场份额报告(1),智能手机出货量预计将从2020年的13亿台增加到2024年的15亿辆由于推出新设备和5克的计划。其中,Android设备预计将占据87%的15亿辆。应用程序的数量的增加,其功能和个人信息需要从用户是多样化的。应用程序需要各种各样的个人信息,如智能银行,社会化网络服务(SNS),电子邮件等等一般存储用户的id和密码为了方便,自动保持登录。然而,如果一个设备解锁或感染病毒由于Android的脆弱性2],恶意软件可以访问或窃取机密信息泄露给攻击者。
目前,各种身份验证方案(3- - - - - -7),如密码、模式和生物信息认证,提供Android智能手机。然而,一旦身份验证,应用程序可以运行没有任何限制,直到智能手机被锁定。换句话说,未经授权的用户可以访问个人信息如果他们设法通过身份验证过程。特别是,Android应用程序很容易重新包装攻击(8),因此各种代码保护技术如模糊和包装应用。然而,与这些技术还可以应用保护残疾人与静态和动态分析。
为了处理这些问题,许多技术(9- - - - - -11]介绍了保护应用程序通过修改平台或使用root特权。通常,监控功能是插入在一个应用程序,其中包含很多敏感个人信息跟踪和控制应用程序的行为。然而,这种方法的修改应用程序本身是很不方便直接应用在用户级别。为了克服这些缺点,技术,允许用户直接保护应用程序利用私营发射器最近推出了(12,13]。
因此,在本文中,我们提出一个可控移动应用的保护方案,可以自由分割二进制代码和验证使用分割代码解决智能手机安全问题。该方案随机分割目标应用程序的代码通过一个启动器应用程序,将其存储在一个单独的物联网设备,并重新安装后重新配置一个可执行的应用程序和其他,除了丢失的分裂的代码。方案,应用程序只能运行通过拟议中的私人发射器。在执行应用程序时,该发射器可以得到分割代码从一个单独的物联网设备和交付代码的应用程序执行。这时,一个基于代码使用身份验证方案,因此只有通过认证的代码可以运行应用程序,不需要一个复杂的密码认证。通过使用这个方案,只有用户划分代码可以运行应用程序,从而提高智能手机的安全,防止未经授权的用户运行的应用程序。此外,该方案可以应用在应用层面,所以不需要平台修改和根特权。用户可以简单地提高个人信息通过安装应用程序的安全。
为了实现代码分离功能,这是该方案的核心部分,一个参数依赖问题和一个寄存器重新分配问题不可避免的发生。本文详细介绍了解决这些问题的示例代码。它还描述了测量结果的可行性和性能开销在真正的Android设备和smartwatch提出方案。
本文组织如下。部分2地址的相关工作。部分3该方案提供了背景和动机。部分4描述了该方案的设计。部分5描述实现该方案时出现的问题及其解决方案。部分6展示了实验结果与该计划。最后我们得出论文部分7。
2。相关工作
保护移动应用平台通过修改或使用root特权用户不便,难以直接应用。许多技术(9- - - - - -11)已经开发修改和保护应用程序本身。I-arm-droid [9)确定安全敏感API方法并指定安全策略的应用。它还提高了安全性通过重写字节码在政策通过监控应用程序。Aurasium [10)不需要修改Android操作系统提供用户所需的安全政策。该工具还监视侵犯隐私的行为,如试图从用户检索敏感信息或恶意IP地址的访问。然而,在这些方法,监控功能应该插入在一个应用程序,其中包含很多敏感的个人信息来控制应用程序的行为。然而,这种方法修改应用程序本身是很不方便直接应用在用户级别。
最近,许多保护方案介绍了通过启动应用程序12,13帮助用户管理应用程序轻松。一般来说,Android发射器仅指一个程序运行的主屏幕的用户界面(UI) (14- - - - - -16]。在大多数情况下,它由主屏和应用抽屉,可以看出,它是包含在Android UI。此外,应用程序总是运行在终端运行,此外,主屏幕区域可以安排提供快捷方式图标或小部件的应用程序,以便开发人员可以执行所需的功能,如执行或删除其他应用程序。制造商的发射器设计从启动默认的发射器,但随着新安装发射器,从主页按钮会弹出一个选择窗口,允许选择安装发射器。改变默认的发射器已经指定,我们可以使用发射器清除默认的任务或使用一个单独的应用程序。Boxify [17)是一个代表通过发射器保护技术应用的例子。它执行目标应用程序启动器应用程序,这是一个孤立的过程以最少的特权,并监视通过数据线传输控制不受信任的应用程序做个人信息泄漏等造成损害的行为。
此外,应用代码的一个例子分裂技术,机器人操作系统(ROS),为智能汽车嵌入式软件,最近推出了(18]。本研究应用代码分割方案安全引导的目的,防止攻击者远程控制智能车。此外,尽管这为本机代码使用代码分割,该方案适用于Android字节码。除了概念,详细的基础技术,如参数依赖性检查和登记再分配是完全不同的。
3所示。背景
3.1。安卓应用
Android应用程序提供了一个名为Android的文件包(上年)文件。apk文件压缩格式,由classes.dex,不仅包含应用程序的代码,而且资源文件包含配置信息,如应用程序的图标,图片,和字符串。每个apk文件包含一个AndroidManifest。xml文件包含应用程序的组件和权限信息。Android应用程序的主要语言是Java。Java代码被编译成Dalvik字节码,由一个名为classes.dex的文件。生成的字节码执行Dalvik虚拟机。此外,开发人员可以使用本地库(所以)用C或c++语言编写的。这些本地库代码直接在设备的处理器上运行,而不是Dalvik虚拟机。
所有的应用程序都可以由一个独特的包名称和标识是由开发人员的签名私钥(19]。Android应用程序是由不同类型的组件:活动、服务、广播接收器,和内容提供商。执行的活动代表函数通过一个UI。一个应用程序可以包含多个活动。相比之下,没有一个UI服务在后台运行。例如,一个音乐播放器应用程序可能需要一个UI选择歌曲,但不需要额外的UI,而音乐是玩。这个任务可以作为服务来实现。广播接收器是一个函数,它可以接收消息服务和系统事件时执行相应的动作发生在Android。最后,使用内容提供者提供应用程序数据到其他应用程序。
3.2。Android库
Android的内存储器和外部存储器(20.]。内部存储主要存储系统和应用程序,数据存储在外部存储。内部存储可以读取和写入数据只在应用程序和外部存储作为共同的地方。同时,内部存储中的数据被删除时,应用程序被删除。外部存储包含照片、视频和其他文件。同意,可以读取和写入数据,在外部存储器,从其他应用程序。数据库缓存区域,区域,和一个文件区域内部存储为每个应用程序存在。因为它是麻烦找到必要的路径时每个区域的道路是必需的,Android提供了一个API,容易获得数据存储的主要路径。
3.3。ASMDEX
ASMDEX [21)是一个开源项目,解析dex文件和组织成一棵树。它允许用户修改、添加或删除生成的树和重建dex文件。ASMDEX创建的树结构如图1。当构建一个敏捷文件作为一棵树,根节点是由ApplicationNode表示。ApplicationNode有成员变量叫做类,代表ClassNodes类的列表。ClassNode解析和持有的所有信息,如名称、权威、dex文件为每个类和方法。一个成员变量,方法,代表MethodNodes类的列表。MethodNode ClassNode中包含的信息的方法。类似于ClassNode, MethodNode解析和包含信息的方法,如名字、描述符,异常和使用的寄存器数量。不像ClassNode MethodNode可能有重复名称。在这种情况下,该方法通过描述符识别。MethodNode类的成员变量,名为InsnList的指令,这是一个类实现AbstractInsnNode双链表。 AbstractInsnNode is an abstract class, and a method inherits the corresponding abstract class and executes each instruction.
4所示。提出了方案
当用户身份验证是执行一次使用前,任何人都可以运行的所有应用程序安装在智能手机,直到它被锁定后,从而使个人信息泄漏。本节提出了一个计划来保护个人信息通过实现应用程序执行环境通过可控私营发射器。
4.1。概念
该方案的基本思想是分裂和管理安全应用程序的二进制代码的一部分,分别采取分割代码在运行时和操作功能组装起来一样的原始代码。更具体地说,应用程序的二进制代码的一部分被分割,并存储在物联网设备,每次执行这个程序,将代码存储在的物联网设备和组装功能通过一个基于代码验证。我们称之为AppContainer启动应用程序,提供了这种功能,这是提供两种模式:正常或保护模式。如果目标应用程序作为AppContainer的输入,它将默认进入正常模式。如图2,当目标应用程序在正常模式下,执行二进制代码分割功能操作。应用程序的二进制代码的一部分是随机选择的,分裂,然后存储在一个物联网设备。剩下的代码是不完整的,但显然重建的形式的智能手机上的应用程序,重新安装。这incomplete-but-normal-looking应用称为局部应用在本文的其余部分。这时,部分应用程序只能运行在保护模式。切换到保护模式后,所有的应用程序显示在AppContainer部分应用程序。这部分程序运行时的保护模式,收到相应的分割代码从物联网设备。然后,它以同样的方式运作与原始应用程序通过基于代码的身份验证协议。
dex文件可以反编译成smali代码在任何时候,所以可以解析的方法执行。可能有多达65536在一个敏捷方法文件。目前,方法是随机选择的。即使该方案应用于相同的应用程序几次,可以生成不同的双分裂和剩下的代码。因此,通过独特的代码创建一个分裂,只有物联网设备的所有者可以运行应用。此外,如果您选择的核心逻辑,然后将其存储在分割代码和配置不太重要的部分应用程序中的代码,原始应用程序的核心逻辑仍然可以保护即使部分应用逆向工程。
4.2。设计细节
该方案包含两个主要阶段:二进制代码分割为目标应用程序和应用基于代码验证的部分应用。
4.2.1。准备二进制代码分割
像一般的启动器应用程序,除了系统应用,用户安装的应用程序列表的形式显示在正常模式图标。在这个时候,当选择一个特定的应用程序,这个应用程序的代码是分裂,其余的应用是重建部分应用,此外应用和基于代码验证函数。这个重建部分应用程序只是显示在保护模式和正常模式不再可见。正常模式如何操作的轮廓图所示3。目标应用程序(original.apk)可以选择申请代码分割方案。包名目标应用程序到内存的路径/数据/应用程序/“packagename”。这条路只能读原始。apk文件目标应用程序因为只读许可存在的其他应用程序。然后,原来的。apk文件复制到外部存储如/ sdcard。使用外部存储器,AppContainer必须READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限。接下来,导入的原始。apk文件解压缩到original.dex文件。 After the code splitting process, the original.dex file is split into the partial.dex and the split.img files. The split.img file is reconstructed into the split.dex file with a wrapping function. When the reconstruction is complete, a hash value on the split.dex file is created with the application name. It will be used later for code-based authentication. Then the split.dex file is sent to the connected IoT device. In the other side, the folder containing the partial.dex file is recompressed to create in form of a partial.apk file. This partial.apk file is resigned with the user’s private key. Then, the original.apk file is replaced with the partial.apk file in the internal storage. After completing the code splitting process, all files used in the/sdcard path are deleted.
代码的详细过程分割方案中给出的算法1。考虑到原创。apk文件,内部的original.dex原创。通过ASMDEX apk文件变成了树。它遍历树,随机选择(我们注意,是不可能把Android应用程序的任何部分。这总是只适用于用户定义的类和方法。它不适用于类或方法与框架代码或系统依赖关系。onCreate MainActivity类的函数,这是应用程序运行的基础,或一个类是由系统自动创建的,如R美元不应该被选中。然而,对于实际应用没有问题,因为敏感或秘密代码逻辑,这是这个方案的主要目标是分裂,都是用户定义的类和方法)特定splitClass和splitMethod。当完成分割节点选择,ASMDEX用于创建一个新的树。所选splitMethod添加到树创建一个新的敏捷splitClass节点。 Since the selected splitMethod disappears from the existing tree, it is necessary to modify the caller part and splitMethod body part. If the selected splitMethod is Static, the splitMethod body part needs to be modified; otherwise, the caller part needs to be modified. If it is not Static method, the splitMethod and splitClass are changed into Abstract, and all splitMethod bodies are deleted. The reason for changing to Abstract is to allow a splitClass with a splitMethod to inherit the existing class and use the undefined methods and field values of the existing class.
|
因此,它遍历现有targetTree和发现所有调用方splitMethod的部分。如果splitMethod是作为一个现有的类,它是改变了一个抽象方法,因此splitMethod不能创建一个现有的类使用。现有类的部分应该被存根代码,发现splitClass继承现有的类。创建一个split.dex文件包括splitClass然后返回。在静态方法的情况下,调用者应该替换的内容没有删除调用者调用存根代码部分。分裂的代码,执行以下操作:找到并创建一个继承现有的类,splitClass splitMethod立即执行,并返回结果splitMethod的价值。插入或删除其他代码可能会导致参数与现有的注册和注册的依赖可能冲突的问题,因为Dalvik字节码是基于寄存器,而不是基于堆栈。为了解决这个问题,我们必须处理一个参数依赖检查和重新注册,解释的部分5.1和5.2,分别。
4.2.2。分代码完整性检查
在正常模式下,当AppContainer分离split.dex并将其传输到一个物联网设备,它存储IMEI(国际移动设备身份)的设备内部存储的信息。之后,当AppContainer请求split.dex从物联网设备、物联网设备的使用不仅split.dex创建一个散列值,而且IMEI和盐。物联网设备传送其余split.dex,盐,和散列值不包括AppContainer IMEI信息。使用split.dex AppContainer计算出散列值,盐从物联网设备,接收和IMEI存储在内部存储,然后检查是否收到物联网哈希值匹配的。如果两个哈希值匹配,AppContainer证明已收到split.dex文件从一个值得信赖的物联网设备和split.dex的完整性验证。
4.2.3。基于代码验证
在保护模式,只有部分应用程序代码分割方案的形式显示在主屏幕上的图标。如图4,当部分。apk开始,它请求相应split.dex到物联网设备。部分。apk保持待命,直到split.dex文件传输AppContainer从物联网设备。AppContainer split.dex文件下载后,解释部分4.2。2,AppContainer检查分割的完整性代码并将其存储在内部存储(/数据/数据/“packagename”)。然后,检查是否split.dex和相应original.dex正常工作。如果是错误的,部分。apk不工作了和终止。当部分。apk异常终止,split.dex文件中创建下载删除。之后,当部分。apk接收split.dex文件存储在内部存储通过意图,部分。apk可以正常执行。再一次,如果你试图运行一个部分。apk AppContainer以外的普通发射器,部分。apk does not work because its corresponding split.dex file does not exist.
5。实现问题
在本节中,我们提出几个问题和解决方案来实现上述代码分割方案。在基于代码验证方面,因为没有实现问题,我们关注的问题代码分割方案。
5.1。参数的依赖性检查
如图5鉴于original.dex文件,它分为partial.dex和分裂。img文件。当partial.dex转换部分。apk,有重要的实现问题的参数依赖性检查和重新注册。
分裂之前执行相同的操作,splitClass代替现有的类应该创建以来splitMethod被替换为一个抽象方法。在存根代码中,创建一个新的类,继承了现有类相反(见图6)。自从splitClass总是不同的形状,类型和数量的类创建所需的参数是不同的,所以使用的寄存器数量是不同的。一般解决这个问题,通过添加三个寄存器参数依赖应该解决的方法包含了调用者的部分。复用现有的注册会导致冲突与其他代码,所以只使用新注册。第一个寄存器包含名称信息的寄存器的splitClass继承现有splitClass。第二寄存器是一个对象数组,可以保存构造函数参数。使用一个对象数组的原因是,使用的寄存器数量是不同的,因为数量和类型splitClass构造函数的参数是不同的。因此,几个参数作为一个注册登记管理和发送到存根代码一般修复调用者的部分。当创建一个对象数组,一个寄存器是使用init()创建的原始代码和移动到第二个寄存器。最后一个寄存器控制对象数组的索引寄存器。 In addition, parameters of primitive types such as Integer and Double cannot be put directly into the object array, but they must be converted to Integer and Double types using the valueof() function. Therefore, before putting it into the object array, the type is converted into the array by using the register used as a parameter register.
5.2。寄存器重新分配
寄存器依赖性问题发生,因为它不匹配寄存器之前使用的数量。为了解决这个问题,另外需要注册重新分配。这任务是解决由三个寄存器添加到索引冲突解决参数的依赖性。如表所示1、方法寄存器用于Dalvik字节码(22)可分为本地寄存器和寄存器参数。本地寄存器从一开始编号,在参数寄存器中,最后一个寄存器是用于所有寄存器。参数前的登记注册这个寄存器代表了方法本身。因此,添加三个寄存器的总数变化寄存器和执行期间可能导致故障,因为修改寄存器访问;因此,寄存器的搬迁是必要的。
|
|||||||||||||||||||||||||||
为了解决这个问题,在splitMethod的开始,这个寄存器和返回的参数寄存器到寄存器的位置添加注册之前。如表所示2,当5寄存器用于splitMethod和2参数使用,v3和v4寄存器有第一和第二参数,和v2注册这个寄存器。如果三个寄存器是补充说,第一个参数进入v6登记,第二个参数进入v7注册,注册进入v5注册。在这种情况下,如果v2、v3和v4中使用的原始代码,出现错误因为不包括所需的值。因此,v5的值、v6和v7 v2, v3和v4。然后添加v5, v6和v7寄存器用于解析参数的依赖关系。
|
||||||||||||||||||||||||||||||||||||
如果双和长参数寄存器类型,两个寄存器而不是一个。同时,通过添加寄存器,寄存器用于splitMethod总数可能超过16。在某些情况下,超过16现有splitMethod可用的寄存器。例如,invoke-virtual使用寄存器时应该使用小于16,但是invoke-virtual /范围使用寄存器时应该使用以上16。此外,使用寄存器的数量必须是连续的。当invoke-virtual可用,三个寄存器如v5, v8 v3是可用的。但当invoke-virtual /范围可用,寄存器应该v5, v6和v7。此外,超过16寄存器不能新数组,因此不能创建对象数组。创建对象数组和搬迁使用init()命令寄存器,它使用以下注册16无条件,如上所述。
5.3。存根代码插入
存根代码需要注射两种情况。首先,AppContainer需要split.dex并将其存储在内存的应用程序第一次开始。第二个是必要时从内存加载split.dex split.dex叫做和执行splitClass split.dex。第一个案例分析了AndroidManifest。xml并将存根代码插入到活动开始第一个应用程序运行时的类。您还需要修改onCreate()函数的开头添加一个调用应用程序启动时插入的存根代码。此外,我们需要检查是否split.dex收到AppContainer是相应的split.dex partial.apk。如果检查是正确的,保存在内存split.dex。如果不是,终止程序。插入的代码加载split.dex通过添加splitClass ASMDEX创建的节点树。 The stub code is executed when the caller invokes the split.dex. We create a DexClassLoader object and load the split.dex stored in the internal memory into the DexClassLoader object. Find the splitClass in the created DexClassLoader object and execute the splitMethod normally. Therefore, it is an object that has a class name and constructor parameter value. It finds the desired splitClass by using the reflection API provided by Java. In the case of the Static method, the method finds and executes the method through the object that has the class name, method name, and method parameter value.
5.4。辞职
当所有的代码分割程序完成,文件夹包含partial.dex是否创建一个部分。apk文件。利用ASMDEX,新创建的树与分裂。img是作为split.dex文件创建的。这个split.dex文件分布到连接物联网设备。Android应用程序之前必须进行数字签名。因为原来的。apk文件被修改在分裂过程中,前面的签名是无用的,所以辞职是需要安装应用。因此,用户的签名密钥存储在AppContainer使用。当所有的辞职,现有的原始。apk删除,部分。apk重新安装。
6。实验结果
在本节中,我们描述的结果评估该方案的性能。我们实现和测量性能Android版本6或更高版本和星系齿轮上的物联网设备。
6.1。示例代码和代码分离
当代码分割方案,目标的方法是随机选择的方法。如图7jxL addFont方法/ biff /字体类中选择方法和转换成一个抽象方法,和方法的身体消失了,它的大小成为零。
图8显示了调用者splitMethod的一部分。以前,只有7个寄存器从v0 v6。添加了三个寄存器修改10寄存器v0 v9。我们也重新分配参数寄存器和这个寄存器通过移动物体的方法来避免注册冲突。
图9是在调用splitMethod之前创建类的一部分。它创建一个对象数组使用寄存器用于执行Init()函数并存储对象数组添加寄存器,v8。寄存器v9是不习惯,因为没有参数的构造函数中splitClass,[]数组和对象也创建一个大小为零。
类的名称来创建存储在寄存器v7。类名和创建对象数组被发送的参数调用存根代码,和/范围命令中使用的情况下,注册号码变成了16个或更多。生成的类是投到原始类和存储在寄存器v0因为原始类使用寄存器v0前的代码修改。
图10显示了splitClass和splitMethod split.dex文件存储在物联网设备。在上面的示例代码中,有一个splitMethod新命名的类继承了选中的类。
如果选择静态方法分割如图11,调用者的改变不是必需的一部分,只有splitMethod的主体发生了变化。更改的代码执行方法通过发送类名,方法名来执行,和参数的方法存根代码。然后处理参数信息接收的方法,将结果转换为原来的返回格式,并提供它。
6.2。性能开销
我们测试了该方案是否恰当地应用于谷歌玩商店的实际应用和评估的执行开销比较应用程序的启动时间和没有它该方案和应用程序。
表3显示了应用程序的启动速度之前和之后将该方案应用于分类5软件在谷歌商店。实验结果表明,该方案平均有138毫秒的延迟时间,虽然延迟时间为每个应用程序都是不同的。这延迟是由于负载所需的时间分割代码在应用程序启动时,检查代码收到AppContainer分裂的真实性。因为每个应用程序都有不同的大小和功能,其启动时间之前和之后应用该方案是不同的。最快的启动时间是163毫秒,最慢的一个是975毫秒。通过实验结果,可以看出,该方案开销增加了约15%,至2倍。然而,138毫秒的平均增加是合理的,使该方案可接受的启动延迟。
|
||||||||||||||||||||||||||||||||||||
6.3。特征比较
表4显示了AppContainer的特征比较典型的商业工具保护Android软件代码。现有的工具,如DexGuard [23]和DexProtector [24采用加密保护方法和类,但该方案利用分裂保护代码没有加密。由于Android字节码可以自动恢复加密代码通过使用先进的动态分析工具(25),现有的加密可以防止静态分析工具,但缺点是暴露于动态分析。另一方面,提出AppContainer不公开的完整代码即使尝试动态分析的部分应用程序,因为代码存在于外部设备的一部分。因此,该方案可以抵抗动态分析和静态分析不应用任何加密技术。回想一下,分割代码是物理存储在外部设备,部分应用程序是存储在一个智能手机。方案,由于代码通常只有当两部分工作程序和分割代码必须匹配,应用运行通常意味着外部设备存储分割代码可以信任。换句话说,这意味着设备验证获得的副作用。
|
||||||||||||||||||||||||||||||||
7所示。结论
许多应用程序要求的个人信息,如智能银行、社交网络,电子邮件,个人信息保护的重要性也在上升。然而,大多数用户保持自动登录状态通过存储他们的ID和密码,即使他们与敏感的个人信息,方便应用。智能手机的保护销等各种身份验证方法,模式,和生物信息认证,但他们缺乏提供个人信息的最大安全。因此,我们提出了一个方案,保护应用程序免受未经授权的用户仅仅通过分配控制程序执行安装程序无需修改平台的智能手机。
AppContainer旨在满足以下设计目标。首先,应用该方案在运行应用程序之前需要进行用户身份验证,未经授权的用户无法运行应用程序本身。AppContainer负责接收分割代码从物联网设备和交流的应用。因此,只有通过认证的用户有一个分裂的代码在物联网设备上通过AppContainer可以运行应用程序。其次,它可以简单地作为一个app-level保护技术应用而不是一个平台修改。现有保护技术提高了安全通过改变平台的智能手机,但由于该方案不需要任何平台的变化,它可以在任何平台的用户使用。
此外,AppContainer显示应用程序代码的列表分割,这样用户可以识别哪些应用程序基于代码验证。以防,如果行为不端的应用程序重新安装由于重新包装的攻击,这是排除从列表中,这样用户可以很容易地认识到,这不是一个现有的应用程序。最后,提出AppContainer有望防止个人信息泄露,有效地避免未经授权的用户应用程序执行。作为一个未来的工作,我们打算扩大和发展该方案将代码分割技术不仅应用于Android还等嵌入式软件智能车辆、机器人和无人驾驶飞机。
数据可用性
本研究中所有生成的数据或分析包括在发表的这篇文章。
信息披露
作者披露这个手稿是扩大和改进版本的硕士论文(26由第一作者),金。
的利益冲突
作者宣称没有利益冲突。
确认
这部分工作是支持信息与通信技术促进研究所(IITP)授予由韩国政府资助(MSIT)(2017-0-00168号自动深恶意软件分析技术为网络威胁情报)和部分职业生涯中期研究者计划通过韩国国家研究基金会(NRF)由MSIT(科技部ICT)授予联盟- 2020 r1a2c2014336。
引用
- 洲和r . Reith“智能手机市场的份额,”2020年,https://www.idc.com/promo/smartphone-market-share/。视图:谷歌学术搜索
- w .络筒机,“2800万”android手机接触到令人瞠目结舌的“攻击的风险,”2020年,761年https://www.forbes.com/sites/daveywinder/2019/08/03/28-million-android-phones-exposed-to-eye-opening-attack-risk/ afc4a7b74。视图:谷歌学术搜索
- m·a·Ferrag l . Maglaras a . Derhab和h . Janicke”智能移动设备身份验证方案:威胁模型、对策,和开放的研究问题,“电信系统,卷73,不。2、317 - 348年,2020页。视图:出版商的网站|谷歌学术搜索
- 林z, w·孟、w·李和d s . Wong“发展cloudbased智能触摸行为验证手机,”深的生物识别技术施普林格,页141 - 159年,柏林,德国,2020年。视图:出版商的网站|谷歌学术搜索
- a . o . Ekpezu e·e·Umoh f . n . Koranteng和j·a . Abandoh-Sam”生物认证方案在移动设备和方法:系统回顾,“现代网络理论和实践道德和安全合规,IGI全球,宾夕法尼亚州,美国172 - 192年,2020页。视图:谷歌学术搜索
- 问:李、p .董和j .郑”与表面增强的安全模式解锁EMG-based生物识别技术,“应用科学,10卷,不。2,p。541年,2020年。视图:出版商的网站|谷歌学术搜索
- m . Guerar l . Verderame a .梅洛,f . Palmieri m . Migliardi和l . Vallerini”smartwatches CirclePIN:小说认证机制,防止未经授权的访问物联网设备,“ACM Cyber-Physical交易系统,4卷,不。3 - 2020页。视图:谷歌学术搜索
- 黄永发。荣格,H.-C j.y. Kim。李,j . h .咦,“重新包装攻击android银行应用程序及其对策,“无线个人通信,卷73,不。4、1421 - 1437年,2013页。视图:出版商的网站|谷歌学术搜索
- b·戴维斯b·桑德斯a . Khodaverdian h·陈,“I-arm-droid:重写框架内参考监视器android应用程序,”移动安全技术,卷2012,不。2、1 - 7,2012页。视图:谷歌学术搜索
- r·徐h . Saidi, r·安德森”Aurasium: android应用程序的实用策略实施,”21届USENIX安全研讨会学报》上美国贝尔维尤,佤邦,2012年。视图:谷歌学术搜索
- b·戴维斯和h·陈,“RetroSkeleton:改造android应用程序,”《第11届国际会议在移动系统中,应用程序和服务,台北,台湾,2013。视图:谷歌学术搜索
- m .回s Gerling c .锤m·马费伊和p·冯·Styp-Rekowsky“Appguard-real-time策略实施对于第三方应用程序,”技术。代表,萨尔州大学萨尔布吕肯,德国,2012年,技术报告/ 02/2012。视图:谷歌学术搜索
- a·比安奇y Fratantonio、c克鲁格尔和g .豇豆属“nja:沙盒修改的应用程序在内面设备运行android,”第五届ACM CCS学报》研讨会在智能手机和移动设备的安全和隐私2015年美国丹佛市。视图:谷歌学术搜索
- 发射器,2020,http://www.goforandroid.com/。
- 2020年ADW发射器,http://jbthemes.com/anderweb/。
- LauncherPro, 2020,http://www.launcherpro.com/。
- m .回s Bugiel c .锤o . Schranz和p·冯·Styp-Rekowsky”Boxify:成熟的android应用沙盒,”学报》24日USENIX安全研讨会美国,华盛顿特区,2015年。视图:谷歌学术搜索
- j . Yoo和j·h·易”,基于代码验证方案智能车辆的轻量级的完整性检查,”IEEE访问》第六卷,第46741 - 46731页,2018年。视图:出版商的网站|谷歌学术搜索
- 甲骨文,“理解标志和veification”, 2020年,https://docs.oracle.com/javase/tutorial/deployment/jar/intor.html。视图:谷歌学术搜索
- h·金:Agrawal, c . Ungureanu“检查移动设备上的存储性能,”学报》第三届ACM SOSP研讨会上网络、系统和应用程序在移动手持设备2011年,Cascais,葡萄牙,。视图:谷歌学术搜索
- ASMDEX, 2020,http://asm.ow2.org/doc/tutorial-asmdex.html。
- Android开源项目,2020年,https://source.android.com/index.html。
- DexGuard, 2020,https://www.guardsquare.com/en/products/dexguard。
- DexProtector, 2020,https://dexprotector.com/。
- h .赵j . h .咦,G.-J。安,“DexMonitor:动态分析和监控混淆android应用程序,”IEEE访问》第六卷,第71240 - 71229页,2018年。视图:出版商的网站|谷歌学术搜索
- 金,“可控移动应用保护计划基于二进制代码分割,”进程,首尔,韩国,2017年硕士学位论文。视图:谷歌学术搜索
版权
版权©2020 Sungtae金等。这是一个开放分布式下文章知识共享归属许可,它允许无限制的使用、分配和复制在任何媒介,提供最初的工作是正确引用。