Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
 Аватар для djason
6 / 5 / 3
Регистрация: 23.08.2012
Сообщений: 143

Шифрование данных на клиенте и дешифровка на сервере реализация SSL

28.03.2017, 21:53. Показов 6439. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте друзья. Зашел вопрос о том, как можно реализовать принцип обертывания данных шифрованием используемый в SSL. Вот вся суть проблемы. Имеем пользователя который решил зарегистрироваться, хакера слушающего порт пользователя или что там (я в этом не силен но знаю что такое возможно) и сервер.
При регистрации пользователь светит в сети свои не зашифрованные данные, отсюда последствия.
Задача такая, перед тем как пользователь отправит данные их надо зашифровать, а на стороне сервера расшифровать, понятно дело что, хакер не дурак и знает способ шифровки полазив в моем js, соответственно дешифровку допишет сам используя его принцип, но если мы как нибудь передадим индивидуальный ключ-соль например в куку, который хакер не будет знать, то мы сможем хорошо зашифровать данные.
Отсюда вопросы:
При передачи сессии не получит ли ее хакер, если слушает клиент<->хакер<->сервер(и вообще возможно ли такое-прослушка)?
Читал что сессии можно своровать если у вас с хакером один и тот же сервер, надо хранить все в корне папки сайта, но насколько это безопасно например если сессии будут храниться в корне сайта в папке /session какова вероятность что хакер не вычислит эту папку и не получит доступ к содержимому этой папки, может ли он ее прочитать со своего сервера на присутствие сессий? Если у меня единая точка входа то получается доступа к этой папке у хакера не будет?
Если кто сможет подскажите способ шифровки с использованием соли на стороне клиента и способ дешифровки этих данных на стороне сервера.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2017, 21:53
Ответы с готовыми решениями:

SSL шифрование на выделенном сервере для WordPress
Здравствуйте. Подскажите хотя бы в какую сторону копать. Имеется выделенный сервер на FreeBSD 9.1 И на нем Nginx + Apache. PHP и MySQl...

Дешифровка данных на сервере
Приветствую. Из проги на дельфи отправляю шифрованные по алгоритму MCRYPT_RIJNDAEL_128 данные. Все нормально уходит и дешифруется на...

Синхронизация баз данных на клиенте и сервере
Здравствуйте, подскажите как реализовать простенькое клиент-серверное приложение в котором при редактировании бд сервера автоматически...

14
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
28.03.2017, 21:57
https
0
 Аватар для djason
6 / 5 / 3
Регистрация: 23.08.2012
Сообщений: 143
29.03.2017, 08:12  [ТС]
Jewbacabra, это я и так знаю! В последнее время вместо полезной конструктивной информации и помощи, кроме сарказма на форуме мало что услышишь. Спасибо за содержательный комментарий.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
29.03.2017, 09:10
Цитата Сообщение от djason Посмотреть сообщение
Если кто сможет подскажите способ шифровки с использованием соли на стороне клиента и способ дешифровки этих данных на стороне сервера.
Может я чего-то не понял, но чем не устраивает вариант выше? Купили SSL-сертификат, настроили https на сервере и радуемся жизни.
0
 Аватар для N-Star
60 / 60 / 29
Регистрация: 03.11.2016
Сообщений: 292
Записей в блоге: 2
29.03.2017, 10:23
djason, заповеди криптологии гласят - используйте решения от профессионалов, свои варианты часто не до конца продуманные и уязвимостей в них будет гораздо больше.

Вы в курсе как работают приватные и публичные ключи? поймав публичный ключ - хакер ничего сделать не в состоянии. Если боитесь хакера который будет лазить по вашим папкам то доплатив - можно перейти на выделенный сервер .
0
 Аватар для djason
6 / 5 / 3
Регистрация: 23.08.2012
Сообщений: 143
29.03.2017, 10:29  [ТС]
Jodah, во первых везде пишут про обычное шифрование данных идущих через незащещенный канал http. Во вторых, вы спросите: Зачем это нужно, изобретать "велосипед"? И так, по моему мнению, если меня заботит безопасность сохранения пользовательских данных при передачи на сервер, но нет возможности купить дорогой "велосипед SSL", я что делаю? Правильно, изобретаю свой, как только проект начнёт приносить прибыль можно потратиться и на SSL сертификат... Надеюсь теперь более менее понятна суть сего вопроса.
0
 Аватар для N-Star
60 / 60 / 29
Регистрация: 03.11.2016
Сообщений: 292
Записей в блоге: 2
29.03.2017, 10:32
djason, конторы представляют и бесплатные SSL сертификаты вплоть до трех месяцев
0
 Аватар для djason
6 / 5 / 3
Регистрация: 23.08.2012
Сообщений: 143
29.03.2017, 10:45  [ТС]
N-Star, а что единая точка входа и настройки в htaccess не спасает от того что хакер будет лазить по папкам...? Чувствуется мне что вы напраляете меня на ложный путь. Согласитесь что многие здесь за тем, что бы решить такие вопросы как безопасность своими силами, оптимизация CMS, базы данных mysql, для того что бы по минимум свести денежные расходы на услуги хостер провайдера такие как SSL сертификаты, объём дискового пространства и так далее. А вы мне купите то, купите это, если бы была возможность гулять на широкую ногу и ничего не делать, я бы тут не задавал вопросы, не изучал php, js, html и фотошоп с иллюстратором, а нанял бы команду для того что бы они мне написали такой CMS, который мне нужен.
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
29.03.2017, 13:16
Цитата Сообщение от djason Посмотреть сообщение
но нет возможности купить дорогой "велосипед SSL"
Базовый стоит 2-3 тыс. руб. в год.

Некоторые хостинг-провайдеры (reg.ru) предоставляют SSL-сертификат бесплатно. Яндекс Касса при подключении также дарит SSL-сертификат.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
29.03.2017, 21:52
Цитата Сообщение от djason Посмотреть сообщение
во первых везде пишут про обычное шифрование данных идущих через незащещенный канал http.
Где пишут?
Цитата Сообщение от djason Посмотреть сообщение
меня заботит безопасность сохранения пользовательских данных при передачи на сервер, но нет возможности купить дорогой "велосипед SSL"
Взлом - чисто экономический вопрос. Если прибыль, полученная от взлома больше чем необходимые затраты, то взломают. Если в результате взлома будет причинен ущерб меньший, чем затраты на защиту от взлома, то защита не имеет смысла.
Так же стоит заметить, что ssl сертификат можно получить бесплатно https://letsencrypt.org/
Следующий вопрос - а не выйдет ли эта велосипедо-ssl сложнее для реализации, чем основной проект, и будет ли так же эффективна, как стандартный инструмент
Как собираешься защититься от mitm атак, иными словами каким образом будешь подтверждать клиенту, что ответил на его "шифрованный" запрос именно ты, а не кто еще, ведь поэтому ssl сертификаты и покупают, ведь самоподписанный сертификат можно самому без особого труда выпустить?

Не по теме:

Цитата Сообщение от djason Посмотреть сообщение
я бы тут не задавал вопросы, не изучал php, js, html и фотошоп с иллюстратором, а нанял бы команду для того что бы они мне написали такой CMS, который мне нужен.
Это не так работает. Если есть идея какого-либо проекта, но нет средств на реализацию, то ищется инвестор

1
 Аватар для djason
6 / 5 / 3
Регистрация: 23.08.2012
Сообщений: 143
30.03.2017, 11:28  [ТС]
Jewbacabra, хорошо тогда такой вопрос, если хакер видит что пользователь передаёт на сервер, значит он может с лёгкостью увидить индификатор сессии что сервер передает ему в куки, но я возьму и подсолю жизнь хакеру и замдешу5 пароль пользователя который он возможно использует от других соцсетей и аккаунтов, возьму в базу только отпечаток от пароля в виде хеша, конечно же у хакера будет возможность представить хешь вместо пароля и войти через сессию если он её увидит через открытый канал http, но я выиграю в единственном, хешь-пароль пользователя для входа будет доступен не дальше моего сайта и скорпроментировать уже не получиться? Правильно?

Добавлено через 1 час 3 минуты
Вот например мне понадобилось выложить в сеть свой сайт, у меня есть SSL бесплатный на месяц и все хорошо бы, но выкладываю в сеть я продукт который хочу на первых порах просто протестировать и использовать SSL сертификат пока проект не раскручен и неизвестен, нехочу, так как мало вероятно что в первые дни выпуска на него накинуться хакеры, но если уж и накинуться на этот случай я все предусмотрел и скул иньекции и единую точку входа и как описывал ранее хеширование пароля пользователя, что бы он не летал в открытом виде по сети.. Меня интересует, какие функции существуют в js, которые делают из пароля хороший криптостойкий хеш?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
30.03.2017, 11:33
djason, не понял как связан идентификатор сессии и хеширование пароля.
Зачем пароли хранят в хешированном виде? Чтобы при сливе таблицы с паролями эти самые пароли не скомпрометировать. В случае с хешированием на стороне клиента при сливе базы получаем хеши, которые можно использовать как пароль. Т.е. все равно придется хешировать на сервере.
Для хешировпния паролей используется соль. На клиенте соль будет известна хакеру.
md5, даже с солью плохо подходит для хеширования пароля. К тому же насколько мне извпстно в js нет стандартной функции md5 и других. Более сложные хеширующие функции будут сложнее для реализации и будут требовать больше вычислительных ресурсов клиента.

В общем от хеширования пароля на клиенте хуже скорее всего не будет, лучше вероятно тоже.
1
 Аватар для N-Star
60 / 60 / 29
Регистрация: 03.11.2016
Сообщений: 292
Записей в блоге: 2
30.03.2017, 12:06
лучше использовать RSA
1
 Аватар для djason
6 / 5 / 3
Регистрация: 23.08.2012
Сообщений: 143
30.03.2017, 13:19  [ТС]
Jewbacabra, идинтефикатор сессии и хеширование не связанны я имел ввиду что если идёт прослушка хакером и он захочет влезть в профиль хакера, то использует либо хешь либо идинтефикатор сессии если пользователь авторизован, или переданный идинтефикатор в куки хакер не увидит, я что то не пойму? Вообще я щас с Хабра, начитался там дискуссий, вроде бы говорят что все это бесполезно, а именно шифровать данные на стороне клиента, я и не спорю конечно, но там говорят помимо SSL защиты о асинхронном шифровании что ли, может кто нибудь видел готовое подобное рещение асинхронного шифрования?
0
 Аватар для djason
6 / 5 / 3
Регистрация: 23.08.2012
Сообщений: 143
31.03.2017, 21:27  [ТС]
В общем то я, как упертый бублик не остановился на этом, и рыл дальше, наткнулся на такую вот статейку на хабре проSRA шифрование, и собственно говоря реализовал его. Сгенерил 512bit-ные ключи как там написано, приватный и публичный, написал простенький код для теста, клиенту и серверу:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$('#but').click(function(){//кликаем
    var pub = '-----BEGIN PUBLIC KEY-----\
    MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMFFeMeZSrxuc44HtAQMJ/ojvstQI2fw\
    O4XzxuzFV9Cj3Ws1SyFz9dFo216XK95yK9m6VypedBoERug3DpAtTksCAwEAAQ==\
    -----END PUBLIC KEY-----';
    var crypt = new JSEncrypt();
    crypt.setPublicKey(pub);
    var data = $('#data').val(),
        data = crypt.encrypt(data);
    $.ajax({
        url: 'decode.php',
        type: 'post',
        dataType: 'text',
        data: {data: data},
        success: function(a){
        $('#reply').text(a);
        }
    });
});
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$data = $_POST['data'];
$pk = '-----BEGIN RSA PRIVATE KEY-----
MIIBOwIBAAJBAMFFeMeZSrxuc44HtAQMJ/ojvstQI2fwO4XzxuzFV9Cj3Ws1SyFz
9dFo216XK95yK9m6VypedBoERug3DpAtTksCAwEAAQJAYkzoanTAO2jeIy4t1CUu
rB5EK3qeF35rd+0Oj1ysFnRtbo+DjtzzGuw9KiosnuwsVPiuw24giUYw0ysa3W93
WQIhAP+/oiU3b9d1KqnAy+C5AgEuibLmNuhhi6A6X7KTVLRlAiEAwXYdPCcZeiVZ
zZKWFm3wjXTYfeVMdtPkKenYokttFO8CIQDfzMyRkM+YVfm9ju9aecudSSJKoVbP
R/0te6ee13q6WQIhAK5DD5h0e817wYWcCdfQVgOFgdD9b8AFo5thigK+wFY/AiBk
SrmpSt3q1XMcbQuIWFBYrD+/XTBFc1pTXnOlgffdWw==
-----END RSA PRIVATE KEY-----';
$ogp = openssl_get_privatekey($pk);//Resource id #6
openssl_private_decrypt($data, $out, $ogp);//0
echo $out;
Начнем с проблем и способов их решения, может кому поможет.
Сначала все рухнуло с ошибкой "Прекращена работа программы Apache HTTP Server":
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: httpd.exe
Версия приложения: 2.2.31.0
Отметка времени приложения: 55a77942
Имя модуля с ошибкой: LIBEAY32.dll
Версия модуля с ошибкой: 1.0.1.16
Отметка времени модуля с ошибкой: 55a2477e
Код исключения: c0000005
Смещение исключения: 000409ab
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
Поисковики не помогли, ни кто не сталкивался с такой проблемой, но я ее решил.
Начнем с того, что все это произошло на локальном сервере Open Server.
Настройки вызывающие ошибку:
Apache 2.2
PHP-5.3

Настройки лечащую ошибку:
Apache 2.4
PHP-5.5

Примечательно что если экранировать строку в коде openssl_private_decrypt($data, $out, $ogp);, Apache не рушится, мне вот интересно почему, скорее всего далее тоже из за этого ни чего не получается.
Как бы решили проблему, все хорошо работает, до одной только строчки, опять openssl_private_decrypt($data, $out, $ogp);, Apache не ругается, но и в переменную $out ничего не приходит, собственно говоря я и не понимаю, как в нее что то может прийти, если она указывается только в качестве аргумента. Может там ошибка в коде у чувака на хабре?
Пробовал я и так:
PHP
1
2
3
...
$out = openssl_private_decrypt($data, $out, $ogp);
echo $out;
Я понимаю что это было глупо, но чисто для самоуспокоения попробовал, ничего конечно не произошло... Функция молчит как рыба!
Вот я уже на один шаг к решению своей задачи, по сути передал по зашифрованному каналу данные, принял их сервером, а функция openssl_private_decrypt() не работает. Куда рыть дальше?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.03.2017, 21:27
Помогаю со студенческими работами здесь

Как подключиться к базе данных MySQL на сервере из скрипта на клиенте?
Доброй ночи, у меня при изучений Python 'а 3 возник такой вопрос, можно ли как то подлключиться к базе MySQL, которая находится на сервере...

Выгрузка данных в dbf файл: обработка выборки запроса на сервере, запись файла - на клиенте.
Добрый день. Пишу процедуру выгрузки данных в dbf файл. Запрос выполняется НаСервере, а остальной код должен выполняться НаКлиенте....

Шифрование и дешифровка
Вот,задачка :gsorry: Организовать процессы шифрования и дешифровки записью символов текста в обратном порядке. :help: Заранее спасибо...

Шифрование и дешифровка текста
Доброго времени суток! Я начинаю изучать Python и в целях обучения решил написать программу для шифрования и дешифровки текста....

Отключение проверки сертификата SSL в SOAP клиенте
Доброго времени суток. Помогите пожалуйста разобраться в работе SOAP клиента в PHP. (PHP 5.3, Apache 2.2) Проблема в следующем:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru