Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Protocol buffers 将部分数据取出的协议有多安全?_Protocol Buffers - Fatal编程技术网

Protocol buffers 将部分数据取出的协议有多安全?

Protocol buffers 将部分数据取出的协议有多安全?,protocol-buffers,Protocol Buffers,在没有任何加密的情况下,如果收件人拥有序列化的Protobuf文件,但没有生成的Protobuf类(他们无权访问定义其结构的.proto文件),他们是否可以从二进制文件中获取Protobuf文件中的任何数据 如果他们可以访问.proto文件的一部分(例如,文件中只有一条相关的消息),他们可以从整个文件中获取该数据的一部分,同时跳过其他未知部分吗 是的,绝对是;protoc工具可以帮助实现这一点(请参阅:--decode\u raw),因为它可以-所以它不应该被视为“安全的” 是的,绝对是-这是协

在没有任何加密的情况下,如果收件人拥有序列化的Protobuf文件,但没有生成的Protobuf类(他们无权访问定义其结构的.proto文件),他们是否可以从二进制文件中获取Protobuf文件中的任何数据

  • 如果他们可以访问.proto文件的一部分(例如,文件中只有一条相关的
    消息
    ),他们可以从整个文件中获取该数据的一部分,同时跳过其他未知部分吗

  • 是的,绝对是;
    protoc
    工具可以帮助实现这一点(请参阅:
    --decode\u raw
    ),因为它可以-所以它不应该被视为“安全的”
  • 是的,绝对是-这是协议中内置的一个关键部分,它允许消息进行扩展,以便它们可以解码它们理解的位,忽略或仅存储(对于往返或“扩展”字段)它们不理解的位

  • protobuf不是安全设备;对于使用正确工具的人来说,它的可读性与xml或json一样,只是有一个小问题,即它可能无法确定如何解释某些值;但是:你可以推断、猜测和逆向工程

    好的,我找到了这一页

    该消息丢弃所有名称,只是一对密钥号和值。生成的类可能会为安全读取这些数据提供一些保护,并且无法读取未知数据。(确实如此,因为生成的类是从已知结构,
    .proto
    文件生成的)

    但如果我是攻击者,我可以引用该编码页,并尝试找出二进制文件中的哪个区域对应于哪个数据。例如,在更改某些数据后,varint可能很容易发现。然后继续编写我自己的
    .proto
    文件来攻击这些未知数据,甚至是可以选择性地读取部分二进制文件的自定义二进制读取器。

    不需要“自定义”二进制读取器-许多库(包括谷歌库)都包括理解字段标题的流读取器等,这些库都允许这样做