@Kaschenko, @odalist, что если вам поработь на благо родины и сделать утилиту позволяющие делать БИОС с корректной цифровой подписью?

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

Так вот какая у меня мысль: а что если пойти до конца и заменить весь биос целиком на небольшой биос который будет содержать только драйверы необходимые для загрузки уже нашей версии БИОС с ПЗУ материнской платы или usb флешки и никаких кодов дополнительной инициализации или настройки компьютера срдержать не будет.
Такой загрузчик будет намного меньше БИОС и оставит на месте старого биоса достаточно свободных битов для подборки новой коллизии цифровой подписи.

Это может сделать товоизацию безполезной в принципе позволяя запускать ПК с производьным биосом.
Как вам такой план.

  • kmeaw
    link
    fedilink
    arrow-up
    0
    ·
    3 years ago

    Тогда я совсем не понимаю смысла этой затеи.

    Когда вендор собирает прошивку и конфигурирует платформу, он решает, какие диапозоны адресов флеша он хочет защищать. Для каждого диапозона считаются SHA1 и SHA256, которые записываются в табличку. Эта табличка подписывается ключом, который подписывается ещё одним ключом, который прошивается в efuse.

    Получается, что есть области флеша, которые менять можно - там обычно хранятся настройки, перезаписываемая часть файловой системы ME, MAC-адрес и кастомизируемая часть прошивки - всякие логотипы и картинки - те самые незначительные части, которые можно менять, как угодно, но при этом chain of trust не сломается, в критический путь загрузки ничего лишнего не встанет. И есть области флеша, которые защищены - бутблок, SEC core, прочие исполняемые модули. Если поменять, то ACM это заметит и что-то (в зависимости от настроек) сделает - например, отключит платформе питание.

    Внутри той части, которая защищена, есть модули, без которых конечному пользователю в общем-то легко обойтись - их как раз dxe-cleaner и выкидывает. Предположим, что каким-то удивительным образом мы научились записывать туда такой мусор, что случилась коллизия, и SHA1 с SHA256 не поменялись.

    А какая конечная цель? Что будет находиться в том неподписанном коде, который хочется запустить? DXE-драйвер для какой-нибудь новой файловой системы или блочного устройства UEFI и так умеет грузить с внешних носителей. coreboot запустить так не получится - платформа уже проинициализирована. Разве что буткит можно какой-нибудь подкинуть.

    • torvn77OP
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      3 years ago

      coreboot запустить так не получится - платформа уже проинициализирована.

      А какая конечная цель? Что будет находиться в том неподписанном коде, который хочется запустить?

      Должен получится биос разделённый на две части:

      1. Программный загрузчик из SPI.
      2. Основная бинарь с утилитами настройки, базовые драйвера и прочее нужное биос для инициализации ПК и загрузки ядра операционной системы.

      Логика та же что и у Grub с его стадиями загрузки.

      Причина которая меня в очередной раз вернулся к этим размышлениям состоит в том, что я на опеннете поспорил с позитивистом, он говорил что мой прогноз что NATO/AUKUS будут требовать еже дневно/недельно/месячно/квартально подтверждать через интернет право использовать компьютер не состоится, ну а я говорил что состоится. Если хочешь могу скинуть ссылку, но там особо смотреть не на что.
      Так вот, обдумывая вопрос "что делать" я вспомнил что в работу БИОС уже вмешивались описанным здесь способом и по принципу "готовь сани летом, а телегу зимой" открыл это обсуждение.

      П.С. Вот ссылка, может она мне самому же пригодится: “В РФ создан консорциум для исследования безопасности ядра Linux” 18-Май-23, 13:22

      • kmeaw
        link
        fedilink
        arrow-up
        0
        ·
        3 years ago

        подтверждать через интернет право использовать компьютер

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

        Увы, тогда предложенная схема не выглядит полезной. Если мы умеем легко находить коллизии для SHA1 и SHA256 одновременно, то куда перспективнее переписать BG policy, чем портить случайный модуль, превращая его в загрузчик непонятно чего - портить критичные для работы платформы модули мы не можем, значит для разлоченного биоса почти не останется работы - память, LPC и PCI уже подняты, сложных задач особо не осталось. Ну можно туда поддержку USB, NVMe и ext4 положить, вместе с красивым boot device selection.

        Не очень понятно, как “NATO/AUKUS” будет принимать решение, разрешить какой-то отдельно взятой машине работать или нет. Умельцы начнут продавать роутеры, которые через прокси пойдут до недружественной страны, а оттуда уже ходить в сервер аттестации. Если операторы этих прокси будут достаточно мотивированы, то выключить их все будет достаточно сложно - с пиратской бухтой до сих пор справиться не могут.

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

        1. добиваемся того, чтобы все мейнстримные ОС ставили и запускали приложения только из подконтрольного мне магазина, причём автоматически скачивали апдейты для себя и установленных приложений;

        2. встраиваем в эти ОС механизм удалённой аттестации - его задачей будет доказать серверу, что никакие важные компоненты запущенной ОС не были подвержены неавторизованной модификации;

        3. расширяем все популярные сетевые протоколы так, чтобы куку, выдаваемую аттестационным сервером, можно было передавать вместе с сетевыми запросами;

        4. ломаем совместимость новых ОС со старым железом;

        5. меняем поведение популярных интернет-сервисов так, чтобы они пессимизировали пользователей, которые не проходят аттестацию - это вынуждает их постепенно перейти на новое железо и новую ОС;

        6. когда достаточное число пользователей перестали использовать старые системы, дёргаем рубильник - отказываем в обслуживании тем, кто нам не нравится.

        Важный код крутим в SGX, к средствам администрирования и разработки допускаем только авторизованный персонал, аудио/видео пропускаем через PAVP и показываем только на HDCP-мониторах (чтобы из старых компьютеров не делали терминалы к новым).

        Ещё надо IPv6 и P2P запретить, каналы для потребителей сделать ещё более ассиметричными, а запуск серверного ПО объявить лицензируемой деятельностью, требующей регистрации.

        • torvn77OP
          link
          fedilink
          arrow-up
          0
          ·
          3 years ago

          Твой план ошибочен с самого начала ввиду трёх пунктов:

          1. Так можно контролировать компьютеры внутри своей юрисдикции, но не вне её.
          2. Страна вне твоей юрисдикции просто напишет свою ОС требования к которой достаточно просты, так как под документооборот не нужны особо сложные системы.
          3. Твой план дорог и в долгосрочной перспективе приведёт к нескольким плохим последствиям, намного проще проверять лицензии в БИОС и просто грузить только подписанные ОС, а чтобы не ставили VPN просто обрубить кабели идущие в изолируемую страну, ну или гадить в сети изолируемой страны чтобы она сама их обрубила ради самозащиты.
          • kmeaw
            link
            fedilink
            arrow-up
            0
            ·
            3 years ago

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

            А для документооборота хватит и старых компьютеров, в которых нет таких защит - можно даже не писать свою ОС. Если учесть все компьютеры, которые можно отремонтировать, то запаса того, что уже есть в стране, хватит надолго. Ну может ещё пару законов принять, чтобы старые машины не вывозили, не выкидывали и ремонтировали.

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

            • torvn77OP
              link
              fedilink
              arrow-up
              0
              ·
              edit-2
              3 years ago

              либо не сможет использовать интернет-сервисы.

              Твои интернет сервисы до которых правителям изолируемой страны не будет ни какого дела, они будут использовать свои по своим стандартам, на оборот, это даже будет хорошо, им большой Китайский фаеролл не надо строить.

              В принципе пункты твоего плана уже более менее пытались реализовать, только что толку если появляются хакерские форматы видео в которых hdcp не предусмотрена, а Linus T. написал свою ОС?

              Ну а предложенный в конце полицейский контроль это вообще одни расходы, проще товоизировать компьютер и разрешать запуск ОС по белому списку.