[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Шифрование принятых данных
Страницы: 1, 2, 3, 4
McLotos
Добрый день. Мы все уже давно привыкли к тому что конфиденциальная информация пользователей должна быть зашифрована и желательно так чтобы её невозможно было расшифровать, классический пример - хэш, но по сути, какой в этом смысл. Какой смысл шифровать данные которые хранятся в базе данных куда нет прямого доступа ни у кого кроме использующего приложения? Ведь в лучшем случае мы используем хэш + "соль" - какая-то строка которая тоже хранится в открытом виде в исходных кодах проекта, если кто-то получил доступ к БД где вероятность что он не получил доступ к файлу с "солью"?
По-моему на много логичнее шифровать канал между клиентом и сервером чтобы защититься хотя бы от банального перехвата, простейший вариант предложил Диффи Хэллман, т.е. данные будут храниться в базе в открытом виде, но при обмене информацией с клиентом они будут зашифрованы.
Вероятность того что кто-то получит прямой доступ к Базе Данных крайне мала (если конечно вы доверяете серверу)
Есть один интересный метод нарушения конфиденциальности - человек по середине, он основан на том что клиент и сервер общаются друг с другом через посторонний компьютер, который выдаёт себя за сервер для клиента и говорит серверу что он и есть клиент, этот метод не очень популярен, но всё же очень эффективен, потому-как определить задержку информации иногда бывает очень сложно, а за эти несколько миллисекунд хорошее приложение может получить всю необходимую информацию.
Если честно, топик не преследует какую-то определенную практическую цель, скорее просто порассуждать и попробовать прийти к какому-то логическому выводу. =)

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
bestxp
тут только что было описано работы https шифрование между сервером и клиентом
McLotos
bestxp
я знаю про существование SSL для HTTP (TCP:443), сам давно его юзаю, просто интересно как можно защитить канал и информацию на уровне приложения.
Допустим, как вариант, взять тот же подход ДХ и написать js который будет для клиентов генерировать случайное число, и на сервере функцию для генерирования своего случайного числа, а дальше по методу ДХ производить шифрование, мне кажется это лучше чем передавать данные в открытом виде но в базе хранить их защищенные. Логики в этом никакой. Или я не прав?

Если совсем грубо, то md5 используется исключительно для успокоения, ну и для очистки совести, чтобы потом можно было сказать что-то типа "Ваши данные надежно защищены сервером базы данных, который спрятан за семью аппаратно/программными файрволлами и зашифрованы алгоритмом который не поддается декодированию, только перебору"

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
vagrand
McLotos
Цитата
Какой смысл шифровать данные которые хранятся в базе данных куда нет прямого доступа ни у кого кроме использующего приложения?


Предположим что в коде сайта есть дыра, позволяющая на сервере выполнить произвольный запрос. В таком случае теоретически можно получить весь дамп базы и соответственно весь список юзеров с их незашифрованными паролями. Вот вам и резон.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
McLotos
vagrand
т.е. это способ защиты от использования дыры которая возможно существует только в теории?
Не совсем понимаю. Мы же знаем о местах в которых может быть проведена атака и знаем даже о способах атаки, неужели мы все ещё допускаем эти дыры?

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
vagrand
McLotos
Цитата
неужели мы все ещё допускаем эти дыры?


Думаю тут зарекаться не стоит. Все мы люди и все мы можем чего-то не заметить или пропустить. Или вы хотите сказать что со 100% вероятностью уверены в отсутствии подобных дыр у себя?

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

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
McLotos
.
Цитата (vagrand @ 5.09.2014 - 15:26)
я например использую на многих сайтах один и тот же пароль.

У меня много разных паролей, но суть не в этом. какой смысл например FatCat читать наши пароли? Зачем ему это?
Ну даже если и прочитает, он что будет искать на каких сайтах ещё я зарегистрирован и будет пытаться туда логиниться? Смысл? Слать спам?

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
vagrand
McLotos
Цитата
какой смысл например FatCat читать наши пароли? Зачем ему это?


Я говорю не про данный конкретный форум, а в общем. Если бы я точно знал, что на каком-то сайте мои пароли хранятся в незакодированном виде, то с вероятность в 90% не стал бы там регистрироваться без серьезной необходимости.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
McLotos
vagrand
защита информации не должна основываться на незнании =)
но мы ушли далеко от темы, допустим что я храню пароли в открытом виде, и при этом у меня есть 100% гарантия защищенности сервера базы данных.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
vasa_c
Цитата
у меня есть 100% гарантия защищенности сервера базы данных.

Он выключен? Все файлы надёжно удалены?

_____________
Блог ГО | Таблица символов Юникода | Графомания
McLotos
vasa_c
всё проще, но не буду вдаваться в детали, это уже администрирование а не программирование, хочешь подискутировать на эту тему? =)
Я просто пытаюсь понять не логичнее ли писать алгоритм для шифрования канала вместо того чтобы хранить зашифрованные данные в базе, при чем алгоритм должен быть динамическим, т.ею он должен постоянно изменяться чтобы в случае его обнаружения невозможно было расшифровать данные =)

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
DedMorozzz
Цитата (McLotos @ 5.09.2014 - 11:18)
конфиденциальная информация пользователей должна быть зашифрована и желательно так чтобы её невозможно было расшифровать, классический пример - хэш

Хэш - это не зашифрованая инфа
А любую зашифрованую инфу можно расшифровать
Потому если ты шифруешь, к примеру, переписку - тут хеш точно не подойдёт

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
McLotos
Цитата (DedMorozzz @ 5.09.2014 - 16:01)
Потому если ты шифруешь, к примеру, переписку

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

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
vagrand
McLotos
Цитата
при этом у меня есть 100% гарантия защищенности сервера базы данных


Честно говоря даже не знаю что и ответить на такое заявление. Могу лишь сказать что сам я всегда хеширую пароли при помощи составной соли:
1. Одна часть хранится в конфиге.
2. Вторая часть уникальна для каждого пользователя и хранится в базе.
Т.е. теоретическому хакеру нужно не только слить базу, ему нужно еще добраться до конфигов и найти алгоритм хеширования. Лично мне при написании это не составляет труда, так почему бы не повысить защищенность базы? Это не приводит и к каким-то потерям по производительности. И по этому мне не понятно ваше упорное непринятие такого метода защиты.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
McLotos
Две части ключа это хорошо, даже очень, а что если обе части будут динамические?

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.