我正在为 Android/Java 开发应用程序。应用程序是一种密码管理器,因此我将加密密码存储在主密码的底层。加密算法有DES/AES/BlowFish/TwoFish等多种。我的目的是开发没有商业版权问题的应用程序。所以问题是:
- 如果我将使用内置的 Java 加密 API(例如 DES/AES)——这是否意味着我将不受 DES/AES 类似版权所有者的可能商业利益的影响?
任何其他想法,含义也会有所帮助。
我正在为 Android/Java 开发应用程序。应用程序是一种密码管理器,因此我将加密密码存储在主密码的底层。加密算法有DES/AES/BlowFish/TwoFish等多种。我的目的是开发没有商业版权问题的应用程序。所以问题是:
任何其他想法,含义也会有所帮助。
算法没有版权。算法就像想法;适用于他们的知识产权是专利,而不是版权。有一些密码算法获得了专利,但大多数都没有,有些曾经获得专利(但专利最终会过期)。DES、AES、Blowfish 或 Twofish 均未获得专利。获得专利的对称加密系统的一个例子是 IDEA(美国专利将于 2012 年到期)。RSA 算法(非对称加密和数字签名)获得了专利,但该专利在十年前就到期了。基本上,如果通过已安装的 Java VM 提供加密算法,那么它可能没有获得专利(不再获得专利,或者根本没有)。
实现上可能有版权。使用已经存在的实现不受版权的影响(它是版权,而不是使用权)。当您在应用程序中包含外部代码时,您必须担心版权问题,而不是当您使用已安装的 Java VM 通过其发布的 API 提供的外部代码时。
软件系统可以通过许可证进一步控制。可以想象一个特定的许可证,它根据使用上下文或任意条件禁止使用某些软件。可以想象这样一种用于实施加密算法的软件许可证。这将是使用您的软件的人的问题,而不是您的问题。Java VM 许可证是适用于此的许可证。但是,据我所知,Java VM 组件没有使用限制,无论它们是否加密。VM 供应商通常不希望限制其 API 的使用。
当地法律可能适用,尤其是在加密问题上。根据国家/地区的不同,法律可能会限制使用加密算法的软件的使用、分发、出口和/或进口。Java VM(至少是 Sun/Oracle 的那个)包括一个相对复杂的权限和安全规则系统,它决定了哪些算法可用,以及使用哪些密钥长度。因此,可以假设 VM 向应用程序提供的任何算法都已经针对密钥长度进行了调整,以符合当地法律。在某些情况下总会有例外(如果你是一名朝鲜特工,正在南达科他州某处努力制造核弹,那么使用加密算法,即使由安装的 Java VM 合法提供,也可能意味着额外的几年联邦调查局抓到你时入狱)。
总结:使用 Java VM 提供的加密算法无需担心与知识产权相关的问题。您应该询问有关加密软件分发和出口的规定。您可以从有关加密导出和导入的维基百科页面开始。
Android 平台包括 Legion of the Bouncy Castle 加密库,您可以使用它,然后您自己不会分发任何加密 - 授权 Bouncy Castle 代码进行分发由开放手机联盟处理。请注意,仍然可能存在出口限制——例如,在美国使用加密的产品,即使它本身不包含加密算法,仍然是 EAR 下的受控产品。
它是像勾股定理一样的公共领域。发疯。
例如,来自 Blowfish.h,即使是加密库也可能是无版权的:
- 该库可免费用于商业和非商业用途,只要
- 满足以下条件。以下条件
- 适用于此发行版中的所有代码,无论是 RC4、RSA、
- lhash、DES等,代码;不仅仅是 SSL 代码。SSL 文档
- 包含在此分发中的受相同版权条款的保护
- 除了持有人是 Tim Hudson (tjh@mincom.oz.au)。
算法本身只是数学:-)