1. A method, comprising: receiving, by a processor, a plurality of artifact fingerprints generated from a plurality of artifacts, wherein the plurality of artifact fingerprints are generated by generating shingles from text within each of the plurality of artifacts; and cryptographically hashing the shingles to generate a plurality of artifact fingerprints; storing the artifact fingerprints in a database; receiving, by the processor, at least one query fingerprint from a querying entity; determining, by the processor, whether the received at least one query fingerprint matches any of the artifact fingerprints stored in the database; and outputting an indication of an entity that provided an artifact containing a matched fingerprint to the querying entity without revealing plaintext of the artifact containing the matched fingerprint, wherein the plurality of artifact fingerprints are received from a plurality of different entities.