热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

论文笔记:BypassingDRMprotectioninebookapplicationsonAndroid

一、基本信息论文题目:《BypassingDRMprotectionine-bookapplicationsonAndroid》发表时间:ICOIN

一、基本信息

论文题目:《Bypassing DRM protection in e-book applications on Android》

发表时间:ICOIN 2018

作者及单位:

 


二、摘要

数字版权管理(DRM)技术允许内容所有者保护自己的权利,防止非法使用数字内容(例如,复制电子资源)。drm技术在电子出版图书(e-books)行业中得到了广泛的应用。在本文中,我们介绍了一个通用的框架,可以绕过部署在android上的电子书应用程序上的drm保护。为了证明所提出方法的可行性,我们将我们的方法应用于三个流行的电子书drm应用程序(kyobo图书中心、ridibooks电子书、interpark电子书),并证明了以半自动化的方式规避其drm保护解决方案是可能的。此外,我们还推荐了几种实用的方法来为电子书应用程序开发安全的drm实现。

 


三、主要内容与工作

1、drm技术的最大市场之一是电子书发行市场,在移动电子书应用中,DRM也被广泛应用于允许用户仅在特定使用规则下使用电子书。然而,drm技术在实践中的有效性仍然值得怀疑。例如,存在一个不可避免的问题,称为模拟孔,它是通过模拟手段复制DRM保护的内容(例如,屏幕捕捉每个单独的页面并将其保存在电子书应用程序中)。本文通过对三个流行的电子书应用程序(kyobo图书中心、ridibooks电子书、interpark电子书)的案例分析,详细分析了android中使用的drm系统的安全性,这些应用程序通过使用特定包的webview实现来显示电子书内容。在这些应用中,纯文本电子书(epub)文件使用加密密钥进行安全加密,只有在特定的使用规则和条件下,授权的drm代理才能对其进行解密。然而,我们发现,在通过逆向工程分析在webview组件上呈现明文电子书文件之前,可以通过提取明文电子书文件的半自动方式规避这些应用中的drm保护。在使用webview的android应用程序中,可以在几个位置获得这种计时。此外,即使代码被混淆,也可以使用这种分析。

2、许多安全专家都认为drm技术的安全实现非常棘手,而且许多商业drm系统已经证明是不安全的(例如,针对内存分析[6])。更糟糕的是,即使有一个安全的DRM实现,也存在一个不可避免的问题,称为ANA日志孔,它是由模拟装置[7 ]复制的受DRM保护的内容(例如,屏幕捕获每个单独的页面并将其保存在电子书应用程序中)。防止模拟空洞是一项非常有挑战性的工作。然而,内容所有者通常不担心这种情况,因为从模拟内容转换回数字内容通常会导致质量损失。

更严重的问题是从受drm保护的文件中提取内容加密密钥,或者通过逆向工程应用程序的drm实现来强制修改drm规则。Jon First打破了DVD解码器中用作DRM系统一部分的内容置乱系统(CSS)算法。这些破解结果表明,在现实世界中安全地实现drm解决方案是多么困难。Wang等人引入了一种基于内存的方法来规避流媒体服务(Amazon Instant Video、Hulu、Spotify和Netflix)的DRM保护。Choi等人演示了如何通过逆向工程绕过OMA(http://www.openmobilealliance.org/)DRM系统中受DRM保护的文件的完整性检查。我们将重点放在电子书应用程序的drm实现上,从而扩展了现有的技术缺陷。我们提出使用一种通用技术从受DRM保护的文件中自动恢复原始ePub文件。我们的技术特别利用了在android上使用webview实现drm的结构弱点。

3、在Android 7.1.2上进行了实验,我们重点介绍了对Interpark E-Book、Kyobo Book Center和Ridibooks E-Book这三个DRM安全内容查看器应用程序的攻击。这三个阅读器是韩国应用的最广泛、最具有代表性的drm安全内容查看器解决方案。

4、在android框架上,您可以采用几种通用的方法来开发查看器应用程序,以呈现商业内容(如带电媒体、文档等)。这意味着将有许多潜在的攻击向量针对drm应用的内容,而不仅仅是我们建议的电子书。例如,假设您使用音频播放器应用程序在Android上播放DRM应用的音频文件。它可能会遵循普遍化的开发方法。这表明,很有可能应该有一些方法可以调用以使用函数play。因此,我们可以依赖这样一个事实,即我们可以通过对媒体播放参数进行一些修改来提取DRM安全内容文件。类似地,我们怀疑在内容流期间也可以提取数据。

 


四、结论

本文针对drm安全内容提出了一种新的攻击方法。这一攻击首先要求为目标DRM安全电子书提供一个独特的查看器应用程序。受害者必须有权激活内容。
在android上的大多数电子书应用程序中,内容描述和查看器模块都是作为独立的组件实现的,并带有一些接口。当webview用于呈现电子书内容时,这样的界面受到一些可用选项的限制。因此,我们可以通过这样一个接口通过逆向工程分析来提取纯文本电子书内容。

如前所述,当drm以专有文件格式而不是普通epub文件格式实现时,我们无法概括我们的攻击方法。亚马逊的案例是我们攻击的最有力反例之一。亚马逊的DRM使用专有的电子书文件格式。因此,即使我们可以伪造内容,也需要进行额外的研究来分析文件结构并恢复它。
在未来的工作中,我们计划通过使用大量电子书应用程序的示例优化我们的实现,来概括我们的框架,以规避Android上电子书应用程序中的DRM保护。

 


推荐阅读
  • 今天搭建了redis环境,使用自带的benchmark进行了性能测试选择测试键的范围大小默认情况下面,基准测试使用单一的key。在一个基于内存的数据库里,单一key测试和真实情况下 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 前言作为一个移动端初学者、爱好者,能使用前端技术开发原生游戏一直是一件渴望而不可及的事情,暂且不说游戏逻辑的复杂度,算法的健壮性ÿ ... [详细]
author-avatar
彭雅静政颖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有