This is part 1 of a series on omission-tolerant integrity
protection and related topics.
A technical report on the topic is available
on this site and
in the IACR ePrint Archive.
Broadly speaking, an omission-tolerant cryptographic checksum
is a checksum on data that does not change when items are removed from
the data but makes it infeasible for an adversary to modify the data
in other ways without invalidating the checksum.
We discovered the concept of omission-tolerant integrity protection
while working on rich
credentials. A rich credential includes subject attributes and
verification data stored in a typed hash tree. We noted in an interim
report that the root label of the tree could be viewed as an
“omission-tolerant cryptographic checksum”. Prof. Phil
Windley, who read the report, told us that he had not seen the concept
before, and asked if we had invented it. We then added a section on
typed hash trees and omission-tolerant integrity protection to the
final report.
We’ve now written a new technical
report that discusses omission-tolerant checksums and
omission-tolerant integrity protection in a broader context than rich
credentials. The main contributions of the new paper are a formal
definition of omission-tolerant integrity protection, a method of
computing an omission-tolerant checksum on a bit-string encoding of a
set of key-value pairs, and a formal proof of security in an
asymptotic security setting that uses the system
parameterization concept introduced by Boneh and Shoup in
their online
book.
I have not said much in this blog about omission-tolerant integrity
protection, and there is a lot to say: how an omission-tolerant
checksum can be used to implement selective disclosure of subject
attributes in public key certificates; how public key certificates
with selective disclosure could easily provide security and privacy
for client authentication in TLS; what’s special about Boneh and
Shoup’s system parameterization concept and how we use it in our
definitions and proofs; how can a typed hash tree provide
omission-tolerant integrity protection whereas a Merkle tree cannot;
and a number of narrower but no less interesting topics. This is
the first of a series of posts on these topics.