2024年3月16日发(作者:)

在苹果手机上开发的软件是用什么方法来进行软件加密防盗版的?

在硬件和软件上分别要实现什么技术呢?

有什么可以参考的书或资料吗?谢谢大家啊

因为我对这方面没有了解,所以希望得到大家的帮助。

这个问题已经找到一些想要的资料,大概的写了一下

在所查找的资料中,大部分人对于Iphone OS所用的保护措施比较赞同。对于Iphone来说,它的硬件和

操作系统及部分软件都是苹果公司独自设计与开发的,这样就使得软件保护可以同时从硬件和软件入手。

从所周知,软硬件协同保护是最有效的办法。想破解硬件加密是一件很困难的事情,主要原因之一就是可

以将安全引擎内置于处理器中,这就意味着,在装有安全引擎的手机处理器上,黑客原本惯用的通过入侵

加密信息来盗取资料的手法将完全失效。

大家知道,如果Iphone手机没有经过破解想使用大部分软件必须要付费才可以,这是苹果公司在Iphone

出厂的时候已经对手机进行了设置,系统对用户限制了一些功能。从itunes下载的程序是账户绑定的,跟

iphone/itouch匹配才能安装。所以,只有破解的Iphone手机才可以随便安装第三方软件,而不用交费。

SDK本身是可以免费下载的,但为了发布软件, 开发人员必须加入iPhone开发者计划, 其中有一步需要付款

以获得苹果的批准。加入了之后,开发人员们将会得到一个牌照,他们可以用这个牌照将他们编写的软件

发布到苹果的 App Store。 发布软件一共有三种方法: 通过App Store,通过企业配置仅在企业内部员工间

应用,也可通过基于"Ad-hoc"而上载至多达100部iPhones。

这个发布iPhone软件的形式的出现使人们不能根据GPLv3的授权代码发布软件。任何根据 GPLv3任何代

码的开发者也必须得到GPLv3的授权。同时,开发商在散发布已经由GPLv3 授权的应用软件的同时必须

提供由苹果公司提供的密匙以允许该软件修改版本的上载。下面详细介绍一下Iphone开发的代码签名。

2.5.1 Iphone数字签名和签名标识

代码签名确保代码的真实以及明确识别代码的来源。在代码运行在一个开发系统以前,以及在代码提交到

苹果发布以前,苹果要求所有的的应用程序都必须进行数字签名。另外,苹果在发布每一个应用程序之前

都要添加他自己的数字签名。

2.5.1.1 为什么要有代码数字签名

苹果要求所有的iphone应用程序都需要使用苹果提供给已注册的iphone开发者的签名许可进行数字签名。

这个签名证明了该应用程序开发者的身份以及确保这个应用程序在签名以后没有被修改或者篡改过。

数字签名使用两种截然不同的方式,即:众所周的公有密钥和私有密钥的算数关系加密术。私有密钥使用

在签名的过程中。公有密钥用来验证这个签名的有效性。公有签名被存储在签名证书中,而私有签名被单

独的存储,这种证书和算数加密结合的私有密钥被叫做数字标识或者签名标识。

为iphone开发获取签名标识,你需要使用Keychain Access utility里边的Certificate Assistant来创建一个

签名许可请求Certificate Signing Request (CSR),你提交这个请求是希望得到使用iphone开发者计划的计

划入口的正式许可。当你的请求被正式批准以后,下载这个证书文件,双击这个文件,就可以将其安装到

你的keychain(密钥链中),在你使用Certificate Assistant utility生成一个签名许可请求Certificate Signing

Request (CSR)的过程中,这些你可能看得不太明显,因为它自动生成了一对共有-私有密钥。它包括发送

给苹果的许可请求中的公有密钥(public key)和存储在你的密钥链(keychain)中的私有密钥(private key)。

当你下载安装签名许可的时候, Keychain Access utility将其与私有密钥关联,以创建签名标识。打开

Keychain Access utility 点击 Category面板下的My Certificates 以察看许可的关联私有密钥。

当你安装了已签名的应用程序到你的iphone上去的时候,iphone OS 将要验证签名以确保该应用程序已签

名并在签名以后未被篡改。如果签名无效或者你根本就没有签名,iphone OS 将不允许该应用程序运行。

同样,当你提交你的应用程序给苹果 审批和部署的时候,首先,你必须用你的签名标识为你的应用程序签

名,同时随程序一起提交你的签名证书。(私有密钥不用提交至苹果。)然后 苹果验证该程序代码是否来自

有效的已注册的开发者。 最后 苹果用她自己的签名证书为你的已签名的应用程序签名。然后你的应用程

序才能够在iPhone ,iPod Touch上正常的运行。这种机制确保这些设备的拥有者从iTunes上边下载的那

些已注册的开发者所编写的应用程序的安全性,并且这些应用程序没有被修改过。

2.5.1.1怎样将Iphone签名标识复制到其他机器

如果你用来开发的机器不只一台(例如,办公电脑和你的家用笔记本电脑),你需要在两台上边都有你的签

名标识。因为你从 程序门户网站(Program Portal)上边下载的签名许可文件不包括你的私有密钥,仅仅将

这个签名许可文件复制到你的另一台电脑上是不够的。你需要使用 Keychain Access 导出一个个人信息替

换文件( Personal Information Exchange ),具体操作步骤如下 打开 Keychain Access,选择 文件,导出

项,(Keychain Access-> File-> Export Items )导出许可和私有密钥作为你的个人信息替换文件,将其复制

到另一台机器上,双击这个文件将许可和密钥导入到keychain下即可

2.5.1.2保持Iphone私有密钥安全有效

只要你持有签名标识,尤其是你的私有密钥,这个系统将是非常安全的。然而如果有任何未经授权的人使

用了你的签名许可和私有密钥,他们可以修改你的应用程序并且可以为这些修改代码申请签名,或者他们

也可以以你的身份写他们自己的应用程序。因此你的私有密钥的自身安全是防止你的软件和标识被恶意使

用的最基本的手段。

在你获取签名标识和处理代码签名之前,你必须要确定你公司内谁将拥有这个标识,谁使用这个标识,以

及如何保证这个标识的安全性。例如,如果这个标识一定是多人使用,你可以将其放置在一台比较安全的

电脑的keychain中,并且为keychain分配一个核实用户身份用的密码,或者你也可以将这个密钥放置在

一个用户有PIN码的smart卡中。

默认情况下,你的Keychain密码和你的机器登陆密码是相同的,并且只要你登陆到你的机器当中,keychain

将保持解锁状态。这就等同于你将你的车钥匙放在了后门旁边的桌子上,并且后门整天都不上锁。如果只

有钥匙能开你的车的话,你没有有效的保护你的车钥匙,怎么能保证你的车的安全呢?

为了保证签名标识的安全,以及其他一些keychain下的有价值的秘密信息的安全性,你至少应该采取如下

措施:

 设置你的keychain在不使用的情况下自动加锁:在 Keychain Access utility下,选择Edit-> Change

Settings for Keychain 并且勾选多选框(前两项就可以了)。

 为你的Keychain使用一个不同于登陆密码的密码: 在 Keychain Access utility下,选择Edit-> Change

Password 来改变 Keychain 的密码。在改变密码对话框中勾选加锁图标来获取密码助手。要确保记住你修

改后的密码,并且不要随便写下你的密码。另外,钥保证你的电脑的物理安全,防止未授权的人员使用你

的电脑。

像其他重要的数据一样,你最好将签名标识备份到一个安全的地方。你可以将其放到其他机器的keychain

中,或者以个人信息替换文件( Personal Information Exchange (.p12) file )的方式存到一张加密的CD

或者加密的硬盘镜像中。确认你所使用的密码都是健壮的,并且拥有签名许可的电脑的物理安全(尽量不

要允许未信任的人员使用他们)。(点击查看如何实现Iphone代码签名)

2.5.2 Iphone下的IAP

IAP,英文全称In-App Purchase,是指在iPhone App中出现的“软件内付费内容”。 如果你的Iphone没有

破解,那么你想使用大部分软件的时候,就必须付费来获取软件的使用权。所以这种方法个人感觉是比较

不错的。苹果的这种商业模式是值得我们学习借鉴的。

IAP的特点如下:

 IAP使得用户无需离开软件,便可无缝升级软件功能或扩充内容。

 IAP支持付费后下载,所以可以有效的防止盗版。

 开发者无需额外推出试玩版本游戏,直接在免费版本中加入IAP,允许用户付费升级即可,节约开发成

本。

 开发者可以无限推出某个App的内容扩展,同时保证持续的收入。