适用于 Java 的 USB 软件保护加密狗,带有一个“真正”跨平台的 SDK。它存在吗?
Posted
技术标签:
【中文标题】适用于 Java 的 USB 软件保护加密狗,带有一个“真正”跨平台的 SDK。它存在吗?【英文标题】:USB software protection dongle for Java with an SDK which is cross-platform "for real". Does it exist? 【发布时间】:2012-02-12 14:08:33 【问题描述】:我想问的是,是否有人知道用于软件保护的硬件 USB 加密狗,它为跨平台 Java 部署提供了非常完整的开箱即用 API 支持。
它的 SDK 应该提供一个 jar(每个操作系统和位数只有一个,而不是一个不同的库)准备作为库添加到一个人的项目中。
jar 应包含各种操作系统和位数的所有本机内容 从应用程序的角度来看,应该继续编写(api 调用)一次并在任何地方运行,而不必关心最终用户将在哪里运行该软件 提供的 jar 应该自己处理加载适当的本机库这样的事情存在吗?
到目前为止,我已经尝试了不同的 API 和编译库,用于 win32、linux32、win64、linux64 等(或者你甚至必须在目标机器上自己编译东西),但是嘿,我们是在这里做 Java,我们不知道(也不关心)程序会在哪里运行!
我们不能指望最终用户成为软件工程师,调整(并破坏!)它的 linux 服务器、链接库、弄乱 gcc、乱扔文件系统等等......
总的来说,Java 支持(以透明的跨平台方式)对于我目前评估过的加密狗 SDK(例如 KeyLok 和 SecuTech 的 UniKey)来说非常糟糕。 我什至购买了(没有可用的免费评估套件)SecureMetric SDK 和加密狗(根据营销材料,它们应该是“soooo”直接集成的:\),它们是有史以来最糟糕的:SecureDongle X 不支持 64 位,而 SecureDongle SD 是根本不是跨平台的。
那么,有没有人经历过这个并找到了用于跨平台部署的终极 Java 安全 USB 加密狗?
注意:软件是小批量、高价值的;应用程序处于离线状态(无法访问 Internet 的 Intranet),因此没有在线激活替代方案等。
-- 编辑
试用了 HASP 加密狗(以前称为“Aladdin”),并将它们添加到禁止清单:这里也没有开箱即用(out-of-the-jar)支持:例如end-linux-user 必须手动将 .so 库(适当位数的特定文件)放在他的文件系统上的正确位置,然后导出一个 env。相应地变化。
【问题讨论】:
问:是否假定最终用户已经安装了 JRE,或者(特定于平台的)JRE 必须在 USB 加密狗上? 嗨@paulsm4,感谢您的评论。我依赖安装在系统上的 JRE。还要考虑到带有闪存的加密狗的单位成本往往比更简单的加密狗(通常允许几百字节的数据存储)高得多。 “软件保护”是一场艰苦的战斗:调试器、虚拟机等存在。任何方案最终都会被破解,尤其是当价值很高时。这就是为什么例如Oracle DB 不提供复杂的(如果有的话)复制保护。如果您无法提供依赖的在线服务器,您可以尝试提供离线服务器:交付一台安装了您的应用程序的完整计算机,例如 Google 搜索设备。这也消除了平台兼容性的问题:) @9000 我喜欢你的“如果你不能提供一个可以依赖的在线服务器,你可以尝试提供一个离线服务器:发送一台安装了你的应用程序的完整计算机,a la谷歌搜索设备。”的建议,但不幸的是它不适用于我的情况... [...除非我找到一台 50 欧元的插电式计算机,其硬件能力是当今最好的插电式计算机的两倍] @UnaiVivi 您可能会查看 GumStix。不到 50 欧元,但仍然值得研究。 【参考方案1】:完全免责声明:我为 company 工作,该公司制作软件保护加密狗 (CodeMeter)。但我相信我们可能有一个满足您要求的解决方案:我们有一个适用于所有平台(Win、Mac、Linux 等 32 位和 64 位)的单一 API。每台最终用户机器只需要一个运行时(Windows 上的服务;Linux 上的守护程序)。我们使用原生 Java API,它使用 TCP/IP 来调用我们的运行时,因此不需要特殊的设备驱动程序。您可以在发送加密狗之前进行激活(预编程),或通过文件交换 (NikeNet) 在无法访问 Internet 的部署中进行,或者您可以移除加密狗,将其带到具有 Internet 连接的机器上并更新那里的许可证。
我们拥有比 API 更高的 AxProtector,它是一种自动保护/加密工具,您可以使用它来测试我们的保护系统,而无需更改源代码。这将使您可以在您感兴趣的所有平台上测试实现——您无需为不同的平台创建多个版本。
我们曾让一家财富 100 强公司使用它来保护在非英特尔 Solaris 上运行的 Java 应用程序,因此我们知道它已作为跨平台解决方案进行了压力测试。
我们有一个免费的全功能评估系统,我们可以尽快为您服务。如果您通过我个人资料中的电子邮件地址向我发送电子邮件,我们可以向您发送一个 SDK,并帮助您快速确定这是否能解决您的问题。
【讨论】:
感谢您的发帖:我对通过 TCP 调用调用运行时二进制文件的智能解决方案感到惊喜(大多数竞争加密狗让您难以通过直接 USB 通信),我一直在想有一段时间,如果某家公司真的提供了。我对评估 Wibu 加密狗很感兴趣,但我在你的个人资料上看不到你的电子邮件(我认为只能在他自己的个人资料上看到他自己的邮件):你能在评论中透露吗? (或向我提供其他联系方式) 你好乌奈;你可以给我发电子邮件:wibu.us 的 john dot browne 我得到了评估套件:最后,在尝试了 8 家相互竞争的加密狗公司之后,我找到了一个完全符合我需要(即我在问题中提出的问题)的公司! 重要提示我忘了提及:Wibu 的 CodeMeter 加密狗比竞争对手贵 MUCH:67,60 欧元/加密狗,而另一个 5,90 美元/加密狗公司的加密狗。这几乎是 16 倍!【参考方案2】:您可以使用Dinkey Pro dongles 来实现这一点。虽然他们确实为每个操作系统和架构使用单独的本地库,但您只需要调用他们的 Java API,它就会处理任何特定于平台的位。使用 .class(API)将库包装在一个 JAR 文件中,您就有了一个简洁的解决方案。加密狗本身是无人驾驶的。
【讨论】:
当我从我的代码中调用他们的 API 时,他们的类是否会检测我们正在运行的操作系统和位并自动调用适当的本机库? 是的,它会自动处理这些【参考方案3】:我只能建议避免使用 SecuTech UniKey 系统。在评估过程中,产品满足了我们需要的所有要求。我们开始整合这个解决方案,发现一个接一个的问题。 以下是 SDK 6.2.7 中主要问题的简短列表:
-
在保存和加载相同的解决方案时,信封设置会随机更改 (Video)。
使用信封包装的 DLL 文件无法加载。
基于脚本的构建的信封控制台版本不起作用。它无法打包可以使用基于 GUI 的封装器版本打包的 exe/dll。
支持是被动的,但并不能真正解决问题。
毕竟我们浪费了将近一个月的时间来集成这个保护系统,但现在由于大量的质量问题不得不切换。
【讨论】:
以上是关于适用于 Java 的 USB 软件保护加密狗,带有一个“真正”跨平台的 SDK。它存在吗?的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Windows 8 应用商店 Web 资源的 Worklight 加密
如何在带有USB 4.0 BLE Dongle的Windows桌面上使用TI Sensortag