Protocol buffers 将部分数据取出的协议有多安全?
在没有任何加密的情况下,如果收件人拥有序列化的Protobuf文件,但没有生成的Protobuf类(他们无权访问定义其结构的.proto文件),他们是否可以从二进制文件中获取Protobuf文件中的任何数据Protocol buffers 将部分数据取出的协议有多安全?,protocol-buffers,Protocol Buffers,在没有任何加密的情况下,如果收件人拥有序列化的Protobuf文件,但没有生成的Protobuf类(他们无权访问定义其结构的.proto文件),他们是否可以从二进制文件中获取Protobuf文件中的任何数据 如果他们可以访问.proto文件的一部分(例如,文件中只有一条相关的消息),他们可以从整个文件中获取该数据的一部分,同时跳过其他未知部分吗 是的,绝对是;protoc工具可以帮助实现这一点(请参阅:--decode\u raw),因为它可以-所以它不应该被视为“安全的” 是的,绝对是-这是协
消息
),他们可以从整个文件中获取该数据的一部分,同时跳过其他未知部分吗protoc
工具可以帮助实现这一点(请参阅:--decode\u raw
),因为它可以-所以它不应该被视为“安全的”protobuf不是安全设备;对于使用正确工具的人来说,它的可读性与xml或json一样,只是有一个小问题,即它可能无法确定如何解释某些值;但是:你可以推断、猜测和逆向工程好的,我找到了这一页 该消息丢弃所有名称,只是一对密钥号和值。生成的类可能会为安全读取这些数据提供一些保护,并且无法读取未知数据。(确实如此,因为生成的类是从已知结构,
.proto
文件生成的)
但如果我是攻击者,我可以引用该编码页,并尝试找出二进制文件中的哪个区域对应于哪个数据。例如,在更改某些数据后,varint可能很容易发现。然后继续编写我自己的.proto
文件来攻击这些未知数据,甚至是可以选择性地读取部分二进制文件的自定义二进制读取器。不需要“自定义”二进制读取器-许多库(包括谷歌库)都包括理解字段标题的流读取器等,这些库都允许这样做