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

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

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

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

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

    которые можно менять так, чтобы это влияло на работу системы.

    То ли у тебя смартфон "не" съел, то ли ты не понял что я там написал.

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

    (Опять не пришлось добавить).

    в прошивке нет каких-то «незначительных» кусков, которые можно менять так, чтобы это не влияло на работу системы.

    У меня та мысль, что после хака фирмварь будет состоять из трёх частей:

    1. цифровые подписи, публичные ключи и хеши.
    2. Крохотный загрузчик ничего не умеющий кроме загрузки из SPIflash неподписанного кода и последующего его запуска.
    3. Огромной части в которой раньше были всякие системы инициализации, драйверы nvme, драйверы sata и usb, GUI для настройки биоса…
      А теперь огромная куча мусора перебирая биты которой можно подобрать коллизии.

    То есть лишним становится всё кроме программного загрузчика бинаря из SPI flash, думаю этого должно хватить для подбора коллизий.

    • 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. написал свою ОС?

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