如何确定我的应用程序是否包含加密?

27
在将我的iOS应用程序部署到TestFlight后,苹果要求我填写"导出合规信息",包括以下问题:
Does your app use encryption? 
Select Yes even if your app only uses the 
standard encryption within Apple’s operating system.

我在StackOverflow上搜索了一下答案,但我的情况有些特殊,还没有找到清晰的答案。

  1. 我正在使用https连接到服务器。
  2. 我正在使用苹果Keychain存储用户凭证。
  3. 我在后端使用加密来加密/解密秘密文件,并在我的应用程序进行https请求时发送解密后的内容作为响应(因此对于这种情况,我的应用程序不直接使用加密)。

我假设第一个问题的答案是肯定的。毫无疑问,因为苹果Keychain本身就使用加密。

如果我选择yes,我会进入下一个问题:

Does your app qualify for any of the exemptions provided in Category 5,
Part 2 of the U.S. Export Administration Regulations?


Make sure that your app meets the criteria of the exemption listed below. 
You are responsible for the proper classification of your product. 
Incorrectly classifying your app may lead to you being in violation of 
U.S. export laws and could make you subject to penalties, 
including your app being removed from the App Store.

You can select Yes for this question if the encryption of your app is:
(a) Specially designed for medical end-use
(b) Limited to intellectual property and copyright protection
(c) Limited to authentication, digital signature, or the decryption of data or files
(d) Specially designed and limited for banking use or “money transactions”; or
(e) Limited to “fixed” data compression or coding techniques

You can also select Yes if your app meets the descriptions provided in Note 4 for Category 5, Part 2 of the U.S. Export Administration Regulations.

我假设我的应用程序是c))

(c) Limited to authentication, digital signature, or the decryption of data or files
因此,答案也是肯定的。但我不确定,希望知道您的意见,最好附上简短的解释。
谢谢。
PS:我包括一些有用的链接,这些链接对我提交自我分类报告有所帮助: https://kitefaster.com/2017/08/10/encryption-export-compliance-ios-apps https://simonfairbairn.com/bis-year-end-self-classification-report

如果您使用https,您的应用程序绝对不仅限于身份验证、数字签名或数据解密,因为https显然也加密数据。 - President James K. Polk
1
@JamesReinstateMonicaPolk 你好,根据这个回答:https://dev59.com/MHI95IYBdhLWcg3w1BlN#16080233 - 自2016年9月底起,使用HTTPS不再受ERN(出口合规信息)的限制,所以我可能会完全忽略这一点。据我理解,https与这些问题无关。但如果我错了,请纠正我。谢谢。 - meerkat
2个回答

21

关于 TestFlight 应用程序的规则与“真正”的 App Store 发布略有不同,但流程基本相似。

正如您所说,第一个问题是“您的应用程序是否使用加密?”

在这里,即使您的应用程序仅使用 iOS 和 macOS / XCode 中的标准加密,也应选择“是”。

基本上:

在此情况下,加密使用包括但不限于以下内容:

  • 通过安全通道进行呼叫(例如 HTTPS、SSL 等)。
  • 使用标准加密算法。
  • 使用来自其他来源(如 iOS 或 macOS)的加密功能。
  • 使用专有或非标准加密算法。

美国政府将“非标准密码学”定义为涉及纳入或使用专有或未公开的密码功能的“密码学”的任何实现,包括尚未获得正式认可的国际标准主体批准或采纳的加密算法或协议。

您的应用程序是否符合《美国出口管理条例》第 5 类第 2 部分中提供的任何豁免?

正如您所说,如果您不使用任何专有或非标准算法,则选项 C 最常适用且是正确的选择。

顺便提一句,这是他们提到的“第 5 类注释 4”的链接。

当您将应用程序的最终版本提交到实际的 App Store 时,您将需要在 App Store Connect 中再次回答这些问题。

确定您的出口合规要求,等等...

基本上,您可以在以下情况下回答是:

Select "Yes" for this question if the encryption of your app is:

    a. Specially designed for medical end-use
    b. Limited to intellectual property and copyright protection
    c. Limited to authentication, digital signature, or the decryption of data or files
    d. Specially designed and limited for banking use or “money transactions”; or
    e. Limited to “fixed” data compression or coding techniques 

通常情况下,只要您通过了内部测试等步骤,从这里开始就没有问题了。在导出/分配到应用商店时,请按照提示操作。

记得更新您的构建的Xcode设置。

顺便提一下:如果有疑问,请咨询律师以获取法律指导!这仅是我对该流程的理解。


是的。这正是我所想的。(我的观点是)我必须每年提交自我分类报告 - https://help.apple.com/app-store-connect/#/devc3f64248f - 至少针对以下一点:您的应用程序使用仅限于苹果操作系统规定的加密。直接向美国工业安全局(BIS)提交自我分类报告。同时受到以下启发:https://medium.com/@cossacklabs/apple-export-regulations-on-crypto-6306380682e1 - meerkat

4

这是来自苹果公司关于遵守加密出口法规的文章

通常情况下,操作系统内置的加密使用——例如,当您的应用程序使用URLSession进行HTTPS连接时——不需要提供出口文件上传要求,而使用专有加密则不然。要确定您的加密使用是否被视为豁免,请参阅确定您的出口合规要求。

我注意到这段引文中的一个重要事项是术语“专有”以及HTTPS现在已经豁免监管。我认为这也意味着钥匙串也不应被包括在此类监管范围内,因为据我所知,它是公共加密。

但我非常担心您在应用程序后端使用的加密是否安全,因为它可能被视为专有,并且可能被视为您的应用程序的扩展而不是单独的实体。从历史上看,苹果非常愿意取下他们认为没有遵循指南的应用程序。这里有一个很好的Stack Overflow问题和一个Reddit链接,您应该仔细阅读以确保安全,Stack Overflow答案似乎非常详细。 Stack OverflowReddit

很抱歉我无法帮助您解决有关后端加密的第三个问题。我希望您可以找到一些我提供的链接中没有看到的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接