即使这可能不再让您担心,其他人也可能会发现它很有用。我在这里关注蚊子man page http://mosquitto.org/man/mosquitto-conf-5.html.
有两个配置文件,一个是通用配置文件mosquitto.conf
,以及一个 ACL(访问控制列表),比如说acl.conf
.
mosquitto.conf
使acl.conf
访问控制文件:
acl_file acl.conf
acl.conf
定义访问控制行为:
# users can anonymously publish to the topic 'in'
topic write in
# users can subscribe topics named 'out/%u', where %u is the user's name
pattern read out/%u
# an admin may subscribe to 'in'
# and publish to all subtopics of 'out/' (note the +)
user adminWithSecretName
topic read in
topic write out/+
我们执行mosquitto -c mosquitto.conf
使用配置文件运行 mosquitto。
在这种情况下,可以利用随机生成的用户名建立动态认证机制。
Example:Alice 想要订阅,以便她可以在这里阅读私人消息。她将凭证与随机数一起发送N1
to in
。此外,她还订阅了这个话题out/N1
, using N1
作为用户名。图案read out/%u
允许这样做。
第三方服务器应用程序,连接为adminWithSecretName
并订阅了该主题in
收到爱丽丝的消息。它验证其真实性,然后生成一个新的随机数N2
并将其发布到out/N1
Alice 已订阅的地方。
从现在开始——至少在这届会议上——out/N2
是 Alice 各自的设备将接收消息的常规主题。因此,Alice 取消订阅并断开表单out/N1
并订阅out/N2
。第三方服务器应用程序将属于 Alice 的所有新消息发布到主题out/N2
.
进一步考虑:人们可能还想反思安全性的其他方面,例如 TLS 和/或每条消息加密。根据目标安全/隐私的等级,此处讨论的配置可能还需要 TLS。
另一方面,如果消息单独加密,则这可能会过时。 Eve 说,如果她有权访问有线/WiFi 流,她就可以拦截(甚至订阅!)消息,因为她会看到纯文本形式的秘密用户名。但是:当一个人已经可以访问数据流时,他/她无论如何都可以拦截字节。它们可以使用 TLS 或按消息加密的方式进行加密。还,流量分析 https://en.wikipedia.org/wiki/Traffic_analysis可以应用于这两种方法。
我建议使用 TLS 或按消息加密。正确实施和应用两者都应该带来可比的安全性。