Задать вопрос
Ответы пользователя по тегу Шифрование
  • Как и от каких атак защитить свой сервер, находящийся на чужом гипервизоре?

    @rPman
    Универсально защититься нельзя. Но некоторые атаки будут стоить дорого, на столько что не будут иметь смысла.

    Все же дешевле будет приобрести отдельный компьютер, разместить его в сейфе с пломбами и добавить контроль за целостностью корпуса - при вскрытии выключать компьютер... и да, оперативную памяти перед выключением нужно очищать, в linux вроде помню можно было даже при панике это сделать, а в windows хз (потому что содержимое ram можно восстановить если заморозить его и оперативно извлечь из компьютера). Кстати про оперативную память, если запустить свой гипервизор, в котором есть поддержка шифрования памяти (в современные процессоры эту фичу уже встроили AMD SME/SEV, Intel TME/MKTME) то это защитит от атаки извечения памяти.

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

    upd. компьютеры с поддержкой TPM 2.0 поддерживают шифрование на уровне биос, т.е. загрузчик можно зашифровать, ключи залить в биос, и никто даже реверсить не сможет. Пример как это с дебианом сделали
    Ответ написан
    Комментировать
  • Как сделать быстрый поиск в шифрованной системе?

    @rPman
    "Быстро" не получится.
    Ваш подход максимально верный - поиск должен осуществляться на клиенте.

    Есть гомоморфное шифрование, позволяет буквально проводить вычисления над зашифрованными данными без их расшифровки. Но это адский треш, вся база данных на каждую операцию должна проходить через вычисления. Помню был аддон для postgres (давно, маловероятно что поддерживается), так же помню была статья про компилятор типа C языка (без циклов)
    Ответ написан
    Комментировать
  • Возможно ли идеальное шифрование?

    @rPman
    Для гарантированной доставки сообщений с защитой от прочтения сейчас есть 'квантовое шифрование', которое шифрованием по факту не является, а суть использование особенностей основы нашей реальности (точнее нашего ее понимания через квантовую механику) с возможностью с гарантией детектировать факт подслушивания отсылаемой информации (она дойдет только при условии что никто не слушает и квант с информацией ни с чем не провзаимодействовал).

    На практике, в интернете, защищенным квантовым шифрованием, по этому квантовому каналу передается временный ключ шифрования (канал очень медленный) а сами данные передаются по обычному быстрому каналу, зашифрованные простым и надежным методом xor с этим ключом.
    Ответ написан
    4 комментария
  • Как выполнить поиск по зашифрованому контенту?

    @rPman
    Есть ещё третий вариант - гомоморфное шифрование. Когда возможны операции над зашифрованным контентом, результат будет так же зашифрованный, и чтобы его прочитать его нужно расшифровать.

    Гугли, есть библиотеки и даже расширение postgres (очень старое, не факт что поддерживается).

    С практической точки зрения польза сомнительна. Ресурсов алгоритм жрет непомерно много и использовать его имеет смысл только если альтернативы в принципе нет.
    Ответ написан
    Комментировать
  • Как специально не знать пароль?

    @rPman
    Да, ты помнишь часть пароля, вторую часть пароля получаешь вычислениями из первого.

    Самые надёжные алгоритмы - это криптографические хеши, считаешь хеш от хеша от хеша... N-раз, это не распараллелить на кучу компьютеров.

    Недостаток, генерация пароля так же требует столько же времени, и это не ускорить.
    Ответ написан
    Комментировать
  • Как зашифровать на PHP строку в токен 32 символа?

    @rPman
    возможность его расшифровать
    это о чем? восстановить исходную строку из 64 символов? если изначальная строка будет не больше этого размера то это возможно обычным шифрованием с ключом, алгоритмов тьма, популярный - асимметричное шифрование

    Если изначальная строка длиннее, то либо нужно ее упаковать (алгоритмов тоже тьма, включая тех что работают с использованием прошлых данных, например diff возвращает разницу между двумя текстовыми файлами, построчно)

    Ну и само собой невозможно любые данные упаковать в фиксированный объем. Где то нужно хранить изначальные данные и тогда твой токен будет просто идентификатором
    Ответ написан
  • Можно ли так зашифровать компьютер?

    @rPman
    тупой пример реализации - загрузка по сети, где сервером выступает этот второй компьютер и отвечает за раздачу загрузчика, внутри которого закладывается минимальный ssh сервер, к которому подключается пользователь, вводит пароль/загружает ключ расшифровки локального диска и запускает с него загрузку.

    в зависимости от поддержки железом можно и windows так запустить, ну а linux и подавно чуть ли не штатно так настраивается

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

    Атаку можно сделать еще более дрогой, если защищаемый компьютер позволяет подписывать своим ключом загрузчик (тогда чужой с гипервизором запустить не сможет), в этом случае остается очень дорогой способ подмены железа на специализированное (например pci устройства имеют прямой доступ к памяти машины).
    Ответ написан
  • Как зашифровать мобильное устройство на Android?

    @rPman
    все зависит от вашего производителя и не вырезал ли он эту фичу из системы ибо она там давно
    у lineageos кажется с 8-ой версии android была возможность создать второй аккаунт, и переключаться между ними
    между аккаунтами доступа нет

    точно знаю что последние пару-тройку лет у xiaomi эта фича есть, называется второе пространство, доступ под отдельным паролем.
    Ответ написан
    Комментировать
  • Как (правильно) шифровать данные и хранить ключи на облачном сервисе?

    @rPman
    Если говорить про вектор атаки - однократный физический доступ злоумышленника к серверу, то хранить критичную информацию только в оперативной памяти, обфусцированной (чтобы дамп памяти было сложно анализировать) и вводить загружать вручную только в момент включения/перезагрузки машины

    Обычно сама информация в памяти зашифрована например паролем, и вот этот пароль уже вводится пользователем, возможен вариант с многоуровневым шифрованием, когда пароль расшифровывает набор ключей для шифрования а они в свою очередь дают доступ к всей базе паролей (сама база паролей зашифрованной может лежать где угодно)

    Один из способов - загрузочное устройство, которое физически подключается к серверу при включении/перезагрузки и содержит в себе физическую клавиатуру, код загрузчика (если linux то банально установленный grub и vmlinuz и initramfs) и необходимые ключи шифрования, а сами данные уже полностью зашифрованные хранятся на сервере. Так же разделяют собственно расшифровку ключей и физическое подключение устройство, доверив последнее другому сотруднику (его задача контролировать что железо не подменено и следить за закрытием сейфа и помещения) а ввод пароля проводится по сети другим.

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

    p.s. это не защитит данные от других векторов атаки, например через уязвимости в софте! но для этого стараются разделять операционными системами хранение и обработку данных (точнее разделение на микросервисы с виртуализацией и разграничением доступа для каждого, чтобы взлом одного не дал ничего кроме того чем этот модуль занимается).

    плюс по мелочи, типа нестандартное окружение, в котором нет привычных инструментов, не нужных сервису (например злоумышленник может очень огорчиться, если сервис nodejs не будет уметь запускать sh скрипты, не будет python и т.п.)
    Ответ написан
    Комментировать
  • Реально ПОЛНОдисковое шифрование реализуемо?

    @rPman
    На windows да veracrypt, bitlocker, truecrypt

    на linux с помощью loop-aes, truecrypt или dm-crypt-luks
    Ответ написан
  • Забыл поставить галочку шифрование при установке linux, как зашифровать уже установленную систему?

    @rPman
    блочное шифрование - решение только вокруг типового backup format restore, т.е. необходимо место куда перенести бакап уже установленной системы

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

    p.s. все зависит от чего защищаешься шифрованием, если к машине (железу) нет незаметного доступа злоумышленником, и требуется защититься просто от копирования, то шифрование домашней директории (точнее там где хранишь файлы) более чем достаточно
    Ответ написан
    Комментировать
  • Какой оптимальный алгоритм для однозначного определения слагаемых в сумме?

    @rPman
    Если представить стоимость отдельного заказа (в копейках) в 2-ричной системе счисления (набор бит) и каждый заказ должен устанавливать только свой бит (брать младшие биты, установив остальные в 0), то сумма этих чисел в младших разрядах будет аналогично битовой операции OR, т.е. по итоговой сумме можно будет однозначно понять, какой заказ был включен в нее.

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

    Пример, берем младшие 4 бита для адреса (возможность одновременно быть в обработке 4-ем заказам)
    1 - 10110001 цена 177р
    2 - 01100010 цена 98р
    3 - 11110100 цена 244р
    4 - 00011000 цена 24р
    если платежка пришла по 3-ем заказам, например 1+2+4 то это даст сумму 299р - 100101011, смотрим на младшие биты, установлены 1,2 и 4


    Недостаток, 20 заказов это 2^20 копеек - это разница в цене на 10т.р. (т.е. 20-ый заказ может отличаться по цене от первоначального на эту сумму), так же это накладывает ограничение на минимальную цену заказа (можно подбирать для дешевых заказов младшие биты а для по дороже - по старше.

    Логично что это подойдет только если заказов мало, например 2^10 это всего 10.24р

    К сожалению если не добавить какого то еще знания о возможностях группировки заказов, то это никак не оптимизировать
    Ответ написан
    1 комментарий
  • Как зашитить информацию на виртуальном машине находящийся на облаке?

    @rPman
    Абсолютной защиты получить пока невозможно.
    Корень проблемы кроется в загрузчике, если его можно подменить, значит можно вытянуть все остальное, через пароли к шифрованным разделам.
    Вторая проблема - возможность хостера получить содержимое оперативной памяти на любой момент времени (почти штатная фича виртуальных машин).

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

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

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

    Привожу пример простого и дешевого решения для обывателя - любой хостинг, хоть lxc/openvz, (т.е. дающий абсолютный контроль над файлами хостеру), и запуск внутри виртуальной машины, например на основе user mode linux, это буквально ядро linux в виде бинарника (не требует ничего, ни модулей ядра ни поддержки виртуализации, и при этом не замедляет работу), в который можно зашить команды запуска (откуда взять загрузчик, где лежит образ диска, параметры шифрования и т.п.), пароль вводится в консоли ssh загрузчика (initramfs гостевой машины). Все запускаемые бинарники должны размещаться не на сервере а подгружаться с надежного клиента, управляющего запуском. Еще, для kvm были патчи онлайн шифрования оперативной памяти, да ценой очень низкой скорости, но стоимость взлома такой машины становится запредельной.
    --------------------------------------------------------------
    Правильный способ, дающий очень высокие гарантии - для ввода пароля в датацентр для включения машины катается специальный надежный человек, который носит с собой часть оборудования (консоль и диск с загрузчиком) и проводит минимальный визуальный контроль чтобы отследить вскрытие и замену железа (пломбы, сейфы и системы независимого онлайн мониторинга доступа, т.е. буквально вебкамеры и датчики вскрытия со своим каналом в интернет и источником питания), само собой серверное железо тут должно быть не от хостера а от клиента.
    И такие услуги датацентры предоставляют.

    p.s. подобные действия нужны не для всех серверов, а только для серверов приложений, а к примеру nas могут хранить уже зашифрованные данные, никаких особых требований для них не нужно
    Ответ написан
    2 комментария
  • Как в защищенной Windows XP Embedded получить доступ к файловой системе?

    @rPman
    ctrl+shit+esc жал? если не выпилили task manager то он откроется

    если долго жать shift (может два нажатия, второе долгое), выскакивает управление accessibility, там помню через просмотр помощи можно добраться до эксплорера (адресная строка по правой кнопке)

    попробуй в игре нажать shit+space или alt+space, там может быть дополнительное меню, в т.ч. помощь или about

    интересно, как они зашифровали диск, это значит в загрузчик прошили декодер? пароль ведь при запуске не спрашивает?
    Ответ написан
  • Как сохранить букву тома после шифрования диска VeraCrypt?

    @rPman
    После перезагрузки сможешь вернуть прежнюю букву диска
    Ответ написан
    Комментировать
  • Некая инфа о защите vps от проникновения извне со стороны владельца оборудования?

    @rPman
    Полностью защититься не получится, вон даже 0day уязвимость обнаружили и с использованием secure boot (ключи шифрования в uefi, самоподписанный загрузчик, шифрованные разделы) позволяют подменить загрузчик и украсть у владельца ключи шифрования разделов.

    Но можно сделать задачу на столько дорогой, что ею будут заниматься только адресно.
    * Лучше держать свои сервисы на полностью доступном вам железе а не виртуалке, так как виртуалка дает нахаляву много возможностей хостеру.
    * гипервизор поднять придется самому, чтобы это не сделал хостер, поднять ваш гипервизор в симуляции сложнее, и это можно отследить бенчмарком
    * шифрование разделов, даже не обсуждается
    * модифицируйте grub и загрузчик в initramfs нетривиальным образом, изменить способ загрузки и контроля системы (имеется в виду загрузка по сети со вводом пароля на шифрованный диск по ssh)
    к сожалению загрузчик самая слабая часть защиты, подменив ее на свою (модифицировав вашу) злоумышленник может внедрить в нее стилер паролей, ключей шифрования и прочее, и собственно способ обнаружения его определит стоимость взлома.
    Изменив процесс загрузки потребует от атакующего дизассемблировать ваш код, это огромная работа, которую можно еще сильнее усложнить, если каждый раз загрузчик будет новым (обфусифицированным по новому). Само собой файлы initramfs и vmlinuz загружать по сети, нечего им лежать у хостера, всеравно каждый раз они должны быть разные (grub умеет tftp/http, пофиг что нешифрованый канал, тут это не важно).
    Дополнительно ввести контроль процессов в памяти в initramfs, если что то изменится (другие размеры областей памяти в /proc/pid/smap например) то бить тревогу/направить по ложному следу.
    * если есть возможность, любое включение сервера выплнять только лично (доверенное лицо) с помощью специальной загрузочной флешки (на которой нет всей необходимой информации но которая позволяет подключиться владельцу удаленно и ввести ее, например с ноутбука тут же)
    * у amd последних есть какое то шифрование памяти, как раз для виртуалок и защиты от хостера - AMD SEV, так же я видел обсуждение и патчи для qemu в которых шифрование памяти было симулировано - производительность конечно же будет ниже плинтуса но фокус с горячей перезагрузкой с дампом памяти уже не сработает.
    Ответ написан
    1 комментарий
  • Как создать скрытую ОС с доступом по ключевому файлу расположенного в сети?

    @rPman
    Раздача парольных вещей по сети - ненадежна, ведь обнаружить подобное будет можно с любой машины в этой же сети.

    А так. Организуешь машину (например виртуалка на смартфоне), раздающую dhcp и tftpd для pxe network boot, собственно по сети только загрузочный диск (боюсь для windows придется попотеть но в теории это возможно).

    Для linux подобная схема позволяет вводить парольную фаразу удаленно, подключившись по ssh к мини серверу в момент загрузки, например с того же смартфона. Т.е. вся возня в настройке подобной схемы - инструменты, которые позволяли бы проконтролировать со смартфона что именно к нужному железу произошло подключение и нет прослойки злоумышленника/подмены этого железа.
    Ответ написан
    Комментировать
  • Как правильно зашифровать диск Windows?

    @rPman
    У вас 2 варианта шифрования - на уровне файлов и на блочном уровне.

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

    Второй вариант (bitlocker, truecrypt) защищает весь диск от сторонних пользователей (которые имеют физический доступ к вашему диску), пароль (или ключ шифрования на usb или иной способ) будет запрашиваться при запуске системы (точнее монтировании диска, но не шифровать системный диск в этом случае не имеет смысла), сами данные будут доступны всем пользователям windows на общих основаниях, так будто шифрования нет (но возможны штатные права доступа).

    Осторожно, второй вариант отключает использование TRIM у SSD дисков, это очень важная технология, позволяющая ускорить работу с диском и даже продлить его срок службы.

    p.s. полная защита данных от тех кто имеет физический доступ к диску - это очень сложный вопрос, в конечном счете задача будет сводиться к технологиям шифрования загрузчика и подтверждения его целостности (например загрузкой своих ключей шифрования в биос материнской платы, такие технологии есть не на дешевых материнках) так как если к примеру вы шифруете диск в датацентре, администраторы этого датацентра могут при следующей перезагрузке подсунуть не настоящее железо, а свое собственное специальное или к примеру хост виртуальной машины, и это железо дождется ввода ключа шифрования и позволит украсть его или данные оперативной памяти а значит доступ к данным. Один из способов борьбы с этим - административный, включение/перезагрузка машины должна проводиться с физическим доступом к ней, с проверкой пломб (корпус не вскрыт, сейф) и личным загрузчиком на флешке/специальном устройстве.
    Ответ написан
    4 комментария
  • Запароленный архив против VeraCrypt?

    @rPman
    VeraCrypt - это шифрование 'на лету', это значит работать с файлами будете так, будто это обычный каталог, и любые программы будут получать к файлам как обычно.

    Запароленый архив - это когда для доступа к файлу его приходится извлекать, копировать во временный каталог, и уже тогда открывать. Это происходит автоматически когда вы например нажимаете дважды на файле в gui архиватора, а когда программа просмотра закроется - временный файл удаляется.
    Неудобство начинается сразу - например, в программе просмотра вы можете переходить к следующему файлу просто нажав на стрелочку вправо/влево, так вот в случае с архивом приложение для просмотра файлов будет пытаться искать следующие файлы во временном каталоге и их там не будет, нужно будет закрыть приложение и открыть новый файл из архива.
    Да можно перед просмотром сразу распаковывать несколько файлов, но это действие придется делать вручную, или как то обозначать ваше желание это сделать.

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

    В некоторых случаях кейлогерам, специальным вирусным программам для записи всех нажатых клавиш (например в windows такой идет по умолчанию для сбора телеметрии, сохраняет все нажатия на клавиатуре в спец файл, был недавно 'скандал', он не зашифрован) проще получить пароль который вы вводили в архиватор чем в специализированное приложение для шифрования данных, которое возможно делает какие то попытки по предотвращению кражи этого пароля (например использование OTP или смарткарты).
    Ответ написан
    Комментировать
  • Алгоритм шифрования с дешифровкой?

    @rPman
    Ответ написан
    Комментировать