Software Fingerprinting in LLVM

Software Fingerprinting in LLVM
复制标题

DOI:
--
复制
发表时间:
2021
期刊:
--
影响因子:
--
通讯作者:
W. Mahoney;Gregory Hoff;J. McDonald;George Grispos
W. Mahoney;Gregory Hoff;J. McDonald;George Grispos
中科院分区:
其他
文献类型:
--
作者:
W. Mahoney;Gregory Hoff;J. McDonald;George Grispos

文献摘要

相似文献

可执行隐写术,将软件机器代码隐藏在较大的程序中,是引入新的软件保护结构(如水印或指纹)的潜在方法。因此,软件指纹识别是一个类似于隐写术的过程,将数据隐藏在其他数据中。指纹识别的目的是将一个唯一的秘密消息(如序列号)隐藏到可执行程序的副本中,以提供该程序的所有权证明。指纹是水印的一种特殊情况,不同之处在于每个指纹对于程序的每个副本都是唯一的。传统上,研究人员描述了软件指纹应该实现的四个目标。这些包括指纹应该难以去除,不应该很明显,应该具有低误报率,并且对性能的影响可以忽略不计。在这项研究中,我们建议扩展这些目标,并引入第五个目标:软件指纹应该是机器独立的。因此,无论用于执行程序的架构如何,都可以使用相同的指纹识别方法。因此,本文提出了一种实现可执行程序的机器无关指纹的方法。在软件编译过程中,我们利用低级虚拟机(LLVM)的中间表示来演示一个简单的静态指纹方法以及一个动态的方法,这显示了我们的目标,硬件无关的指纹。研究贡献包括使用LLVM基础设施的方法的实现,并提供了一个简单的静态和动态水印的概念证明是架构中立的。
: Executable steganography, the hiding of software machine code inside of a larger program, is a potential approach to introduce new software protection constructs such as watermarks or fingerprints. Software fingerprinting is, therefore, a process similar to steganography, hiding data within other data. The goal of fingerprinting is to hide a unique secret message, such as a serial number, into copies of an executable program in order to provide proof of ownership of that program. Fingerprints are a special case of watermarks, with the difference being that each fingerprint is unique to each copy of a program. Traditionally, researchers describe four aims that a software fingerprint should achieve. These include the fingerprint should be difficult to remove, it should not be obvious, it should have a low false positive rate, and it should have negligible impact on performance. In this research, we propose to extend these objectives and introduce a fifth aim: that software fingerprints should be machine independent . As a result, the same fingerprinting method can be used regardless of the architecture used to execute the program. Hence, this paper presents an approach towards the realization of machine-independent fingerprinting of executable programs. We make use of Low-Level Virtual Machine (LLVM) intermediate representation during the software compilation process to demonstrate both a simple static fingerprinting method as well as a dynamic method, which displays our aim of hardware independent fingerprinting. The research contribution includes a realization of the approach using the LLVM infrastructure and provides a proof of concept for both simple static and dynamic watermarks that are architecture neutral.