I took another shot at installing the 2.6.24.x series for sake of testing the
ecryptfs procfs patch and new utils. I've noted a few points below as I went
through a short test of the new system.
The source for this was pulled from GIT last night, 4/6/08. The April 6th
announcement points to:
git://git.kernel.org/pub/scm/linux/kernel/git/mhalcrow/ecryptfs-utils.git
config says
[remote "origin"]
url =
git://git.kernel.org/pub/scm/linux/kernel/git/mhalcrow/ecryptfs-utils.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Kernel 2.6.24.4 patched with the patch from the ecryptfs-users mailing list.
# mkdir ecryptfs
# mkdir ecryptfs/crypt
# mkdir ecryptfs/clear
# modprobe ecryptfs
# mount -t ecryptfs /mnt/ecryptfs/crypt /mnt/ecryptfs/clear
Select key type to use for newly created files:
1) openssl
2) passphrase
Selection: 1
PEM key file [/root/.ecryptfs/pki/openssl/key.pem]:
^^^^^^^^^^^^^^
(Cannot enter key here, or rather chars are not echoed back to the tty.
Very hard to tell what one is entering, unless you copy/paste it. )
Method of providing the passphrase:
1) passwd: Enter on Console
2) passwd_file: File Containing Passphrase
3) passwd_fd: File Descriptor for File Containing Passphrase
Selection [passwd]: 1
Passphrase:
Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
2) blowfish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32 (loaded)
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
Selection [aes]: 1
Select key bytes:
1) 16
2) 32
3) 24
Selection [16]:
Enable plaintext passthrough (y/n): n
Attempting to mount with the following options:
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=f4e702c4ad0755da
Mounted eCryptfs
I didn't see that ecryptfs.ko now has a parm for communication and my first
few tests ended in kernel bugs/hung system:
BUG: unable to handle kernel NULL pointer dereference at virtual address
00000008
printing eip: e3a9154b *pde = 00000000
Oops: 0000 [#1]
Modules linked in: ecb nf_conntrack_netlink nf_nat nf_conntrack nfnetlink_queue
nfnetlink_log ecryptfs aes_i586 twofish_i586 twofish_common msr cpuid microcode
firmware_class blowfish cast6 cbc md5 sha512 blkcipher cryptd ablkcipher
serpent i915 lp iTCO_wdt iTCO_vendor_support hangcheck_timer cn i2c_i801
i2c_dev pcspkr eepro100 parport_pc parport rtc_cmos ehci_hcd uhci_hcd configfs
tcp_highspeed llc2 llc nfnetlink snd_pcm_oss snd_mixer_oss snd_seq_dummy
snd_seq_oss snd_seq_midi snd_rtctimer snd_virmidi snd_seq_virmidi snd_rawmidi
snd_seq_midi_event snd_seq snd_seq_device snd_intel8x0 snd_ac97_codec snd_pcm
snd_timer snd snd_page_alloc ac97_bus soundcore
Pid: 1586, comm: ecryptfsd Not tainted (2.6.24.4 #1)
EIP: 0060:[<e3a9154b>] EFLAGS: 00010282 CPU: 0
EIP is at ecryptfs_process_helo+0x2e/0x170 [ecryptfs]
EAX: 00000000 EBX: de5c2e00 ECX: 0000001e EDX: 00000000
ESI: 00000000 EDI: 00000000 EBP: 00000632 ESP: de61fd30
DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
Process ecryptfsd (pid: 1586, ti=de61e000 task=de544000 task.ti=de61e000)
Stack: c0143d1b 00000001 c010c8fb ffffffff 000000d0 dec24018 00000000 c033df00
de5c2e00 de50b900 de50b900 de61fd90 e3a91bb6 c033df6c de5c2e00 c02559e7
de5c4400 00000010 de50b900 c0255341 c01a858b de61ff68 00000000 de5c4c00
Call Trace:
[<c0143d1b>] __slab_alloc+0x5c/0x384
[<c010c8fb>] __wake_up_common+0x31/0x56
[<e3a91bb6>] ecryptfs_receive_nl_message+0xc0/0x13d [ecryptfs]
[<c02559e7>] netlink_sendmsg+0x15f/0x259
[<c0255341>] netlink_unicast+0x177/0x1cd
[<c01a858b>] copy_from_user+0x23/0x4f
[<c0255ad5>] netlink_sendmsg+0x24d/0x259
[<c023a46b>] sock_sendmsg+0xbb/0xd3
[<c011dff6>] autoremove_wake_function+0x0/0x33
[<c011391c>] current_fs_time+0x13/0x15
[<c01576a8>] mntput_no_expire+0x13/0x57
[<c028e7a2>] unix_find_other+0xb5/0x128
[<c012d429>] find_lock_page+0x15/0x60
[<c01a858b>] copy_from_user+0x23/0x4f
[<c023a792>] sys_sendto+0x118/0x138
[<c0136b6e>] __do_fault+0x27c/0x2b6
[<c0137d8e>] handle_mm_fault+0x223/0x47a
[<c023b4d3>] sys_socketcall+0x15e/0x242
[<c01023de>] sysenter_past_esp+0x5f/0x85
[<c0290000>] unix_shutdown+0xdb/0xdf
=======================
Code: 57 89 d7 56 89 c6 53 b8 d4 ee a9 e3 83 ec 20 e8 fa 6f 80 dc 89 fa 8d 44
24 18 e8 51 f9 ff ff 85 c0 0f 84 ff 00 00 00 8b 44 24 18 <8b> 40 08 89 6c 24 08
89 7c 24 04 c7 04 24 cf 77 a9 e3 89 44 24
EIP: [<e3a9154b>] ecryptfs_process_helo+0x2e/0x170 [ecryptfs] SS:ESP
0068:de61fd30
---[ end trace 23f13772ffd66f93 ]---
Make sure to set ecryptfs-transport!
filename: /lib/modules/2.6.24.4/kernel/fs/ecryptfs/ecryptfs.ko.gz
license: GPL
description: eCryptfs
author: Michael A. Halcrow <[EMAIL PROTECTED]>
depends:
vermagic: 2.6.24.4 mod_unload PENTIUM4
parm: ecryptfs_verbosity:Initial verbosity level (0 or 1; defaults to
0, which is Quiet) (int)
parm: ecryptfs_message_buf_len:Number of message buffer elements
(uint)
parm: ecryptfs_message_wait_timeout:Maximum number of seconds that an
operation will sleep while waiting for a message response from userspace (long)
parm: ecryptfs_number_of_users:An estimate of the number of
concurrent users of eCryptfs (uint)
parm: ecryptfs_transport:Transport mechanism for communicating with
userspace daemons; 0 = netlink, 1 = connector, 2 = relayfs, 3 = procfs (uint)
As a side question, does #1, connector, work?
Using key /home/jayjwa/crypto/rsa-testing-key.pem
# mount -t ecryptfs /mnt/ecryptfs/crypt /mnt/ecryptfs/clear
Select key type to use for newly created files:
1) openssl
2) passphrase
Selection: 1
PEM key file [/root/.ecryptfs/pki/openssl/key.pem]:
Method of providing the passphrase:
1) passwd: Enter on Console
2) passwd_file: File Containing Passphrase
3) passwd_fd: File Descriptor for File Containing Passphrase
Selection [passwd]: 1
Passphrase:
Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
2) blowfish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32 (loaded)
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
Selection [aes]: 1
Select key bytes:
1) 16
2) 32
3) 24
Selection [16]:
Enable plaintext passthrough (y/n): n
Attempting to mount with the following options:
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=f4e702c4ad0755da
Mounted eCryptfs
# ecryptfsd --help
04/08/08- 1:23AM
Usage: ecryptfsd [options]
-p, --pidfile <pidfile> Set pid file name
-f, --foreground Don't fork into background
-C, --chroot <chroot> Chroot to directory
-R, --prompt-prog <prompt-prog> Program to execute for user prompt
-V, --version Show version information
-d, --channel <channel> Communications channel (netlink or procfs)
-h, --help Show usage information
# ecryptfsd --channel procfs
# pgrep -l ecryptfsd
1784 ecryptfsd
# cat /tmp/mysql-5.0.51a.tar.gz.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
iD8DBQBHlIpHjHGNO1By4fURAtgrAJ4n5jPumLbuATcuWdg/5rtTPghveQCgn/hF
0Y8j7jhF/Tt2tcdi8r5kuhM=
=3kuk
-----END PGP SIGNATURE-----
# mv /tmp/mysql-5.0.51a.tar.gz.asc /mnt/ecryptfs/clear
`/tmp/mysql-5.0.51a.tar.gz.asc' ->
`/mnt/ecryptfs/clear/mysql-5.0.51a.tar.gz.asc'
removed `/tmp/mysql-5.0.51a.tar.gz.asc'
# cp /tmp/SDL-1.2.13.tar.gz /mnt/ecryptfs/clear
`/tmp/SDL-1.2.13.tar.gz' -> `/mnt/ecryptfs/clear/SDL-1.2.13.tar.gz'
# keyctl show
Session Keyring
-3 --alswrv 0 0 keyring: _uid_ses.0
2 --alswrv 0 0 \_ keyring: _uid.0
779209263 --alswrv 0 0 \_ user: f4e702c4ad0755da
# file /mnt/ecryptfs/clear/*
/mnt/ecryptfs/clear/mysql-5.0.51a.tar.gz.asc: PGP armored data
/mnt/ecryptfs/clear/SDL-1.2.13.tar.gz: gzip compressed data, from Unix,
last modified: Mon Dec 31 01:17:06 2007, max compression
# mount
04/08/08- 1:31AM
/dev/hda1 on / type ext2 (rw)
proc on /proc type proc (rw)
configfs on /config type configfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
shm on /dev/shm type tmpfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
sysfs on /sys type sysfs (rw)
securityfs on /sys/kernel/security type securityfs (rw)
/mnt/ecryptfs/crypt on /mnt/ecryptfs/clear type ecryptfs
(rw,ecryptfs_sig=f4e702c4ad0755da,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,)
# umount /mnt/ecryptfs/crypt
04/08/08- 1:31AM
# keyctl clear @u
04/08/08- 1:31AM
# ls /mnt/ecryptfs/clear
04/08/08- 1:31AM
# ls /mnt/ecryptfs/crypt
04/08/08- 1:32AM
mysql-5.0.51a.tar.gz.asc SDL-1.2.13.tar.gz
# file /mnt/ecryptfs/crypt/*
04/08/08- 1:32AM
/mnt/ecryptfs/crypt/mysql-5.0.51a.tar.gz.asc: data
/mnt/ecryptfs/crypt/SDL-1.2.13.tar.gz: data
Using key /home/jayjwa/crypto/rsa-testing-key.pem
# mount -t ecryptfs /mnt/ecryptfs/crypt /mnt/ecryptfs/clear
04/08/08- 1:33AM
Select key type to use for newly created files:
1) openssl
2) passphrase
Selection: 1
PEM key file [/root/.ecryptfs/pki/openssl/key.pem]:
Method of providing the passphrase:
1) passwd: Enter on Console
2) passwd_file: File Containing Passphrase
3) passwd_fd: File Descriptor for File Containing Passphrase
Selection [passwd]: 1
Passphrase:
Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
2) blowfish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32 (loaded)
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
Selection [aes]: 1
Select key bytes:
1) 16
2) 32
3) 24
Selection [16]:
Enable plaintext passthrough (y/n): n
Attempting to mount with the following options:
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=f4e702c4ad0755da
Mounted eCryptfs
# pgrep -l ecryptfsd
04/08/08- 1:34AM
1784 ecryptfsd
# file /mnt/ecryptfs/clear/*
04/08/08- 1:34AM
/mnt/ecryptfs/clear/mysql-5.0.51a.tar.gz.asc: PGP armored data
/mnt/ecryptfs/clear/SDL-1.2.13.tar.gz: gzip compressed data, from Unix,
last modified: Mon Dec 31 01:17:06 2007, max compression
# cat /mnt/ecryptfs/clear/mysql-5.0.51a.tar.gz.asc
04/08/08- 1:34AM
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
iD8DBQBHlIpHjHGNO1By4fURAtgrAJ4n5jPumLbuATcuWdg/5rtTPghveQCgn/hF
0Y8j7jhF/Tt2tcdi8r5kuhM=
=3kuk
-----END PGP SIGNATURE-----
---------------------------------------------------------------------------------
With a user reading files using a root-run daemon:
Using key /home/jayjwa/crypto/rsa-testing-key.pem
ecryptfs-manager
eCryptfs key management menu
-------------------------------
1. Add passphrase key to keyring
2. Add public key to keyring
3. Generate new public/private keypair
4. Exit
Make selection: 2
Select key type to use for newly created files:
1) openssl
2) passphrase
Selection: 1
PEM key file [/home/jayjwa/.ecryptfs/pki/openssl/key.pem]:
Method of providing the passphrase:
1) passwd: Enter on Console
2) passwd_file: File Containing Passphrase
3) passwd_fd: File Descriptor for File Containing Passphrase
Selection [passwd]: 1
Passphrase:
Returning to main menu
eCryptfs key management menu
-------------------------------
1. Add passphrase key to keyring
2. Add public key to keyring
3. Generate new public/private keypair
4. Exit
Make selection: 4
keyctl show
Session Keyring
-3 --alswrv 100 -1 keyring: _uid_ses.100
344166184 --alswrv 100 -1 \_ keyring: _uid.100
36687031 --alswrv 100 100 \_ user: f4e702c4ad0755da
cat /mnt/ecryptfs/clear/mysql-5.0.51a.tar.gz.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
iD8DBQBHlIpHjHGNO1By4fURAtgrAJ4n5jPumLbuATcuWdg/5rtTPghveQCgn/hF
0Y8j7jhF/Tt2tcdi8r5kuhM=
=3kuk
-----END PGP SIGNATURE-----
file /mnt/ecryptfs/clear/*
/mnt/ecryptfs/clear/mysql-5.0.51a.tar.gz.asc: PGP armored data
/mnt/ecryptfs/clear/SDL-1.2.13.tar.gz: gzip compressed data, from Unix,
last modified: Mon Dec 31 01:17:06 2007, max compression
keyctl clear @u
keyctl show
Session Keyring
-3 --alswrv 100 -1 keyring: _uid_ses.100
344166184 --alswrv 100 -1 \_ keyring: _uid.100
cat /mnt/ecryptfs/clear/mysql-5.0.51a.tar.gz.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
iD8DBQBHlIpHjHGNO1By4fURAtgrAJ4n5jPumLbuATcuWdg/5rtTPghveQCgn/hF
0Y8j7jhF/Tt2tcdi8r5kuhM=
=3kuk
-----END PGP SIGNATURE-----
Thoughts, Issues:
1) When entering the public key, typing doesn't echo the characters.
Telling if you typed correctly is differicult.
2) A user can read ecryptfs files even if he has no/wrong key, as long
as ecryptfs has been mounted successfully. Shouldn't only users with
a proper key be able to read the files?
3) What's in modprobe.conf always overrules what you enter on the command
line, even if the parm. doesn't exist in modprobe.conf (but only on the
command line). In this case, you'll likely get a crash/hang.
# modprobe ecryptfs ecryptfs_verbosity=1 ecryptfs_number_of_users=2
ecryptfs_transport=3
modprobe.conf:
...
ecryptfs_verbosity=0
ecryptfs_number_of_users=2
...
Apr 7 23:40:20 vdrl ecryptfsd: Starting eCryptfs userspace netlink daemon
[1563]
Apr 7 23:40:20 vdrl ecryptfsd: Failed to send eCryptfs netlink message:
Connection refused
Apr 7 23:40:20 vdrl ecryptfsd: Failed to register netlink daemon with the
eCryptfs kernel module
Apr 7 23:40:20 vdrl ecryptfsd: Failed to send eCryptfs netlink message:
Connection refused
Apr 7 23:40:20 vdrl ecryptfsd: ecryptfsd_exit: Failed to unregister netlink
daemon with the eCryptfs kernel module
Apr 7 23:40:20 vdrl ecryptfsd: ecryptfsd_exit: Closing eCryptfs userspace
netlink daemon [1563]
# mv /tmp/mysql-5.0.51a.tar.gz.asc /mnt/ecryptfs/clear
`/tmp/mysql-5.0.51a.tar.gz.asc' ->
`/mnt/ecryptfs/clear/mysql-5.0.51a.tar.gz.asc'
(Hang & hangs the terminal)
4) There were a few error messages in syslog:
mount.ecryptfs: Error initializing key module
[/usr/lib/ecryptfs/libecryptfs_key_mod_gpg.so]; rc = [-22]
ecryptfsd: Error initializing key module
[/usr/lib/ecryptfs/libecryptfs_key_mod_gpg.so]; rc = [-22]
kernel: Error attempting to read the [user.ecryptfs] xattr from the lower
file; return value = [4294967201]
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Register now and save $200. Hurry, offer ends at 11:59 p.m.,
Monday, April 7! Use priority code J8TLD2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
eCryptfs-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ecryptfs-users