Рейтинг:1

Как случайным образом рисовать слова из физического словаря?

флаг jp

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

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

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

Кстати, в словаре с 20 000 слов можно ли получить только 4 действительно случайных слова, чтобы использовать их в качестве дополнительной фразы-пароля для моего биткойн-сида? Я просто хочу, чтобы в течение следующих 5 лет его было действительно сложно взломать на машине AWS, чтобы вся атака не стоила больше 100 000 долларов.

Я не хочу использовать слова, выбранные бипом, потому что они не на моем основном языке.

kelalaka avatar
флаг in
Я не вижу никакого отношения к криптографии. Это чистый алгоритм. Лучше спросить в CS?
kelalaka avatar
флаг in
Простой способ сгенерировать случайное использование `/dev/urandom/` и выбрать страницу, а затем выбрать другое случайное слово на странице (определить диапазоны). Для слова случайный, если на странице недостаточно слов, откажитесь от случайного и выберите другой.... Обратите внимание, что слово на самом деле не важно, что действительно важно, так это размер набора, который вы используете, как в игре в кости. и Бип39. Лучше выбирать слово сознательно, чтобы не было абсурдного слова, которое нельзя было бы соединить с другими словами...
Rafaelo avatar
флаг jp
@fgrieu будет использоваться в качестве парольной фразы в биткойнах, следуя bip39 и другим, которые указывают, как преобразовать начальное число + парольную фразу в ключ.
Рейтинг:1
флаг ng

Как случайным образом рисовать слова из физического словаря с помощью кубиков?

Предполагая, что мы знаем общее количество страниц $р$ в словаре и может оценить некоторые $w$ чтобы ни на одной странице не было более $w$ Если говорить об этом, мы можем использовать отбраковочную выборку для точного равнораспределения:

  • найти наименьший $к$ с $6^k\ge p$, и самый большой $д\в\{1,2,3\}$ с $6^k\ged\,p$
  • найти наименьший $\ell$ с $6^\ell\gew$, и самый большой $е\в\{1,2,3\}$ с $6^\ell\ge e\,w$
  • для каждого из 4 слов на выбор
    • повторение
      • $я:=0$
      • повторение $к$ раз
        • нарисовать значение кости $v$ в $[1,6]$
        • $i:=6i+v-1$
      • $i:=\lэтаж i/d\rэтаж+1$, который является равномерно случайным в $[1,6^к/д]$
      • если страница $я$ существует в словаре и содержит хотя бы одно слово
        • $j:=0$
        • повторение $\ell$ раз
          • нарисовать значение кости $v$ в $[1,6]$
          • $j:=6j+v-1$
        • $j:=\lfloor j/e\rfloor+1$, который является равномерно случайным в $[1,6^\элл/е]$
        • если есть хотя бы $j$ слова на странице $я$
          • выбрать $j^\text{th}$ слово страницы $я$ и выйти из цикла повторения

Мы можем уйти с $w$ возможно, слишком мал, например. $w$ по меньшей мере $2Вт/чел$, куда $W$ это приблизительное количество слов в словаре, если слова находятся за индексом $w$ на их странице (которую нельзя выбрать) лишь небольшая часть слов.


в словаре с 20 000 слов нормально ли для меня получить только 4 действительно случайных слова, чтобы использовать их в качестве дополнительной фразы-пароля для моего биткойн-сида?

Это дает $4\log_2(20000)\примерно57$ немного энтропии. Этого достаточно или нет, чтобы предотвратить поиск методом грубой силы, в зависимости от растяжка ключей используется для преобразования 4 слов в ключ.

Был процитирован BIP39, который использует PBKDF2 с $2^{11}$ итерации и HMAC-SHA-512. Стоимость поиска всех ключей будет определяться $2^{57+11+1}=2^{69}$ Хэши SHA-512, которых неудобно мало (я не хочу заходить так далеко, чтобы оценивать, как это лучше всего сделать с AWS, или, что еще хуже, экстраполировать это через 5 лет). Я предлагаю использовать Argon2 вместо PBKDF2 HMAC-SHA-512 и увеличить параметры стоимости до 10 секунд расчета, и тогда это достаточно безопасно.

Rafaelo avatar
флаг jp
А как насчет 5 слов, то есть $2^{71+11+1}$ хэшей? И меня не устраивает изменение алгоритма растяжки ключа, я хочу использовать аппаратный кошелек без каких-либо модификаций. Я не хочу превышать 5 слов, которые уже будет слишком сложно запомнить.
fgrieu avatar
флаг ng
@Rafaelo: Я не хочу слишком распространяться, потому что: 1) Речь идет о криптовалюте, которую я считаю опасной вещью как для участников секты, так и для других. 2) Вопрос предполагает модель атаки (AWS), которая игнорирует возможность атаки с использованием специализированного оборудования, когда криптовалюта использует его регулярно. Я не могу одобрить эту модель.
Paul Uszak avatar
флаг cn
Есть ли шанс, что это не не по теме, потому что на него отвечает модератор? Не имеет большого значения, учитывая новости этой минуты.

Ответить или комментировать

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