From: ken <gebser@mousecar.com>
To: Louis <spalax@gresille.org>, dm-crypt <dm-crypt@saout.de>
Subject: Re: [dm-crypt] Option "validate passphrase" for command cryptsetup
Date: Tue, 19 Jun 2012 12:56:08 -0400 [thread overview]
Message-ID: <4FE0AF28.4040909@mousecar.com> (raw)
In-Reply-To: <4FE05A32.9010402@gresille.org>
Louis,
Thanks for this. Yes, I would like the makefile and configure.ac files.
Last year I encountered the very problem your program is meant to avoid:
It was months since I entered my LUKS passphrase and I'd forgotten it.
With the hope that I might remember it one day, I mounted the disk in
another machine and wrote a bash script to try out passphrases on it...
but I haven't discovered it yet. Now I'm looking for other options.
So two questions:
Will this program work on just the LUKS header? Or does it work only on
the entire mount point (with all the data therein included)?
Is there a delay of some seconds required between invocations?
Thanks much.
On 06/19/2012 06:53 AM Louis wrote:
> Hello,
> for information, I wrote a small C program to check if the given
> passphrase is correct, without doing anything on the disk. The command
> is used this way:
>
> $ cryptsetup_check_passphrase /dev/sda1
> Enter passphrase for /dev/sda1:<MY_SECRET_PASSPHRASE>
> Valid key (slot 0)
> $
>
> If you think it can benefit cryptsetup, I offer to write the necessary
> patch to include it to cryptsetup (as a "luksValidateKey" LUKS action).
>
>
> # why do I need such a command ?
>
> We are a group of hacktivists who offer some online services (such as
> email addresses). Our disks are encrypted using LUKS. As we are six
> members operating the server, and we reboot it only a few times a year,
> it may happen that some of us only use the passphrase once in two years,
> which is prone to forgetting. So we want a way to, once in a while (at
> our monthly meetings), check that we still know our passphrase, without
> risking to do something on the disk (creating, removing partition,
> deleting passphrases, etc.).
>
> # Security risks
>
> Isn't this function a wonderful tool to try brute force attacks ? I do
> not think so. Attacker needs to be root to run it, at which point (s)he
> can already do a lot of harmful things. Moreover, once (s)he is root,
> attacker might as well compile the program I just wrote to try this
> brute force attack. To sum up: Yes, it can be used to brute force the
> partition, but nothing more that what was possible to do without this tool.
>
> Regards,
> Louis
>
> PS : Not to overload this list with many files, I only give
> you here the C code. If you want the makefile and configure.ac, just ask.
>
>
> #include<stdio.h>
> #include<stdlib.h>
> #include<string.h>
>
> #include<libcryptsetup.h>
>
> void usage() {
> printf("cryptsetup_check_passphrase LUKSDEVICE\n");
> }
>
> int check_passphrase(const char* device_name) {
> int keyslot;
> int error;
> int status;
> struct crypt_device *cd = NULL;
>
> if ((error = crypt_init(&cd, device_name))) {
> printf("Could not open device \"%s\": %s\n", device_name,
> strerror(-error));
> return 1;
> }
> if ((error = crypt_load(cd, NULL, NULL))) {
> printf("Could not load device \"%s\": %s\n", device_name,
> strerror(-error));
> return 1;
> }
>
> keyslot = crypt_activate_by_passphrase(cd, NULL, CRYPT_ANY_SLOT, NULL,
> 0, 0);
> if (keyslot>= 0) {
> printf("Valid key (slot %u)\n", keyslot);
> status = 0;
> } else {
> printf("No matching key found: %s\n", strerror(-keyslot));
> status = 1;
> }
> crypt_free(cd);
> return status;
> }
>
> int main( int argc, const char* argv[] ) {
> int status;
>
> /* Parsing arguments */
> if (argc != 2) {
> usage();
> return 1;
> }
>
> /* Check */
> status = check_passphrase(argv[1]);
>
> return status;
> }
> _______________________________________________
> dm-crypt mailing list
> dm-crypt@saout.de
> http://www.saout.de/mailman/listinfo/dm-crypt
next prev parent reply other threads:[~2012-06-19 16:56 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-19 10:53 [dm-crypt] Option "validate passphrase" for command cryptsetup Louis
2012-06-19 11:26 ` Milan Broz
2012-06-19 12:29 ` Arno Wagner
2012-06-19 13:41 ` Milan Broz
2012-06-19 13:54 ` Thomas Bächler
2012-06-19 14:17 ` Milan Broz
2012-06-19 14:56 ` Matthias Schniedermeyer
2012-06-19 16:20 ` ken
2012-06-19 22:02 ` Heinz Diehl
2012-06-19 15:04 ` jonas
2012-06-19 16:14 ` Milan Broz
2012-06-19 16:46 ` Jonas Meurer
2012-06-20 1:13 ` Arno Wagner
2012-06-19 16:56 ` ken [this message]
2012-06-20 7:41 ` Louis
2012-06-20 8:27 ` Milan Broz
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=4FE0AF28.4040909@mousecar.com \
--to=gebser@mousecar.com \
--cc=dm-crypt@saout.de \
--cc=spalax@gresille.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.