Как стать автором
Обновить

Комментарии 28

Украду, пожалуй, идею брать хэш от безобидного файлика вместо ключевого файла в явном виде.
В остальном у меня другие сценарии, но на серверы давно уже передаю ключик шифрования (раньше LUKS, теперь везде переехал на ZFS) скриптом по сети. При каждой загрузке сервера дёргается скрипт, расшифровывает и подмонтирует хранилище образов дисков виртуалок и потом уже запускает оные. При необходимости вручную или по событию (например, датчику открытия корпуса...) размонтирует и ключик выгружает.

НЛО прилетело и опубликовало эту надпись здесь

Если у меня (а) внутри моего VPN заведётся MITM, который (b) и fingerprint ssh-сервера подделает, и (c) собственно ssh-соединение расшифрует, - я... хм... изрядно изумлюсь :)

НЛО прилетело и опубликовало эту надпись здесь

Во-первых, недостаточно. Допустим атакующий попал в VPN и каким-то образом перехватил IP сервера (тоже не вполне очевидная задача). Мой скрипт подключается к этому серверу, и без п. b ругается, что в known hosts не тот фингерпринт и ничего не передаёт.

Во-вторых, ну Вы же не думаете, что в VPN, имеющем доступ к SSH, админкам и пр., у меня толпа народа сидит, и что новые подключения к этому VPN не мониторятся и предварительно не одобряются? (На самом деле всё несколько сложнее, но упрощаю для примера).

НЛО прилетело и опубликовало эту надпись здесь

Да нет, как раз спасибо и автору статьи, и Вам, что появился лишний повод пересмотреть свежим взглядом, как оно там устроено и какие векторы атаки насколько успешно закрывает. Вот я, например, никогда не лез в кишки ssh, чтобы понять, как этот фингерпринт генерится, наивно полагая, что уж там точно есть некая криптография, которая не позволит его продублировать просто слушая трафик. Но надо загуглить, пожалуй.

В моей картине мира риск изъятия сервера в ходе совершенно тупого маски-шоу на пару порядков более вероятен, чем риск внедрения злоумышленника во внутреннюю сеть. Но мы ж тут про паранойю, так что надо со всех сторон защититься :)

НЛО прилетело и опубликовало эту надпись здесь

Ну можно же в https завернуть, например, с проверкой сертификатов, не?

Тогда и ключ не перехватят, и тем более свой не подсунут (а если и подсунут - что это даст кроме отказа)

неа.

TMPFS_DIR="/tmp/tmpfs_key_$USER"
...
mkdir -p "$TMPFS_DIR"
  if [ $? -ne 0 ] ; then
    exit 0
  fi

слажает на симлинке:

max@xz:~$ rm -Rf /tmp/xz*
max@xz:~$ mkdir /tmp/xz
max@xz:~$ touch /tmp/xz/123
max@xz:~$ ll /tmp/xz*
total 8
drwxrwxr-x  2 max  max  4096 Mar 11 22:31 ./
drwxrwxrwt 17 root root 4096 Mar 11 22:31 ../
-rw-rw-r--  1 max  max     0 Mar 11 22:31 123
max@xz:~$ ln -s /tmp/xz /tmp/xz2
max@xz:~$ ll /tmp/ |grep xz
drwxrwxr-x  2 max  max  4096 Mar 11 22:31 xz/
lrwxrwxrwx  1 max  max     7 Mar 11 22:31 xz2 -> /tmp/xz/
max@xz:~$ ln -s /tmp/xz /tmp/xz2
max@xz:~$ mkdir -p /tmp/xz2
max@xz:~$ echo $?
0
max@xz:~$ ll /tmp/ |grep xz*
drwxrwxrwt 17 root root 4096 Mar 11 22:32 ./
drwxr-xr-x 23 root root 4096 Sep 14 10:56 ../
drwxrwxrwt  2 root root 4096 Feb 28 01:00 .font-unix/
drwxrwxrwt  2 root root 4096 Feb 28 01:00 .ICE-unix/
drwx------  2 root root 4096 Mar  6 19:46 mc-root/
drwx------  4 root root 4096 Feb 28 01:00 snap-private-tmp/
drwx------  3 root root 4096 Feb 28 01:00 systemd-private-4188cc9d91804f6b80f726d21c270ac4-ModemManager.service-jZBoE8/
drwx------  3 root root 4096 Mar  4 21:09 systemd-private-4188cc9d91804f6b80f726d21c270ac4-ocserv.service-VIc0Cd/
drwx------  3 root root 4096 Feb 28 01:00 systemd-private-4188cc9d91804f6b80f726d21c270ac4-polkit.service-ZRHRw5/
drwx------  3 root root 4096 Feb 28 01:00 systemd-private-4188cc9d91804f6b80f726d21c270ac4-porcula.service-Fh0vYx/
drwx------  3 root root 4096 Feb 28 01:00 systemd-private-4188cc9d91804f6b80f726d21c270ac4-systemd-logind.service-fYEaRb/
drwx------  3 root root 4096 Mar  5 21:05 systemd-private-4188cc9d91804f6b80f726d21c270ac4-systemd-resolved.service-uOtQ45/
drwx------  3 root root 4096 Feb 28 01:00 systemd-private-4188cc9d91804f6b80f726d21c270ac4-systemd-timesyncd.service-zHCHyx/
drwx------  3 root root 4096 Mar  6 19:54 systemd-private-4188cc9d91804f6b80f726d21c270ac4-transmission-daemon.service-wVXiDO/
drwxrwxrwt  2 root root 4096 Feb 28 01:00 .X11-unix/
drwxrwxrwt  2 root root 4096 Feb 28 01:00 .XIM-unix/
drwxrwxr-x  2 max  max  4096 Mar 11 22:31 xz/
lrwxrwxrwx  1 max  max     7 Mar 11 22:31 xz2 -> /tmp/xz/

далее слажает вгет на уже существующем файле

  wget -q -O "$IMG_FILE" "$SECRET"

  if [ $? -ne 0 ] || [ ! -f "$IMG_FILE" ] ; then

вот так, например

max@xz:~$ wget  -q -O /tmp/123 https://www.rbc.ru/
max@xz:~$ echo $?
0
max@xz:~$ wget  -q -O /tmp/123 https://www.rbc.ru/
max@xz:~$ echo $?
0

создаем симлинк /tmp/$username, подкладываем свое и ждем пока автор выкачает ключ. кстате непонятно какой - приватный или публичный

какие проблемы: если вы тот злоумышленник, который УЖЕ сидит на машине и делает симлинки - то вам мешают просто скачать ключ только права на каталог /etc/paranoid/users.
И тогда рут мог бы сконфигурить вместо /tmp - /var/paranoid, и точно так же закрыть правами его.

для уже сидеть на машине и делать симлинки в /tmp достаточно пользователя nginx или подобного с /sbin/nologin и ровно это показывал пример - непривелигерованный пользователь

и да, спойлер - давно придумали mktemp от этих проблем, прерыват цепочку атаки прям на первом пункте, но оный не единственный для "паранойи"

И то правда, можно же его подключить к делу. Добавим )

Идея хорошая, но она не соответствует нескольким исходным критериям. Если вы вынуждены дать доступ (ваш пароль) к диску вашего компьютера, его можно расшифровать. Исправьте меня, если я не прав, но ключ хранится на диске... поэтому каждый, у кого есть доступ, может прочитать файл. Возможным решением является хранение папки на скрытом зашифрованном разделе.

Всё зависит от модели угроз. Например, если главная угроза - "пришли с обыском, изъяли технику, угрозой «позвонить Путину» заставили сообщить пароль", то, при условии, что вместе с техникой не забрали вас (или забрали, но дали позвонить доверенному лицу), пока техника путешествует к криминалистам, файл из интернета уже может быть и потёрт.

Другая разновидность этой схемы: расшифровка накопителя лишь при одновременном вводе правильного пароля и вставке microSD-карточки с ключевым файлом. Если успеете уничтожить карточку, пока пилят дверь, расшифровать накопитель уже будет невозможно.

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

В том-то и дело, ключ на диске НЕ хранится. Он где-то в другом месте, и если это место неподконтрольно тому кто вынуждает вас выдать пароль - то ключ может быть легко уничтожен третьими лицами, или автоматикой.

Проблема в том, что ключевой файл нужно как-то резервировать. Сервер в интернете это не очень надёжное место. Файл может быть банально потерян из-за сбоя (у выделенного сервера помер накопитель / в облаке произошёл сбой с потерей данных). А если есть копия, то нужно продумать оперативное уничтожение уже двух файлов.

Более того, файл диска не обязан быть именно файлом на диске - это может быть вообще подключаемая флешка

Для тех, кто захочет реализовать это в Windows: такое (ключевой файл на внешнем накопителе) умеет штатный BitLocker. Разумно дополнить эту схему и паролем (это BitLocker тоже умеет), таким образом для расшифровки нужно одновременно и знать (пароль) и иметь (флешку).

Есть такая проблема, но ее уже можно решать очень по разному. Именно поэтому ключ не должен быть похож на ключ - и резервная копия ключа может оказаться в самом неожиданном и довольно надежном месте, но об этом никто не будет знать кроме того кто создавал этот ключ - и это не обязательно пользователь под контролем.

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

Получив доступ к закрытому сейфу - вы узнаете где этот ключ лежал, но вы не знаете что это такое было. Может быть он у вас в руках, но не попробовав применить - не узнаете этого.
А может быть резервной копии и нет - и этого вы тоже не узнаете.

Что-то вы не то говорите. Вот вы могли бы знать пароль, но хотите, чтобы и при вашем сотрудничестве пароль оставался неизвестным, но ведь вы будете знать где ключ и вкуда он вмонтирован, вы и расскажете...

В практическом применении имеет смысл только что-то, что имеет два ключа, и тогда, если у вас стальные яйца вы выдадите тот ключ, который уничтожит систему. Но работает это только если систему не сдублировать.

Альтернатива - получение ключа извне, и возможность третьих лиц это всё заблокировать. Но тогда вы в целом не нужны, а забирать надо этих третьих лиц...

Собственно еще много лет назад знал людей, которые работали на удаленных машинах, причем где эти машины они не знали. И доступ к ним контролировали совершенно иные люди находящиеся тоже неизвестно где и не имеющие имен. Т.е. нажав ресет на своей рабочей станции ты отключался от работы навсегда. Подключить тебя мог только некто, находящийся где-то и ты должен был ему что-то сказать, а он мог многое проверить. (Видео из офиса к нему шло к примеру итп).

Немного автоматизации добавлено в Network-Bound Disk Encryption (NBDE).

условие номер два: вы не можете рассказать пароль. Захотите — но не сможете.

условие 2 со звездочкой: иметь способ доказать любопытным злодеям что пароль вы дейcтвительно не знаете

А это уже нюансы: кому и какие доказательства чего требуются, им или вам )

Понравилась идея с картинкой из интернета. Только вот теперь чувствительной информацией становится уже адрес картинки. Даже если она будет своевременно заменена, будет забавно, если её какой-нибудь cdn или web archive запомнит.

Вот, спасибо за идею )
Непременно запомнит, значит, надо это учитывать...

В давно почившем TrueCrypt такое было, можно было любой файл в качестве ключа использовать. А для параноиков была фича с со скрытым диском - два разных ключа, зашифрованное одним лежит в начале контейнера, зашифрованное вторым в конце, и в зависимости от использованного ключа видно либо одно, либо второе. При принуждении можно отдать первый ключ, узнать по контейнеру есть ли второй нельзя. Главное, чтобы обоим фрагментам места хватило.

https://www.truecrypt71a.com/documentation/plausible-deniability/hidden-volume/

Узнать можно, по крайней мере так заявил продолжитель дела, без почин трудящийся мисье Idrassi из Франции, в форке VeraCrypt. По наводке анонимного лица. Было исправлено, что именно поменялось - не смотрел.

Эээ... простите, но что мешает требовать оба ключа :)? Если уж утилита штатно так умеет.

Да, у того кто создавал контейнер будут проблемы, если он создал один ключ. Но его проблемы совершенно никого не заботят...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации