From 78c7320872e38cb842096272d4a7745792b8c9ee Mon Sep 17 00:00:00 2001 From: RoyceDa Date: Tue, 17 Feb 2026 11:54:03 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B1=D0=BB=D0=B5=D0=BC?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=BE=D0=B4=D1=82=D0=B2=D0=B5=D1=80=D0=B6=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D1=84?= =?UTF-8?q?=D1=81=D1=82=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/problem_hwid.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 problems/problem_hwid.md diff --git a/problems/problem_hwid.md b/problems/problem_hwid.md new file mode 100644 index 0000000..2518760 --- /dev/null +++ b/problems/problem_hwid.md @@ -0,0 +1,15 @@ +# Проблема раскрытия HWID устройства + +Для того, чтобы сделать вход на нескольких устройствах безопасным, Rosetta могла бы использовать HWID (Hardware ID) устройства, который бы генерировался на основе уникальных характеристик устройства, таких как серийный номер, MAC-адрес и т.д. Однако, раскрытие HWID может привести к проблемам безопасности, так как злоумышленник может использовать эту информацию для идентификации и отслеживания устройства. + +### 1. Злоумышленник зашел с нового устройства +Злоумышленник зашел с нового устройства, то есть подтвердил вход по сид-фразе. Он мог ее украсть. В этот момент Rosetta отправляет ему пакеты синхронизации (переписки, которые были до этого на другом устройстве). Имея сид-фразу, по которой злоумышленник уже зашел, например украв ее или подсмотрев, он может легко расшифровать пакеты синхронизации и получить доступ к перепискам пользователя. Это может привести к серьезным последствиям, таким как утечка личной информации, компрометация аккаунта и т.д. Из этой проблемы мы делаем вывод, что нужна система подтверждения новых устройств, которая бы не позволяла злоумышленнику, даже имея сид-фразу, получить доступ к перепискам пользователя. + +### 2. Раскрытие HWID +Если бы Rosetta использовала HWID для идентификации устройств, злоумышленник, имея доступ к HWID, мог бы использовать эту информацию для отслеживания устройства и его владельца. Это может привести к нарушению конфиденциальности и безопасности пользователя. Поэтому важно не раскрывать HWID и использовать другие методы для обеспечения безопасности входа. Например сохранение случайного уникального идентификатора для каждого устройства. + +### 3. Украли случайный идентификатор +В случае воровства случайного идентификатора из хранилища приложения, злоумышленник мог бы использовать его для того, чтобы "подделать" пакет рукопожатия с сервером, и получить доступ к синхронизации, так как сервер мог бы подумать, что это легитимное устройство. Это может привести к раскрытию переписок и личной информации пользователя. Поэтому важно обеспечить безопасность хранения случайного идентификатора или невозможность его подделать. + +# Решение, использованное в Rosetta +Rosetta не использует HWID для идентификации устройств, вместо этого генерируется [уникальный идентификатор (для каждого устройства) ](https://git.rosetta.im/Rosetta/desktop/src/commit/265b60b35ac8647a1aa196e28049f32a851401c5/app/providers/SystemProvider/SystemProvider.tsx#L43) при первом запуске приложения на устройстве. Этот идентификатор не раскрывает никакой информации о самом устройстве и используется только для внутренних целей приложения, таких как синхронизация и управление сессиями. Это обеспечивает безопасность и конфиденциальность пользователей, так как злоумышленник не может использовать этот идентификатор для отслеживания устройства или его владельца. Чтобы идентификатор не мог быть украден, [он шифруется с помощью AES256 и специального ключа, который генерируется на основе РЕАЛЬНОГО HWID](https://git.rosetta.im/Rosetta/desktop/src/commit/265b60b35ac8647a1aa196e28049f32a851401c5/app/providers/SystemProvider/SystemProvider.tsx#L69) устройства, но при этом не раскрывает его серверу и потенциальным злоумышленникам. Таким образом, даже если злоумышленник получит доступ к этому идентификатору, он не сможет использовать его для подделки пакетов рукопожатия или получения доступа к синхронизации. Теперь, чтобы подделать рукопожатие, злоумышленнику нужно будет не только украсть идентификатор, но и скомпрометировать реальный HWID устройства в определенном формате для генерации ключа, что делает атаки крайне сложными и маловероятными. \ No newline at end of file