【问题标题】:password encryption in iphone appsiPhone应用程序中的密码加密
【发布时间】:2010-09-16 10:30:25
【问题描述】:

我需要将用户密码存储在我的 iphone 应用程序中。

在将应用发布到应用商店时,我必须告诉 Apple 应用中是否存在用于导出目的的加密。

我不希望我的应用仅限于美国,但我也不希望以明文形式通过网络存储或发送密码。

所以基本上问题是,我能否以一种不会限制我的应用程序的方式加密密码?

【问题讨论】:

    标签: iphone encryption


    【解决方案1】:

    首先,如果用户名和密码在手机上进行了加密和解密,那么解密密钥显然也在手机上,几乎一文不值。我不会担心在手机上存储加密的用户名和密码。

    为了安全通信,您应该使用 SSL,它可能位于手机上的库中。如果您使用的库是手机操作系统的一部分,我认为这并不意味着您的应用“包含加密”。

    当然,我不是律师。谁知道呢——法律可能会认为“猪拉丁语”是一种有效的加密技术。

    【讨论】:

      【解决方案2】:

      看起来提供的 crypt() 函数可用于密码:

      此库 (FreeSec 1.0) 是在美国以外开发的,作为美国唯一的 libcrypt 加密库的无阻碍替代品。链接到 crypt() 接口的程序只能从美国导出,前提是它们仅将 crypt() 用于身份验证目的,并避免使用上面列出的其他程序员接口。库中特别注意了只使用 crypt() 接口的程序不会拉入其他组件。

      (来自 crypt(3) 的 iphone 文档)

      【讨论】:

      • 如果他们仅将 crypt() 用于身份验证目的...我不相信您正确阅读了手册页。身份验证不是加密。身份验证从未受到限制(IIRC) - 仅加密。例如,一个大而胖的 RSA 模数:如果用于 RSA 签名,没问题。使用相同的大模数进行加密,您必须遵守出口法规。顺便说一句,如果你有一个使用 63 位密钥的对称密码,你就可以了。对于 64 位,您需要联系商务部获取许可证 - 请参阅 bis.doc.gov/encryption/massmarket_keys64bitsnup.html
      【解决方案3】:

      只需将密码存储在钥匙串中即可。它是苹果提供的系统API,你不必知道任何关于加密的事情。 Apple 发布它,是他们确保系统框架的出口合规性的责任。如果他们在禁止的任何地方出售设备,他们可能会使用较弱(或不使用)加密,但如果您使用可用的 API,您将不会在二进制文件中发送任何出口限制加密代码,并且您可以被解释的唯一方式因为这样做意味着 Apple 会随每部 iPhone 一起发货。

      话虽如此,我不是律师,如果您担心,我建议您咨询。没有多少其他程序员的建议与根本上的法律问题特别相关。

      【讨论】:

      • 我问过使用钥匙串是否意味着必须在去年的技术谈话中声明您使用加密,答案是“我们不知道”
      猜你喜欢
      • 1970-01-01
      • 2011-02-22
      • 2011-10-27
      • 2010-10-06
      • 1970-01-01
      • 2015-12-07
      • 2015-11-29
      • 1970-01-01
      相关资源
      最近更新 更多