22
Тропинка через минное поле Юрий Леонычев Я.Субботник, Нижний Новгород, 13.12

Тропинка через минное поле — Леонычев Юрий

  • Upload
    yandex

  • View
    668

  • Download
    4

Embed Size (px)

DESCRIPTION

Из доклада вы узнаете, как безопасно передавать данные между мобильным приложением и бэкендом. А также поймете, что SSL для этого недостаточно безопасен и до идеального решения нужно сделать ещё много шагов.

Citation preview

Page 1: Тропинка через минное поле — Леонычев Юрий

Тропинка через минное поле

Юрий Леонычев

Я.Субботник, Нижний Новгород, 13.12

Page 2: Тропинка через минное поле — Леонычев Юрий

Элементы уравнения

Page 3: Тропинка через минное поле — Леонычев Юрий

Простая картина мира

3

Приложение Сервис

Канал связи

Page 4: Тропинка через минное поле — Леонычев Юрий

Операционная система

Ближе к реальности

4

Приложение

Мой сервис

Метрика

Карты

WebView

Хранилище сертификатов

Библиотека для SSL/TLS

Логи и крэшдампы Чужой сервис

Непонятное облако

Чужой сервис

Мой сайт

http://lurkmore.to/Файл:Spherical_Derpy.png

CA

Page 5: Тропинка через минное поле — Леонычев Юрий

Перечислим и задумаемся

5

1.  Наше приложение

2.  Наш сервис

3.  Наш сайт

4.  Сторонние сервисы и облака

5.  Операционная система устройства

6.  Летающий пони

Page 6: Тропинка через минное поле — Леонычев Юрий

Спасение утопающих…

Page 7: Тропинка через минное поле — Леонычев Юрий

Первые шаги

7

1.  Только шифрование – только хардкор

2.  (протокол) => (протокол)S

3.  Никакой самодельной криптографии

Page 8: Тропинка через минное поле — Леонычев Юрий

Типичная ошибка

•  Нет проверки сертификатов

NSMutableURLRequest *request = [self requestWithMethod:@"GET" path:requestURL parameters:nil];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

operation.allowsInvalidSSLCertificate = YES;

Page 9: Тропинка через минное поле — Леонычев Юрий

Кто может перехватить трафик?

9

iOS

http://support.apple.com/en-us/ht5012

209 сертификатов всего

Ищем: “government”

Issuer: C=US, O=U.S. Government, OU=DoD, OU=PKI, CN=DoD CLASS 3 Root CA

China Information Center (?)

Android

http://kurrytran.blogspot.ru/2013/05/how-to-get-root-certification.html

Домашнее задание – проверить, сколько сертификатов и чьих в вашем устройстве

Page 10: Тропинка через минное поле — Леонычев Юрий

Чуть дороже

10

1.  Пининг сертификатов (в данном случае своего CA)

2.  Использование стойких криптоалгоримов (никакого SSLv3, стараемся использовать ECDSA)

Page 11: Тропинка через минное поле — Леонычев Юрий

Экстремальный вариант

11

1.  Свой Intermediate CA

2.  Несколько доверенных Intermediate CA с сертификатами на всех нужных платформах

3.  Возможность динамического изменения списка «запиненных»

4.  Черные и белые списки

Page 12: Тропинка через минное поле — Леонычев Юрий

Пони, пришло твое время

Page 13: Тропинка через минное поле — Леонычев Юрий

CA = Certificate Authority

13

•  Для нас это тот, кто сделает нам сертификат

•  А ещё тот, кто может его внезапно отозвать

•  И тот, из-за кого может сломаться весь SSL

Page 14: Тропинка через минное поле — Леонычев Юрий

Цепочка сертификатов

14

Корневой сертификат

Промежуточный сертификат

Ваш сертификат

Устройство

Сервер

Page 15: Тропинка через минное поле — Леонычев Юрий

Требования к CA

15

1.  Корневой сертификат на всех нужных устройствах

2.  Короткая цепочка сертификатов

3.  Современная криптография ECDSA

4.  Возможность купить EV сертификат

Page 16: Тропинка через минное поле — Леонычев Юрий

«Чужие» проблемы

Page 17: Тропинка через минное поле — Леонычев Юрий

Сервисы третьей стороны

17

•  Если они уже работают по SSL – всё нормально

•  Если нет, то что делать?

Page 18: Тропинка через минное поле — Леонычев Юрий

Решение

18

•  Всегда есть альтернатива

•  Существуют возможности для тонкой настройки

•  Пишем сами?

Page 19: Тропинка через минное поле — Леонычев Юрий

Полезные ссылки iOS

19

•  Начать можно отсюда: https://clck.ru/9NAav

•  Теория и практика: https://clck.ru/9NAbB

•  Список корневых сертификатов: https://clck.ru/9NAYz

•  Пининг сертификатов: https://clck.ru/9NAbV

Page 20: Тропинка через минное поле — Леонычев Юрий

Полезные ссылки Android

20

•  Как готовить SSL: https://clck.ru/9NAXy

•  Пининг сертификатов: https://clck.ru/9NAY4

•  Как извлечь список корневых сертификатов: http://bit.ly/11P4NJa

Page 21: Тропинка через минное поле — Леонычев Юрий

Вопросы?

Page 22: Тропинка через минное поле — Леонычев Юрий

Контакты

tracer0tong

[email protected]

Юрий Леонычев