key chain android что это
Всем привет! Сегодня мы расскажем об Андроид приложении KeyChain, оно же Брелок. Вы узнаете что это за программа Key Chain и для чего она нужна.
В последнее время многие пользователи Андроид устройств жалуются на произвольную установку приложения KeyChain (у некоторых возможно название Брелок). Программа загружается вирусом, который замаскирован под скрытый системный процесс.
Что это такое Key Chain на Андроиде?
Key Chain (Брелок) — это хранилище паролей от различных учетных записей (соц. сети, google аккаунты, игры и прочее). Благодаря этой программе вы сможете управлять своими паролями, изменять их и настраивать уровни доступа.
Основные возможности приложения:
Программа безусловно полезная, но бесплатная версия ограничена тремя паролями и пин-кодами. За использование большого числа, нужно покупать платную версию, которая также отключает рекламу. Вот наглядная видео-инструкция по работе с приложением Брелок.
Нужна ли Key Chain и как её удалить?
Если говорить о её надобности — то она будет полезна лишь в том случае, если вы действительно переживаете за сохранность своих личных данных не прочь применить двойную защиту. В противном случае, пользы от неё нет, тем более, что существует большое количество более популярных аналогов.
Тот факт, что она установилась на телефон сама, говорит о вирусном заражении. Сама программа не является вирусом, а её распространение подобным образом — лишь рекламная акция. Также минусом можно назвать постоянную работу в фоне, вследствие чего идет лишняя нагрузка на процессор.
Погодные приложения, оптимизаторы, дефолтный браузер — от этого всего лучше избавиться.
Facebook и другие социальные сети
Социальная сеть Facebook является сегодня самой популярной в мире, поэтому неудивительно, что соответствующее мобильное приложение установлено у огромного количества пользователей. Мобильный клиент позволяет вам получать уведомления о новых лайках, постить фотки своей еды и всегда оставаться на связи с друзьями. Однако взамен это приложение потребляет огромное количество системных ресурсов и значительно уменьшает срок работы мобильного гаджета от батареи. Согласно ежегодному отчёту App Report 2015 AVG Android App Report, именно мобильный клиент Facebook занимает верхние строчки в хит-параде самых прожорливых программ на платформе Android.
Альтернатива. Используйте мобильную версию Facebook в любом современном браузере. Функциональность отличается ненамного, зато отсутствуют раздражающие уведомления и стремительно тающая батарея.
The Weather Channel и другие погодные приложения
The Weather Channel — отличный пример того, как на самой простой функции — отображении прогноза погоды — разработчики умудряются выстроить целый мегакомбайн. Здесь вы увидите и анимированные обои, и метеорологические карты, и букет интерактивных виджетов, и бог знает что ещё. Всё это хозяйство сидит в оперативной памяти устройства, каждые пять минут стучится в интернет и, разумеется, самым бессовестным образом съедает заряд вашей батареи.
Альтернатива. Выгляните в окошко — вы получите гораздо более надёжную информацию, чем то, что показывает виджет рабочего стола. Если необходим прогноз, то Google предоставит вам самое надёжное предсказание на неделю вперёд.
AntiVirus FREE и другие антивирусные программы
Дискуссия о том, нужны ли антивирусные программы на устройствах под управлением Android, иногда бывает довольно горячей. Я придерживаюсь мнения, что если вы не получаете root-права на устройстве и не устанавливаете взломанные программы из сторонних сомнительных источников, то антивирус вам не нужен. Компания Google бдительно следит за содержимым своего магазина и моментально удаляет из него все потенциально опасные элементы, поэтому всегда активный мониторинг антивируса будет только зря тормозить ваш смартфон или планшет.
Альтернатива. Если возникли всё-таки сомнения в здоровье гаджета, то установите антивирус, просканируйте, а затем удалите его.
Clean Master и другие оптимизаторы системы
Вера в чудеса является самой главной движущей силой для распространения разных «очистителей» и «оптимизаторов». Мол, сотни лучших программистов Google не смогли довести свою систему до ума, а вот этот изобретатель-одиночка взял и сделал! Спешим вас расстроить: большинство подобных приложений либо вообще ничего не делают, либо наносят только вред. Очистить кэш, удалить остатки старых программ можно и встроенными системными инструментами. Очистка же памяти на самом деле только замедляет запуск программ и работу Android вместо обещанного создателями утилит ускорения системы.
Альтернатива. Используйте имеющиеся в Android инструменты для очистки кэша приложений. Забудьте об оптимизации памяти.
Дефолтный браузер
Некоторые производители и разработчики сторонних прошивок снабжают свои творения специальными версиями браузера. Как правило, в них намертво вшиты ссылки на сайты рекламодателей и другой ненужный вам контент. Кроме этого, никто не может поручиться, что такой браузер не сливает вашу информацию налево. Лучше никогда не использовать подобную программу и вообще, если это возможно, удалить её из системы.
Альтернатива. Для Android существуют десятки хороших браузеров, но самым надёжным и быстрым является, несомненно, Google Chrome. Он функционален, обладает поддержкой самых современных веб-технологий, умеет экономить мобильный трафик и обладает простым и понятным интерфейсом.
А какие приложения вы считаете самыми вредными на платформе Android?
В современных версиях Andro >
К привычным брелкам приложение отношения не имеет. Не имеет отношения и к вирусам, поскольку это системное приложение: на самом деле это приложение предоставляет доступ к закрытым ключам и соответствующим цепочкам сертификатов в хранилище учетных данных. Короче говоря, это приложение лучше не трогать, даже если вы хотите его заморозить или удалить. Кстати, приложение «Брелок» не удаляется, так как является системным, а кроме того, необходимо для работы системы. В любом случае не рекомендуем его трогать.
Чтобы найти приложение, зайдите в настройки.
Далее — в раздел с приложениями.
Нажмите на три точки в правом верхнем углу, выберите «Показать системные процессы».
key chain android что это
Всем привет! Сегодня мы расскажем об Андроид приложении KeyChain, оно же Брелок. Вы узнаете что это за программа Key Chain и для чего она нужна.
В последнее время многие пользователи Андроид устройств жалуются на произвольную установку приложения KeyChain (у некоторых возможно название Брелок). Программа загружается вирусом, который замаскирован под скрытый системный процесс.
Что это такое Key Chain на Андроиде?
Key Chain (Брелок) — это хранилище паролей от различных учетных записей (соц. сети, google аккаунты, игры и прочее). Благодаря этой программе вы сможете управлять своими паролями, изменять их и настраивать уровни доступа.
Основные возможности приложения:
Программа безусловно полезная, но бесплатная версия ограничена тремя паролями и пин-кодами. За использование большого числа, нужно покупать платную версию, которая также отключает рекламу. Вот наглядная видео-инструкция по работе с приложением Брелок.
Нужна ли Key Chain и как её удалить?
Если говорить о её надобности — то она будет полезна лишь в том случае, если вы действительно переживаете за сохранность своих личных данных не прочь применить двойную защиту. В противном случае, пользы от неё нет, тем более, что существует большое количество более популярных аналогов.
Тот факт, что она установилась на телефон сама, говорит о вирусном заражении. Сама программа не является вирусом, а её распространение подобным образом — лишь рекламная акция. Также минусом можно назвать постоянную работу в фоне, вследствие чего идет лишняя нагрузка на процессор.
Погодные приложения, оптимизаторы, дефолтный браузер — от этого всего лучше избавиться.
Facebook и другие социальные сети
Социальная сеть Facebook является сегодня самой популярной в мире, поэтому неудивительно, что соответствующее мобильное приложение установлено у огромного количества пользователей. Мобильный клиент позволяет вам получать уведомления о новых лайках, постить фотки своей еды и всегда оставаться на связи с друзьями. Однако взамен это приложение потребляет огромное количество системных ресурсов и значительно уменьшает срок работы мобильного гаджета от батареи. Согласно ежегодному отчёту App Report 2015 AVG Android App Report, именно мобильный клиент Facebook занимает верхние строчки в хит-параде самых прожорливых программ на платформе Android.
Альтернатива. Используйте мобильную версию Facebook в любом современном браузере. Функциональность отличается ненамного, зато отсутствуют раздражающие уведомления и стремительно тающая батарея.
The Weather Channel и другие погодные приложения
The Weather Channel — отличный пример того, как на самой простой функции — отображении прогноза погоды — разработчики умудряются выстроить целый мегакомбайн. Здесь вы увидите и анимированные обои, и метеорологические карты, и букет интерактивных виджетов, и бог знает что ещё. Всё это хозяйство сидит в оперативной памяти устройства, каждые пять минут стучится в интернет и, разумеется, самым бессовестным образом съедает заряд вашей батареи.
Альтернатива. Выгляните в окошко — вы получите гораздо более надёжную информацию, чем то, что показывает виджет рабочего стола. Если необходим прогноз, то Google предоставит вам самое надёжное предсказание на неделю вперёд.
AntiVirus FREE и другие антивирусные программы
Дискуссия о том, нужны ли антивирусные программы на устройствах под управлением Android, иногда бывает довольно горячей. Я придерживаюсь мнения, что если вы не получаете root-права на устройстве и не устанавливаете взломанные программы из сторонних сомнительных источников, то антивирус вам не нужен. Компания Google бдительно следит за содержимым своего магазина и моментально удаляет из него все потенциально опасные элементы, поэтому всегда активный мониторинг антивируса будет только зря тормозить ваш смартфон или планшет.
Альтернатива. Если возникли всё-таки сомнения в здоровье гаджета, то установите антивирус, просканируйте, а затем удалите его.
Clean Master и другие оптимизаторы системы
Вера в чудеса является самой главной движущей силой для распространения разных «очистителей» и «оптимизаторов». Мол, сотни лучших программистов Google не смогли довести свою систему до ума, а вот этот изобретатель-одиночка взял и сделал! Спешим вас расстроить: большинство подобных приложений либо вообще ничего не делают, либо наносят только вред. Очистить кэш, удалить остатки старых программ можно и встроенными системными инструментами. Очистка же памяти на самом деле только замедляет запуск программ и работу Android вместо обещанного создателями утилит ускорения системы.
Альтернатива. Используйте имеющиеся в Android инструменты для очистки кэша приложений. Забудьте об оптимизации памяти.
Дефолтный браузер
Некоторые производители и разработчики сторонних прошивок снабжают свои творения специальными версиями браузера. Как правило, в них намертво вшиты ссылки на сайты рекламодателей и другой ненужный вам контент. Кроме этого, никто не может поручиться, что такой браузер не сливает вашу информацию налево. Лучше никогда не использовать подобную программу и вообще, если это возможно, удалить её из системы.
Альтернатива. Для Android существуют десятки хороших браузеров, но самым надёжным и быстрым является, несомненно, Google Chrome. Он функционален, обладает поддержкой самых современных веб-технологий, умеет экономить мобильный трафик и обладает простым и понятным интерфейсом.
А какие приложения вы считаете самыми вредными на платформе Android?
В современных версиях Andro >
К привычным брелкам приложение отношения не имеет. Не имеет отношения и к вирусам, поскольку это системное приложение: на самом деле это приложение предоставляет доступ к закрытым ключам и соответствующим цепочкам сертификатов в хранилище учетных данных. Короче говоря, это приложение лучше не трогать, даже если вы хотите его заморозить или удалить. Кстати, приложение «Брелок» не удаляется, так как является системным, а кроме того, необходимо для работы системы. В любом случае не рекомендуем его трогать.
Чтобы найти приложение, зайдите в настройки.
Далее — в раздел с приложениями.
Нажмите на три точки в правом верхнем углу, выберите «Показать системные процессы».
Dadaviz
Key Chain на Android — что это такое?
Всем привет! Сегодня мы расскажем об Андроид приложении KeyChain, оно же Брелок. Вы узнаете что это за программа Key Chain и для чего она нужна.
В последнее время многие пользователи Андроид устройств жалуются на произвольную установку приложения KeyChain (у некоторых возможно название Брелок). Программа загружается вирусом, который замаскирован под скрытый системный процесс.
Что это такое Key Chain на Андроиде?
Key Chain (Брелок) — это хранилище паролей от различных учетных записей (соц. сети, google аккаунты, игры и прочее). Благодаря этой программе вы сможете управлять своими паролями, изменять их и настраивать уровни доступа.
Основные возможности приложения:
Программа безусловно полезная, но бесплатная версия ограничена тремя паролями и пин-кодами. За использование большого числа, нужно покупать платную версию, которая также отключает рекламу. Вот наглядная видео-инструкция по работе с приложением Брелок.
Нужна ли Key Chain и как её удалить?
Если говорить о её надобности — то она будет полезна лишь в том случае, если вы действительно переживаете за сохранность своих личных данных не прочь применить двойную защиту. В противном случае, пользы от неё нет, тем более, что существует большое количество более популярных аналогов.
Тот факт, что она установилась на телефон сама, говорит о вирусном заражении. Сама программа не является вирусом, а её распространение подобным образом — лишь рекламная акция. Также минусом можно назвать постоянную работу в фоне, вследствие чего идет лишняя нагрузка на процессор.
Ключи, учетные данные и хранилище на Android
Russian (Pусский) translation by Ellen Nelson (you can also view the original English article)
В предыдущем материале о безопасности пользовательских данных Android мы рассмотрели шифрование данных с помощью предоставленного пользователем кода. В этом уроке перейдём к хранению учётных данных и ключей. Я начну с ознакомления с учётными данными и закончу примером защиты данных с помощью хранилища ключей KeyStore.
Часто, при работе со сторонней службой, требуется какая-то форма авторизации. Она может быть настолько простой, как /login на стороне пользователя, которая принимает имя пользователя и пароль.
Сначала может показаться, что простое решение — это собрать UI, который будет предлагать пользователю войти в систему, а затем записать и сохранить их данные для входа. Однако, это не лучший метод, так как нашему приложению не нужно знать данные для входа в сторонний аккаунт. Вместо этого, мы можем использовать Диспетчер учётных записей (Account Manager), который уполномочен отрабатывать эту конфиденциальную информацию для нас.
Диспетчер учётных записей
Диспетчер учётных записей (Account Manager) — это централизованный помощник для работы с учётными данными пользователя, поэтому вашему приложению, иметь дело с паролями напрямую не нужно. Часто он предоставляет токен вместо реального имени пользователя и пароля, который можно использовать для выполнения аутентифицированных запросов к службе. Например, при запросе токена OAuth2.
Иногда, вся необходимая информация уже хранится на устройстве, а иногда Account Manager придётся обращаться к серверу за новым токеном. Вы, наверное, видели раздел Учётные записи в Настройках вашего устройства для разных приложений. И вот как, мы можем получить список доступных учётных записей:
Так как, у каждой службы будет свой способ проверки подлинности и хранения личных учётных данных, Диспетчер учётных записей предоставляет модули проверки подлинности для реализации сторонней службой. Хотя Android может выполнять вход на многие популярные сервисы, для вашего приложения, вы можете написать свой собственный обработчик авторизации учётной записи и хранилища учётных данных. Это позволит убедиться, что учётные данные зашифрованы. Имейте также в виду, что учётные данные в Диспетчере учётных записей, которые используются другими службами, могут храниться в виде открытого текста, что делает их видимыми для любого, кто имеет рут-права на своё устройство.
Временами вам нужно будет иметь дело с ключами или сертификатами для отдельного лица или сущности, вместо просто данных для входа. Например, когда стороннее приложение отправляет вам файл сертификата, который вам нужно сохранить. Самый распространённый сценарий — это когда приложению нужно авторизироваться на сервере частной организации.
В следующем уроке, мы рассмотрим использование сертификатов для аутентификации и безопасной связи, ну а пока, я всё же хочу рассмотреть, как хранить эти элементы. Изначально Keychain API был создан для очень конкретного использования — установка закрытого ключа или пары сертификатов из файла PKCS#12.
Keychain — связка ключей
Представленный в Android 4.0 (API Level 14), Keychain API управлял ключами. В частности, это работает с объектами PrivateKey и X509Certificate и обеспечивает более безопасный контейнер, чем использование хранилища данных вашего приложения. Связано это с тем, что разрешения закрытых ключей открывают доступ к ключам только вашему приложению и только после авторизации пользователя. Это означает, что, прежде чем, вы сможете использовать хранилище учётных данных, на устройстве должен быть настроен экран блокировки. Кроме того, объекты в связке ключей можно объединить с защитой от оборудования, если доступно.
Код установки сертификата выглядит следующим образом:
Пользователю будет предложено ввести пароль для доступа к закрытому ключу и указать имя сертификата. Для получения ключа, в следующем коде представлен пользовательский интерфейс, который позволяет пользователю выбирать ключ из списка установленных ключей.
Вооружившись этими знаниями, теперь давайте посмотрим, как мы можем использовать хранилище учётных данных для сохранения конфиденциальных данных.
KeyStore
В предыдущем уроке, мы рассмотрели защиту данных с помощью предоставляемого пользователем пароля. Такой вариант хорош, но требования к приложениям часто уводят от того, чтобы пользователи каждый раз входили в систему и запоминали дополнительный пароль.
Вот где можно использовать KeyStore API. Начиная с API 1, KeyStore используется системой для хранения учётных данных WiFi и VPN. Начиная с 4.3 (API 18), вы можете работать с асимметричными ключами конкретного приложения, а в Android M (API 23) можно хранить симметричный ключ AES. Таким образом, хотя API не позволяет хранить конфиденциальные строки напрямую, эти ключи можно сохранить, а затем использовать для шифрования строк.
Преимущество хранения ключа в хранилище ключей заключается в том, что он позволяет работать с ключами без раскрытия секретного содержимого этого ключа; данным ключа не место в приложении. Помните, что ключи защищаются разрешениями, так что только ваше приложение может получить к ним доступ, и они могут быть дополнительно защищены аппаратным обеспечением, если устройство поддерживает это. Создаётся контейнер, который усложняет извлечение ключей с устройства.
Генерирование нового случайного ключа
Поскольку хранение незащищённого ключа вместе с зашифрованными данными, это как прятать ключ от дома под половик, эти параметры пытаются защитить ключ в состоянии покоя в случае взлома устройства. Примером может служить автономный дамп данных устройства. Если пароль устройства не известен, эти данные, по сути, бесполезны.
Шифрование данных
Расшифровка в массив байтов
Смотрим на примере
Теперь мы можем посмотреть на пример!
Использование асимметричных ключей RSA для старых устройств
Это хорошее решение для хранения данных в версии M и выше, но что, если ваше приложение поддерживает более ранние версии? Хотя симметричные ключи AES не поддерживаются в M, поддерживаются асимметричные ключи RSA. Это означает, что для достижения того же результата, мы можем использовать RSA ключи и шифрование.
Чтобы получить ключ, сделайте вот так:
Довольно много кода! Для простоты примеров, я пропустил обработку исключений. Но помните, что для итогового кода не рекомендуется просто перехватывать все случаи Throwable в одном операторе catch.
Заключение
На этом урок по работе с учётными данными и ключами завершён. Большая часть неразберихи вокруг ключей и хранилища связана с эволюцией ОС Android, но вы можете выбрать, какое решение использовать, учитывая уровень API, поддерживаемый вашим приложением.
Теперь, когда мы рассмотрели лучшие примеры защиты данных в состоянии покоя, следующий урок будет сосредоточен на защите данных при передаче.
Основы безопасности: Keychain и Хеширование
Один из наиболее важных аспектов разработки программного обеспечения, который также считается одним из самых загадочных и страшных (поэтому избегается, как чума) — это безопасность приложений. Пользователи ожидают, что их приложения будут корректно работать, хранить их личную информацию и защищать эту информацию от потенциальных угроз.
В этой статье вы погрузитесь в основы безопасности в iOS. Вы поработаете с некоторыми базовыми криптографическими методами хеширования для надежного хранения полученных данных в Keychain — сохраняя и защищая пользовательские данные в приложении.
Apple имеет несколько API, которые помогут защитить ваши приложения, и вы изучите их при работе с Keychain. Кроме того, вы будете использовать CryptoSwift — хорошо изучите и просмотрите библиотеку с открытым исходным кодом, которая реализует криптографические алгоритмы.
Начало
Используйте эту ссылку, чтобы загрузить проект для работы.
Мы будем работать над приложением, которое позволяет пользователям регистрироваться и видеть фотографии своих друзей. Большая часть приложения уже реализована, ваша задача — защитить это приложение.
Как только вы распакуете архив, обязательно откройте файл Friendvatars.xcworkspace, чтобы подключить зависимости исользуйте CocoaPod. Скомпилируйте и запустите приложение. Вы увидите, что оно стартует с экрана авторизации в систему:
В настоящее время при нажатии на кнопку Sign in ничего не происходит. Это связано с тем, что в приложении не реализован способ сохранения учетных данных пользователя. Это то, что вам нужно будет добавить в первую очередь.
Почему важна безопасность
Прежде чем погрузиться в работу с кодом, вы должны понять, зачем необходима безопасность в вашем приложении. Безопасность вашего приложения особенно важна, если вы храните личные данные пользователя, такие как электронные письма, пароли или данные банковского счета.
Почему Apple так серьезно относится к безопасности? Фотографий, которые вы фотографируете, до количества шагов, которые были сделанные в течение дня, ваш iPhone хранит много персональных данных. Защита этих данных очень важна.
Кто же является злоумышленниками в экосистеме iOS и чего они хотят? Злоумышленник может быть преступником, бизнес-конкурентом, даже другом или родственником. Не все злоумышленники хотят одного и того же. Некоторые могут захотеть нанести ущерб или испортить информацию, в то время как другие могут захотеть узнать, какие подарки они получат в свои дни рождения.
Ваша задача — убедиться, что данные, хранящиеся в вашем приложении, защищены от возможных угроз. К счастью, Apple разработала много мощных API, которые упрощают эту задачу.
Keychain
Одним из наиболее важных элементов безопасности для iOS разработчиков является Keychain, специализированная база данных для хранения метаданных и конфиденциальной информации. Использование Keychain — лучшая практика для хранения небольших фрагментов данных, которые имеют решающее значение для вашего приложения, таких как секреты и пароли.
Зачем использовать Keychain для более простых решений? Достаточно ли хранить пароль пользователя в base-64 в UserDefaults? Точно нет! Для злоумышленника вполне тривиально восстановить пароль, сохраненный таким образом. Безопасность сложна, и попытка создания вашего собственного решения не очень хорошая идея. Даже если ваше приложение не для финансового учреждения, хранение личных данных пользователя не следует воспринимать легкомысленно.
Прямое взаимодействие с Keychain является довольно не простым, особенно в Swift. Вы должны использовать Security фреймворки, которые в основном написана на языке C.
К счастью, вы можете избежать использования этих низкоуровневых API, заимствуя у Apple обертку для Swift из примера GenericKeychain. KeychainPasswordItem обеспечивает простой в использовании интерфейс для работы с Keychain и уже добавлен в стартовый проект.
Время погрузиться в код!
Использование Keychain
Откройте AuthViewController.swift. Этот контроллер отвечает за форму для авторизации, которую вы видели вначале. Если вы перейдете к разделу Actions, вы заметите, что метод signInButtonPressed ничего не делает. Пришло время это исправить.
Добавьте следующий код в раздел Helpers в самом низу:
Вот как это происходит:
Теперь добавьте следующее в метод signInButtonPressed:
Этот код вызывает метод signIn, когда выполняется signInButtonPressed.
Найдите textFieldShouldReturn и замените TextFieldTag.password.rawValue в break под case на следующее:
Теперь метод signIn() будет вызван, когда пользователь нажмет Return на клавиатуре, после того как он ввел текст в поле пароля, в то время как поле пароля имеет фокус и уже содержит текст.
Метод signIn() еще не реализован до конца. Нам все еще нужно сохранить объекты user и password. Все это будет реализовано во вспомогательном классе.
Откройте AuthController.swift, который является статическим классом — он будет содержать бизнес логику, связанную с аутентификацией.
Для начала, в самом верху файла над isSignedIn следует добавить следующее:
Этот код определяет название сервиса, который будет использоваться для идентификации данных приложения в Keychain. Чтобы использовать эту константу, создайте метод signIn в конце класса:
Этот метод надежно сохранит информацию для авторизаций пользователя в Keychain. Он создает KeychainPasswordItem с названием сервиса, который вы определили вместе с уникальным идентификатором (account).
Для этого приложения, электронная почта пользователя используется в качестве идентификатора для Keychain, но другие данные также могут служить идентификатором или уникальным именем пользователя. Наконец, в Settings.currentUser присваивается значение user — все это сохраняется в UserDefaults.
Этот метод не следует считать завершенным! Хранение пароля пользователя напрямую не является лучшей практикой. Например, если злоумышленник взломал Keychain, он сможет получить пароли каждого пользователя в виде обычного текста. Лучшим решением является хранение хэша пароля, построенного на основе идентификации пользователя.
В верхней части AuthController.swift сразу после import Foundation добавьте следующее
CryptoSwift — это одна из самых популярных коллекций многих стандартных криптографических алгоритмов, написанных на Swift. Криптография сложна, и ее необходимо делать правильно, чтобы она действительно приносила пользу. Использование популярной библиотеки для обеспечения безопасности означает то, что вы не несете ответственности за реализацию стандартизированных функций хэширования. Наилучшие способы криптографии открыты для всеобщего обозрения.
Примечание: Фреймворк CommonCrypto от Apple предоставляет множество полезных функций хеширования, но в Swift работать с ними вовсе непросто. Вот почему для этой статьи мы выбрали библиотеку CryptoSwift.
Затем добавьте следующий код над signIn:
Этот метод принимает адрес электронной почты и пароль, и возвращает хешированную строку. Константа salt это уникальная строка, которая делает из обычного пароля редкий .sha256() — это метод c фреймворка CryptoSwift, который хеширует введенную строку по алгоритму SHA-2.
В предыдущем примере злоумышленник, который взломал Keychain, найдет этот хеш. Злоумышленник может создать таблицу часто используемых паролей и их хэшей для сравнения с этим хэшем. Если вы хэшировали только введенные данные пользователя без salt, и пароль существовал в хэш-таблице злоумышленников, пароль может быть взломан.
Использование salt увеличивает сложность взлома. Кроме того, вы комбинируете электронную почту и пароль пользователя с salt для создания хэша, который не может быть легко взломан.
Примечание: Для аутентификации пользователя, мобильное приложение и сервер будут использовать одну и ту же salt. Это позволяет им строить хэши однообразным способом и сравнивать два хэша для проверки личности.
Вернитесь назад к методу signIn(_:password:), замените строку кода, которая вызывает метод savePassword на следующее:
signIn теперь хранит сильный хэш, а не “сырой” пароль. Теперь пришло время добавить его в контроллер представления.
Вернитесь к AuthViewController.swift и добавьте в конец метода signIn() этот код:
Несмотря на то, что этот код сохраняет пользователя и сохраняет хешированный пароль, для приложения потребуется кое-что еще для того, чтобы выполнить вход. AppController.swift должен получать уведомления при изменении аутентификации.
Возможно, вы заметили, что AuthController.swift имеет статическую переменную с именем isSignedIn. В настоящее время она всегда возвращает false, даже если пользователь зарегистрирован.
В AuthController.swift измените isSignedIn:
Вот что тут происходит:
Добавьте следующее в конец AuthController.swift:
Хорошей практикой является использование идентификатора домена при составлении пользовательских уведомлений, которое обычно берется из bundle identifier приложения. Использование уникального идентификатора может помочь при отладке приложения, так что все, что связано с вашим уведомлением, выделяется из других фреймворков, упомянутых в ваших логах.
Чтобы использовать данное имя пользовательского уведомления, добавьте следующее к нижней части метода signIn (_: password 🙂:
Данный код отправит уведомление, которое может быть обнаружено другими частями приложения.
Внутри AppController.swift добавьте метод init над show(in:):
Данный код зарегистрирует AppController в качестве наблюдателя вашего регистрационного имени. При срабатывании он вызывает callAuthState.
Скомпилируйте и запустите приложение. После авторизаций в систему, используя любую комбинацию электронной почты и пароля, вы увидите список друзей:
Вы заметите, что нет никаких аватаров, а просто имена друзей. На это не очень приятно смотреть. Вероятно, вы должны выйти из этого незавершенного приложения и забыть о нем. О да, даже кнопка выхода не работает. Время поставить 1-звездочку в качестве оценки и действительно отдать это приложение его разработчику обратно!
Логирование работает отлично, но нет способа выйти из приложения. Это на самом деле довольно легко достичь, поскольку существует уведомление, которое будет сигнализировать об изменении состояния аутентификации.
Вернитесь назад к AuthViewController.swift и добавьте следующее под signIn(_:password:):
Это довольно просто:
Ваш новый метод вызывается, чтобы очистить данные пользователя вошедшего в систему, когда нажата кнопка «Выход».
Работа с ошибками в вашем приложении это хорошая идея, но в виду данного урока проигнорируйте любые ошибки.
Скомпилируйте и запустите приложение, затем нажмите кнопку «Выйти».
Теперь у вас есть полный работающий пример аутентификации в приложении!
Хеширование
Вы отлично справились с созданием аутентификации! Однако веселье еще не закончилось. Теперь вы преобразуете это пустое пространство перед именами в списке друзей.
В FriendsViewController.swift отображается список объектов модели User. Вы также хотите отображать изображения аватаров для каждого пользователя в представлении. Поскольку есть только два атрибута для User, имя и адрес электронной почты, как вы собираетесь показывать изображение?
Оказывается, есть служба, которая берет адрес электронной почты и связывает ее с изображением аватара: Gravatar! Если вы еще не слышали о Gravatar, она обычно используется в блогах и форумах, чтобы глобально связать адрес электронной почты с аватаром. Она упрощает работу, поэтому пользователям не нужно загружать новый аватар на каждый форум или сайт, к которому они присоединяются.
У каждого из этих пользователей уже есть аватар, связанный с их электронной почтой. Так что единственное, что вам нужно сделать, это выполнить запрос к Gravatar и получить изображения по запрошенным пользователям. Для этого вы создадите MD5 хеш их электронной почты, чтобы создать URL запросы.
Если вы посмотрите на документацию на сайте Gravatar, вы увидите, что для создания запроса нужен хешированный адрес электронной почты. Это будет кусок пирога, так как вы можете использовать CryptoSwift. Добавьте вместо комментариев Gravatar в tableView (_: cellForRowAt 🙂 следующее:
Примечание: Если ваша электронная почта возвращает дефолтное изображение (белый цвет на синем G), перейдите на сайт Gravatar и загрузите свой собственный аватар и присоединитесь к своим друзьям!
Если вы заинтересованы в других способах защиты своих приложений, изучите использование биометрических датчиков в последних продуктах Apple в этой статье.
Вы также можете узнать больше об инфраструктуре безопасности Apple, если хотите действительно заглянуть в фреймворк.
В конце, обязательно изучите дополнительные алгоритмы безопасности, предоставляемые CryptoSwift.
Надеюсь, Вам понравилась эта статья! Если у вас есть какие-либо вопросы или комментарии, присоединяйтесь обсуждению!

















