Электронная подпись в доверенной среде на базe загрузочной Ubuntu 14.04 LTS и Рутокен ЭЦП Flash

Процедура наложения электронной подписи, призванная обеспечить подтверждение целостности подписанного документа и его авторства, сама по себе может быть небезопасной.Основные атаки на ЭП — это кража ключа и подмена подписываемой информации, а также несанкционированный доступ к средству ЭП (например, USB-токену) посредством кражи его PIN-кода.Реализуются данные атаки различными способами и на различных уровнях. На уровне ОС это внедрение вредоносного ПО (вирусы, программы-шпионы, руткиты и т.п.), которое способно похищать ключи, PIN-коды и делать подмену документов посредством чтения и/или подмены данных в памяти системного процесса, используя различные механизмы «хака», заложенные в ОС.Если мы говорим о подписи в браузере, то к данным атакам добавляется возможность проведения атаки man-in-the-middle, направленной на модификацию подписываемых данных на web-странице или на кражу PIN-кода или на перехват secure token для возможности злоумышленнику прикинуться абонентом системы. Кроме того, на сайтах возможна атака типа CSS, обусловленная безалаберностью разработчиков сайта.

Очевидно, что максимально защитить клиента при проведении процедуры ЭП возможно лишь комплексом мер.К данным мерам можно отнести:

применение для электронной подписи криптографических смарт-карт/USB-токенов с неизвлекаемыми ключами использование правильной реализации протокола TLS на сайте правильное конфигурирование этой правильной реализации протокола TLS использование специальных аппаратных средств для визуализации подписываемых данных перед наложением подписи (trustscreen) корректная реализация браузерных плагинов и расширений, которые обеспечивают ЭП в браузере регламентирование процедуры подписи для пользователя с учетом встроенных в браузер механизмов безопасностипроверка сертификата TLS-сервера пользователем перед ЭП запуск браузерных плагинов и расширений только на доверенном сайте (сейчас правильно настроенные браузеры предупреждают пользователя о запуске) ввод PIN-кода токена по запросу только доверенного сайта защита ОС от вредоносного ПО (создание доверенной среды) Некоторое время назад наша компания выпустила новый Рутокен ЭЦП Flash. Это устройство «два в одном» — криптографический токен и управляемая FLASH-память в едином корпусе. При этом контроллер позволяется настраивать FLASH-память таким образом, что атрибуты настройки нельзя изменить без знания PIN-кода к устройству.

В данной статье мы сделаем кастомную Ubuntu 14.04 LTS, в которую «упакуем» смарткарточные драйвера и Рутокен Плагин. Эту ОС запишем на FLASH-память Рутокен ЭЦП Flash (USB-live) и специальными средствами сделаем ее read-only, так, что без знания PIN-кода злоумышленник не сможет снять этот атрибут.

Таким образом, получим загрузочное устройство, при загрузке с которого пользователь сразу получит возможность подписи документов в браузере на неизвлекаемых ключах в доверенной среде, целостность которой гарантируется управляющим контроллером USB-токена.

Модификация образа UbuntuВ качестве станка для кастомизации Ubuntu у меня был тоже Ubuntu.Подготовка:

sudo su apt-get install squashfs-tools genisoimage Скачиваем ISO-образ Ubuntu 14.04 и складируем его куда надо:

mkdir ~/livecdtmp mv ubuntu-14.04.1-desktop-i386.iso ~/livecdtmp cd ~/livecdtmp Монтируем ISO-образ:

sudo su mkdir mnt mount -o loop ubuntu-14.04.1-desktop-i386.iso mnt Делаем экстракт образа:

sudo su mkdir extract-cd rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd Ну и так далее:

sudo su unsquashfs mnt/casper/filesystem.squashfs mv squashfs-root editsudo su cp /etc/resolv.conf edit/etc/ cp /etc/hosts edit/etc/ mount --bind /dev/ edit/dev chroot edit mount -t proc none /proc mount -t sysfs none /sys mount -t devpts none /dev/pts export HOME=/root export LC_ALL=C dbus-uuidgen > /var/lib/dbus/machine-id dpkg-divert --local --rename --add /sbin/initctl ln -s /bin/true /sbin/initctl Собственно кастомизация — установка смарткарточного драйвера и плагина:

pt-get install libccid libpcsclite1 pcscd mkdir /home/ubuntu/.mozilla mkdir /home/ubuntu/.mozilla/plugins chmod 776 /home/ubuntu/.mozilla chmod 776 /home/ubuntu/.mozilla/plugins cp npCryptoPlugin.so /home/ubuntu/.mozilla/plugins cp librtpkcs11ecp.so /home/ubuntu/.mozilla/plugins И технические работы по созданию нового ISO:

apt-get clean rm /var/lib/dbus/machine-id rm /sbin/initctl dpkg-divert --rename --remove /sbin/initctl umount /proc || umount -lf /proc umount /sys umount /dev/pts exit sudo su umount edit/dev sudo su chmod +w extract-cd/casper/filesystem.manifest chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop rm extract-cd/casper/filesystem.squashfs mksquashfs edit extract-cd/casper/filesystem.squashfs -comp xz -e edit/boot printf $(sudo du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size nano extract-cd/README.diskdefines cd extract-cd rm md5sum.txt find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt mkisofs -D -r -V »$IMAGE_NAME» -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o …/ubuntu-14.04.1-desktop-i386-rutoken.iso . Ubuntu-14.04.1-desktop-i386-rutoken.iso — это наш загрузочный кастомизированный образ (с установлеными смарткарточными драйверами и Рутокен Плагин), который готов к записи на Рутокен ЭЦП Flash.

Создание загрузочного устройства Первым делом отформатируем Рутокен ЭЦП FLASH специальной утилитой, выставив памяти атрибут read-write (под виндой):

rtadmin.exe -F 1 30000 u rw -o 87654321 -z rtPKCS11ECP.dll Затем запишем на него ISO, используя UNETBootin (под убунтой): 6c765a8bbe754751bbc0c948e629fa88.png

В качестве размера для preserve file установим 0. Тогда загрузочная Ubuntu будет хранить все изменения в RAM-памяти, а не на FLASH.После записи образа установим специальными средствами атрибут read-only FLASH-памяти устройства:

rtadmin.exe -C 1 ro p -c 12345678 -z rtPKCS11ECP.dll Теперь никто без знания PIN-кода устройства не сможет модифицировать записанный на FLASH-памяти образ Ubuntu.

Что получилось Ниже показан процесс загрузки с Рутокен ЭЦП Flash и подпись документов в браузере в доверенной среде:

1. Boot-меню в bios

96784433c1894cc38fbcb066eee26bba.JPG

2. Выбор нужного пункта в меню загрузчика

9a232487a32f42ed88d5ba6210871ccc.JPG

3. Ubuntu загрузилась, запускаем браузер, заходим в демо-систему

efd4353c941c4d6692a790e1464b1a90.png

4. Позволяем плагину «Rutoken» загрузиться

693a01def1cf4d379fcc27e1c68ef771.png

5. F5

7d1d80d8db2944629f3eb56a59d8b97e.png

6. Авторизация в системе по сертификату, который хранится на Рутокен ЭЦП Flash

48567fea3bbd442887c85c1a17b79919.png

Вводим PIN-код:

acd7852c65f04051853df544900d15ee.png

6. Подпись платежек в личном кабинете

a408325fdc004432bb4888605dc77de8.png

5f97a28a1d974513a3dab8424491ca01.png

© Habrahabr.ru