在公开的javaee-rest端点上进行M2M身份验证



我必须设计和实现一个能够与其他应用程序通信的javaEE应用程序。所谓通信,我的意思是应用程序向我发送敏感数据,我再发回其他敏感数据,所以我必须加密和解密互联网上传输的所有数据。

让我给你看一个小例子:

我的服务器有一个外部端点:@POST/userData

许多应用程序都会调用此端点。它提供了有关用户的所有数据。

我必须确定,要求提供这些信息的应用程序被授权获取这些数据。

我的问题:如果使用我公开的rest端点向我的应用程序请求信息的应用程序是经过身份验证的应用程序,那么识别该应用程序的良好做法是什么。

如果正确的方法是用密钥加密数据,我如何将正确的密钥提供给其他应用程序。

如果我对这一切一无所知,请告诉我应该如何设计。

谢谢。

对于物联网设备来说,在设备级别而不是应用程序级别执行类似操作的通常方法是使用公钥/私钥对。

网上有很多关于这些概念的好信息——你会听到很多关于"鲍勃"one_answers"爱丽丝"以及他们的秘密信息交流:https://en.wikipedia.org/wiki/Public-key_cryptography

对于物联网设备,私钥安装或配置在设备上,并与该设备唯一关联。

公钥允许服务器或控制方验证来自该物联网设备的消息(用其私钥签名(是否真的来自该设备。

有相当多的服务可以让你管理密钥和证书或物联网设备,包括来自谷歌和AWS的:

  • https://aws.amazon.com/blogs/iot/understanding-the-aws-iot-security-model/
  • https://cloud.google.com/iot/docs/how-tos/credentials/keys

对于您的用例,特别是如果您的应用程序是设备上唯一的应用程序并与设备绑定,那么可能最容易利用如上所述的设备密钥。

如果您无法利用唯一的设备ID,那么您通常会希望在应用程序本身中实现相同类型的公私密钥对。

在这种情况下,私钥将与应用程序相关联,并与应用程序一起分发。为了避免攻击者对私钥进行反向工程,通常会使用某种形式的模糊处理或"白盒"加密来隐藏私钥。

相关内容

  • 没有找到相关文章

最新更新