我最近的任务是使用“政府批准的协议”(政府是美国)编写一个“安全消息传递应用程序”的研究项目。我认为这是指非对称加密和政府批准的加密算法,AKA FIPS 140(-1?) 和散列 (FIPS 180-x)。
某些 Android 设备(例如 Galaxy S4 和 HTC One)被宣传为通过 FIPS 认证。
应用程序级代码是否可以利用这些设备上的认证实现?例如,如果我使用标准的 Android/Java API 打开 HTTPS 连接或生成 SHA256 哈希,这些调用是否会通过 FIPS 认证的实现来完成?
如果是这样:
- 这意味着他们已经替换了默认的 android JCE 提供程序,对吗?
- 有什么方法可以确定 FIPS 认证的 JCE 是否可用?
如果不:
- 为了制作一个 FIPS 可认证的应用程序,至少需要使用 JNI 调用FIPS 认证的 OpenSSL 实现,或者替代纯 Java JCE 提供程序,对吗?(在创建自定义实现之外)
- 假设使用 FIPS 认证的 OpenSSL 实现,这意味着任何安全网络调用(例如 HTTPS)都必须在调用 OpenSSL 实现的本机代码 (C) 中完成,或者使用 JNI 调用 OpenSSL 库?那会显得非常麻烦。
- 是否有任何 FIPS 认证的纯 Java JCE 提供程序可以与 Android 一起使用?开源或合理低成本的首选。我查看了列表,但很难说出开发人员可以在应用程序中获得和使用的东西,而不是 OEM。跳出来的两个是 RSA 的 Jsafe 和 IBM 的 JCE。RSA 是唯一一个似乎在 Android 上获得认证的产品,但我发现它的价格超过 200,000 美元,这对于小型研究项目来说太贵了。但是假设它在那里并且可以工作,我也许可以使用相同的算法继续使用像Spongy Castle这样的东西,并且希望只是改变提供者就可以工作(例如,如果有人想买单。)