FreeBSD crypt disk via GBDE

Во FreeBSD есть замечательная подсистема GEOM, в рамках которой реализована фича, которая называется GEOM based disk encryption или GBDE. GBDE позволяет создавать шифрованные разделы, а утилита mdconfig позволяет создавать разделы, которые физичeски распологаются в файле.

Итак:

cd ~
dd if=/dev/zero of=.crypt bs=512 count=скока вешать в граммах?
mdconfig -a -t vnode -u 1 -f .crypt
gbde init /dev/md1
gbde attach /dev/md1
newfs /dev/md1.bde
mount /dev/md1.bde /mnt

Готово! Теперь у нас есть шифрованный диск. Но! Нет удобного способа его монтирования/размонтирование/резервного копирования, поэтому … Скрипт в студию!

Отмаз: Это болванка скрипта, обработка ошибочных ситуаций практически не реализована. Так что — AS IS. И еще. Я использую KDE и поэтому взаимодействие с пользователем (тоесть со мной) скрипт осуществляет через программу kdialog. У вас ее может не быть и поэтому, можно использовать утилиты вроде dialog, ssh-askpass и другие сходные по назначению. Также, нужно помнить, что все выше и ниже написанное будет работать только в FreeBSD 5-й версии и выше.

#!/bin/sh

start_disk ()
{
        if [ -z "`mount | grep bde`" ]; then
                if [ ! -c /dev/md$UNIT ]; then
                        mdconfig -a -t vnode -u $UNIT -f /usr/home/asmi/.crypt
                fi
                if [ -c /dev/md$UNIT ]; then
                        gbde attach /dev/md$UNIT -p "`kdialog --password "Crypted disk"`"
                fi
                if [ -z "`mount | grep bde`" -a -c /dev/md$UNIT.bde ]; then
                        fsck -F -t ufs -p /dev/md0.bde
                        mount /dev/md$UNIT.bde /home/asmi/Crypt
                fi
        fi
}

stop_disk ()
{
        if [ ! -z "`mount | grep bde`" ]; then
                umount /dev/md$UNIT.bde
                if [ $? -eq 1 ]; then
                        kdialog --error "Can not umount crypt drive"
                        exit
                fi
        fi
        if [ -c /dev/md$UNIT.bde ]; then
                gbde detach /dev/md$UNIT
        fi
        if [ -c /dev/md$UNIT ]; then
                mdconfig -d -u $UNIT
        fi
}

UNIT=0
FLASH="/dev/ad4s1"
#Здесь у меня находится PCMCIA ATA FLASH

case $1 in
start)
        start_disk
        ;;
stop)
        stop_disk
        ;;
copy)
        if [ ! -c $FLASH ]; then
                kdialog --error "No flash device $FLASH"
                exit
        fi
        stop_disk
        MNT=`mount | grep $FLASH`
        if [ -z "$MNT" ]; then
                MDIR=`dd if=/dev/random count=1 2>/dev/null | md5`
                mkdir /tmp/$MDIR
                mount -t msdos $FLASH /tmp/$MDIR
                cp /home/asmi/.crypt /tmp/$MDIR
                umount $FLASH
                if [ -z `mount | grep /tmp/$MDIR` ]; then
                        rm -rf /tmp/$MDIR
                else
                        kdialog --error "Can not umount /tmp/$MDIR"
                fi
        else
                DIR=`echo "$MNT" | awk '{print $3}'`
                echo "DIR: $MNT [$DIR]"
                cp /home/asmi/.crypt $DIR
        fi

        ;;
*)
        echo "usage: $0 start|stop|copy"
esac

Все просто и изяшно! Пользуйтесь на здоровье!

Рубрика: ЧАВО | Добавить комментарий

Интергрируем GPG и VIM под win32

Ух, давно не давал я воли параное. Опять хочется поговорить про шифрование. Теперь про то, как редактировать зашифрованный файл с помошью vim, да так, чтобы на диске он в открытом виде не появлялся. Встречаем! gpg.vim. Плагин, который нужно класть в папку vim/plugins. Gpg должень быть доступен через %path%,

augroup gpg_encrypted
autocmd!
" don't use swap file or ~/.viminfo while editing
autocmd BufReadPre,FileReadPre     *.gpg set viminfo=
autocmd BufReadPre,FileReadPre     *.gpg set noswapfile
" filter the encrypted file through openssl after reading
autocmd BufReadPre,FileReadPre     *.gpg set bin
autocmd BufReadPre,FileReadPre     *.gpg set cmdheight=2
autocmd BufReadPost,FileReadPost   *.gpg 0,$!gpg -q 2> NUL:
" switch back to nobin mode for editing
autocmd BufReadPost,FileReadPost   *.gpg set nobin
autocmd BufReadPost,FileReadPost   *.gpg set cmdheight&
autocmd BufReadPost,FileReadPost   *.gpg set shell&
autocmd BufReadPost,FileReadPost   *.gpg execute ":doautocmd BufReadPost ".expand("%:r")
" filter plain text through gpg before writing
autocmd BufWritePre,FileWritePre   *.gpg set bin
autocmd BufWritePre,FileWritePre   *.gpg set cmdheight=2
autocmd BufWritePre,FileWritePre   *.gpg 0,$!gpg -e -q -r your_email_here
" undo the encrypt step so we can continue editing after writing
autocmd BufWritePost,FileWritePost *.gpg silent u
autocmd BufWritePost,FileWritePost *.gpg set nobin
autocmd BufWritePost,FileWritePost *.gpg set cmdheight&
autocmd BufWritePost,FileWritePost *.gpg set shell&
augroup END

Теперь, при открытии файлов *.gpg gpg будет спрашивать пароль ключа и только потом, показывать содержимое файла.

В _vimrc у меня включено set foldmethod=marker, значит все что внутри литералов {{{ … }}} будет фолдиться, тоесть скрываться с глаз долой.

Болванку плагина где то потырил! Где не помню.

Рубрика: ЧАВО | Добавить комментарий