Pull to refresh

Comments 31

Наверно защита от «человек-посередине» это не та задача, для которой придумали whitebox шифрование. Его основное назначение: максимально усложнить реверсинг криптоалгоритма в приложениях, которые попадают к пользователю. Но как говорится, что сделано одним, может быть сломано другим: phrack.org/issues.html?issue=68&id=8#article
да и фраза: "… имея алгоритм шифрования и зашифрованные данные, злодей сможет восстановить секретное сообщение, особенно, если функция шифрования задана явно." абсолютна неверна.
Также с радостью выслушаю Ваше мнение, в чем именно фраза неверна — устранение недопонимания в моих же интересах.
взять к примеру функцию шифрования rsa (если брать контекст статьи) и данные зашифрованные ею
Окей, если говорить про RSA, значит мы знаем открытый ключ и зашифрованные данные. Так?
Для расшифровки нам нужно всего лишь разложить на простые множители число n из пары {e,n}, которая в RSA представляет собой открытый ключ. Разложение на простые множители (факторизация) — это и есть NP-полная задача.
во-первых про открытый ключ не было ни слова, во-вторых мы же не берем злодея в вакууме, у которого есть неограниченное время, средства и желание получить данные
Ну если вы внимательно читали пост, то заметили, что автор оперирует понятиями «алогоритм шифрования» и «алгоритм дешифрования». Наверное просто, что бы не вводить понятие открытых и закрытых ключей.

Соответсвенно в примере с RSA мы под «алгоритмом шифрования» понимаем реализацию RSA+открытый ключ, а под «алгоритмом дешифрования» — RSA+закрытый ключ.
если же оперировать этими понятиями, то злодею все равно нужна функция дешифрования, а не шифрования
Если у злодея будет функция дешифрования (читай «закрытый ключ»), то он сможет расшифровать данные за линейное время. Это как бы вообще не вопрос.
А вот если будет только функция шифрования, то он по ней сможет построить функция дешифрования. Но за экспоненциальное время. В этом и есть весь фокус криптографии с открытыми ключами.
никто об этом и не спорит. но если автор исправит в статье предложение на "… имея алгоритм _дешифрования_ и зашифрованные данные, злодей...", то мы реально сэкономим время злодею и сможем перейти к цели статьи, а именно whitebox шифрованию. а то получается, что нам то усложнять жизнь злодею и не нужно
«имея алгоритм ШИФРОВАНИЯ и зашифрованные данные, злодей сможет восстановить секретное сообщение, особенно, если функция шифрования задана явно.»
Именно поэтому и нужно White-Box шифрование — чтобы как раз этот алгоритм и спрятать, чтобы к нему нельзя было построить функцию дешифрования за приемлемое время.
Именно это и имелось ввиду. Видимо, было подано не слишком явно.
Как видите, статья написана самым простым языком — ее целью было обеспечить понимание общего, а не описать конкретные ситуации.
UFO just landed and posted this here
Прошу прощения, я довольно слабо понимаю шифрование, у меня возник вопрос вот к этому:
Злоумышленник перехватил передачи. Это беда — имея алгоритм шифрования и зашифрованные данные, злодей сможет восстановить секретное сообщение, особенно, если функция шифрования задана явно.


Я пользуюсь иногда PGP, у меня есть открытый и закрытый ключи. Насколько я понимаю, имея только открытый ключ (тот пресловутый алгоритм шифрования), без закрытого ключа (дешифровального алгоритмя) никто не сможет расшифровать мое сообщение, или это не так? Если не так, то в чем смысл открытого и закрытого ключа я перестал понимать окончательно…
Что бы получить закрытый ключ из открытого, надо решить задачу факторизации числа (если мы говорим про шифрование алгоритмом RSA). А она как раз и есть NP-полная.
Так что пока человечество не научилось быстро факторизировать большие числа (ведь ключ у вас наверное минимум 2048-битный?) — вы можете быть спокойны за свои данные.
Вот теперь понял :) Что бы меня расшифровать по открытому ключу им все равно понадобится куча лет. Теперь я спокоен!
Открытый ключ — это функция, отображающая одно множество в другое. К функциям можно подобрать обратную? Конечно!
Тут понятно на нашем примере:
Есть матрица преобразования и обратная к ней. Отправляем первую матрицу, ее получает злоумышленник и спокойно находит к ней обратную — вот у него в руках и дешифровальный алгоритм, любое сообщение-вектор он сможет восстановить -> безопасность ни к черту.
А обфускация позволяет так завуалировать эту матрицу, что вообще фиг поймешь, что это такое, а это значительно усложняет любые попытки сломать алгоритм.

Надеюсь, теперь понятней :)
Под «обфускацией» вы понимаете обфускацию кода, или что-то иное?
Просто, обфускация кода не может считаться сколько бы то ни было надежным криптометодом. Просто потому что «на каждую хитрую гайку мы найдем свой болт с мелкой левой резьбой».
Тот же RSA надежен не потому что там какой-то запутанный или обфусцированный алгоритм, а только потому что мы не умеем быстро решать задачу факторизации.
Здесь речь идет скорее об обфускации функции шифрования. Грубый пример: взять функцию шифрования, записать как булеву функцию, подставить открытый ключ и раскрыть скобки. После этого сам черт в ней ногу сломит. К слову сказать, приведение булевой функции из формы с раскрытыми скобками в CNF-форму (по которой уже легче понять хотя бы её таблице истинности) — тоже NP-полная задача.
Привет друзьям из лаборатории НГУ-Параллелс :-) Думаю, было бы неплохо рассказать немного и о самой игрушке, и алгоритмах в ней.
Если будет интересна статья, то я с радостью :)
Я бы спросил «Почему не Алиса и Боб?»
Потому что я во время написания статьи с теорией кодирования в терминах Алисы и Боба не сталкивалась еще — вот только экзамен сдала по курсу)
Так Вы еще и девушка? Очень люблю девушек! Особенно умных)
Потому что на реальных событиях основано)
Что-то у автора постоянно путается терминология:

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

Ну что за глупость. Алгоритм никто не пишет, просто генерируется ключ. Алгоритм и так известен.

«Решением стало white-box шифрование – вместо открытого ключа Лёша отправляет Алёне программу, в которой этот алгоритм спрятан (обфусцирован, усложнен), так что у злоумышленника подобрать эту функцию вряд ли получится.»

Тут читатель хочет понять — каким образом спрятан? Но ответа в статье нет. И что скрывается за странной фразой «обфусцирован, усложнен»? Ничего там не обфусцируется и не усложняется. Это у автора текст обфусцирован и усложнен.
Мне даже отвечать не хочется на столь убогий комментарий, извините.
Sign up to leave a comment.

Articles