Рекомендации по защите / шифрованию кода - PullRequest
0 голосов
/ 25 февраля 2012


Я разрабатываю приложение, которое с одной стороны создает код с определенной информацией о покупке, который включает информацию о кредите.Например, вы можете купить определенное количество минут, чтобы потратить их на общедоступном ПК в интернет-кафе, и вы получите билет с номером / кодом с таким количеством минут, который затем декодируется и обрабатывается программным обеспечением для блокировки ПК вобщедоступный ПК.
Полная длина этой информации (включая дату покупки, идентификатор и т. д.) составляет около 12 байт.Очевидно, мне нужно защитить эти данные настолько, насколько мне нужно, чтобы они не изменились.У меня нет опыта работы с криптографией, но я много читаю в последние несколько дней, поэтому я придумал схему, в которой я шифрую данные с использованием Twofish в режиме CFB (для сохранения маленького зашифрованного текста) и добавляю 4 байтадлинный IV, случайно сгенерированный.Я понимаю, что это короткий IV, но причина в том, что злоумышленник должен взять явно нелепое количество билетов, чтобы стать потоком с IV из 65535 вариантов.
Проблема, которую я вижу (не говоря уже о тех, которые я пропускаю)что мне также нужно аутентифицировать код, так как в режиме CFB небольшое изменение в зашифрованном тексте приводит к небольшому изменению открытого текста, так что любой может изменить, например, кредит своего билета, просто изменив A на B.
Итак, первый вопрос: есть ли очевидная проблема в использовании CRC16 открытого текста в качестве IV и добавлении его (незашифрованного) в зашифрованный код, чтобы использовать его как для аутентификации, так и для IV?Я повторяю, я не в криптографии, но кажется странным помещать некоторую информацию о незашифрованном тексте вместе с зашифрованным текстом.Но это только внутреннее чувство.
Или вместо этого я должен использовать потоковый шифр?Какой из них может внести большие изменения (/ испортить) открытый текст из небольшого изменения в зашифрованном тексте.Связано ли это со свойством распространения ошибок в режиме шифрования?

Какое-нибудь руководство, пожалуйста?
Большое спасибо.
Кстати, если это имеет значение, я использую mcrypt на PHP.

Я должен добавить, что другой конец приложения, тот, который читает билет, не находится (и не может быть) онлайн.Извините за это упущение.

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

Звучит так, будто вы ищете либо HMAC , либо, если вы не можете защитить клиентские ПК, цифровую подпись, но не шифрование.

0 голосов
/ 25 февраля 2012

Я бы добавил немного соли и создал бы хеш MD5, поставляемый прямо с открытым текстом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...