шифрование с открытым ключем на php

grigori

( ͡° ͜ʖ ͡°)
Команда форума
шифрование с открытым ключем на php

мне надо шифровать данные для хранения в базе (номера кредиток),
а расшифровывать закрытым ключем, который на сервере не хранится

есть такое в PHP - кто знает?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
:) спасибо
это гораздо удобней, чем интерфейс openssl
жаль, что он в pecl и его нет на хостингах
хотя, логично спросить, кто делает обработку карточек на хостинге ... но приходится
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
та вот пришел клиент, попросил интегрировать 4 сайта с chronopay
а я боюсь записывать номера кредиток в базу в открытом виде
 

LeaetherStrip

Новичок
Э-э... а что, на хронопее номера кредиток через сайт клиента гоняются? %) что-то сомнительно...
 

WP

^_^
Во-первых не надо гонять через сайт магазина кредитки, это делается через мерчант напрямую.
Во-вторых какая разница всё равно если взломают сервер залезут в скрипт и сопрут приватный ключ для декодирования.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
WP, ты не разобрался, я не ламер и не от непонимания задачи пишу. :)

Это не paypal/stormpay - это merchant account.
Процессинг делается через веб-службу гейтвея, доступ открыт только с ip сервера.

Цель: кодировать данные публичным ключем, а читать - приватным. Приватного ключа на сервере не будет - он будет вводится в форму в админке при доступе к данным.
Похоже, напишу класс и выложу.
 

Alexandre

PHPПенсионер
Похоже, напишу класс и выложу.
всегда рады красивым решениям. Но, по мне опен_ссл (key 1024/2048) надежней, а может просто привычней. это ИМХО.

-~{}~ 12.03.08 08:06:

grigori я так понял, что данное решение заточено под определенный проект или допускается "тиражируемость"?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ну пока решения нет, как-раз про open ssl думаю
конечно, библиотека или "решение" будет независимо от проекта

-~{}~ 14.03.08 12:00:

LeaetherStrip
как и на PayPal, есть два варианта
можно с редиректом,
но если для сайта сделан merchant account - из скрипта делается запрос на гейтвей без редиректа пользователя

Для HTTPS-запроса на гейтвей я используя свою библиотеку gCurl
(на правах рекламы=))
 

WP

^_^
grigori
А "подслушать" ключ это такая большая проблема? Если иметь доступ к серверу.
 

Alexandre

PHPПенсионер
А "подслушать" ключ это такая большая проблема? Если иметь доступ к серверу.
если https - то проблема

grigori с его-то опытом, не будет такие вещи по открытому каналу грузить.

как вариант - можно жучек в скрипт встроить и скидывать ключи в файлик или по udp сокету скидывать. Но это уже больше вопрос к организации администрирования сервера. Зендить скрипты надо, так на всякий случай. или проверять контрольную сумму на подмену в самых ответственных скриптах.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Конечно, доступ к сайту по SSL.
Полной безопасности не будет.
Однако, разбираться, что это за мусор в базе, как он создается и вписывать жучок в нужный скрипт намного сложней, чем увидеть номера кредиток и сделать дамп базы чужого сайта.

-~{}~ 14.03.08 18:07:

Alexandre
Про контрольную сумму файла - это интересно. Иногда думаю об этом, только не знаю, с чего ее считать...
Как бы посчитать контрольную сумму на объект в памяти скрипта с учетом его методов? :)
 

WP

^_^
grigori
Элементарно... можно на входе номера кредиток будет писать куда-нибудь, даже на уровне веб-сервера, что совершенно неуловимо.
 

Alexandre

PHPПенсионер
Как бы посчитать контрольную сумму на объект в памяти скрипта с учетом его методов?
надо писать экстеншен, там не так все сложно и разобраться можно

но я думал немного о другом:

есть данные (имя скрипта = >кс)
читаешь файл my_script.php
если он есть в этом массиве, то:
далее проверяешь кс, если не совпадает - срочно шлешь себе смс или мыло.
если OK, делаем инклуд.
ну и конечно еще проверяем сам файл с данными.

можно это сделать через eval()
вообще-то наврядли кто будет разбираться во всем этом.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Автор оригинала: WP
grigori
Элементарно... даже на уровне веб-сервера, что совершенно неуловимо.
Абсолютная защита мне не нужна: взлом сервера, воровство данных админом, падение метеорита и прочий форс-мажор меня не интересует.

Меня волнует 2 проблемы:
1. Доступ к чужим файлам и базе из соседнего хостинга на том же сервере - это вполне возможно.
2. Доступ к данным 3ми лицами, у которых есть логин/пароль к ftp - тоже возможно.
Этим я занимаюсь. Фсе.

P.S. "элементарно подправить апач", причем на чужом сервере - респект и уважуха ...

-~{}~ 15.03.08 21:58:

Alexandre
можно даже не энкодить скрипт:
зашифровать кусок кода, который раскрывать публичным ключем и eval его,
этот код может проверить незашифрованый код и выполнить то, что нужно

конечно, вывод можно сэмулировать фиктивным скриптом :) и украсть приватный ключ, который ничего не подозревающий админ сайта введет в форму ... но это уже другая история

-~{}~ 15.03.08 22:03:

Кстати, это вполне надежный вариант защиты скрипта от копирования/изменения! :)
Ценой затрат на декодирование, конечно ...
 

phprus

Moderator
Команда форума
Alexandre
когда-то у меня была идея
А можно узнать, какой смысл давать ссылку на тему, которую многие не смогут прочитать? А то при переходе по ссылке я наблюдаю вот это:
Вы не авторизовались под своим именем либо не имеете доступа к данной странице форума. Это может произойти по следующим причинам:
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Мое решение:
gksEncrypt PHP class

Класс позволяет:
* Генерировать public/private пару ключей,
* Шифровать данные публичным ключем
* Расшифровывать приватным
* Проверять конфигурацию сервера
* Отлавливает ошибки и бросает исключения в удобном формате

Демки включены в архив.
 
Сверху