Computational geometry: an introduction
Computational geometry: an introduction
Design & analysis of fault tolerant digital systems
Design & analysis of fault tolerant digital systems
Designing programs that check their work
STOC '89 Proceedings of the twenty-first annual ACM symposium on Theory of computing
Introduction to algorithms
Self-testing/correcting with applications to numerical problems
STOC '90 Proceedings of the twenty-second annual ACM symposium on Theory of computing
Coherent functions and program checkers
STOC '90 Proceedings of the twenty-second annual ACM symposium on Theory of computing
Checking computations in polylogarithmic time
STOC '91 Proceedings of the twenty-third annual ACM symposium on Theory of computing
Self-testing/correcting for polynomials and for approximate functions
STOC '91 Proceedings of the twenty-third annual ACM symposium on Theory of computing
Checking the correctness of memories
SFCS '91 Proceedings of the 32nd annual symposium on Foundations of computer science
A mathematical theory of self-checking, self-testing and self-correcting programs
A mathematical theory of self-checking, self-testing and self-correcting programs
Applications of Path Compression on Balanced Trees
Journal of the ACM (JACM)
Fault Tolerance: Principles and Practice
Fault Tolerance: Principles and Practice
A Formally Verified Sorting Certifier
IEEE Transactions on Computers
An Efficient Dynamic and Distributed Cryptographic Accumulator
ISC '02 Proceedings of the 5th International Conference on Information Security
Fractal Merkle tree representation and traversal
CT-RSA'03 Proceedings of the 2003 RSA conference on The cryptographers' track
Checking value-sensitive data structures in sublinear space
ISAAC'07 Proceedings of the 18th international conference on Algorithms and computation
Indexing information for data forensics
ACNS'05 Proceedings of the Third international conference on Applied Cryptography and Network Security
Computer Science Review
Hi-index | 14.98 |
We describe a conceptually novel and powerful technique to achieve fault detection and fault tolerance in hardware and software systems. When used for software fault detection, this new technique uses time and software redundancy and can be outlined as follows. In the initial phase, a program is run to solve a problem and store the result. In addition, this program leaves behind a trail of data which we call a certification trail. In the second phase, another program is run which solves the original problem again. This program, however, has access to the certification trail left by the first program. Because of the availability of the certification trail, the second phase can be performed by a less complex program and can execute more quickly. In the final phase, the two results are compared and if they agree the results are accepted as correct; otherwise an error is indicated. An essential aspect of this approach is that the second program must always generate either an error indication or a correct output even when the certification trail it receives from the first program is incorrect. We formalize the certification trail approach to fault tolerance and illustrate realizations of it by considering algorithms for the following problems: convex hull, sorting, and shortest path. We compare the certification trail approach to other approaches to fault tolerance.