Научная статья на тему 'СПОСОБ ОПТИМИЗАЦИИ МЕТОДА ДВУХФАКТОРНОЙ АУТЕНТИФИКАЦИИ ОБЕСПЕЧЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ «БЛОКЧЕЙН»'

СПОСОБ ОПТИМИЗАЦИИ МЕТОДА ДВУХФАКТОРНОЙ АУТЕНТИФИКАЦИИ ОБЕСПЕЧЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ «БЛОКЧЕЙН» Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1
0
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
токен / двухфакторная аутентификация / метод / блокчейн / маппинг / token / two-factor authentication / method / blockchain / mapping

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Жданов Антон Александрович, Шульга Дмитрий Константинович, Елфимов Илья Олегович, Селищев Валерий Анатольевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Жданов Антон Александрович, Шульга Дмитрий Константинович, Елфимов Илья Олегович, Селищев Валерий Анатольевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

OPTIMIZATION METHOD OF TWO-FACTOR AUTHENTICATION METHOD FOR DATA PRIVACY USING BLOCKCHAIN TECHNOLOGY

Process of two-factor authentication using blockchain technology is considered, as well as the issues of confidentiality during user authentication in the system. The method of two-factor authentication as a program code is proposed, together with block diagrams of authentication procedure description.

Текст научной работы на тему «СПОСОБ ОПТИМИЗАЦИИ МЕТОДА ДВУХФАКТОРНОЙ АУТЕНТИФИКАЦИИ ОБЕСПЕЧЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ «БЛОКЧЕЙН»»

УДК 004.492.3

DOI: 10.24412/2071-6168-2023-12-503-504

СПОСОБ ОПТИМИЗАЦИИ МЕТОДА ДВУХФАКТОРНОЙ АУТЕНТИФИКАЦИИ ОБЕСПЕЧЕНИЯ КОНФИДЕНЦИАЛЬНОСТИ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ «БЛОКЧЕЙН»

А.А. Жданов, Д.К. Шульга, И.О. Елфимов, В.А. Селищев

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

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

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

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

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

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

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

Рассмотрим примеры существующих средств и методов оптимизации.

1. Использование мультифакторной аутентификации.

Помимо токена, можно использовать другие факторы, такие как биометрические данные (например, отпечатки пальцев или сканирование лица) или одноразовые пароли, чтобы повысить безопасность.

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

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

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

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

Хакеры могут использовать различные методы, такие как фишинг, сетевые атаки или социальная инженерия, чтобы обойти мульти- факторную аутентификацию и получить доступ к системе [1].

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

2. Реализация более сложного алгоритма шифрования.

Хотя алгоритм HMAC-SHA256 достаточно безопасен, его можно усовершенствовать, используя более продвинутые алгоритмы шифрования, такие как RSA или AES.

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

При использовании RSA для мультифакторной аутентификации:

1.Сервер генерирует открытый и закрытый ключи RSA.

2.Пользователь создает случайную строку данных (например, пароль) и отправляет ее на сервер.

3. Сервер использует открытый ключ RSA для шифрования строки данных пользователя.

4. Зашифрованная строка данных отправляется на устройство пользователя.

5. Устройство пользователя использует свой закрытый ключ RSA для расшифровки строки данных.

6. Если строка данных соответствует сохраненной копии на сервере, то пользователь получает доступ к приложению.

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

503

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

3. Улучшение процесса генерации токена. Для генерации токена возможно добавить дополнительные параметры, такие как случайные числа или временные метки, чтобы сделать его более уникальным и сложным для подделки. С целью улучшения процесса генерации токена можно использовать более сложные алгоритмы шифрования, например, HMAC-SHA512, который имеет более длинную ключевую последовательность и высокий уровень безопасности, чем HMAC-SHA256.

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

4.Реализация системы мониторинга.

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

Рассмотрим следующие варианты систем мониторинга.

Журналирование - система должна записывать все действия пользователей, связанные с аутентификацией, в журнал. Данная мера позволит отследить атаки и провести анализ активности пользователей.

Анализ атак - система должна проанализировать все записи журнала и выявить попытки атаки. Например, если один и тот же пользователь пытается войти в систему из разных мест или с разных устройств, то данный факт фиксируется как признак атаки.

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

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

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

5. Использование блокчейна с более высоким уровнем безопасности, например, Ethereum, обеспечивающего надежную защиту от атак, а также блокчейна с протоколом консенсуса Proof of Stake (PoS) или Proof of Authority (PoA).

В отличие от более распространенного протокола консенсуса Proof of Work (PoW), которому принадлежит большинство блокчейнов, в PoS и PoA участники сети не используют вычислительную мощность для генерации блоков и подтверждения транзакций, а ставят свои криптовалютные токены в залог (stake) для получения права генерировать блоки и получения вознаграждения [2].

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

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

Разработка метода обеспечения конфиденциальности данных на основе технологии блокчейн. Изучение основных принципов работы блокчейна и языка Solidity, а также платформы Ethereum позволяет разработчикам создавать децентрализованные приложения с использованием блокчейн-технологий, что дает возможность более глубокой оценки принципов работы технологии блокчейн и создания безопасных и эффективных приложений.

Рассмотрим процесс оптимизации 2FA, основанный на использовании смарт-контрактов для генерации

токена.

Solidity - язык программирования, который используется для создания смарт-контрактов на платформе

Ethereum.

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

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

Алгоритм шифрования на основе хэш-функции и алгоритма симметричного шифрования для генерации токенов реализован следующим образом [3]:

1.Генерация случайной строки символов (например, длиной 16 байт).

2.Хеширование сгенерированной строки с использованием хэш-функции (например, SHA-256).

3.Шифрование полученной хэш-функции с использованием симметричного алгоритма шифрования (например, AES-256) и секретного ключа, известного только серверу аутентификации.

4. Отправка клиенту зашифрованного токена для использования при аутентификации.

Для проверки токена при аутентификации клиента необходимо выполнить обратные операции:

5.Расшифровка полученного токена с использованием секретного ключа.

6. Хэширование расшифрованного токена с той же хэш-функцией, что и при генерации.

7. Сравнение полученной хэш-функции с оригинальной хэш-функцией, вычисленной при генерации токена. Если они совпадают, то токен действителен.

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

Представление метода в системе двухфакторной аутентификации. Для генерации и проверки токенов был создан смарт-контракт на языке программирования Solidity, а также приведен пример простого контракта, который впоследствии был оптимизирован (рис. 1).

Данный контракт содержит две функции для указанного адреса: generateToken, которая генерирует токен, и verifyToken, которая проверяет его соответствие. При генерации токена используется хэш-функция keccak256 для комбинации времени блока и адреса пользователя.

pragma solidity ''> 8.

contract TwoFactorAuthenticatiofi {

mapping (address => о:" t / >'';' public tokenList;

function generateToken(address user) public returns (uint256) { № infinite gn uint256 token = uint256(keccak256(abi*encodePacked(block.timestamp, user))); tokenListfuser] = token; return token;

}

function verifytoken(address user, uint2S$ token) public view returns (bool) { g: эоад gti return tokenList[user] и token;

}

}

Рис. 1. Исходный смарт-контракт

Один из возможных путей совершенствования рассмотренного смарт-контракта - создание маппинг балансов для каждого адреса, а также маппинга использованных токенов [4]. Представим пример на языке программирования Solidity (рис. 2).

pragma solidity ^.S*©; contract TokenGenerator {

mapping(address •> uint2S6) public balances; napping(bytes32 -> bool) public usedTokens; ulnt256 public totalsupply;

event TokenOenerated(addres* recipient, ulnt2J6 awint, bytes» toketwash);

function generateToken(address recipient, uin«» amount, bytes32 token) : ¡hii.- { §i infinit« gj require(1usedTokens(token], "Token haf already been used"); u&edTokens[tokenJ ■ true; balancestrecipient] ¿aount; total Supply ♦» Mount;

eeit Token&enerated(recipient, amount* token);

}

function verifyToken(address recipient, uint256 aeount, bytes32 token) fmhln vi. „ return1. (bool) ( it ^мпт, ' (usedTokens[token)) { return false;

>

if (balar>ces[recJpient] < amount) { return false;

)

byt«s32 expectedToken - kccc.ik2S<»(abi,encodePacked(recipient, amount)); return (expectedToken token);

}

>

Puc. 2. Оптимизация (puc.l)

pragma solidity n0.S.O; contract TokenGenerator { «iapping(bytes32 •> bool) public usedTokens; function transferToken(bytes32 token) public {i~~1} function verifyioken(bytes32 token) public view return* (bool) { if (u$edTofcem[token)) { return false;

>

return true;

}

}

Код передачи токена контракту на яэмке программирования Javascript: const Web3 require(*web3'); // Подключение к блокчейн сети

const web3 new Web3("https://mainnet.infura.io/v3/ PR03ECT_I1>");

// Адрес контракта генерации токена

tonst contract Address '0ici2J4567$90ab<def. ..*;

const privateKey - "Oxabcdef1234507890...';

const contractABI [...]; // ABI контракта генерации токена

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

const contract new web3.eth.Contract(contractABI, contractAddress);

// Адрес аккаунта получателя

const recipientAddress = '0x9S765432i0fedcba...'; // Значение токена для генерации const tokenA*Kint 1вО;

// Функции для отправки транзакции на блокчейн

async function sendTransaction() {

ff Получение аккаунта отправителя на приватного ключа

const senderAccoont web3.eth.accounts.privateKeyToAccount(private-Key);

ff «ормирование транэакционного объекта

const transactlonobject - {

fro*: senderAccount.address,

to: contractAddress,

gas: 200OO0, // Лимит газа

gasPrice: "10000000000', // Цена газа

data: contгас t.met hods.generateToken(recipientAddress, to-kenAaount).enc odeASI(), >;

try {

ff Подпись транзакции с помощью приватного кяоча

const signedTransaction - ¿wait senderAccount,signTransaction(transac tionObject); ff Отправка подписанной транзакции на блокчейн

const receipt - await web3.eth.send5iBnedTransaction(signedTransac tion.rawTransaction); console.log("Транзакция успеино отправлена. Хзи транзакции:', re ceipt.transactionHash); } catch (error) {

console,error('Ошибка np« отправке транзакции:error);

) }

ff Вызов функции для отправки транзакции sendTransac t ion ( );

Рис. 3. Передача и проверка токена 505

Описанный выше контракт создает маппинг балансов для каждого адреса, маппинг использованных токе-нов и переменную totalSupply для отслеживания общего количества выпущенных токенов. Функция generateToken принимает адрес получателя, количество токенов и токен (в виде хэш-функции), который должен быть уникальным. Если токен еще не был использован, он добавляется в маппинг использованных токенов и количество токенов переводится на баланс получателя. Функция verifyToken принимает адрес получателя, количество токенов и токен (в виде хэш-функции) и проверяет, не был ли токен уже использован и есть ли достаточное количество токенов на балансе получателя. Затем функция создает ожидаемый токен для этого получателя и количества токенов и сравнивает его с переданным токеном. Если токены совпадают, функция возвращает true, в противном случае - false.

В связи с тем, что сам контракт представляет собой дополнительный уровень защиты в 2FA, представим программный код передачи токена контракту и его проверки на стороне контракта (рис. 3).

Данная проверка выполняется поле того, как пользователь проходит процесс аутентификации в системе 2FA, то есть вводит пароль, возможный код из смс-сообщения или другой дополнительный фактор после успешной аутентификации, контракт генерации токена создает временный уникальный токен, который будет использоваться для дальнейшей проверки пользователя. Затем пользователь передает сгенерированный временный токен контракту генерации токена путем вызова соответствующей функции контракта, в свою очередь, контракт генерации токена проводит проверку полученного токена. Удостоверяется в том, что токен является действительным, неиспользованным и соответствует предыдущей аутентификации пользователя, если проверка проходит успешно, контракт выполняет дальнейшие операции, например, генерацию и передачу токена пользователю.

Соответственно программному представлению изобразим блок-схему взаимодействия работы 2FA и смарт-контракта (рис. 4).

Рис. 4. Блок-схема взаимодействия между 21''Л и смарт-контрактом Алгоритм работы следующий:

1.Пользователь проходит процесс аутентификации с использованием 2FA.

2.После успешной аутентификации клиент генерирует временный токен (смс/приложение) и сохраняет его локально. Клиентом является интерфейс между пользователем и смарт-контрактом, обеспечивающий взаимодействие и передачу необходимых данных между ними.

3.Контракт проверяет полученный временный токен на его действительность и соответствие предыдущей аутентификации пользователя.

4.Если проверка проходит успешно, контракт выполняет дальнейшие операции, например, генерацию и передачу токена пользователю.

Для отражения результата оптимизации представим блок-схему алгоритма 2FA без использования смарт-контракта (рис. 5).

Рис. 5. Блок-схема алгоритма 2FA без использования смарт-контракта

1.Сервер аутентификации проверяет учетные данные пользователя.

2.Если учетные данные верны, сервер аутентификации генерирует временный одноразовый код и отправляет его пользователю.

3.Пользователь вводит свои учетные данные (обычно логин и пароль) на клиентском приложении.

4.Клиентское приложение отправляет учетные данные на сервер аутентификации.

5.Пользователь получает временный код и вводит его в клиентское приложение.

6.Клиентское приложение отправляет учетные данные и временный код на сервер аутентификации.

7. Сервер аутентификации проверяет правильность временного кода.

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

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

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

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

Список литературы

1. Верер М., Здун У. Смарт-контракты: шаблоны безопасности в экосистеме ethereum и solidity // Международный семинар 2018 года по программной инженерии, ориентированной на блокчейн (IWBOSE). IEEE, 2018. С. 2 - 8.

2. Al-Naji F. H., Zagrouba R. CAB-IoT: Continuous authentication architecture based on Blockchain for internet of things //Journal of King Saud University-Computer and Information Sciences. 2022. Т. 34. №. 6. С. 2497 - 2514.

3. Исхаков А. Ю., Мещеряков Р. В., Ходашинский И. А. Двухфакторная аутентификация на основе программного токена //Вопросы защиты информации. 2013. №. 3. С. 23 - 28.

4. Crafa S., Di Pirro M., Zucca E. Достаточно ли солиден solidity? //Финансовая криптография и безопасность данных: международные семинары FC 2019, ГОЛОСОВАНИЕ и WTSC, Сент-Китс, Сент-Китс и Невис, 18 -22 февраля 2019, Пересмотренные избранные статьи 23. Springer International Publishing, 2020. С. 138 - 153.

Жданов Антон Александрович, студент, [email protected]. Россия, Санкт-Петербург, Национальный исследовательский университет ИТМО,

Шульга Дмитрий Константинович, студент, [email protected], Россия, Санкт-Петербург, Национальный исследовательский университет ИТМО,

Елфимов Илья Олегович, студент, [email protected]. Россия, Санкт-Петербург, Национальный исследовательский университет ИТМО,

Селищев Валерий Анатольевич, канд. техн. наук, доцент, [email protected]. Россия, Тула, Тульский государственный университет

OPTIMIZATION METHOD OF TWO-FACTOR AUTHENTICATION METHOD FOR DATA PRIVACY USING

BLOCKCHAIN TECHNOLOGY

A.A. Zhdanov, D.K. Shulga, I.O. Yelfimov, V.A. Selischev

Process of two-factor authentication using blockchain technology is considered, as well as the issues of confidentiality during user authentication in the system. The method of two-factor authentication as a program code is proposed, together with block diagrams of authentication procedure description.

Key words: token, two-factor authentication, method, blockchain, mapping.

Zhdanov Anton Alexandrovich, student, [email protected]. Russia, Saint-Petersburg, National Research University ITMO,

Shulga Dmitry Konstantinovich, student, [email protected]. Russia, Saint-Petersburg, National Research University ITMO,

Elfimov Ilya Olegovich, student, [email protected]. Russia, Saint-Petersburg, National Research University ITMO,

Selischev Valery Anatolievich, candidate of technical sciences, docent, sel648val@rambler. ru. Russia, Tula, Tula State University

УДК 004.492.3

DOI: 10.24412/2071-6168-2023-12-508-509

ИССЛЕДОВАНИЕ АДАПТИВНОГО АЛГОРИТМА ОБНАРУЖЕНИЯ КОМПРОМЕТАЦИЙ WEB-СЕССИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ МАШИННОГО ОБУЧЕНИЯ

И.Д. Крылов, А.А. Жданов, Д.К. Шульга, И.О. Елфимов, В.А. Селищев

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

Ключевые слова: аутентификация, отпечаток браузера, алгоритм, машинное обучение, программный

код.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.