Slashdot Log In
Encrypted Images Vulnerable To New Attack
Posted by
kdawson
on Sun Oct 05, 2008 03:04 PM
from the bye-bye-deniability dept.
from the bye-bye-deniability dept.
rifles only writes "A German techie has found a remarkably simple way to discern some of the content of encrypted volumes containing images. The encrypted images don't reveal themselves totally, but in many cases do let an attacker see the outline of a high-contrast image. The attack works regardless of the encryption algorithm used (the widely-used AES for instance), and affects all utilities that use single symmetric keys. More significant to police around the world struggling with criminal and terrorist use of encryption, the attack also breaks the ability of users to 'hide' separate encrypted volumes inside already encrypted volumes, whose existence can now for the first time be revealed." The discoverer of this attack works for a company making full-disk encryption software; their product, TurboCrypt, has already been enhanced to defeat the attack. Other on-the-fly encryption products will probably be similarly enhanced, as the discoverer asserts: "To our knowledge is the described method free of patents and the author can confirm that he hasn't applied for protection."
Related Stories
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
Confusing (Score:5, Insightful)
Is it just me or does anyone else get the feeling that the original story confuses two completely different concepts (digital photos and drive images)?
Re:Confusing (Score:4, Funny)
Parent
Re: (Score:3, Funny)
Can you tell us what you figured out so we can RYFC instead of TFA?
Watermark? (Score:5, Insightful)
Re:Watermark? (Score:5, Interesting)
Or CBC mode? Or any of a dozen other ways to prevent this well-known attack on ECB mode encryption? http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation [wikipedia.org]
Yes. And apparently TurboCrypt now supports such things too, hence the press release.
Parent
Re:Watermark? (Score:4, Interesting)
How would you use CBC on a disk image that requires fast random access?
Here's what you should have been reading on Wikipedia: http://en.wikipedia.org/wiki/Disk_encryption_theory [wikipedia.org]
Parent
Re:Watermark? (Score:5, Informative)
By breaking the disk up into sectors, each of which start a new chain. The problem is an IV is used to "start" the CBC chain, and this IV is static as the underlying plaintext changes. So new changes on the same point of the HD get encrypted with the same IV.
Parent
Re:Watermark? (Score:5, Informative)
It actually makes me happy to see that some people are starting to get the point. I have been pointing out these weaknesses for years.
Some of them are actually even worse. If the IV is just the sector number, then the difference between two neighbor sectors is known, and you can construct a file that will cancel out that difference and the two sectors get the same cipher text. I constructed a file [kasperd.net] some years ago, that demonstrated the problem. At that time Truecrypt was vulnerable to this attack. Truecrypt did apply some whitening after the encryption, but that didn't really make the pattern much worse. Put the file I mentioned on a Truecrypt volume encrypted in CBC mode, and somewhere in the encrypted image there will be two neighbor sectors that can be XORed together and will cancel out all the data leaving only the whitening pattern, which is easily recognizable because it repeats over many times through the sector.
Encrypting the IV is better, but still vulnerable to the problem you describe. In fact the problem you describe applies one way or another to almost every single disk encryption in existence. All the encryptions need some nonce or randomness, and since it doesn't fit in the sector, they cut a corner and use the sector number, which doesn't change when the sector is overwritten. (I have seen one that used extra space by mapping 32 logical sectors to 33 physical sectors, but that encryption had other problems including a weak pseudo random number generator, and potential data loss caused by the need to update two sectors which isn't done atomically).
Recent Truecrypt versions are no longer vulnerable to the attack I described above. They now use tweakable block ciphers. But just like CBC needs a unique IV for each time you encrypt, tweakable block ciphers need a unique tweak. Truecrypt use the sector number for tweak, so if a sector is overwritten, you have the same problem again. In fact it is even worse because there is no longer any chaining, just a tweak for each 16 byte block, which means changing a byte in a sector would keep changes in the cipher text within the 16 byte block. I didn't verify this in practice, I just read the specification. I mentioned this problem to the authors a long time ago, but they didn't consider it a problem.
Parent
Re:Watermark? (Score:4, Interesting)
Recent Truecrypt versions are no longer vulnerable to the attack I described above. They now use tweakable block ciphers. But just like CBC needs a unique IV for each time you encrypt, tweakable block ciphers need a unique tweak. Truecrypt use the sector number for tweak, so if a sector is overwritten, you have the same problem again. In fact it is even worse because there is no longer any chaining, just a tweak for each 16 byte block, which means changing a byte in a sector would keep changes in the cipher text within the 16 byte block. I didn't verify this in practice, I just read the specification. I mentioned this problem to the authors a long time ago, but they didn't consider it a problem.
LRW should fall to the bitmap attack presented in the article, so long as the bitmap is overwritten in place between ciphertexts. Any other weakness in LRW using the same key is minimized unless you are filling your disk with 127th degree polynomials in GF(2) represented as 128-bit vectors, that happen to differ from each other by n*k in GF(2) where n is the sector number they're stored in and k is the LRW tweak key. Most people don't do that. The probability of doing so with normal use is roughly the probability of accidentally guessing the tweak key.
The only real solution for the bitmap problem is modification of the file system to contain secure IVs for each block on the disk. Reusing IVs has *always* been shown to be a bad idea. It's broken more thought-to-be-secure schemes than I can count.
As an aside, once I actually found two files from a Slackware distribution that were detectable inside a truecrypt volume. One problem truecrypt had back then was that they were using 512 byte CBC blocks, while most file systems used larger blocks, so it was trivial to insert a file that would guarantee that the resulting ciphertext would be vulnerable to detection by starting at an even sector boundary and having just simple bit differences. I am guessing that in both cases the files being detected were executables with a large dynamic link section, since that would contain a whole lot of simple offsets that could match up with the sector IV vulnerability.
Parent
Re:Watermark? (Score:4, Interesting)
Since the encryption is done at the block device layer, it shouldn't be part of the file system but rather a part of the encryption layer. Except from that detail, I agree with you. However doing it is tricky. When you take a logical sector with 512 bytes of data and put it together with a small IV, it no longer fits in a 512 bytes sector. So you have to come up with a layout on disk that is efficient. And then you have the problem of updating it. Because you cannot write two sectors to disk atomically (with some disks you can't even write one). So you end up having the potential of data loss if an update does not complete because of a power failure. And the data loss is not guaranteed to affect only the logical sector you were writing at the time. I am still thinking about the problem. A raid layer have some similar problems, and I have been considering whether merging those two layers would help solving this problem. A can see a few other advantages you could get from merging a raid layer with an encryption layer.
Indeed. And the damage depends on the kind of encryption used. CBC is actually dealing pretty well with reused IVs compared to other encryptions. RC4 and counter mode are two examples where reusing IVs is so bad that you might as well not be encrypting at all.
Interesting. Though the patterns are simple, I wouldn't have thought they would show up unless they were carefully constructed.
That's the vulnerability I was referring to. And this is what is demonstrated by the file I linked to. It requires just one or two bits of difference between neighbor sectors depending on which parameters you used to set up the volume. My file contains just a lot of variants of that to cover different byte orderings so as to demonstrate the weakness not just in truecrypt, but also in some early Linux loopback encryptions.
The fact that a file system block consists of multiple disk sectors just makes the exploit slightly more reliable. Even if the sizes were the same, the file system would still try to put consecutive blocks from your file right next to each other on disk. (If it didn't do that, performance would go down by orders of magnitude).
Parent
Re: (Score:3, Informative)
I have seen one that used extra space by mapping 32 logical sectors to 33 physical sectors, but that encryption had other problems including a weak pseudo random number generator, and potential data loss caused by the need to update two sectors which isn't done atomically
That would be GBDE [wikipedia.org]. Shouldn't it be relatively easy to replace the PRNG?
Re:Watermark? (Score:5, Informative)
Correct.
Depends on whether you are worried about breaking compatibility. There is nothing you can do for existing encrypted volumes. If you want to improve security for your existing volumes, a complete reencryption of the volume is needed. If you want to protect new volumes while remaining compatible with the existing implementation, a small change to the way the master key is generated would help. There is a 256 byte lookup table, in which having two identical bytes is a weakness. The table is generated randomly, which means master keys vary in quality. The best master keys are those were all 256 bytes are different, but the chance of that happening at random is negligible. If the key was instead generated by taking an array containing all the values from 0 to 255 and permuting those randomly, you would always get keys that are resistant to the known attack.
If you don't need compatibility with the existing code, you can do even better. The PRNG makes use of MD5. Before anybody starts talking about MD5 being broken, keep in mind that the known attacks against MD5 do not apply to the way GBDE use it. The input that GBDE passes to MD5 is 24 bytes, which have 128 bits of entropy (with the best keys). Obviously the output will have no more than 128 bits of entropy, but it could have less. Though the input is just 24 bytes, MD5 is going to add a length field and pad the result to a multiple of 64 bytes. So you could actually double or triple the key size and pay no extra cost in performance on the MD5 operation.
Since three byte quantities are difficult to work with, I'd only suggest to change the lookup table from having 256 8-bit values to having 256 16-bit values. The risk of having two identical values if you pick them randomly, is reduced significantly. But still generating it in a way that guarantees it is still better. This would produce a 40 byte input to MD5. If you wanted to make use of the full MD5 block size, you could append another random key to the 40 bytes such that you would make the input as large as what would fit in a single MD5 block. Doing all of this would increase the key size from 272 bytes (16+256) to 584 bytes (56+16+512), and would not spend any additional time on the cryptographic operations in the critical paths.
You could also ditch the PRNG altogether and use a standard PRNG. But that would mean a significant performance hit, so you'd have to reduce the size of the master key. So I am not sure that would really make it any stronger than fixing the known vulnerabilities in the current PRNG.
As for the potential data loss goes, I suppose you could live with it and just make sure to have a good backup strategy. When doing that of course you have to keep in mind that you shouldn't make backups by copying the encrypted container. The correct way would be to copy the files from the encrypted container to a different encrypted container. Or you could copy the files to an encrypted archive that does not support random access, like tar + gpg. Or you could back up your container by creating an encrypted copy of the container. If you use asymmetric keys, you could create a gpg encrypted copy of the encrypted container even while it is not mounted.
Problem is that the only way to detect that corruption has happened is by trying to open the files with applications understanding the format, and see them barf. However fixing the potential corruption is tricky. If I find a good solution, I am probably going to write my own storage encryption layer some day.
Parent
Re: (Score:2, Informative)
The problem is many CBC and other disk-encryption modes used an IV based on the disk sector number. So when that sector changes, the changes continue to be encrypted with the same IV and key.
Re: (Score:3, Interesting)
Exactly. Use of ECB mode is pointless. All ECB mode does is change one block value to another since they are encrypted the exact same way. Thus, two similar blocks will have exactly the same output.
If you're using AES and you supposedly know what you're doing, you use CBC or CFC or another chaining mode. These feed the results of the previous encryption operation rendering the type of attack discussed in the article moot.
I can't believe they gave them any press time on this. Argh!
IV problem and flash disk (Score:4, Informative)
The problem is the IV for CBC never changes for a given sector - mainly because there is no provision to atomically write both a 512 byte sector and its 48+ bit IV. I *have* read about a disk designed for full disk encryption which provides 520 byte sectors instead of 512 byte sectors. That completely solves the problem.
Some disk encryption uses non-atomic sector writes (store IVs in a separate physical sector). This risks data loss should one get updated but not the other.
I will note that the problem is more easily completely solved for flash media - where it is easier to (atomically) tag sectors with additional data.
Parent
Re:Watermark? (Score:5, Informative)
The cause is similar to the watermarking attack, but the idea is used backwards. The watermarking attack reveals the presence of maliciously constructed decoy plaintext encrypted by the user, whereas this attack reveals information about the change in an unknown plaintext.
In both attacks the issue is that the salt, as you call it, is constant for a given disk block. If that salt can be predicted, a decoy plaintext can be revealed in the ciphertext. If data is changed while using the same salt, sections of identical plaintext before and after the change can be identified.
Parent
Not new (Score:5, Interesting)
As long as you backup the entire drive image - they will know that you made changes. Salt does not render this attack useless.
This is why you do not backup images of encrypted drives (or reencrypt changed documents with the same key - this is normally not a problem for decent file crypto).
If you are going to backup data that's on an encrypted drive, you copy the files and reencrypt them to your backup media.
Parent
Re:Not new (Score:4, Insightful)
And make sure to disable firewire IF you think the feds (or other high-tech snoops) are around.
Firewire is a hole in RAM and can access anything. One could create a hole in RAM and have console auto-log you in. There's even a python-firewire auto-hacker for Windows machines. Got a server with firewire? It's as easy as 1,2,3.
Not Cool.
Parent
Compressed images (Score:5, Insightful)
Re:Compressed images (Score:4, Insightful)
Parent
Re:Compressed images (Score:5, Insightful)
Parent
Re:Compressed images (Score:4, Informative)
Run-length encoding doesn't give you all that high entropy, and neither JPG nor PNG uses it.
Parent
Re: (Score:3, Informative)
LZ77 is not run-length encoding. Run-length encoding only encodes repeated sequences of same letters, while LZ77 encodes repeated sequences as pointers to the previous instance of the same sequence.
RLE in images (Score:5, Informative)
Plain JPEG uses runlength and huffman encoding [wikipedia.org] on the quantized matrix obtained after DCT.
This is relatively efficient because there are a lot of long string of repeats in the matrix (see Wikipedia article).
(This is where some applications such as Stuffit have been able to non-destructively increase the compression of JPEGs and gain a couple of 1% by using better algorithms to store the quantized results)
In lossless mode, JPEG uses instead Arithmetic coding on the raw non-quantized results of DCT.
PNG uses LZ77 (either on the raw pixels or on a delta) wich is an entirely different beast. As pointed out by other /.ers it's a *dictionary* compression which replace repeat parts with pointer to where to they where repeated first :
"ABACDABA" becomes "ABACD{go back 5 letters and copy 3 letters}"
It doesn't need a separate RLE mode, because the dictionary can be abused as follow :
"ACCCCCC" in RLE is "A{repeat 6xC}" and in LZ77 is "AC{go back 1 and copy 5 letter}"
Parent
Re: (Score:2)
Re: (Score:2)
Only works on uncompressed bitmaps (Score:5, Informative)
Re:Only works on uncompressed bitmaps (Score:5, Funny)
Parent
Re: (Score:2)
Why would you need to encrypt your porn... unless....
Dude! Won't anybody stop you thinking about the children?
Old news for TrueCrypt (Score:5, Informative)
Not only is the sensationalist article/summary only pertinent to uncompressed bitmaps, TrueCrypt has warned their users about backing up hidden volumes for a long time (source [truecrypt.org]). In fact, it's the first precaution in how to keep your hidden volume secure.
So people worrying about steganography on TrueCrypt volumes shouldn't, they've been telling you how to keep these volumes secure already.
Parent
Re: (Score:2)
Indeed. However, it is still very interesting news. This demonstrates an attack against encryption without actual decryption. While perhaps not exactly a first, the fact that it is exploitable under real world circumstances* makes it quite important. Indeed, this may be the first nail in the coffin of simple block cyphers.
*While most people don't store uncompressed bitmaps, I have to imagine that camera RAW files wouldn't be too uncommon, and the attack may be adaptable to include those (they usually us
Re: (Score:3, Interesting)
The attack shown works on an image with a bit depth of 2. Camera RAW files have much higher bit depth, and unless you're saturating the whole sensor, I would imagine the image does not contain significantly large values of the same exact pixel value.
Re: (Score:3, Interesting)
To expand on your point:
What they are doing (although they don't put it like this) is searching for blocks in the compressed data whose pre-image is all zeroes (i.e. a large patch of white in the original image). For this to produce anything useful the image must be huge (so that a single scanline spans several blocks) and must contain large of areas of pure white.
In other words, their technique only reveals enormous, low colour-depth, uncompressed images. Do such images actually exist in real life?
Re:Only works on uncompressed bitmaps (Score:5, Informative)
The article uses images encrypted with in ECB mode (a well-known insecurity) as a visual analogy to the backup-file problem.
The backup-file problem is that when you have two volumes encrypted with the same key (not the same password, the same internal encryption key), the difference between those two volumes can reveal some information about the encrypted data. Perhaps all you can determine is what parts of the volume have changed, but that's more than nothing, and therefore unacceptable.
The is a "backup-file" problem because you NEVER have two volumes encrypted with the same internal key unless one starts out as a "backup" copy of the other.
The product mentioned in the article "fixes" this problem by providing an explicit "backup" function. This function creates a new volume containing the same data as the original, but which is encrypted using a different internal key. The hope is that because such an option exists, users will be dissuaded from simply storing bit-for-bit backups of their encrypted volume.
Nothing about this is ground-breaking or even novel, but the concepts at play are important for consumers of encryption products, so the attention is worthwhile.
Parent
Based on comparison of two versions of the volume (Score:2, Informative)
It was always risky to have two versions of a block-structured file encrypted with the same key. You can see the changes. That may tell an attacker things about the encrypted data (filesystem, size of files, etc.) If you backup encrypted volumes, either put them in another container or decrypt the files and store them in another container with a different key. Never keep different volumes with the same key. The attack is of significance for law enforcement, which may be able to enter the premises of a suspe
What about crypto modes? Never heard of CBC, CTR? (Score:3, Insightful)
I just scanned these articles, but just from the fact I don't see a single occasion to talk about crypto modes, such as ECB,CBC,OFB,CFB,CTR etc., I'm unhappy.
20+ years old knowledge, probably badly designed software, some special attack against very bad design, and then a panic-like hype against encryption.
So please, tell the newspaper writers to learn somewhat about security and only after that start to write hype-like articles..
Sad.
Re:What about crypto modes? Never heard of CBC, CT (Score:5, Informative)
You don't use any of those modes on disk images, because you need fast random access.
http://en.wikipedia.org/wiki/Disk_encryption_theory [wikipedia.org]
Parent
Re:What about crypto modes? Never heard of CBC, CT (Score:3, Informative)
It doesn't? What about the part in TFA that reads:
It seems (Score:5, Informative)
The summary title and summary write up are a little ambiguous.
no IV and thus ECB-mode is probably the problem (Score:2)
The problem is most likely that they use ECB-mode and no IV. Using a different mode, like CBC might solve the problem. The problems with ECB are well known, even wikipedia has an entry about this problem http://en.wikipedia.org/wiki/Cipher_mode [wikipedia.org]
Re: (Score:2)
Once again, CBC doesn't work on disk images that need fast random access.
http://en.wikipedia.org/wiki/Disk_encryption_theory [wikipedia.org]
Re:no IV and thus ECB-mode is probably the problem (Score:4, Insightful)
Oh, and if you follow the link from the article you'll find that this attack is being published by the makers of TurboCrypt, which was incompetently designed and thus vulnerable to this attack, but has now been fixed. The makers of this app (which you should probably stay away from, if they made such an elementary mistake then who knows what other problems it has) are essentially hyping this fairly inconsequential discovery in order to sell their product.
In conclusion: lame.
Parent
TrueCrypt is immune (Score:2)
Encrypted harddrives not affected (Score:2)
As this requires at least 2 images with the same key, encrypted 'working' hard drives are not vulnerable unless you make sector level backups. I would imagine that anyone who has illegal images (such as child porn) on their encrypted hard disk would not make backups of such images.
Not New at All (Score:2)
This is far from a new revelation, they used AES in ECB mode to encrypt the uncompressed bitmap.
As you can see on the wikipedia page for ECB [wikipedia.org] this attack has been known for a while.
Two issues... (Score:3, Interesting)
But it is believed to effect almost any encryption program currently on sale as long as the two volumes being compared use the same encryption key whilst being slightly different from one another.
There are two issues that immediately come to mind:
Border Agent attack (Score:5, Insightful)
This is not really a "ciphertext only" attack (Score:3, Informative)
This attack will only effect uncompressed images, because compression increases the entropy so that pixel information will be entirely different as the colors change.
Finding a pair of encrypted twin images like this is nearly impossible. How can they even tell where an image starts on disk when the filesystem itself is encrypted? Not to mention the very strict (and unlikely) requirements on the images themselves. The odds of actually being able to exploit this on a live system are very low IMHO.
Re:aw4jthpa (Score:5, Funny)
Oh god, thanks for the outline of Goatse.
Jerk.
Parent
Re:aw4jthpa (Score:5, Funny)
You didn't look close enough, there was a hidden volume inside!
Parent