From: "Guillaume Lacôte" <Guillaume@Lacote.name>
To: linux-kernel@vger.kernel.org
Cc: Linux@glacote.com
Subject: Using compression before encryption in device-mapper
Date: Tue, 13 Apr 2004 17:44:40 +0200 [thread overview]
Message-ID: <200404131744.40098.Guillaume@Lacote.name> (raw)
Hi,
I hope this is the right place to post this message; I tried to keep it small.
Basically I really would like to implement compression at the dm level,
despite all of the problems. The reason for this is that reducing redundancy
through compression tremendously reduces the possibilities of success for an
attacker. I had implemented this idea in a java archiver (
http://jsam.sourceforge.net ).
Although I am not a good kernel hacker, I have spent some time reading
compressed-loop.c, loop-aes, dm-crypt.c, and various threads from lkml
including http://www.uwsg.iu.edu/hypermail/linux/kernel/0402.2/0035.html
Thus I would appreciate if you could answer the following questions regarding
the implementation of a "dm-compress" dm personality.
0) Has this problem already been adressed, and if yes, where ?
1) Using dm: I want to be able to use compression both above dm (to compress
before encrypting a volume) and below it (to do a RAID on compressed
volumes). I assume there is no other way than to make compression be a dm
personality. Is this correct (or shall I use something more similar to a
compressed loop device) ?
2) Block I/O boundaries: compression does not preserve size. I plan to use a
mapping from real sectors to their compressed location (e.g. struct {
sector_t sector; size_t compressed_length }* mapping; ). I believe this
mapping can be stored on another dm target and bufferized dynamically. Is
this correct, or shall it remain in (non-swappable ?) memory ?
3) Compressed sectors have varying sizes, while dm targets only deal with full
blocks. Thus every compressed request may need to be fragmented into several
block aligned requests. This might imply reading a full block before
partially filling it with new data. Is it an exceedingly difficult task ?
Will this kill performance ?
4) Block allocation on writes: this is the most difficult problem I believe.
When rewriting a sector, its new compressed length might not be the same as
before. This would require a whole sector allocation mechanism: magaging
lists of free space, optimizing dynamic allocation to reduce fragmentation,
etc. Is there another solution than to adapt algorithms used in for e.g. ext2
?
5) As a workaround to 2,3,4 I plan to systematically allocate 2 sectors per
real sector (space efficiency is _not_ my aim, growing entropy per bit is)
and to use a trivial dynamic huffman compression algorithm. Is this solution
(which means having half less space than physically available) acceptable ?
6) Shall this whole idea of compression be ruled out of dm and only be
implemented at the file-system level (e.g. as a plugin for ReiserFS4) ?
I thank you very much in advance for your critics and advices.
G. Lacôte.
next reply other threads:[~2004-04-13 15:44 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-04-13 15:44 Guillaume Lacôte [this message]
2004-04-13 16:57 ` Timothy Miller
2004-04-14 6:48 ` Guillaume Lacôte
2004-04-13 17:45 ` Jörn Engel
2004-04-13 19:42 ` Ville Herva
2004-04-14 6:54 ` Guillaume Lacôte
2004-04-14 9:43 ` Jörn Engel
2004-04-14 10:02 ` Guillaume Lacôte
2004-04-14 11:25 ` Jörn Engel
2004-04-14 12:44 ` Paulo Marques
2004-04-14 13:34 ` Jörn Engel
2004-04-14 13:58 ` maccorin
2004-04-14 14:02 ` Guillaume Lacôte
2004-04-14 14:39 ` Grzegorz Kulewski
2004-04-14 15:07 ` Guillaume Lacôte
2004-04-14 16:14 ` Grzegorz Kulewski
2004-04-14 15:23 ` Paulo Marques
2004-04-14 15:32 ` Guillaume Lacôte
2004-04-14 17:25 ` Bill Davidsen
2004-04-15 9:28 ` Jörn Engel
2004-04-22 7:59 ` Guillaume Lacôte
2004-04-22 9:18 ` Jörn Engel
2004-04-22 10:20 ` Guillaume Lacôte
2004-04-22 12:15 ` Jörn Engel
2004-04-22 13:06 ` Guillaume Lacôte
2004-04-22 16:00 ` Jörn Engel
2004-04-23 15:16 ` Guillaume Lacôte
2004-04-23 16:57 ` Jörn Engel
[not found] <1KykU-4VD-17@gated-at.bofh.it>
[not found] ` <1KPvh-26S-7@gated-at.bofh.it>
[not found] ` <1KSMw-4P1-13@gated-at.bofh.it>
[not found] ` <1KTfJ-5gK-25@gated-at.bofh.it>
2004-04-14 15:02 ` Pascal Schmidt
2004-04-14 15:25 ` Guillaume Lacôte
2004-04-14 19:29 ` Pascal Schmidt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200404131744.40098.Guillaume@Lacote.name \
--to=guillaume@lacote.name \
--cc=Linux@glacote.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®