|
|
About
TODO
Blog
RSS
Old blog
Projects
Gallery
Notes
Mon, 23 Jun 2008
Crypto processing in POHMELFS. OpenSSL vs GNU TLS.
If I did not miss something,
GNU TLS (I never worked with it)
supports very limited amount of ciphers and hashes, so it is not appropriate for
filesystem data protection layer.
According to its
documentation
GNU TLS only supports AES, RC4 and 3DES ciphers and SHA1 and MD5 hashes. There is also only CBC
chaining mode and several hash/cipher schemes.
So, POHMELFS server will use OpenSSL for data protection. Sooner or later OpenSSL
will get hardware crypto support on Linux too (well, Linux crypto stack should first
implement userspace API, which does not exist yet, although there is a
work
by Loc Ho from AMCC to add such support).
So far I decided to implement following protection scheme: checksumm or encryption
will cover full transaction data, but will be applied by chunks:
- Transaction 'first-level' data, i.e. header and data immediately placed after transaction
header. For all commands except page writing it will be finish.
- For write pages command, each header is generated dynamically and does not exist
until data is really being sent, so crypto code will run over all pages and update checksum
processing headers and data pages separately. Checkum update should be simple enough, since
there are crypto helpers to update and finalize checksum, but encryption is more complex:
I requires all chunks to be setup in advance in single scatterlist chain, with dynamic header
generation it is too big overhead (it requires not only scatterlist allocation, but also
header allocation just for encryption), so encryption will be done separately for headers and pages,
and I will have to create some IV propagation scheme (like last bytes of previous unencrypted chunk
will become IV for the next chunk, or something like that). I understand, that it may be not very
secure approach though.
- Reading data back from server is simpler, since there are no transactions,
and data will be encrypted/checksummed like in the first step above. It is possible, that it will
force to increase network header structure a bit (32 or 16 bits to store size of the attached checksumm).
/devel/fs :: Link / Comments (4)
Please solve this captcha to be allowed to post (need to reload in a minute): 35 + 89
|
nim wrote at 2008-06-23 17:17: