Что такое идентификация в контексте информационной безопасности?

Ответ

Идентификация — это первый шаг в процессе контроля доступа, когда субъект (пользователь, система, процесс) заявляет о себе, предъявляя уникальный идентификатор.

  • Цель: Ответить на вопрос "Кто вы?".
  • Идентификатор (Login): Уникальное имя, присвоенное субъекту в системе. Например:
    • Логин (john_doe)
    • Email (user@company.com)
    • Уникальный номер (ID карты, UID-12345)
    • Имя сервисного аккаунта (svc-api-prod)

Важно: Сама по себе идентификация не подтверждает личность. Она лишь заявляет её. Подтверждение происходит на следующем этапе — аутентификации (проверка пароля, токена, отпечатка).

Пример в тестировании:

def test_identification_requires_unique_login():
    """
    Тест: система должна корректно обрабатывать уникальный идентификатор.
    """
    # Пользователь идентифицируется с логином "alice123"
    claimed_identity = "alice123"

    # Система ищет этот идентификатор в своём хранилище
    stored_identities = ["alice123", "bob456"]

    # Проверка: идентификатор должен существовать для последующей аутентификации
    assert claimed_identity in stored_identities, 
        f"Идентификатор '{claimed_identity}' не найден в системе."

    # Следующий шаг (за рамками идентификации) — аутентификация по паролю/токену.

Связь с другими понятиями (AAA-модель):

  1. Identification (Идентификация): "Я — alice123".
  2. Authentication (Аутентификация): "Докажи это" (пароль, OTP).
  3. Authorization (Авторизация): "Что тебе разрешено делать?" (роли, права).

Тестирование идентификации включает проверку уникальности идентификаторов, обработку несуществующих идентификаторов и устойчивость к инъекциям (SQL, NoSQL) на этапе ввода логина.

Ответ 18+ 🔞

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

Представь, что ты врываешься в отдел кадров и орешь: «Я — Пётр Иванович Сидоров!». Вот это, блядь, и есть идентификация. Ты просто заявил, кто ты есть, назвал своё уникальное имя в этой конторе. Никто тебе пока не верит, но имя ты своё озвучил.

  • Суть вопроса: Ответ на «Кто ты, тварь?».
  • Твой пропуск (Идентификатор): Это просто твоё клеймо в системе. Например:
    • Логин (vasya_pupkin_228)
    • Мыло (pupkin@hren.dog)
    • Номер пропуска (ID-666)
    • Имя какого-нибудь служебного бота (bot-pochitalka)

Важный момент, ёпта: Назваться Петром Ивановичем — это одно. А вот доказать, что ты действительно он, а не какой-нибудь полупидор, который украл его голос — это уже следующий шаг, который называется аутентификация. Сначала назвался, потом доказывай.

Как это выглядит в коде, если бы его писал нормальный человек:

def test_kak_ya_zayavlyayu_o_sebe():
    """
    Тест: Я пришёл и сказал, кто я есть. А система меня услышала.
    """
    # Врываюсь в систему и заявляю: "Я — alice123, ёпта!"
    my_declared_name = "alice123"

    # Система лезет в свою толстую папку и смотрит: "А есть у нас такой мудак в списках?"
    list_of_all_known_mudaks = ["alice123", "bob456"]

    # Проверяем: если меня нет в списке, то я вообще левый человек, и дальше диалог бессмысленный.
    assert my_declared_name in list_of_all_known_mudaks, 
        f"Чувак с именем '{my_declared_name}' нам не известен. Иди нахуй."

    # Если я в списке есть — ок, первый шаг пройден. Дальше система скажет:
    # "Ладно, alice123, а теперь докажи, что это ты — скажи пароль или сунь палец в сканер, пидорас".

Как это всё в голове уложить (простая схема AAA):

  1. Identification (Идентификация): «Я — Вася!». (Просто заявление).
  2. Authentication (Аутентификация): «На, проверь мой паспорт/отпечаток/секретное слово про мамину девичью фамилию». (Доказательство).
  3. Authorization (Авторизация): «О, Вася. Ну раз ты Вася, то тебе можно в серверную, а в бухгалтерию — низя». (Разрешения).

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