forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Скремблирование как бюджетная защита данных. (http://forum.boolean.name/showthread.php?t=15148)

Baisangur 19.07.2011 01:16

Скремблирование как бюджетная защита данных.
 
Здравствуйте!

Может ли кто похвастаться успешным опытом применения скремблирования для защиты передаваемых между сервером и клиентом данных?

Собственно размышления навеяны этим постом на Хабре.

Лично я думаю, что применять тяжелые, на мой взгляд алгоритмы типа Blowfish не оправдано, хотя я полный нуб в этом вопросе, так что буду рад если Вы мне скажете куда копать.

Скремблирование приглянулось за счет его быстродействия, в приведенном выше посте используется всего 3 xor и 1 or операции для (де)кодирования данных. Что, по моему мнению, здорово - это отсутствие необходимости передавать клиенту ключ, который все - равно можно без проблем отловить, хотя в данном подходе талантливый реверс - инженер может щелкнуть всю защиту за некоторое время и без проблем шифровать поддельные данные для отправки их на сервер.

Может есть более надежные техники? Ткните пожалуйста! :)

Я в курсе, что защитить данные на 100%, да что там даже на 40%, нельзя, но все - же хочется отсеять максимум "нелегалов".

moka 19.07.2011 20:33

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

Baisangur 20.07.2011 00:05

Ответ: Скремблирование как бюджетная защита данных.
 
MoKa, благодарю, очень полезную статьи привел с Википедии, разбираюсь.
Если не ошибаюсь на основе публичного ключа базируется RSA?
Насчет токенов тоже интересно, у меня была похожая идея, но слегка в другом ракурсе, я подумал, что было бы неплохо в уже зашифрованном по старому ключу пакете, слать новый ключ, а клиент, получив новый ключ, будет шифровать следующий пакет и расшифровать следующий, полученный пакет этим, новым ключом. Получается, что здесь на токен один пакет, можно конечно, сделать кол-во пакетов на токен рандомным.

moka 20.07.2011 00:15

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

Baisangur 20.07.2011 00:39

Ответ: Скремблирование как бюджетная защита данных.
 
MoKa, ты прав насчет "лохануться", кажется прочитав статью на Хабре я решил собрать очередной велосипед. Почитал сейчас статью с Вики, узнал, что на основе открытого ключа работают RSA, PGP и Twofish порожденный RSA, следовательно если уже есть отлаженные способы шифровки, а главная ценность в них ключ, а не алгоритм, то писать свое - это только ради тренировки, но ни в коем случае не для рабочей системы. Тем более, как оказалось, скорость шифрования, даже у такого тяжеловеса как RSA, 30 кб/c, что явно превосходит потребности современной клиент - серверной системы, на мой взгляд.

Кстати, информация для потомков:
Используя RSA based шифрование, необходимо помнить, что ключ, размерностью ниже 1024 бит, в условиях современных вычислительных мощностей, более не актуален. Также настоятельно советуют как можно быстрее переползать и с 1024 битного ключа, т.к. сегодняшняя планка это взлом шифрованного сообщения с 768 битным ключом.

Чтобы вдруг не наткнуться, в поисках подходящего алгоритма, на OpenSSL, вот отличная замена www.cryptopp.com

impersonalis 21.07.2011 00:32

Ответ: Скремблирование как бюджетная защита данных.
 
Цитата:

главная ценность в них ключ, а не алгоритм
Собственно:
http://ru.wikipedia.org/wiki/Принцип_Керкгоффса
Цитата:

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


Часовой пояс GMT +4, время: 03:44.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot