"Найсильніший пароль"


11

У мене є додаток, захищений чотиризначним PIN-кодом, і користувач отримав п'ять спроб входу, перш ніж обліковий запис буде заблоковано.

Тепер один з моїх клієнтів хоче "посилити" безпеку і виступає за інше рішення:

  • шестизначний PIN-код
  • НІ "однакові цифри поруч": наприклад: 11 3945 або 39 55 94
  • НІ "триразові числа": наприклад: 123 654 або 53 789 3

Тепер до питання: яке рішення є найсильнішим?

Я можу обчислити чотиризначний досить легко, але як обчислити інший?

Дякую!

Оновлення

Ви отримуєте те, що просите, особливо коли працюєте з математикою :)

Отже, мене просили кількість комбінацій для обох послідовностей чисел.

Читаючи відповіді та коментарі, мені стало зрозуміло, що це насправді не має значення. Якщо у вас є 5 здогадок, то неважливо, чи є у вас 10.000 або ~ 800.000 на вибір. Більш важливим є виключення 1234 та день народження. У моїй ситуації у мене фактично є день народження користувачів, тому я маю щось перевірити.

Дякую за чудову дискусію!


4
Займаючись історичною перспективою, ви повинні ознайомитись з криптоаналізом машини Enigma. Зокрема, алгоритм Enigma ніколи не шифрував лист до себе. Це, як вважалося, зробило його більш безпечним для інженерів, але це призвело до того, щоб зробити машину значно менш захищеною. Це був один із багатьох кроків, який дозволив союзним державам зламати Енігму. Я не є експертом у криптовалюті будь-якими способами, але загальне уявлення про те, що ви хочете, щоб ваше клавіатурне поле було якомога більшим.
Sycorax каже, що повернеться до Моніки

2
Я думаю, що це належить до криптографії , не тут.
gung - Відновіть Моніку

2
Каспер, уточнюйте, будь ласка, чи вас це передусім хвилює як питання безпеки (наприклад, є міркування, пов'язані з більш ніж просто вірогідністю); у такому випадку це може бути краще підходити в іншому місці - чи ви задаєте перш за все питання ймовірності (яке підходить тут)?
Glen_b -Встановіть Моніку

3
Теоретично --- якщо ви зосереджені виключно на грубих атаках --- більше можливостей означає більшу безпеку, тому обмеження, такі як не однозначний або не працює 3, зменшують кількість можливостей, тому вони суворо слабкіші. Однак практично (як це стосується user777) люди не вибирають випадкових штифтів. Якщо користувачі лініші, ніж параноїки, багато з них можуть вибрати штифти, такі як "000000" або "123456", які потім роблять речі менш безпечними.
Грегор Томас

2
Я голосую за (тимчасово) закрити це питання як незрозуміле на тій підставі, що наміри ОП ще не очевидні. Я дійсно вважаю за краще відповісти на запитання @ Glen_b, тому ми знаємо, чи слід це трактувати як питання комбінаторики / ймовірності чи як щось, що краще мігрується.
Срібна рибка

Відповіді:


8

Ви звернулися до форуму статистиків про допомогу з цього питання, тому я надам статистично відповідь. Таким чином, розумно припустити, що вас цікавить ймовірність відгадування PIN-коду навмання (для певного визначення випадкових випадків), але це запитання більше, ніж передбачено.

Мій підхід полягатиме в тому, щоб перерахувати всі можливі варіанти без обмеження, а потім відняти недійсні варіанти. У цьому є гострий кут, який, однак, називається принципом включення-виключення, який відповідає інтуїтивній ідеї про те, що ви не хочете двічі віднімати одне і те ж із множини!

У шестизначному PIN-коді без обмежень та десятковій системі числення є можливих комбінацій, від 000 000 до 999 999 : кожна цифра має 10 варіантів.106000000999 рік999 рік:

Поміркуйте, як виглядають "дві сусідні, однакові" цифри: , де позиції, позначені A , однакові, а X може бути будь-якою десятковою цифрою. Тепер розглянемо, як багато інших способів рядок A A можна впорядкувати в шість цифр: X A A X X X , X X A A X X , X X X A A X і X X X X A AААХХХХАХААХААХХХХХААХХХХХААХХХХХАА. Отже, для будь-якого конкретного замовлення (один із цих варіантів) існує принаймні комбінацій, оскільки існує 10 4 цифр без обмежень. Тепер, скільки варіантів A є? Ми працюємо з десятковими цифрами, тому їх повинно бути 10. Тож є 10 5 варіантів для конкретного замовлення. Таких замовлень існує п'ять, тому існує 5 × 10 5 механізмів, які відповідають цьому визначенню. (Що це означає з точки зору безпеки, можна оцінити через інформаційно-теоретичну міру, наскільки це зменшує ентропію простору PIN-коду.)104104А1055×105

АБСХХХ

  • 012XXX
  • 123XXX
  • 234XXX
  • 456XXX
  • 789XXX

і в цей момент незрозуміло, чи є "обгортання". Якщо є, ми також включаємо

  • 890XXX
  • 901XXX

103ХАБСХХ.

Тепер ми переходимо до гострого кута, що є принципом включення-виключення. Ми зробили набір усіх шестизначних PIN-кодів на три набори:

A. Допустимі PIN-коди B. Недійсні PIN-коди через "сусідні цифри" C. Недійсні PIN-коди через "послідовні цифри"

БС|S|=|А|-|Б|-|С|,|S|=|А|-|Б|-|С|+|БС|,БСБСБС

Це може відбутися декількома способами:

  • ААБСХХ
  • АБСХDD

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

1|S|

Морщина "п'яти до блокування", безумовно, є кращою захистом від несанкціонованого доступу, оскільки або в 4-значній, або в 6-ти розрядній схемі існує дуже велика кількість варіантів, і навіть п’ять різних випадкових догадок мають низький рівень ймовірність успіху. Для добре поставленого питання про ймовірність можна обчислити ймовірність успіху такої атаки.

Але інші фактори, крім ймовірності послідовностей чисел, можуть впливати на безпеку механізму PIN. Головне, люди, як правило, не вибирають PIN-коди випадковим чином! Наприклад, деякі люди використовують свою дату народження, або DOB дітей, або якийсь аналогічний номер, пов’язаний з особистими даними, як PIN-код. Якщо зловмисник знає DOB користувача, то він, ймовірно, буде серед перших речей, які вони намагаються. Отже, для конкретного користувача деякі комбінації можуть бути більш імовірними, ніж інші.

* Послідовності, які ви перераховуєте, суворо збільшуються, і незрозуміло, чи збільшуються, чи зменшуються, коли ви говорите "трибічне число".


1

Отримати закриту формулу здається складним. Однак перерахувати їх досить просто. Існують 568 916можливі коди другого рішення. Що більше, ніж кількість рішень із чотиризначним ПІН-кодом. Код для їх перерахування знаходиться нижче. Хоча це не оптимізовано, для запуску потрібні лише секунди.

Примітка. Я припускав, що послідовність повинна бути у порядку, що збільшується (що можна легко змінити three_running)

N = 999999

candidates = range(N)

def same_consecutive_digits(x):
    x_string = str(x).zfill(6)
    for i in range(1,len(x_string)):
        if x_string[i] == x_string[i-1]:
            return True
    return False

def three_running(x):
    x_string = str(x).zfill(6)
    for i in range(2,len(x_string)):
        if int(x_string[i]) == int(x_string[i-1]) + 1 and int(x_string[i-1]) == int(x_string[i-2]) + 1:
            return True
    return False

def valid(x):
    return not same_consecutive_digits(x) and not three_running(x)

assert(same_consecutive_digits(88555))
assert(same_consecutive_digits(123))
assert(not same_consecutive_digits(852123))
assert(three_running(123456))
assert(not three_running(4587))
assert(valid(134679))
assert(not valid(123894))
assert(not valid(111111))
assert(not valid(151178))
assert(valid("031278"))

accepted = [i for i in range(N) if valid(i)]
print(len(accepted))

Код у коді, але не у вашому описі, є припущенням, що PIN-коди ніколи не починаються з цифри "0". Зазвичай це не стосується PIN-кодів або паролів. Правильна відповідь, що допускає такі нулі, - 568,916. Маємо на увазі, що відповідна відповідь вважає, що атаки на ПІН у цій обмеженій проблемі можуть бути набагато ефективнішими, використовуючи обмеження, маючи на увазі, що це просто перерахування можливостей не належним чином представляє "силу" система, як зазначено в коментарях до питання.
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.