Ответы пользователя по тегу RSA
  • Правильно ли я делаю?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Ох и давно это было. Попробуй посмотреть здесь. Если что-то непонятно - спрашивай. Постараюсь расписать подробнее, сейчас поздно как-то.
    Ответ написан
    Комментировать
  • [RSA] почему схема с шифрованием данных напрямую не является "практически надёжной"?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    С моей колокольни я вижу бред. На самом деле RSA не используется для прямого шифрования ровно по двум причинам.

    Дорого. Дороговизна обусловлена высокой стоимостью операций. Взятие по модулю и возведение в степень - не самые простые операции для CPU, сложнее (из примитивных) разве что деление. К тому же, используя самые эффективные алгоритмы, сложность шифрования где-то O(n log(n)), возможно даже выше, но даже так на огромных данных логарифм портит всю малину. Как следствие - низкая производительность. Тут даже специализированные схемы не очень помогает, ибо их сложность слишком большая и стоимость производства - также высокая. Можно вспомнить про кредитные карты, которые есть почти у всех, но их производительность очень низкая, просто её хватает, но едва.

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

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

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Например? Не забываем про w3c. Возможно стоит научиться пользоваться гуглом?
    Ответ написан
  • Стоит ли использовать RSA?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    И да и нет одновременно.

    (обновлено, ибо внезапно прочитал и половину не понял - видимо писал на "потоке")
    RSA стоит использовать лишь для шифрования других ключей - ключей симметричных алгоритмов шифрования. AES, ГОСТ 28147-89, 3DES и другие. Почему? Во-первых, симметричные алгоритмы более устойчивы к взлому при большом известном закрытом тексте, тогда как ассиметричное шифрование потенциально имеет изъяны. В том смысле, что (почти) любое ассиметричное шифрование использует задачу NP-класса (точнее - NP-полную задачу): факторизация числа (RSA), декодирование полных (общих) линейных кодов (McEliece), вычисление дискретного логарифма на элептической кривой (ГОСТ Р 34.10-2012), или в конечном поле (Elgamal). Другое дело, что любая эта задача потенциально - решаемая. В случае с симметричным шифрованием действительно стоит лишь надеяться на чудо (в ГОСТе разрешено выбирать любые s-блоки, так что криптоаналитику ничего не остаётся, как молиться пролетариату в надежде на терморектальный криптоанализ). В случае же с ассиметричным шифром в дело вступают две вещи - высокая сложность реализации действительно стойкого алгоритма (ассиметричные шифры очень сложны и полны нюансов, не учитывая которые можно запросто порушить систему), низкая скорость работы (в силу того, что приходиться использовать очень абстрактные математические функции, сложно реализуемые аппаратно и таящие в себе множество низкоуровневых операций) при требовании к очень длинным ключам заставляют использовать небольшие ключи для того, чтобы не ждать вечность.

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

    Окай, посмотрим на стандартную схему с Алисой, Бобом и Евой:
    Алиса -> c = E(m, Eb) -> -------- -> D(c, Db) -> Боб (
                                     |
                                     |
                                     v
                         Ева <- c, E, D, d

    здесь m - текст, который надо передать (сообщение)
    c - шифротекст
    E - функция шифрования (получения из сообщения шифротекста)
    D - функция дешифрования, иначе - обратная функция шифрования (получения из шифротекста - сообщения)
    Eb, Db - секретный и открытый ключи Боба (в литературе используется различное обозначение, здесь так)
    Собственно, Ева знает всё о функциях шифрования и дешифрования, имеет доступ к шифротексту и будем считать, что она получает и открытый ключ.

    Теперь, что нам это даёт? А это нам даёт возможность наплодить большое количество ключей и шифровать каждое сообщение отдельным ключём. Потенциально, но если есть $$$, то можно скупить половину серверов страны, если не планеты и радоваться жизни. Хотя ровно так же можно поступить и с симметричным шифрованием, и называется это одноразовым блокнотом, используют и различные режимы шифрования и всё равно выходит профитнее. Где же профит здесь?
    Во-первых, если нужно передавать по каналу, а не хранить, то можно генерировать ключи налету и после расшифровки их уничтожать. По сути, получиться что для того, чтобы получить сообщение длины l бобу потребуется передать и ключей в общей сумме длины l. Много? Да. Профитно? Очень - ибо мы реализуем
    ассиметричный одноразовый блокнот (упс), который, однако, нет никакого смысла использовать нет - слишком дорого. Да и не всегда возможно - порой обратный канал чрезвычайно узкий.
    Во-вторых, есть способ организовать защиту, основанную на иерархии пользователей. То есть майор Алиса написала отчёт, который ей надо отправить подполковнику Бобу. При этом читать этот отчёт должны иметь право все, кто равен или выше подполковника.
    В-третьих, как писалось выше, сложность взлома достаточно велика. И не только потому, что P != NP. Даже P довольно большое получается, поэтому и используют асимметричный шифр для передачи ключей симметричных ключей. Но и взлом получается очень не простым из-за тяжёлых математических абстракций. Обычно. Да, RSA можно "взломать" перебрав все возможные делители, но это долго из-за астрономического размера ключа. А способы обхода или упрощения опираются на такой зубодробительный матан, что попытка как-то это реализовать заставит использовать сами по себе очень тяжёлые операции. Так это при работе с банальными числами (и это показывает, насколько плохо развита теория чисел), а что если уйти на эллиптическую кривую - аналитическая геометрия развита может чуть лучше, но абстракции намного тяжелее для компьютеров. И даже использование графических карт не помогает, ведь есть ещё и макэлис. Я к тому, что O(2^32) для симметричного шифра и O(2^32) для асимметричного шифра не очень таки равны. Так же не равны, как не равны день и месяц.

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

    Поэтому шифрование надо использовать соразмерно цене риска. Чем выше риск - тем сильнее шифрование, но самое главное - сложнее и дисциплинированнее организационные меры. Согласитесь - бесполезно иметь централизованное хранилище сертификатов с одним сервером в бункере за 200 км под землей и круглосуточной охраной из армии маленькой страны, всего лишь одним портом торчащим во внешний мир с каналом около 200 бит в секунду и постоянным наблюдением за организационными методами (авторизация, доступ и подобной)... Имея пароль на суперюзер - qwerty, и держа на винчестере архив с котиками.
    Ответ написан
    Комментировать
  • SSH, авторизация публичным ключём: ЧЯДНТ?

    Deerenaros
    @Deerenaros Автор вопроса
    Программист, математик, задрот и даже чуть инженер
    ls /home и /home/yuriy вам не понравяться (пару десятков килобайт, хех).

    Впрочем, пара ls'ов есть - всё что надо с правами и вообще, много всего в комментариях к вопросу: TM такой TM что не даёт развернуться и ограничивает 30 или 10 килосимволами (не помню уже), пришлось уменьшать.
    Ответ написан
    Комментировать