» » » Простые шаги для безопасности ваших юзеров: OAuth, SSL, P2P-чат с RSA-1024, гейт в i2p

 

Простые шаги для безопасности ваших юзеров: OAuth, SSL, P2P-чат с RSA-1024, гейт в i2p

Автор: admin от 6-11-2013, 21:22, посмотрело: 2470

Утопающие не собираются спасать себя самостоятельно, поэтому предлагаем вам сделать четыре простых шага к увеличению безопасности посетителей вашего сайта.
Простые шаги для безопасности ваших юзеров: OAuth, SSL, P2P-чат с RSA-1024, гейт в i2p
Начитавшись откровений Сноудена, решили немного поработать. Расскажу про наш опыт реализации, последствия и реакцию пользователей.

Шаг 1. Без регистрации


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

Последствия такого шага: больше «одноразовых» профилей.
Шаг 2. Только SSL, только хардкор

В эпоху тотальных логов юзеры могут опасаться использовать ваш сайт только потому, что не хотят, что бы кто-то знал о том, какие именно страницы они просматривали, что они искали в вашем поисковике, какие статьи читали, какие сообщения на форуме оставляли. Особенно важно если у вас много разного (как у нас) контента. Решение простое – включаем https всем.
Бесплатный сертификат получаем например тут.
Берем с официального сайта свежий nginx, ставим, правим конфиги.
Пример конфига:
server {
        listen 80;
        listen 443 ssl;
        ssl_certificate ТУТ_ФАЙЛИК.pem;
        ssl_certificate_key ТУТ_ФАЙЛИК.key.decr;

       location /socket.io/ {
                proxy_pass ХОСТ:ПОРТ_где_крутится_signalmaster;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }

        location / { 

                # для тех кто вдруг не по https
                if ($ssl_protocol = "") {
                        rewrite ^   https://$server_name$request_uri? permanent;
                }

                proxy_pass http://rp_ups;  
        }

        server_name rospravosudie.com www.rospravosudie.com;
}

upstream rp_ups {
# тут наши апстрим-сервера для веба
}


Проверяем все ли работает.

У вас пропадут картинки со сторонних ресурсов, ролики ютуба и прочие, которые вы (или юзеры) размещали с указанием протокола доступа http://. Лечится достаточно просто – автозаменой http на https в текстах. Если сторонние ресурсы в“не умеют ssl”, то картинки пропадут, поэтому лучше закэшировать их к себе заранее. Удобный хинт – всегда использовать // ссылки без указания протокола – по умолчанию браузер будет пытаться открывать их по текущему протоколу (https).

Так же потребуется обновить код счетчиков статистики – Google Analytics, Liveinternet и Яндекс.Метрика замечательно работают по ssl. Проблем с кодами AdSense не возникает, про Яндекс и другие системы – не пробовали.

Необычных последствий с индексацией поисковиками не наблюдается – и Google и Яндекс индексируют как раньше.

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

Примечание: нагрузка на сервер возрастает незначительно, на единицы процентов, на уровне погрешности.

Шаг 3. Cryptico

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

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

В чатах шифруем сообщения между пользователями с использованием RSA-1024. Для этого используем например библиотеку cryptico (лежит на гитхабе github.com/wwwtyro/cryptico), ключи обновляем при каждом сеансе связи.

Чат работает на node.js и socket.io (примеры чатов есть на Хабре). Сигнальный сервер спрятан за nginx (свежий nginx умеет проксировать вебсокеты), через nginx же реализован ssl для сигнального сервера.

Побочный эффект – отсутствие истории сообщений. Невозможно самим узнать о чем болтают юзеры. Сообщения можно отправлять только в онлайн.

Шаг 4. Поднимаем зеркало в i2p


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

Пользователей TOR и I2P в рунете примерно одинаковое количество (около 15-20 тысяч ежедневных живых людей), TOR-юзеры справляются самостоятельно, поэтому имеет смысл поднять зеркало в I2P.

Делается это достаточно быстро, по инструкции (http://habrahabr.ru/post/158559/ и habrahabr.ru/post/97996/)

Примечание: не забудьте удалить все лишние javascriptы, коды статистики, вызовы чужих сервисов, картинок и т. д. и т. п. из кода «зеркальной версии», что бы не скомпрометировать случайно ваших посетителей. Разумеется, noscript должен быть установлен у каждого пользователя I2P, равно как и заблокирован доступ к внешним сайтам, но, как показывает практика, обратная ситуация встречается довольно часто.

Последствия: вы не понимаете, кто все эти люди?

В целом же шифрование — это легко и приятно!

В общем, призываем вас сделать рунет чуть-чуть более приватной зоной. Учитывая последние тенденции по внедрению DPI, 12-часового хранения трафика, блокировок без суда-и-следствия в борьбе за копирайт — может пригодится (надеюсь нет).
P.S.
Попробовать чат и видео-звонки можно тут.
P.P.S.Если хотите прочитать про работу webrtc в I2P -В плюсаните в карму разработчику (codemaster).
P.P.P.S. Конструктивные параноидальные предложения, критика и вопросы от «людей в шапочках из фольги» приветствуется.



Категория: Информационная безопасность » Криптография

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

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *