Комментарии 31
С взломом такого шифрования справится только Бабушкин.
Наверно защита от «человек-посередине» это не та задача, для которой придумали whitebox шифрование. Его основное назначение: максимально усложнить реверсинг криптоалгоритма в приложениях, которые попадают к пользователю. Но как говорится, что сделано одним, может быть сломано другим: phrack.org/issues.html?issue=68&id=8#article
да и фраза: "… имея алгоритм шифрования и зашифрованные данные, злодей сможет восстановить секретное сообщение, особенно, если функция шифрования задана явно." абсолютна неверна.
Также с радостью выслушаю Ваше мнение, в чем именно фраза неверна — устранение недопонимания в моих же интересах.
взять к примеру функцию шифрования rsa (если брать контекст статьи) и данные зашифрованные ею
Окей, если говорить про RSA, значит мы знаем открытый ключ и зашифрованные данные. Так?
Для расшифровки нам нужно всего лишь разложить на простые множители число n из пары {e,n}, которая в RSA представляет собой открытый ключ. Разложение на простые множители (факторизация) — это и есть NP-полная задача.
Для расшифровки нам нужно всего лишь разложить на простые множители число n из пары {e,n}, которая в RSA представляет собой открытый ключ. Разложение на простые множители (факторизация) — это и есть NP-полная задача.
во-первых про открытый ключ не было ни слова, во-вторых мы же не берем злодея в вакууме, у которого есть неограниченное время, средства и желание получить данные
Ну если вы внимательно читали пост, то заметили, что автор оперирует понятиями «алогоритм шифрования» и «алгоритм дешифрования». Наверное просто, что бы не вводить понятие открытых и закрытых ключей.
Соответсвенно в примере с RSA мы под «алгоритмом шифрования» понимаем реализацию RSA+открытый ключ, а под «алгоритмом дешифрования» — RSA+закрытый ключ.
Соответсвенно в примере с RSA мы под «алгоритмом шифрования» понимаем реализацию RSA+открытый ключ, а под «алгоритмом дешифрования» — RSA+закрытый ключ.
если же оперировать этими понятиями, то злодею все равно нужна функция дешифрования, а не шифрования
Если у злодея будет функция дешифрования (читай «закрытый ключ»), то он сможет расшифровать данные за линейное время. Это как бы вообще не вопрос.
А вот если будет только функция шифрования, то он по ней сможет построить функция дешифрования. Но за экспоненциальное время. В этом и есть весь фокус криптографии с открытыми ключами.
А вот если будет только функция шифрования, то он по ней сможет построить функция дешифрования. Но за экспоненциальное время. В этом и есть весь фокус криптографии с открытыми ключами.
никто об этом и не спорит. но если автор исправит в статье предложение на "… имея алгоритм _дешифрования_ и зашифрованные данные, злодей...", то мы реально сэкономим время злодею и сможем перейти к цели статьи, а именно whitebox шифрованию. а то получается, что нам то усложнять жизнь злодею и не нужно
«имея алгоритм ШИФРОВАНИЯ и зашифрованные данные, злодей сможет восстановить секретное сообщение, особенно, если функция шифрования задана явно.»
Именно поэтому и нужно White-Box шифрование — чтобы как раз этот алгоритм и спрятать, чтобы к нему нельзя было построить функцию дешифрования за приемлемое время.
Именно поэтому и нужно White-Box шифрование — чтобы как раз этот алгоритм и спрятать, чтобы к нему нельзя было построить функцию дешифрования за приемлемое время.
Именно это и имелось ввиду. Видимо, было подано не слишком явно.
Как видите, статья написана самым простым языком — ее целью было обеспечить понимание общего, а не описать конкретные ситуации.
Как видите, статья написана самым простым языком — ее целью было обеспечить понимание общего, а не описать конкретные ситуации.
НЛО прилетело и опубликовало эту надпись здесь
Прошу прощения, я довольно слабо понимаю шифрование, у меня возник вопрос вот к этому:
Я пользуюсь иногда PGP, у меня есть открытый и закрытый ключи. Насколько я понимаю, имея только открытый ключ (тот пресловутый алгоритм шифрования), без закрытого ключа (дешифровального алгоритмя) никто не сможет расшифровать мое сообщение, или это не так? Если не так, то в чем смысл открытого и закрытого ключа я перестал понимать окончательно…
Злоумышленник перехватил передачи. Это беда — имея алгоритм шифрования и зашифрованные данные, злодей сможет восстановить секретное сообщение, особенно, если функция шифрования задана явно.
Я пользуюсь иногда PGP, у меня есть открытый и закрытый ключи. Насколько я понимаю, имея только открытый ключ (тот пресловутый алгоритм шифрования), без закрытого ключа (дешифровального алгоритмя) никто не сможет расшифровать мое сообщение, или это не так? Если не так, то в чем смысл открытого и закрытого ключа я перестал понимать окончательно…
Что бы получить закрытый ключ из открытого, надо решить задачу факторизации числа (если мы говорим про шифрование алгоритмом RSA). А она как раз и есть NP-полная.
Так что пока человечество не научилось быстро факторизировать большие числа (ведь ключ у вас наверное минимум 2048-битный?) — вы можете быть спокойны за свои данные.
Так что пока человечество не научилось быстро факторизировать большие числа (ведь ключ у вас наверное минимум 2048-битный?) — вы можете быть спокойны за свои данные.
Открытый ключ — это функция, отображающая одно множество в другое. К функциям можно подобрать обратную? Конечно!
Тут понятно на нашем примере:
Есть матрица преобразования и обратная к ней. Отправляем первую матрицу, ее получает злоумышленник и спокойно находит к ней обратную — вот у него в руках и дешифровальный алгоритм, любое сообщение-вектор он сможет восстановить -> безопасность ни к черту.
А обфускация позволяет так завуалировать эту матрицу, что вообще фиг поймешь, что это такое, а это значительно усложняет любые попытки сломать алгоритм.
Надеюсь, теперь понятней :)
Тут понятно на нашем примере:
Есть матрица преобразования и обратная к ней. Отправляем первую матрицу, ее получает злоумышленник и спокойно находит к ней обратную — вот у него в руках и дешифровальный алгоритм, любое сообщение-вектор он сможет восстановить -> безопасность ни к черту.
А обфускация позволяет так завуалировать эту матрицу, что вообще фиг поймешь, что это такое, а это значительно усложняет любые попытки сломать алгоритм.
Надеюсь, теперь понятней :)
Под «обфускацией» вы понимаете обфускацию кода, или что-то иное?
Просто, обфускация кода не может считаться сколько бы то ни было надежным криптометодом. Просто потому что «на каждую хитрую гайку мы найдем свой болт с мелкой левой резьбой».
Тот же RSA надежен не потому что там какой-то запутанный или обфусцированный алгоритм, а только потому что мы не умеем быстро решать задачу факторизации.
Просто, обфускация кода не может считаться сколько бы то ни было надежным криптометодом. Просто потому что «на каждую хитрую гайку мы найдем свой болт с мелкой левой резьбой».
Тот же RSA надежен не потому что там какой-то запутанный или обфусцированный алгоритм, а только потому что мы не умеем быстро решать задачу факторизации.
Здесь речь идет скорее об обфускации функции шифрования. Грубый пример: взять функцию шифрования, записать как булеву функцию, подставить открытый ключ и раскрыть скобки. После этого сам черт в ней ногу сломит. К слову сказать, приведение булевой функции из формы с раскрытыми скобками в CNF-форму (по которой уже легче понять хотя бы её таблице истинности) — тоже NP-полная задача.
Привет друзьям из лаборатории НГУ-Параллелс :-) Думаю, было бы неплохо рассказать немного и о самой игрушке, и алгоритмах в ней.
А почему не Алена и Борис?)
Потому что на реальных событиях основано)
Что-то у автора постоянно путается терминология:
«поэтому он пишет алгоритм шифрования с открытым ключом, состоящий из двух элементов – сам алгоритм шифрования (открытый) и алгоритм расшифровки (закрытый)»
Ну что за глупость. Алгоритм никто не пишет, просто генерируется ключ. Алгоритм и так известен.
«Решением стало white-box шифрование – вместо открытого ключа Лёша отправляет Алёне программу, в которой этот алгоритм спрятан (обфусцирован, усложнен), так что у злоумышленника подобрать эту функцию вряд ли получится.»
Тут читатель хочет понять — каким образом спрятан? Но ответа в статье нет. И что скрывается за странной фразой «обфусцирован, усложнен»? Ничего там не обфусцируется и не усложняется. Это у автора текст обфусцирован и усложнен.
«поэтому он пишет алгоритм шифрования с открытым ключом, состоящий из двух элементов – сам алгоритм шифрования (открытый) и алгоритм расшифровки (закрытый)»
Ну что за глупость. Алгоритм никто не пишет, просто генерируется ключ. Алгоритм и так известен.
«Решением стало white-box шифрование – вместо открытого ключа Лёша отправляет Алёне программу, в которой этот алгоритм спрятан (обфусцирован, усложнен), так что у злоумышленника подобрать эту функцию вряд ли получится.»
Тут читатель хочет понять — каким образом спрятан? Но ответа в статье нет. И что скрывается за странной фразой «обфусцирован, усложнен»? Ничего там не обфусцируется и не усложняется. Это у автора текст обфусцирован и усложнен.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
White-box cryptography в картинках