6 / 5 / 3
Регистрация: 23.08.2012
Сообщений: 143
1

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

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

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

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

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

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

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

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

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

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

Не по теме:

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

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

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

В общем от хеширования пароля на клиенте хуже скорее всего не будет, лучше вероятно тоже.
1
60 / 60 / 29
Регистрация: 03.11.2016
Сообщений: 292
Записей в блоге: 2
30.03.2017, 12:06 13
лучше использовать RSA
1
6 / 5 / 3
Регистрация: 23.08.2012
Сообщений: 143
30.03.2017, 13:19  [ТС] 14
Jewbacabra, идинтефикатор сессии и хеширование не связанны я имел ввиду что если идёт прослушка хакером и он захочет влезть в профиль хакера, то использует либо хешь либо идинтефикатор сессии если пользователь авторизован, или переданный идинтефикатор в куки хакер не увидит, я что то не пойму? Вообще я щас с Хабра, начитался там дискуссий, вроде бы говорят что все это бесполезно, а именно шифровать данные на стороне клиента, я и не спорю конечно, но там говорят помимо SSL защиты о асинхронном шифровании что ли, может кто нибудь видел готовое подобное рещение асинхронного шифрования?
0
6 / 5 / 3
Регистрация: 23.08.2012
Сообщений: 143
31.03.2017, 21:27  [ТС] 15
В общем то я, как упертый бублик не остановился на этом, и рыл дальше, наткнулся на такую вот статейку на хабре про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
31.03.2017, 21:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2017, 21:27
Помогаю со студенческими работами здесь

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru