• XSS.stack #1 – первый литературный журнал от юзеров форума

Дебаггинг chrome-расширений - извлечение non-extractable CryptoKey

R4D104C71V3

HDD-drive
Пользователь
Регистрация
05.11.2022
Сообщения
20
Реакции
2
Разбираю расширение хрома, не пойму как работает генерация ключей по pbkdf2
Вроде как обычный метамаск (отличие - c 100 000 итерациями), но генерирует другой ключ
Возможно ли как-нибудь посмотреть данные CryptoKey в JS, который помечен как extractable=false?
1708463219381.png
 
Оказывается вся проблема оказалась в промисах, потому что без их использования хэш ломается
И да, в новых метамасках теперь сделали генерацию ключа с 600000 итерациями, что ухудшает брутфорс в 60 раз
close thread
 
Пытался понять. Немного запутался.

Если отвечать на этот вопрос
Возможно ли как-нибудь посмотреть данные CryptoKey в JS, который помечен как extractable=false?
Ключ может быть создан двумя методами:
1. SubtleCrypto: generateKey() (https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/generateKey)
2. SubtleCrypto: deriveKey() (https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/deriveKey)

Если внимательно посмотреть параметры этих методов, то можно увидеть тот самый extractable - это флаг, который отвечает за то, что созданный ключ будет или не будет иметь возможность экспорта после его создания. Экспортируется ключ с помощью методов exportKey() или wrapKey(). Если extractable == false, то выскочит исключение. Подробнее тут (https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey/extractable).

Поэтому ответ на вопрос можно ли посмотреть такой ключ: нет, нельзя.
 
Пытался понять. Немного запутался.

Если отвечать на этот вопрос

Ключ может быть создан двумя методами:
1. SubtleCrypto: generateKey() (https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/generateKey)
2. SubtleCrypto: deriveKey() (https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/deriveKey)

Если внимательно посмотреть параметры этих методов, то можно увидеть тот самый extractable - это флаг, который отвечает за то, что созданный ключ будет или не будет иметь возможность экспорта после его создания. Экспортируется ключ с помощью методов exportKey() или wrapKey(). Если extractable == false, то выскочит исключение. Подробнее тут (https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey/extractable).

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

Мне трудно обьяснить, но мой код выглядит так
Java:
byte[] iv = Base64.getDecoder().decode(jsonObject.get("iv").getAsString());
byte[] salt = jsonObject.get("salt").getAsString().getBytes(); // не так, как вектор и шифрованный текст, сразу в байты
byte[] data = Base64.getDecoder().decode(jsonObject.get("cipher").getAsString());

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


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх