генерация pin
От: chocholl Россия  
Дата: 04.12.05 12:46
Оценка:
Добрый день, уважаемые.

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

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

Каждая карточка несет следующую информацию:
1) номинал
2) номер карты
3) секретный пин код.

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

Каким образом наиболее эффективно можно организовать такую систему. Эффективность, на мой взгляд, оценивается длинной кодов (как можно меньше) и стойкостью к перебору.

Приложение чем то похоже на организацию оплаты за звонки с мобильных телефонов.

Спасибо, заранее.

Андрей.
icq : 196-248-172
Re: генерация pin
От: Рома Мик Россия http://romamik.com
Дата: 04.12.05 14:09
Оценка:
Здравствуйте, chocholl, Вы писали:

Генерируй случайные числа и забивай их в базу данных. Ничего лучше и безопаснее не придумаешь.
... << RSDN@Home 1.2.0 alpha rev. 619>>
Re[2]: генерация pin
От: chocholl Россия  
Дата: 04.12.05 14:22
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Здравствуйте, chocholl, Вы писали:


РМ>Генерируй случайные числа и забивай их в базу данных. Ничего лучше и безопаснее не придумаешь.


Спасибо за ответ.

Это первое, что мне пришло в голову. Но при таком подходе множество пин кодов должно быть очень разряжено, для защиты от простого перебора номеров, что сильно увеличит длинну кода. Кроме того, валидность карты по сроку действия можно будет определить только на стороне сервера бд.
Я ищу алгоритм с наличием состояний, чтобы по номеру карты можно было узнать когда она сгенерирована, какой у нее номинал. Чтобы получение списка карт сгенерированных за n-е обращение осуществлялось не обращением к бд, а запуском алгоритма с определенными входными параметрами (дата, количество, номинал и т.д.).
icq : 196-248-172
Re[3]: генерация pin
От: Рома Мик Россия http://romamik.com
Дата: 04.12.05 15:28
Оценка:
Здравствуйте, chocholl, Вы писали:

C>Я ищу алгоритм с наличием состояний, чтобы по номеру карты можно было узнать когда она сгенерирована, какой у нее номинал. Чтобы получение списка карт сгенерированных за n-е обращение осуществлялось не обращением к бд, а запуском алгоритма с определенными входными параметрами (дата, количество, номинал и т.д.).

Ну так проблем-то? Номер генерируй, а пароль случайный. Насколько я знаю, обычно так и делают.
... << RSDN@Home 1.2.0 alpha rev. 619>>
Re[4]: генерация pin
От: vip_delete  
Дата: 04.12.05 17:23
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Здравствуйте, chocholl, Вы писали:


C>>Я ищу алгоритм с наличием состояний, чтобы по номеру карты можно было узнать когда она сгенерирована, какой у нее номинал. Чтобы получение списка карт сгенерированных за n-е обращение осуществлялось не обращением к бд, а запуском алгоритма с определенными входными параметрами (дата, количество, номинал и т.д.).

РМ>Ну так проблем-то? Номер генерируй, а пароль случайный. Насколько я знаю, обычно так и делают.

Например, для генерации карточек оплаты сотовой связи применяют функции хеширования MD4, MD5 от номера, числа, суммы и тп...они обладают хорошим рассеиванием и стойкость.
Re[5]: генерация pin
От: chocholl Россия  
Дата: 04.12.05 18:47
Оценка:
Здравствуйте, vip_delete, Вы писали:

_>Например, для генерации карточек оплаты сотовой связи применяют функции хеширования MD4, MD5 от номера, числа, суммы и тп...они обладают хорошим рассеиванием и стойкость.


Очень интересно, именно это я и имел в виду.
Можно поподробнее.
icq : 196-248-172
Re[4]: генерация pin
От: OdesitVadim Украина  
Дата: 05.12.05 10:07
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Здравствуйте, chocholl, Вы писали:


C>>Я ищу алгоритм с наличием состояний, чтобы по номеру карты можно было узнать когда она сгенерирована, какой у нее номинал. Чтобы получение списка карт сгенерированных за n-е обращение осуществлялось не обращением к бд, а запуском алгоритма с определенными входными параметрами (дата, количество, номинал и т.д.).

РМ>Ну так проблем-то? Номер генерируй, а пароль случайный. Насколько я знаю, обычно так и делают.

Воспользуйся несеметричными алгоритмами шифрования (RSA к примеру). Палик ключ раздаёш всем, а приват — у тебя. Приватом шифруеш строку вида "05.12.2005 бла-бла-бла". На стороне клиента получить эту строку можно всегда, а вот сгенерировать практически нереально. (естественно за разумное время, но при условии, что не було допущено серёзных ошибок при реализации. Поэтому бери готовый алгоритм и вперёд)
При этом паблик ключ мож раздавать на право и на лево, алгоритм держать открытым — ломать даже нечего. А подобрать...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: генерация pin
От: vip_delete  
Дата: 05.12.05 20:43
Оценка:
Здравствуйте, OdesitVadim, Вы писали:

OV>Здравствуйте, Рома Мик, Вы писали:


OV>Воспользуйся несеметричными алгоритмами шифрования (RSA к примеру). Палик ключ раздаёш всем, а приват — у тебя. Приватом шифруеш строку вида "05.12.2005 бла-бла-бла". На стороне клиента получить эту строку можно всегда, а вот сгенерировать практически нереально. (естественно за разумное время, но при условии, что не було допущено серёзных ошибок при реализации. Поэтому бери готовый алгоритм и вперёд)

OV>При этом паблик ключ мож раздавать на право и на лево, алгоритм держать открытым — ломать даже нечего. А подобрать...

Хорошо, но тут не шифрованием надо заниматься а генерить пин коды, которые потом сохраняются в базу.

Про хеши MD4, MD5 тут:
http://ftp.lucky.net/pub/OpenBSD/src/lib/libssl/src/crypto/md4/
http://ftp.lucky.net/pub/OpenBSD/src/lib/libssl/src/crypto/md5/

К вопросу о защите тут:
http://zeus.sai.msu.ru:7000/security/articles/cards/
Re[6]: генерация pin
От: chocholl Россия  
Дата: 06.12.05 04:49
Оценка:
Здравствуйте, vip_delete, Вы писали:

_>Хорошо, но тут не шифрованием надо заниматься а генерить пин коды, которые потом сохраняются в базу.


_>Про хеши MD4, MD5 тут:

_>http://ftp.lucky.net/pub/OpenBSD/src/lib/libssl/src/crypto/md4/
_>http://ftp.lucky.net/pub/OpenBSD/src/lib/libssl/src/crypto/md5/

_>К вопросу о защите тут:

_>http://zeus.sai.msu.ru:7000/security/articles/cards/

Спасибо.
Жизнь налаживаетсся.
Теперь понятнее куда искать.
icq : 196-248-172
Re[6]: генерация pin
От: OdesitVadim Украина  
Дата: 06.12.05 08:25
Оценка:
Здравствуйте, vip_delete, Вы писали:

_>Хорошо, но тут не шифрованием надо заниматься а генерить пин коды, которые потом сохраняются в базу.

А чем принципиально пин код отличается от хеша? Длиной? Набором символов? И почему в базу запмсать нельзя — хеш (по крайней мере для известных мне) можно перевести в строку, а её в базу — раз плюнуть
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: генерация pin
От: vip_delete  
Дата: 07.12.05 07:09
Оценка:
Здравствуйте, OdesitVadim, Вы писали:

OV>Здравствуйте, vip_delete, Вы писали:


_>>Хорошо, но тут не шифрованием надо заниматься а генерить пин коды, которые потом сохраняются в базу.

OV> А чем принципиально пин код отличается от хеша? Длиной? Набором символов? И почему в базу запмсать нельзя — хеш (по крайней мере для известных мне) можно перевести в строку, а её в базу — раз плюнуть

брр...пин код можно считать хешем, его и надо записывать в базу.
Я говорил про то, что шифрование тут ни при чем, так как нам не надо раздавать паблик ключи клиентам (не ясно как их генерить), нам надо продавать им хеши.

Клиент покупает хеш (или пин код, что одно и тоже в нашем случае) вводит его где-то, на сервере по пин коду находится строчка в базе данных, в которой написаны параметры "карточки" (число денег, срок годности и тп.)

Смысл хеша в том, чтобы равномерно рассеить множество значений от данных.
Например (самый простой), у меня есть данные 1, 2, 3. применяю к ним функцию хеширования и получаю: 123, 546, 789 (пусть хеш от 0 до 1000). поэтому "угадать правильный хеш трудно", хотя я знаю, что исходных значений может быть всего 3 штуки.
Re: генерация pin
От: chocholl Россия  
Дата: 08.12.05 15:03
Оценка:
покритикуйте пожалуйста вот такой вариант.

Каждый месяц на сервере генерируются два ключа (rsa), валидные только один месяц, и хранящиеся на сервере.

на вход алгоритма генерации карточек подается следующие параметры, которые потом помещаются в базу:
1) номер карты (0001, 0002, ..., 000n) — инкрементный.
2) дата.
3) номинал.

1) Эта информация шифруется одним из ключей, что позволяет добится перемешивания. Выход этого этапа — первая часть пин кода.
2) По первая часть пин кода и второму ключу генерируется электронная подпись.
3) Складывая вместе получаем пин-код.

Этап оплаты:

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

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

Спасибо.
icq : 196-248-172
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.