SlideShare a Scribd company logo
Тропинка через минное поле 
Юрий Леонычев 
Я.Субботник, Нижний Новгород, 13.12
Элементы уравнения
Простая картина мира 
3 
Приложение 
Сервис 
Канал связи
Ближе к реальности 
Операционная система 
4 
Приложение 
Мой 
сервис 
Логи и крэшдампы Чужой 
Метрика 
Карты 
WebView 
Хранилище сертификатов 
Библиотека для SSL/TLS 
сервис 
Непонятное 
облако 
Чужой 
сервис 
Мой сайт 
CA 
http://lurkmore.to/Файл:Spherical_Derpy.png
Перечислим и задумаемся 
5 
1. Наше приложение 
2. Наш сервис 
3. Наш сайт 
4. Сторонние сервисы и облака 
5. Операционная система устройства 
6. Летающий пони
Спасение утопающих…
Первые шаги 
7 
1. Только шифрование – только хардкор 
2. (протокол) => (протокол)S 
3. Никакой самодельной криптографии
Типичная ошибка 
• Нет проверки сертификатов 
NSMutableURLRequest *request = [self requestWithMethod:@"GET" p 
ath:requestURL parameters:nil]; 
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation al 
loc] initWithRequest:request]; 
operation.allowsInvalidSSLCertificate = YES;
Кто может перехватить трафик? 
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 
Домашнее задание – 
проверить, сколько 
сертификатов и чьих в вашем 
устройстве
Чуть дороже 
10 
1. Пининг сертификатов (в данном случае своего CA) 
2. Использование стойких криптоалгоримов (никакого SSLv3, 
стараемся использовать ECDSA)
Экстремальный вариант 
11 
1. Свой Intermediate CA 
2. Несколько доверенных Intermediate CA с сертификатами на 
всех нужных платформах 
3. Возможность динамического изменения списка «запиненных» 
4. Черные и белые списки
Пони, пришло твое время
CA = Certificate Authority 
13 
• Для нас это тот, кто сделает нам сертификат 
• А ещё тот, кто может его внезапно отозвать 
• И тот, из-за кого может сломаться весь SSL
Цепочка сертификатов 
14 
Корневой 
сертификат 
Промежуточный 
сертификат 
Ваш сертификат 
Устройство 
Сервер
Требования к CA 
15 
1. Корневой сертификат на всех нужных устройствах 
2. Короткая цепочка сертификатов 
3. Современная криптография ECDSA 
4. Возможность купить EV сертификат
«Чужие» проблемы
Сервисы третьей стороны 
17 
• Если они уже работают по SSL – всё нормально 
• Если нет, то что делать?
Решение 
18 
• Всегда есть альтернатива 
• Существуют возможности для тонкой настройки 
• Пишем сами?
Полезные ссылки iOS 
19 
• Начать можно отсюда: https://clck.ru/9NAav 
• Теория и практика: https://clck.ru/9NAbB 
• Список корневых сертификатов: https://clck.ru/9NAYz 
• Пининг сертификатов: https://clck.ru/9NAbV
Полезные ссылки Android 
20 
• Как готовить SSL: https://clck.ru/9NAXy 
• Пининг сертификатов: https://clck.ru/9NAY4 
• Как извлечь список корневых сертификатов: 
http://bit.ly/11P4NJa
Вопросы?
Контакты 
Юрий Леонычев 
yleonychev@yandex-team.ru 
tracer0tong

More Related Content

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

  • 1. Тропинка через минное поле Юрий Леонычев Я.Субботник, Нижний Новгород, 13.12
  • 3. Простая картина мира 3 Приложение Сервис Канал связи
  • 4. Ближе к реальности Операционная система 4 Приложение Мой сервис Логи и крэшдампы Чужой Метрика Карты WebView Хранилище сертификатов Библиотека для SSL/TLS сервис Непонятное облако Чужой сервис Мой сайт CA http://lurkmore.to/Файл:Spherical_Derpy.png
  • 5. Перечислим и задумаемся 5 1. Наше приложение 2. Наш сервис 3. Наш сайт 4. Сторонние сервисы и облака 5. Операционная система устройства 6. Летающий пони
  • 7. Первые шаги 7 1. Только шифрование – только хардкор 2. (протокол) => (протокол)S 3. Никакой самодельной криптографии
  • 8. Типичная ошибка • Нет проверки сертификатов NSMutableURLRequest *request = [self requestWithMethod:@"GET" p ath:requestURL parameters:nil]; AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation al loc] initWithRequest:request]; operation.allowsInvalidSSLCertificate = YES;
  • 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 Домашнее задание – проверить, сколько сертификатов и чьих в вашем устройстве
  • 10. Чуть дороже 10 1. Пининг сертификатов (в данном случае своего CA) 2. Использование стойких криптоалгоримов (никакого SSLv3, стараемся использовать ECDSA)
  • 11. Экстремальный вариант 11 1. Свой Intermediate CA 2. Несколько доверенных Intermediate CA с сертификатами на всех нужных платформах 3. Возможность динамического изменения списка «запиненных» 4. Черные и белые списки
  • 13. CA = Certificate Authority 13 • Для нас это тот, кто сделает нам сертификат • А ещё тот, кто может его внезапно отозвать • И тот, из-за кого может сломаться весь SSL
  • 14. Цепочка сертификатов 14 Корневой сертификат Промежуточный сертификат Ваш сертификат Устройство Сервер
  • 15. Требования к CA 15 1. Корневой сертификат на всех нужных устройствах 2. Короткая цепочка сертификатов 3. Современная криптография ECDSA 4. Возможность купить EV сертификат
  • 17. Сервисы третьей стороны 17 • Если они уже работают по SSL – всё нормально • Если нет, то что делать?
  • 18. Решение 18 • Всегда есть альтернатива • Существуют возможности для тонкой настройки • Пишем сами?
  • 19. Полезные ссылки iOS 19 • Начать можно отсюда: https://clck.ru/9NAav • Теория и практика: https://clck.ru/9NAbB • Список корневых сертификатов: https://clck.ru/9NAYz • Пининг сертификатов: https://clck.ru/9NAbV
  • 20. Полезные ссылки Android 20 • Как готовить SSL: https://clck.ru/9NAXy • Пининг сертификатов: https://clck.ru/9NAY4 • Как извлечь список корневых сертификатов: http://bit.ly/11P4NJa
  • 22. Контакты Юрий Леонычев yleonychev@yandex-team.ru tracer0tong