仅对真正的可执行文件进行数字签名,而不对覆盖/附加数据进行数字签名

问题描述

我想对可执行文件进行数字签名。到此为止,这听起来都是微不足道的。是否有可能使可执行文件的一部分成为“可配置的”,而又不会失去数字签名的有效性?

例如,安装程序通常将数据存储在叠加层中。在他们的情况下,完全可以接受,并且要求将覆盖层包括在数字签名的计算中。

但是对于我来说,我很好奇是否有某种用例,例如,当我签署文件然后在结尾之后追加APPEND时再使用。我不会修改任何已签名的字节,而只是添加几个字节。据我所知,它还会使数字签名无效。

我问的完全是故意的并且不可能做到的吗?或者是否存在任何隐藏的开关或我不知道的东西?

解决方法

来自specification

创建一个名为FILE_SIZE的值,该值不属于签名。将此值设置为从基础文件系统获取的图像文件大小。如果FILE_SIZE大于SUM_OF_BYTES_HASHED,则文件包含必须添加到哈希中的额外数据。