“If you think technology can solve your security problems,

then you don't understand the problems

and you don't understand the technology.”

Bruce Schneier

 

«Если вы думаете, что технологии могут решить

ваши проблемы безопасности,

то вы не понимаете ни проблем, ни технологий».

Одним из главных фокусов безопасности данных последнего десятилетия является обеспечение защищённого хранения данных в телефоне. Мы используем телефоны и планшеты для хранения личной информации, финансовых данных, рабочих документов и многого другого. С ростом объема данных, хранящихся на наших устройствах, множится риск их утраты или попадания в чужие руки.

Представьте, что ваш телефон — это личный сейф, в котором хранятся самые ценные и конфиденциальные вещи. Что если кто-то получит доступ к этому сейфу? Важно, чтобы доступ к вашим данным был только у вас. Именно здесь на помощь приходит шифрование.

Шифрование данных на мобильном устройстве — это процесс превращения вашей информации в код, который невозможно прочитать без специального ключа. Оно превращает ваши фотографии, сообщения, контакты и другие данные в нечитаемую последовательность символов, которую невозможно быстро открыть и понять злоумышленникам. Даже если ваше устройство будет украдено или потеряно, шифрование гарантирует, что ваши данные на длительное время останутся защищёнными.

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

Процесс шифрования данных

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

Наша комната — это мобильное устройство, картотека — это база данных, ящики — это таблицы, а карточки — это записи. Что будет, если в наш офис придет злоумышленник и захочет прочитать записи в картотеке? Правильно, он их прочитает. Да, мы можем повесить на двери самые надежные замки, а окна вообще замуровать кирпичом. Но вор может пролезть в вентиляцию, кувалдой разбить дверь, и результат будет один: наши данные будут скомпрометированы. Что делать в этой ситуации?

Самым логичным способом защитить наши данные будет сделать так, чтобы записи в картотеке нельзя было прочитать. Для этого нужно будет написать их на языке, непонятном для злоумышленника. На помощь приходят алгоритмы шифрования.

Одним из самых первых и, наверное, самых известных алгоритмов является шифр Цезаря. Алгоритм крайне прост: нужно сдвинуть буквы в слове на определенное количество символов левее или правее от рассматриваемой буквы. Если сдвиг выходит за пределы алфавита, алфавит "закручивается" обратно. Например, если мы достигли конца алфавита, то продолжаем с начала.

Простой пример, зашифруем слово “привет”, ключ будет 4

П -> У (П + 4 позиции)

Р -> Ф (Р + 4 позиции)

И -> М (И + 4 позиции)

В -> Ё (В + 4 позиции)

Е -> И (Е + 4 позиции)

Т -> Ц (Т + 4 позиции)

Зашифрованное слово будет УФМЁИЦ. Если мы сдвинем буквы обратно на 4 позиции влево, получим обратно ПРИВЕТ.

Поможет ли это защититься от нашего злоумышленника? И да и нет. Достав нашу запись, злоумышленник сначала будет в недоумении, но зная, что это шифр, попробует его расшифровать. Спустя короткое время, информация будет расшифрована, а мы снова остались без данных.

В отличии от военачальника Цезаря, мы находимся в 21 веке и можем использовать современные алгоритмы шифрования. Давайте рассмотрим основные группы алгоритмов:

Симметричные алгоритмы шифрования

Симметричные алгоритмы — это методы шифрования, в которых для шифрования и расшифрования данных используется один и тот же секретный ключ. Этот ключ должен быть известен как отправителю, так и получателю данных. Симметричные алгоритмы шифрования широко используются благодаря своей доступности и высокой скорости.

Преимущества и недостатки симметричных алгоритмов

Преимущества:

  • Скорость: Симметричные алгоритмы быстрее асимметричных, что делает их предпочтительными для шифрования больших объемов данных.

  • Доступность: Легче реализовать и использовать по сравнению с асимметричными алгоритмами.

Недостатки:

  • Управление ключами: Требуется безопасный способ обмена ключами между сторонами. Если ключ скомпрометирован, злоумышленник может получить доступ ко всем зашифрованным данным.

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

Примеры симметричных алгоритмов шифрования

AES (Advanced Encryption Standard)

  • Описание: AES — это стандарт симметричного блочного шифрования, принятый правительством США. Он использует блоки данных размером 128 бит и ключи длиной 128, 192 или 256 бит.

  • Применение: Широко используется в различных системах безопасности, включая VPN, дисковое шифрование, SSL/TLS для защиты веб‑трафика.

DES (Data Encryption Standard)

  • Описание: DES был одним из первых широко используемых симметричных шифров. Он использует 64-битные блоки данных и 56-битные ключи.

  • Недостатки: DES считается устаревшим и небезопасным из‑за небольшой длины ключа, которая делает его уязвимым для атак.

  • Применение: Несмотря на устаревание, DES послужил основой для разработки других шифров, таких как 3DES.

3DES (Triple DES)

  • Описание: 3DES улучшает безопасность DES, применяя алгоритм DES трижды с разными ключами, что увеличивает эффективную длину ключа до 168 бит.

  • Применение: Используется в финансовых системах и других областях, требующих высокой безопасности, но уступает AES по скорости и эффективности.

Blowfish

  • Описание: Blowfish — это симметричный блочный шифр, разработанный Брюсом Шнайером. Он использует блоки данных размером 64 бита и ключи длиной от 32 до 448 бит.

  • Преимущества: Быстр и эффективен, особенно на платформе с ограниченными ресурсами.

  • Применение: Используется в различных программах и системах шифрования.

RC4

  • Описание: RC4 — это потоковый шифр, известный своей простотой и высокой скоростью. Он использует ключ переменной длины для генерации псевдослучайного потока байтов, который затем используется для шифрования данных.

  • Недостатки: Выявленные уязвимости сделали его небезопасным для многих современных приложений.

  • Применение: Ранее широко использовался в протоколах SSL и WEP, но сейчас заменяется более безопасными методами.

Как мы можем применить этот алгоритм для защиты нашей картотеки? Мы применим шифр ко всем нашим данным, а дальше передадим ключ для расшифровки нашему сотруднику, который должен иметь его для доступа к картотеке. Но вот незадача, злоумышленник знал, что мы будем передавать ключ и ограбил нас по пути к сотруднику, применил ключ и расшифровал картотеку. Данные опять скомпрометированы. Что же делать, если есть риск потерять ключ? На помощь приходят асимметричные алгоритмы шифрования.

Асимметричные алгоритмы шифрования

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

Основные характеристики асимметричных алгоритмов шифрования:

  • Два ключа:

    • Открытый ключ: Используется для шифрования данных. Он может быть свободно распространен и доступен всем.

    • Закрытый ключ: Используется для расшифрования данных. Он должен оставаться секретным и известен только владельцу.

  • Обмен ключами:

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

  • Цифровые подписи:

    • Закрытый ключ может быть использован для создания цифровой подписи, которая проверяется с помощью открытого ключа. Это обеспечивает аутентификацию и целостность сообщений.

Как работают асимметричные алгоритмы

  • Шифрование:

    • Отправитель шифрует сообщение с использованием открытого ключа получателя. Получившееся зашифрованное сообщение может быть расшифровано только с использованием соответствующего закрытого ключа.

  • Расшифрование:

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

  • Цифровая подпись:

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

Примеры асимметричных алгоритмов

  • RSA (Rivest‑Shamir‑Adleman):

    • Один из самых широко используемых асимметричных алгоритмов.

    • Основывается на сложности факторизации больших целых чисел.

    • Используется для шифрования данных и цифровых подписей.

  • ECC (Elliptic Curve Cryptography):

    • Основан на математических свойствах эллиптических кривых.

    • Обеспечивает аналогичную безопасность RSA, но с меньшими ключами.

    • Эффективен для использования в мобильных и встроенных системах.

  • DSA (Digital Signature Algorithm):

    • Используется для создания цифровых подписей.

    • Основывается на сложности дискретного логарифма.

Преимущества и недостатки асимметричных алгоритмов

Преимущества:

  • Безопасный обмен ключами: Позволяют безопасно обмениваться ключами через незащищенные каналы.

  • Аутентификация: Обеспечивают проверку подлинности отправителя через цифровые подписи.

  • Целостность данных: Позволяют убедиться в том, что данные не были изменены.

Недостатки:

  • Скорость: Асимметричные алгоритмы значительно медленнее симметричных, особенно при работе с большими объемами данных.

  • Сложность: Реализация и управление асимметричными ключами сложнее, чем симметричными.

Теперь воспользуемся асимметричным шифрованием для нашей картотеки. Мы зашифровали все данные при помощи открытого ключа. Ключ может лежать на столе в офисе и злоумышленник, даже если найдет этот ключ не сможет расшифровать те символы, которые есть у нас в картотеке. Расшифровать данные может только сотрудник, придя в офис со своим ключом, он имеет его всегда при себе. Надежно? Да, но очень медленно. Поэтому, мы можем использовать гибридные алгоритмы шифрования. 

Для этого, мы зашифруем все данные симметричным ключом. Для начала, создадим этот ключ и запишем его. Далее, зашифруем наши данные им и положим его в сейф, ключ от которого есть только у сотрудника, которому мы хотим дать доступ. Сейф мы оставим в офисе. Когда сотрудник придет в офис, то сможет открыть сейф своим секретным ключом и достать тот самый симметричный ключ. Далее, сотрудник достанет ключ и расшифрует данные. Это быстрее и безопаснее, но лазейки все равно есть. Например, если кто‑то сумеет получить доступ к сейфу или перехватить симметричный ключ до того, как он будет зашифрован и сохранен. Кроме того, существует риск утечки закрытого ключа сотрудника, что также может поставить под угрозу безопасность данных.

Чтобы минимизировать эти риски, можно использовать дополнительные меры безопасн��сти, такие как:

  • Регулярное обновление ключей: Изменение симметричных и асимметричных ключей через определенные промежутки времени уменьшает риск их компрометации.

  • Двухфакторная аутентификация: Перед тем как сотрудник сможет получить доступ к сейфу, ему нужно будет пройти дополнительные проверки, что повысит уровень безопасности.

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

  • Использование безопасных сред: Обеспечение того, что шифрование и расшифровка происходят в надежных и контролируемых условиях, чтобы минимизировать возможность утечки данных.

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

Шифрование на Android с помощью библиотек Cipher и SQLCipher

Шифрование данных на устройствах Android — важный аспект безопасности, особенно для защиты конфиденциальной информации в приложениях. Android предоставляет различные инструменты для реализации шифрования, включая встроенную библиотеку Cipher и стороннюю библиотеку SQLCipher.

Библиотека Cipher

Cipher — это встроенный класс в Android, который предоставляет функциональность для шифрования и расшифровки данных с использованием различных алгоритмов. Эта библиотека поддерживает как симметричные, так и асимметричные алгоритмы шифрования.

Как работает Cipher:

Симметричное шифрование: Обычно используется алгоритм AES (Advanced Encryption Standard) для шифрования данных. Этот метод требует наличия одного ключа, который используется как для шифрования, так и для расшифровки данных.

// Пример использования AES для шифрования данных

SecretKey secretKey =...; // Генерация или получение секретного ключа

Cipher cipher = Cipher.getInstance(“AES/GCM/NoPadding”);

cipher.init(Cipher.ENCRYPT_MODE, secretKey);

byte[] encryptedData = cipher.doFinal(plainTextData);

Асимметричное шифрование: Используются алгоритмы, такие как RSA, где для шифрования используется открытый ключ, а для расшифровки — закрытый.


// Пример использования RSA для шифрования данных

PublicKey publicKey =...; // Получение открытого ключа

Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”);

cipher.init(Cipher.ENCRYPT_MODE, publicKey);

byte[] encryptedData = cipher.doFinal(plainTextData);

Применение:

  • Шифрование файлов: Приложения могут использовать Cipher для шифрования файлов на устройстве, чтобы защитить их от несанкционированного доступа.

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

2. Библиотека SQLCipher

SQLCipher — это сторонняя библиотека, которая предоставляет шифрование для баз данных SQLite. Эта библиотека шифрует всю базу данных, делая данные недоступными без соответствующего ключа.

Как работает SQLCipher:

Шифрование базы данных: SQLCipher использует алгоритм AES с 256-битным ключом для шифрования данных на уровне базы данных. Это обеспечивает высокую степень защиты всех записей, хранящихся в базе.

// Пример создания и открытия зашифрованной базы данных с использованием SQLCipher

SQLiteDatabaseHook hook = new SQLiteDatabaseHook() {

public void preKey(SQLiteDatabase database) {}

public void postKey(SQLiteDatabase database) {

database.rawExecSQL(«PRAGMA cipher_migrate;»); // Для миграции существующей базы данных

}

};

SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(databaseFile, “your‑encryption‑key”, null, hook);

  • Совместимость с SQLite: SQLCipher полностью совместим с SQLite, что позволяет разработчикам легко интегрировать шифрование в уже существующие приложения.

Применение:

  • Защита конфиденциальных данных: SQLCipher используется для защиты баз данных с чувствительными данными, такими как пользовательская информация, финансовые данные или история использования приложения.

  • Мобильные приложения: Особенно полезен в приложениях, где безопасность данных является приоритетом, например, в банковских приложениях, мессенджерах и медицинских приложениях.

Ключи для расшифровки на Android хранятся в Android Keystore. Что это такое? Android Keystore — это защищенное хранилище на устройстве Android, которое используется для безопасного хранения криптографических ключей и других конфиденциальных данных. Оно предоставляет разработчикам механизм для генерирования, хранения и использования криптографических ключей в приложениях, обеспечивая высокий уровень безопасности.

«Использование библиотек Cipher и SQLCipher на Android предоставляет мощные инструменты для защиты данных. И мы используем их в своем продукте «Форсайт. Мобильная платформа». Cipher обеспечивает шифрование на уровне отдельных данных или файлов, тогда как SQLCipher защищает целые базы данных. Объединение этих подходов позволяет создать приложения с высокой степенью безопасности, защищающие конфиденциальную информацию пользователей.

Кроме этого, в нашем продукте «Форсайт. Мобильная платформа» реализована возможность офлайн работы с данными. В оффлайн-режиме снижается риск утечки и компрометации данных, а также защищает устройство от хакерских атак извне, что исключает угрозы, связанные с удаленными атаками, такими как взломы, фишинг, и заражение вредоносными программами. Однако, существует угроза физического доступа, когда злоумышленник может украсть устройство или похитить данные при помощи внешних устройств и программ», — рассказывает об используемых инструментах для защиты данных  Дмитрий Туз, аналитик и автор многих строк этой статьи.

Шифрование по ГОСТ: есть ли перспективы?

ГОСТ (Государственный стандарт) — это национальный стандарт, разработанный в России и странах бывшего Советского Союза. В контексте криптографии, ГОСТ относится к различным стандартам шифрования и хэширования, обеспечивающим безопасность данных.

Основные стандарты шифрования по ГОСТ:

  • ГОСТ 28147-89:

    • Это симметричный блочный шифр, разработанный в СССР в 1989 году.

    • Работает с блоками данных размером 64 бита и ключами длиной 256 бит.

    • Основные операции включают перестановку и подстановку данных, что обеспечивает высокую криптографическую стойкость.

  • ГОСТ Р 34.10-2012 (ECGOST):

    • Стандарт для асимметричных алгоритмов на основе эллиптических кривых.

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

  • ГОСТ Р 34.11-2012:

    • Стандарт для хэширования данных.

    • Обеспечивает создание криптографических хэш-функций, используемых для проверки целостности и подлинности данных.

Применение ГОСТ в криптографии

Симметричное шифрование (ГОСТ 28147-89):

  • Как это работает:

    • Исходный текст разбивается на блоки по 64 бита.

    • Каждый блок шифруется с использованием ключа длиной 256 бит.

    • Используются операции подстановки (S-блоки) и перестановки (P-блоки) для обеспечения сложности шифра.

  • Применение:

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

    • Подходит для шифрования файлов, сообщений и других типов данных.

Асимметричное шифрование (ГОСТ Р 34.10-2012):

  • Как это работает:

    • Основывается на математических свойствах эллиптических кривых.

    • Позволяет создавать цифровые подписи и безопасно обмениваться ключами.

  • Применение:

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

    • Популярен в банковских системах и при защите конфиденциальной информации.

Хэширование (ГОСТ Р 34.11-2012):

  • Как это работает:

    • Данные любого размера преобразуются в фиксированную длину хэш.

    • Хэш-функция обеспечивает уникальный вывод для каждого набора входных данных, что позволяет проверить целостность данных.

  • Применение:

    • Проверка целостности файлов и сообщений.

    • Создание цифровых подписей и аутентификация данных.

Преимущества использования ГОСТ

  • Высокая безопасность: Стандарты ГОСТ обеспечивают высокий уровень криптографической стойкости, что делает их надежными для защиты конфиденциальных данных.

  • Государственная поддержка: Шифрование по ГОСТ одобрено государственными органами и широко используется в государственных учреждениях и коммерческих организациях.

  • Соответствие законодательству: Использование ГОСТ помогает организациям соответствовать требованиям законодательства в области защиты данных.

Недостатки использования ГОСТ

  • Ограниченная интернационализация: Стандарты ГОСТ менее известны за пределами России и стран бывшего Советского Союза, что может затруднять их интеграцию в международные системы.

  • Меньшая поддержка: В сравнении с международными стандартами, такими как AES или RSA, ГОСТ имеет меньшую поддержку в программных и аппаратных решениях.

Почему мы в своем продукте «Форсайт. Мобильная платформа» не используем шифрование по ГОСТ? Основная проблема заключается в том, что готовые решения чаще всего представляют собой конечные пользовательские приложения, а не библиотеки для использования во фреймворке. Таким образом, даже при огромном желании шифровать по ГОСТ сложно, очень компактное коммьюнити профессионалов, и в целом сфера шифрования по госстандарту в России ещё набирает обороты. 

И помните, самые безопасные данные – это те, которых не существует.