我将从提供一些背景和要求开始,所以请耐心等待。
我正在开发一个允许用户交换一些信息的应用程序 - 为简单起见,我们假设一个20个字符的字符串。只有当用户彼此靠近时(通过NFC,蓝牙或WiFi)才能交换信息。
我想做的是每当约翰史密斯给我发送字符串时,我希望我的应用程序能够识别它确实是约翰史密斯(即他的帐户)。 John Smith可能在不同的设备上使用此帐户,因此我对设备ID不感兴趣。
但是这里有一个问题:我可能从来没有见过John Smith,但我的应用仍然需要认出他。这就是我被困的地方。约翰史密斯的应用程序有什么可能让我唯一地识别他(并阻止我冒充他*)?
问题:如何唯一识别此(Android)用户(无法模仿他)?
*这很重要。如果John Smith发送了他的私人标识符,那么我可以创建一个等待该ID的恶意应用程序。我想尽可能地防止这种情况。约翰史密斯应该能够发送20个字符的字符串来完成陌生人。如果他们知道字符串来自John Smith,只要他们不能冒充他就好了。
LE:我对各种建议持开放态度。我的主要愿望是让用户直接,快速,轻松地保持流程。请随时提出您的想法。答案 0 :(得分:0)
这可能是非对称加密的应用程序。 John Smith可以创建公钥/私钥对,并使用私钥对他的所有通信进行签名。请注意,这种方法仍有一些缺点。首先,它并不能确切地证明消息的发送者是John Smith;它证明了邮件的发件人可以访问John Smith的私钥。所以它取决于密钥的安全性。其次,根据您的应用程序,可能需要验证发布公钥的第一个人并且说“我是John Smith"真的是约翰史密斯。您通常会通过面对面联系或其他一些相对可信的侧面频道(如电话)进行此操作。第三,消息的接收者需要一种方法来验证您是否已经认证了John Smith的身份,因此您需要使用自己的私钥签署John Smith的公钥,并将您的公钥嵌入到应用