Plausible Deniability Using Automated Linguistic Stegonagraphy Mark Chapman1 George Davida2 1 Omni Tech Corporation N27 W23676 Paul Road Pewaukee, WI 53072, U.S.A. Tel.: (262) 523-3300, Fax: (262) 523-2233 e-mail: [email protected] www: http://www.omnitechcorp.com/ 2 Department of EE & CS University of Wisconsin–Milwaukee Milwaukee, WI 53201, U.S.A. Tel.: (414) 229-5192 , Fax:(414) 229-6958 e-mail: [email protected] Abstract. Information hiding has several applications, one of which is to hide the use of cryptography. The Nicetext [5, 6] system introduced a method for hiding cryptographic information by converting cryptographic strings (random-looking) into “nice text” (namely innocuous looking). The system retains the ability to recover the original ciphertext from the generated text. Nicetext can hide both plaintext and cryptographic text. The purpose of such transformations are to mask ciphertext from anyone who wants to detect or censor encrypted communication, such as a corporation that may monitor, or censor, its employee private mail. Even if the message is identified as the output of Nicetext, the sender might claim that the input was simply a pseudo-random number source rather than ciphertext. This paper extends the Nicetext protocol to enable deniable cryptography/messaging using the concepts of plausible deniability [2, 7]. Deniability is derived from the fact that even if one is forced to reveal a key to the random string that “nice text” reverts to, the real cryptographic/plaintext messages may be stored within additional required sources of “randomness” in the extended protocol. 1 Introduction There are many methods to maintain secrecy. Cryptography attempts to make information unintelligible [10]. Information hiding and covertchannel techniques attempt to transmit information within existing protocols [4]. Stegonagraphy attempts to transmit information within existing information [8]. The Deniable Nicetext protocol combines these techniques in an attempt to maintain secrecy through deniability. In this case, secrecy may be for both the information itself and the use of particular cryptographic techniques. A Survey of Information Hiding [8] introduces different methods of hiding information. These include stegonagraphy, water marking, covert channels and other methods of hiding. The concept of Chaffing and Winnowing, [9] and [3], introduces a method to hide messages in network traffic. The purpose of this paper is to propose an enhanced automated system to enable someone to deny that a cryptographic, or random, string has meaning. The concept of Plausible Deniability in this context implies that it is difficult for an adversary to prove the meaning of a particular message. The authors do not provide any ability to deny the transmission or receipt of a message. The emphasis is on the ability to deny meaning. Another benefit may be the ability to deny the use of a specific cryptographic algorithm. The term, Plausible deniability has distinct meanings in the legal profession [11]. There are also political contexts of plausible deniability where a person is deliberately kept in the dark to render their denial of an event “plausible” or even believable. What is important to understand is that any such scheme, automated or not, requires a certain level of deceit from some human being who is interested in denying the claim. The deceit, in the case of the system discussed in this paper, must come from the sender and receiver of the messages. The results of the Deniable Nicetext transformations may contain two or more messages. It should be difficult for an observer to prove the existence of more than one messages. Even with the suspicion of multiple messages, the external encryption routines should make it difficult for an adversary to prove the meaning of a particular message. With the mutual cooperation from the sender and receiver it should be possible to plausibly deny the meaning of the entire message. This paper, introduces a system to achieve deniability of cryptograms as well as plaintext. The system introduced extends the Nicetext suite of applications [5, 6]. After briefly discussing the Nicetext system for completeness, the authors introduce Recursive Nicetext which leads to the new Deniable Nicetext. 2 Basic Nicetext The basic idea of the Nicetext protocol is to transform a ciphertext, c, into harmless looking text through the following algorithm: 1. Independent of the input ciphertext, choose a contextual template, if current one is exhausted. 2. Read the next word type from the template. 3. Read enough bits from input ciphertext to select a particular word of the proper type from the dictionary. 4. Output the word. 5. Repeat until end of input ciphertext. Given a code dictionary, such as that found in Table 1, and a contextual template, Nicetext converts the bits of ciphertext into an “interesting” Type name name name name male male female female Code 0 1 0 1 ←→ ←→ ←→ ←→ Word ned tom jody tracy Table 1. Basic Dictionary Table with Multiple Types. Contextual template s Ciphertext c N Td,s (c) name male name male name male 011 −→ “ned tom tom” name male name male name female 011 −→ “ned tom tracy” name male name female name male 011 −→ “ned tracy tom” name male name female name female 011 −→ “ned tracy tracy” name female name male name male 011 −→ “jody tom tom” name female name male name female 011 −→ “jody tom tracy” name female name female name male 011 −→ “jody tracy tom” name female name female name female 011 −→ “jody tracy tracy” Table 2. Different Contextual Templates Produce Different Nicetext from the same input. stream of words. Table 2 demonstrates how different templates may generate different nice-text from the same input ciphertext. The term to describe the output of a stegonagraphy transformation is stego-text or, more generally, stego-object [1]. In this paper, stego-text and nice-text are synonymous. The reverse transformation is a simple substitution cipher where appropriate bits from the dictionary replace the words parsed from the nicetext. The contextual templates have nothing to do with the ciphertext recovery process. Much of the prior work on Nicetext focused on creating large, sophisticated dictionaries. These dictionary may contain hundreds of thousands of words carefully categorized into thousands of word types. The encoding scheme for the dictionary must follow the properties required for forward and reverse transformation. Armed with sophisticated dictionaries, the Nicetext system uses multiple techniques to automatically generate contextual-templates from example texts. For example, it is trivial for the Nicetext system to create a contextual template for this paragraph or, for that matter, this entire paper 3 . 3 Contextual templates also provide information about capitalization, punctuation and whitespace. The Nicetext system does not currently store any ciphertext in whitespace, etc. to provide maximum flexibility and robustness against countermeasures designed to thwart other programs which exclusively use whitespace to store information. It is then possible to convert any ciphertext into nice-text which has structure and to some extent meaning, the ultimate goal of linguistic stegonagraphy, similar to this paper. To demonstrate the quality of the various transformation methods, the authors start with the popular children’s story, The Wizard of OZ, which is available from the Project Gutenberg web page at gutenberg.org. The truncated examples only show the first paragraph for brevity. The following is an actual excerpt from L. Frank Baum’s The Wizard of Oz: THE WONDERFUL WIZARD OF OZ 1. The Cyclone Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, who was the farmer’s wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar–except a small hole dug in the ground, called a cyclone cellar, where the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from which a ladder led down into the small, dark hole. . . . Using a very large dictionary with 189,991 words put into 56,429 categories, the system automatically generated several different contextual templates. This paper does not describe the contextual template generation process. The Nicetext process uses these advanced dictionaries and templates to convert ciphertext into new stories which, to varying degrees, share similar characteristics with the original document. Rather than showing the contextual templates, this paper emphasizes the results of transformations of the following ciphertext, shown in hexadecimal notation: 145727 030276 120333 134506 163625 001617 050723 126027 The first example shows the results of transforming the above ciphertext using a series of contextual templates based on the structure of the sentences in the original story: So the soldier was summoned and entered the Throne Room doggedly, for wherewithal Oz was alive he never was allowed to come farther than the door. When the Guardian of the Gate saw them again he wrapped greatly that they should leave the beautiful City to get into new trouble. I am never hungry, he said, and it is a lucky thing I am not, before my mouth is only commented, and if I could cut a hole in it so I could eat, the straw I am stuffed neath would come out, and that would spoil the shape of my head. The sky was blackened, and a low rumbling sound was overheard in the air. Surely no wild beast should wish a babylonier home. . . . The primary benefit of sentence-level contextual templates is the wide variety of text that the system can generate from the same input ciphertext. The second example transforms the same ciphertext using the same sentence-level contextual template library to create a very different story: The wild crows flew in one great flock toward Dorothy and her companions. You have plenty of courage, I am sure, answered Oz. No; there were some, but the monster has eaten them all. I was afraid I could have to stay in the river forever, he said, but the kind Stork saved me, and if I ever beget any brains I shall find the Stork again and do her some kindness in return. She wiggled at the rapid flight of the Monkeys, but was glad the journey was over. There! All you need is confidence in yourself. ... The reason for the variation is that contextual templates are chosen independently from the input ciphertext. The above two examples used different sequences of sentence-level templates. The Nicetext system can recover the input ciphertext, in this case, 145727. . . , from either generated text. The main disadvantage of sentence-level contextual templates is that, although each sentence appears to properly mimic the style of the original document, the sequence of sentences appears to be random, as it should. An alternative is to use contextual templates based on larger sections of a document. The next example uses templates based on the structure and format of the entire original document: THE SUPEREXCELLENT WIZARD OF OZ 10. The Cyclone Dorothy lived in the midst of the great Kansas prairies, versus Uncle Henry, whosoever was a farmer, and Aunt Em, whoso was the farmer’s wife. Their house was small, before the lumber to build it had to be carried by cockle many miles. There were four walls, a floor and a roof, whichsoever made one room; and this room contained a rusty looking cookstove, a cupboard for the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar– except a small hole dug in the ground, called a cyclone cellar, where the subfamily should go in case one above those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from whosesoever a ladder misled down into the small, dark hole. ... The most important benefit of a document-level contextual template is that the generated text more closely represents the structure and style of the original document. One obvious concern from this example is that the dictionary contains words that were not used in the original document; thus, resulting in The SUPEREXCELLENT Wizard of OZ! The final example uses the same story-level contextual template with a dictionary which only contains words from the original story: THE WONDERFUL WIZARD OF OZ 10. The Cyclone Dorothy lived in the midst of the great Kansas prairies, with Uncle Henry, who was a farmer, and Aunt Em, whoever was the farmer’s wife. Their house was small, for the lumber to build it had to be carried by wagon many miles. There were four walls, a floor and a roof, which made one room; and this room contained a rusty looking cookstove, a cupboard before the dishes, a table, three or four chairs, and the beds. Uncle Henry and Aunt Em had a big bed in one corner, and Dorothy a little bed in another corner. There was no garret at all, and no cellar– except a small hole dug in the ground, called a cyclone cellar, when the family could go in case one of those great whirlwinds arose, mighty enough to crush any building in its path. It was reached by a trap door in the middle of the floor, from what a ladder led down into the small, dark hole. . . . For the purposes of this paper, it is important to emphasize that the existing Nicetext software can automatically create a variety contextual templates from many natural-language texts. The Nicetext system uses these contextual templates to transform ciphertext into harmless-looking text that shares some of the characteristics of the original document used as the template source. The Reverse-Nicetext process can always recover the input ciphertext from the generated text. 3 Recursive Nicetext It is trivial to apply feedback or chaining concepts to use the output of one transformation as the input for the next. Nicetext, with the help of external compression and encryption routines, may transform some ciphertext into a children’s story, compress and encrypt the story, convert that into a romance novel, compress and encrypt the novel, etc. Let p1 represent a plaintext message and the encryption function, E1 represent an external encryption scheme, such as DES, and a key such that E1 (p1 ) −→ c1 . The reverse-transformation, InvE1 , can recover the plaintext from the ciphertext: InvE1 (c1 ) −→ p1 . The Nicetext protocol defines a family of functions, N T , such that given a particular dictionary, d, and contextual template source, s, the ciphertext, c1 can be transformed into one of many nice-texts 4 . One way to represent this transformation is: N Td,s (c1 ) −→ ti . Recursive applications of Nicetext require a set of dictionaries, contextual templates, and encryption functions: dn , sn , and En . One representation of recursive Nicetext is: N Tdn ,sn (En (pn )) −→ pn+1 . 4 Again, the reason why Nicetext transforms the same ciphertext into one of many nice-texts using the same dictionary and the same contextual template source is due to the variation in the sequence of contextual templates. See Table 2 for a simple example. See the first two examples from Section 2 for a practical view. To recover the alleged ciphertext, cn which may be En (pn ), the InvN T function uses just the dictionary, dn , as follows: InvN Tdn (pn+1 ) −→ cn = En (pn ). The recovery of pn , of course, simply requires the appropriate decryption function and key for InvEn . One source of deniability is the ability for the sender and receiver to claim that cn is not ciphertext, but gibberish! The strength of this claim depends on the strength of the external encryption routine and the decryption key. Nicetext does not provide any compression, encryption or decryption functions beyond the actual substitution cipher used for stegonagraphy purposes 5 . In fact, the original intent of the Nicetext system was to cover up the use of such functions and to allow a certain amount of deniability as to whether or not a valid decryption function exists to expose a suspected plaintext. The “plausible” alternative is that someone interested in the “entertainment value” of the generated nice-text simply used a pseudo-random number source as input. To simplify the discussion as it pertains to this paper, the authors assume that all encryption functions, En , are the same, meaning the same algorithm and the same key, unless otherwise specified. Additionally, each level of recursion uses the same dictionary and contextual template source. In practice, it may be interesting to convert a message into a story, then a novel, then a business plan! It also may be interesting to use a complicated sequence of encryption keys to further thwart efforts to prove meaning. By adding such complexity the concept of key-exchange becomes more difficult between sender and receiver. Somehow they must secretly agree on the sequence of algorithms, keys and dictionaries. For brevity, it is not a focus of this paper to explore and exploit such complexity. That said, the recursive application of Nicetext should be straightforward. Take some ciphertext, turn it into nice-text, encrypt the nice-text, repeat. 4 Deniable Nicetext The purpose of the original Nicetext protocol is to conceal ciphertext, c1 using a particular code dictionary and a particular contextual template. The contextual template describes the types of words, such as nouns, verbs, etc., to be picked in some “interesting” order and formatted in some “interesting” way. Analysis of the simplified algorithm shown in the very beginning of Section 2 reveals that it is unlikely that the number of bits in c1 will exactly match the number of bits required to terminate the generated text at the end of a template, or for that matter, the end of a word. One symptom of this problem would be that a generated story, for example, would end in the middle of a sentence. One way to solve the problem, as implemented 5 Due to the inevitable expansion of the size of the generated nice-text compared to the size of the input ciphertext, it is desirable to compress all plaintext before encryption. in the current software package, is to append enough random bits, r1 , to the end of the ciphertext, c1 , to be able to finish the current contextual template. The modified algorithm prepends the length of c1 , designated as |c1 |, so that the reverse process knows when it has fully recovered c1 . Nicetext now uses the function, I(c1 ) = |c1 | + c1 + r1 , as the input in place of c1 . The slightly modified algorithm is: 1. Independent of the ciphertext choose a contextual template, if current one is exhausted. 2. Read the next word type from the template. 3. Read enough bits from input, I(c1 ), to select a particular word of the proper type from the dictionary. 4. Output the word. 5. Repeat until end of input, c1 AND end-of-contextual template. In the original protocol the length of r1 depends on the size of the contextual template stream and the complexity of the dictionary used during a transformation. The number of bits used to encode different words in the dictionary may be different. In this context, it is not because the number of bits to represent the letters of word. It is due to the length of the code used to differentiate between words within a type category 6 . The initial hope was that the quality of the generated text was so good that it would harmlessly pass through censors. If the text was identified as encoded ciphertext, the censor would have to prove that c1 was actually ciphertext. The sender may choose to claim that c1 was actually just a stream of pseudo-random bits. The protocol specifies that it may need to append r1 – which always actually was a stream of pseudo-random bits! These observations lead the authors to the conclusion that it would be trivial to hide additional ciphertext within r1 . To allow the hiding of additional ciphertext of arbitrary length, the first extension to the Nicetext protocol is to add an additional parameter, l, which defines the minimum length of r. The “Repeat until end-ofc1 AND end-of-contextual template” step now includes the additional “AND |r| > l”. The sender now can add an arbitrary minimal number of bits to I with the plausible intent of generating more text. Observe that |r| will most likely be longer than l because Nicetext still does not want to stop in mid-sentence. Now that Nicetext uses the function, I(c1 ) = |c1 | + c1 + rl , as the input, it is interesting to consider that the sender may want to encode an additional ciphertext, c2 in place of rl ! As long as the length of c2 , |c2 |, is smaller than l, the modified function 7 becomes: I(c1 ) = |c1 | + c1 + |c2 | + c2 + r(l−|c2 |) . 6 7 The number of letters in each word contributes to the expansion rate of ciphertext to nice-text. There is a direct correlation to the ratio of the number of bits in the ASCII representation of the letters of the word and the number of ciphertext bits consumed by the code for the word in the dictionary. A more complete analysis of the expansion rate requires an understanding of the impact of white-space and punctuation. The purpose of the (l−|c2 |) is to show that the minimal length of r would be reduced by the actual size of c2 as well as the number of bits required to represent the length of c2 , |c2 |. The rest of this discussion will simply specify r without the subscripts for simplification. Now the sender uses the Nicetext protocol to generate some harmless text, t1 from ciphertext c1 and c2 and some additional random bits. The Nicetext protocol requires a dictionary, d, and a contextual template, s, to generate one of many ti ’s from c1 . The transformation is N T(d,s) (I(c1 )) −→ ti . Assume that anyone with the reverse protocol, InvN T , and the appropriate dictionary, d, can recover I(c1 ) from any one of the possible ti ’s, InvN Td (ti ) −→ I(c1 ). The protocol specifies that I(c1 ) = |c1 | + c1 + rl ; thus, it is trivial to recover c1 . The original claim that it is unknown if c1 is really ciphertext still applies. Additionally, it is trivial to recover rl from I(c1 ). The new question is whether or not rl contains additional pseudo-random bits or if it is actually |c2 | + c2 + r? One clue is to see if the first few bits after c1 represent a plausible length of c2 . One solution is to use an encryption algorithm (and key), E2 to encrypt the length of c2 . That changes the definition of I to be I(c1 ) = |c1 | + c1 + E2 (|c2 |) + c2 + r. Because Nicetext does not intend to be anything more than a creative simple-substitution cipher, E2 is any externally-supplied algorithm, such as DES, RSA, IDEA, etc [10]. Multiple ciphertexts could be hidden the same way, so that I(c1 ) = |c1 |+ c1 + E2 (|c2 |) + c2 + E3 (|c3 |) + c3 + ...+ Em (|cm |)+ cm + r. Additional trickery may include creative uses of XOR’ing combinations of ci ’s or using error correcting codes to contain the real ciphertext. For clarity, the authors sometimes limit the discussion to only one additional ciphertext message, c2 . The goal of the Nicetext research is not to develop strong cryptographic algorithms. The purpose is to cover up the use of such algorithms. By extending the protocol to allow a minimum number of pseudo-random bits to be added to the input stream, there are more places to possibly hide information. If a sender or receiver of a nice-text message is forced to “turn over the keys”, it is now possible for them to say, “okay - you got me, the file c1 is actually and encrypted message - not just plain text.” This still leaves the question as to whether or not the remaining part of I(c1 ) = E2 (|c2 |) + c2 + r or if I(c1 ) simply contains random bits, r. In fact, this works so well, that it is possible that the receiver may not be certain if there is a second message! If there is more than one message, the receive may have a problem knowing which is the real thing. To solve this problem, the system requires a secret hash function, H, which will generate a hash, hi of ciphertext ci through: H(c1 ) −→ h1 . It is imperative that the hash function is a shared secret between the sender and receiver of the nice-text. The Nicetext system itself does not provide a hash function. MD5 or SHA1 or even the use of a block-cipher such as DES may work well. In any case, the I(c1 ) function must append a fixed-length secret hash of any ciphertext that is meaningful and an incompatible hash of the same length for any ciphertext which is not useful ; thus, If c2 contains valid ciphertext, then I(c1 ) −→ |c1 | + H 0 (c1 ) + c1 + |c2 | + H(c2 ) + c2 + r. If c1 contains valid ciphertext, then I(c1 ) −→ |c1 | + H(c1 ) + c1 + |c2 | + H 0 (c2 ) + c2 + r. In either case, with the proper hash functions and the proper adjustments to the minimum lengths of r to allow for the fixed-length fields required to hide c2 , it still looks like I(c1 ) −→ |c1 | + (somerandombits) + c1 + r. Assume that from a plaintext, p2 , it is trivial to recover I(c1 ). If you choose the correct secret hash function, it is now possible to determine if c2 exists as a valid message by the following the protocol in Figure 1. 1. Transform the nice-text, p2 , into I(c1 ) through simple substitution (read each word from p2 , output the corresponding code from the dictionary, d, to recover the bits from I(c1 ) . . . ). 2. Read the length of c1 , |c1 |. 3. Read the hash of c1 , H(c1 ). 4. Read c1 and compute the secret hash of c1 . 5. If the hash of c1 matches the secret hash, then c1 is the real message. 6. If not, then read the next few bits of what may have been r - which really is |c2 |. 7. Read the hash of c2 , H(c2 ). 8. Read c2 and compute the secret hash of c2 . 9. If the hash of c2 matches the secret hash, then c2 is the real message. 10. etc. Fig. 1. Recovery of the appropriate ciphertext from the plaintext. Communication is achieved by using the secret hash function to determine the existence and selection of the correct ciphertext message. Deniability can only be achieved if the sender and receiver do not disclose the existence of the proper secret hash function. 5 Recursion with Deniability It is interesting to combine the concepts of recursive applications of Nicetext and the Deniable Nicetext protocol. The combination provides a framework for deniability. At any level of recursion, the process begins with a plaintext, p1 , which encrypts to ciphertext c1 . It is possible to to append one or more additional ciphertexts, c2 , · cn . The secret hash function applies only to “real message”. For the other ciphertext, the system uses a random number in place of the hash 8 . The results are that the sender and receiver can plausibly deny that a message other than the first one at each level exists. Suppose that Alice wants to send Bob a message, pi , 1 < i ≤ n which says “Sell all my stock.”. Alice must choose a bogus message, p1 , such as “Do NOT sell any stock”, or an irrelevant message such as “let’s do lunch” to act as the cover message. This cover message is the one which might be surrendered with artificial trepidation. 8 Another option is to choose to apply a different secret hash function - which could be surrendered under duress. Alice and Bob have previously agreed to use a particular hash and encryption function (and key), H and E. H will identify the true ciphertext among the c2 , ....cn . The key for the bogus message, c1 , will be different than the encryption key for the rest of the messages. Of course it is trivial to use more than one key for the other ciphertext messages. The authors do not deal with such things as key exchange and encryption here. These are well known. When Alice sends the text to Bob, he will receive, for example, a love poem. He will run the Reverse-Nicetext process to recover the I(c1 ). He will then apply the algorithm in Figure 1 to determine which ciphertext, contains the actual message. If Alice want to be more clever, she can simply use the generated nicetext as a new plaintext message. In such a recursive scheme, it is also possible to hide the real message in one of the many levels of recursion. Further tricks Alice may try would be to use Nicetext to simulate past e-mails to Bob. She first would generate a contextual template library from the past e-mails. She then could choose to use that template library instead of the love-poem. This may provide more opportunity for deniabilty. 6 Remarks There are many methods to maintain secrecy. By applying the disciplines of cryptography, information hiding and stegonagraphy the enhanced Nicetext system attempts to maintain secrecy through plausible deniability. The secrecy of the message itself ultimately depends on the strength of the encryption. The use of certain levels of encryption is sometimes prohibited through corporate policy. The enhanced Nicetext system may provide a way to deny the use of strong encryption. Outside of the research community one may wonder who should be interested in such a scheme? One group may be information security professionals, system administrators and managers who need to understand some of the limitations of particular filtering, firewalling and intrusion detection techniques. For example, it would be trivial to hide ciphertext within the headers and content exchanged between a web server and a browser. With a little stegonagraphy work, it would also be trivial to make the ciphertext look just like valid hypertext mark-up language. Do the rules change when a rogue employee can easily create a deniable encrypted tunnel to the Internet from inside the corporate firewall (where the traffic simply looks like normal browsing behavior)? It is highly likely that there are readily available automated software techniques for tunneling TCP/IP through hypertext transfer protocol, HTTP. Other protocols, such as ICMP, mail, etc. also may be prone to such cleverness. At this point, deniability does not appear to be the focus of these tools, but as they become more sophisticated, the responsible people need to become aware of the possibilities. Other groups who may be interested in applying this research include whistle-blowers or other under-cover operatives, who may need to share information with the confidence in deniability. The basic Nicetext software may be made available for research purposes. Please contact the authors for further information. References 1. Ross J. Anderson and Fabien A.P. Peiticolas. On the limits of steganography. IEEE Journal of Selected Areas in Communications, 16(4):474–481, May 1998. 2. Donald Beaver. Plausible deniability. In Jiri Pribyl, editor, Proceedings of Praguocrypt 96, 1996. 3. M. Bellare and A. Boldyreva. The security of chaffing and winnowing. pages 517–530. Springer-Verlag, 2000. 4. M. Burmester, Y. Desmedt, and M. Yung. Subliminal-free channels: a solution towards covert-free channels. In Symposium on Computer Security, Threats and Countermeasures, pages 188–197, 1991. Roma, Italy, November 22-23, 1990. 5. Mark Chapman and George Davida. Hiding the hidden: A software system for concealing ciphertext as innocuous text. In Sihan Qing Yongfei Han, tatsuaki Okamoto, editor, Information and Communications Security – First International Conference, ICICS 97 Proceedings, volume 1334, pages 335–345. Springer-Verlag, 1997. 6. Mark Chapman and George Davida. A practical and effective approach to large-scale automated linguistic steganography. In Information Security Conference 01 Proceedings, pages 156–170. SpringerVerlag, 2001. 7. Ran Cynthia Dwork Moni Naor and Rafail Ostrovsky. Deniable encryption. In Proceedings of CRYPTO 97, pages 90–104. Springer, 1997. 8. Fabien A. P. Petitcolas, Ross J. Anderson, and Markus G. Kuhn. Information hiding — A survey. Proceedings of the IEEE, 87(7):1062– 1078, 1999. 9. R. L. Rivest. Chaffing and winnowing: Confidentiality without encryption. CryptoBytes, 4(1), 1998. 10. Bruce Schneier. Applied Cryptography Second Edition: protocols, algorithms, and source code in C. John Wiley and Sons, New York., 1996. 11. Douglas Walton. Plausible deniability and evasion burden of proof. Argumentation, 10:47–58, 1996.
© Copyright 2026 Paperzz