Open Source LaboratoriesTM


Don't feel like reading a dissertation?
Skip to the front of the line!


1. Introducing DFOTM

Suppose that you've got two versions of the same file or document. Suppose that they differ enough from each other that one of them would almost certainly constitute a separate work of its own, even if this weren't legally the case. Suppose that you wish to communicate this altered version of the file, but only to those few who are already in possession of the original version ― and to no one else. If this roughly describes your situation, then we've got just the tool for you.

Meet DFOTM or the Differential File Overlay utility. DFOTM allows its users to securely communicate the modified contents of a file or a batch of files to another party in possession of the tool, with the added requirement that such a party must also possess the original version of said file or files.


Note

While the tool does handle encryption and decryption, it does not provide any functionality to actually transmit or receive the resulting output files over a computer network. Those actions must be performed separately by the user.



2. The Method

How does it all work? As the tool's complete name suggests, DFOTM computes a mathematical differential between two versions of a given file. What this means is that the resulting differential output contains the data of neither version, but rather a scrambled emalgamation of the data ― one that should be close to impossible to unscramble. Provided that a sufficient degree of mutual distinction exists between the two versions of your document, a potential attacker or snoop would be statistically better off guessing their contents rather than successfully deciphering them.

This method is as simple and effective as a crowbar ― a tool against which no defense exists to this day. While such an approach might seem unnecessarily redundant in the age of strong encryption, it nonetheless presents an advantage that sets it firmly apart from the rest. Whereas most popular encryption methods force a sender to infer that the intended recipient is an authorized party by virtue of possessing the correct decryption key, the differential method employed by DFOTM turns such an inference into a guarantee ― there simply is no way to decipher the encrypted files unless their original versions are also available to the deciphering party. To put it more bluntly, if you do not have the originals, then you are not seeing the revisions, either ― no matter who you are.


3. Using DFOTM

The tool is split up into two parts: the encoder and decoder. To encrypt a file or a batch of files, the user runs the encoder over them alongside identically named key files that the tool can use to differentiate against. These key files are nothing more than the original versions of the files whose modified versions the user wishes to encrypt. Output files are then produced by the tool in a format that can only be understood by its counterpart, the decoder.

In the following example, we'll be encrypting a set of three modified files, each of which comes with an unaltered earlier version of that file. Here's what the command and its resulting output would look like.

C:\DFO> dfo .. originals encoded "Operating Agreement.odt" "Quarterly Report.pdf" Minutes.mp3
Differential File Overlay Creation Utility v1.0
Copyright (C) 2023 by Open Source Laboratories, Ltd.
All rights reserved.

Operating Agreement.odt -> file_0.dfo at 75.70% / 100.00% [CRC32: 0x50fd92b1]
Quarterly Report.pdf -> file_1.dfo at 75.20% / 100.00% [CRC32: 0x5e4d7a7b]
Minutes.mp3 -> file_2.dfo at 77.23% / 99.99% [CRC32: 0xe6945c40]

Files processed: 3 of 3


3.1 Command Overview

Looks scary, doesn't it? It's, actually, really quite simple. First, let's break down the command itself.

C:\DFO> dfo .. originals encoded "Operating Agreement.odt" "Quarterly Report.pdf" Minutes.mp3


... Command Prompt
... Executable Command
... Directories

Note

The directory names are arbitrary, while the directories themselves can be located anywhere within the file system. The directories can be nested, but they must not overlap with each other.



Warning

It is critical to completely clear the output directory between runs. If this is not done, the tool's output could collide with an existing file still in that directory. When this occurs, the tool will skip processing the file in question and continue on to the next one in the queue.



... Input Files

Important

If any of the filenames contain spaces, such filenames must be enclosed in quotes. If this is not done, the tool will become confused and will attempt to operate on a fragmented filename as if each fragment represented a separate filename of its own.


3.2 Output Breakdown

Now that we've broken down the command used, let's take a look at the output, line by line.

Operating Agreement.odt -> file_0.dfo at 75.70% / 100.00% [CRC32: 0x50fd92b1]
Quarterly Report.pdf -> file_1.dfo at 75.20% / 100.00% [CRC32: 0x5e4d7a7b]
Minutes.mp3 -> file_2.dfo at 77.23% / 99.99% [CRC32: 0xe6945c40]


... Input File
... Output File

Note

While the output filenames are somewhat non-descript to make it easier to serialize them, the input filenames are not discarded, but rather stored inside the output files themselves. Even if an output file is renamed, the decoder utility will still be able to open it and extract the input filename stored within it, provided that its .dfo extension has not been changed.



... Bitwise Uniqueness Ratio

Tip

Do not fixate on the idea of magically hitting the 50% bitwise uniqueness ratio for all of your files. The key takeaway with this ratio is to stay away from the edges rather than to land perfectly in the center.



... Bytewise Uniqueness Ratio

Warning

Although any unchanged bytes will likely appear out of sequence within the output file, this may not always be the case. The longer a sequence of unchanged bytes, the more likely it is to be susceptible to cryptographic analysis. Avoid transmitting output files with a low bytewise uniqueness ratio to avoid partial data leaks.



... Input File Checksum

Important

While a typical checksum cannot always accurately predict data integrity, a failed checksum all but guarantees that data corruption has occurred. Always assume that a file with a bad checksum is troublesome.



4. Decrypting DFOTM Files

So, you've got yourself a batch of .dfo files and you aren't sure what to do with them. This is where the decoder utility comes in. As is the case with its counterpart, the user runs the decoder over the encrypted .dfo files alongside any key files that the user wishes to differentiate against. If the key files are a cryptographic match to the .dfo files, the latter can be decrypted.

In the following example, we'll be decrypting a set of three .dfo files which we had previously encrypted in Using DFO, each coming with its own counterpart representing an earlier version of that file. Here's what the command and its resulting output would look like.

C:\DFO> undfo encoded originals decoded file_0.dfo file_1.dfo file_2.dfo
Differential File Overlay Extractor Utility v1.0
Copyright (C) 2023 by Open Source Laboratories, Ltd.
All rights reserved.

file_0.dfo -> Operating Agreement.odt [CRC32 OK]
file_1.dfo -> Quarterly Report.pdf [CRC32 OK]
file_2.dfo -> Minutes.mp3 [CRC32 OK]

Files processed: 3 of 3


4.1 Command Overview

While the screen output of the decoder utility is considerably less complex than that of the encoder, it is still worth breaking down. First, let's take a look at the command itself.

C:\DFO> undfo encoded originals decoded file_0.dfo file_1.dfo file_2.dfo


... Command Prompt
... Executable Command
... Directories

Note

The directory names are arbitrary, while the directories themselves can be located anywhere within the file system. The directories can be nested, but they must not overlap with each other.



Warning

It is critical to completely clear the output directory between runs. If this is not done, the tool's output could collide with an existing file still in that directory. When this occurs, the tool will skip processing the file in question and continue on to the next one in the queue.



... Encrypted DFO Files

4.2 Output Breakdown

Now that we've broken down the command used, let us once again take a look at the output, line by line.

file_0.dfo -> Operating Agreement.odt [CRC32 OK]
file_1.dfo -> Quarterly Report.pdf [CRC32 OK]
file_2.dfo -> Minutes.mp3 [CRC32 OK]


... Encrypted DFO File
... Decrypted Input File

Important

When the decoder processes a .dfo file, it extracts the name of the input file contained within. If the tool cannot then find a key file with a filename that is an exact match, decryption cannot take place and the file will be skipped.



... Decrypted File Checksum

5. Frequently Asked Questions

  • How secure is DFOTM?
  • When are two files mathematically connected?
  • What are the minimum system requirements to run DFOTM?
  • Can DFOTM execute on a more modern system?
  • What is the latest operating system supported by DFOTM?
  • Which other operating systems does DFOTM support?
  • Which CPU architectures does DFOTM support?
  • I have come into possession of some .dfo files. Do I have to purchase DFOTM to decrypt them?
  • Can I distribute the DFOTM software suite?

  • 6. Download DFOTM

    Interested? Then head on over to our downloads page and introduce a new layer of security into your digital life!