Безопасность Java основывается на использовании многочисленных API, готовых алгоритмов, внутренних защитных механизмов и протоколов безопасности. Они помогают создать серьезную защиту от большинства угроз. Для их успешного использования необходимо понимать, как они работают и задействовать весь комплекс доступных мер для обеспечения зашиты от злоумышленников и их действий.

Настройка безопасности Java

Стандартная настройка режима безопасности выполняется через панель управления Java путем использования готовых настроек. Чтобы выбрать один из доступных вариантов, необходимо перейти во вкладку «Дополнительно», найти там список режимов безопасности, выбрать желаемый, подтвердить свое действие нажав кнопку «OK». На выбор пользователю представлены три различных режима безопасности Java:

  1. Очень высокий. Режим, в котором установлены максимально строгие ограничения по безопасности. Разрешается использовать с запросами безопасности приложения с подписанным и действительным сертификатом. То же самое касается приложений, содержащих в манифесте главного JAR-файла атрибут «Permissions». Все другие приложения, не соответствующие описанным выше требованиям, блокируются.

  2. Высокий. Стандартный режим, который действует по умолчанию. Разрешается использовать с запросами безопасности приложения с подписанным действительным или истекшим сертификатом. То же самое касается приложений, содержащих в манифесте главного JAR-файла атрибут «Permissions». Допускается исполнение приложений, если невозможна проверка состояния отзыва сертификата. На приложения, не соответствующие данным требованиям, накладывается блокировка.

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

Проверка безопасности Java: способы

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

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

  • Инфраструктура открытых ключей (PKI). В основе проверки лежит принцип доверия между двумя сторонами. Доверие основано на цифровых сертификатах, которые выдаются Центром сертификации. Ключи хранятся в специальных хранилищах. При необходимости проверки ключи извлекаются, сверяются на соответствие.

  • Многоуровневая аутентификация. Осуществляется посредством разнообразных модулей входа. С их помощью становятся доступны механизмы аутентификации приложениям. Java задействует для этого собственные модули. Например, Krb5LoginModule – проведение проверки на подлинность на основании Kerberos. Второй модуль – JndiLoginModul. Он используется, чтобы выполнить аутентификацию пользователя по паролю и логину, которые поддерживает хранилище LDAP. Также присутствует модуль KeyStoreLoginModule. Работает на основе сверки криптографического ключа.

  • Безопасная связь. С помощью API-интерфейсов в Java реализованы протоколы DTLS, SSL, TLS. С их помощью становятся доступны шифровка информации, поддержание полноты сообщений, выполнение аутентификации клиента и сервера. Также доступны ключевые и доверительные менеджеры. Они управляют ключами в хранилище, выносят вердикт о том, кому доверять, а кому нет на основании сертификатов, сведений о ключах.

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

Проверка безопасности Джава построена на высокоуровневой архитектуре. Это обеспечивает высокий класс защиты, если параметры настроены под конкретный проект, регулярно проверяются. Благодаря широкому набору API разработчики могут изначально интегрировать безопасность в код приложения и тем самым предоставить клиенту защищенный продукт, что упростит его использование и увеличит надёжность в плане угроз.