Abstract
There are various means of providing dependability, one of which is fault removal and debugging is one popular example of a fault removal technique. During debugging, the system is executed, and execution data is collected, to be analysed later, to determine if the execution has satisfied the system specification. In a distributed system, the data collection is done centrally via a monitor, and the assumption typically is that all the nodes are correct. However, in open distributed systems such as the Internet of Things (IoT), there is no central authority to enforce this assumption and nodes may behave arbitrarily by violating protocol steps, making processes such as debugging very challenging. We call the data collection process for such processes auditing and a program that reliably records such data as being auditable.
In this context, we make the following novel contributions towards auditability enforcement: (i) we define the auditability problem and (ii) identify a necessary condition for a program to be auditable. We then provide examples of auditable programs. Subsequently, (iii) we show an impossibility result for strong auditability. To circumvent this impossibility, we study a weaker problem and discuss the ramifications of certain implementations. Finally, we show that auditability is at least as difficult as the problem of fair exchange. This is the first formal work towards the design of reliable systems through audibility.