Как хакер запоминает PIN-код

January 24, 2023 0 By vhjz

, если у вас есть более нескольких банковских карт, ключевых кодов для входа в дверь или другие небольшие числовые пароли, чтобы запомнить, в конечном итоге это будет хлопот. Худшее, для меня, это банковская карта для бизнес-счета, которую я использовал один раз в голубой луне. Я, вероятно, использовал его восемь раз за пять лет, и тогда они дали мне новую карту с новым контактом. Вздох.

Быстро, что мой PIN?
Как бы нормальный человек справляется с распространением булавок? Они записали номера на листе бумаги и сохраняют его в своем кошельке. Мы все знаем, как это заканчивается, верно? Потерянный кошелек и несколько пустых банковских счетов. Как бы хакер справился с этим? Напишите каждое число на самой карте, но зашифровано, естественно, с единственной неразружной схемой шифрования там есть там: одноразовый прокладки (OTP).

OTP – странная утка между методами шифрования. Они предназначены для расшифровки в вашей голове, но до тех пор, пока секретный ключ остается в безопасности, они потрясающие твердые. Если вы когда-либо пытались комировать S-ящики и все, что добавляют, переключающие и смешивание, которое продолжается с нормальным методом шифрования, OTPS очень простым. Tradeoff – это «длинный» ключ, но OTP абсолютно идеально подходит для шифрования ваших пинов.

Первая часть этой статьи, по-видимому, является дружественной «Life-Hack» Pablum, которую вы получите в другом месте, но не отчаивайтесь, это также введение в дверь в OTP. Вторая половина погружает в одноразовую площадку с некоторой глубокой криптовой интуицией, некоторую дружелюбную математику и, надеюсь, убедительный аргумент, который списал ваши зашифрованные булавки, – это правильная вещь. По пути, я перечислю три вещи, которые вы можете сделать не так при внедрении OTP. (И никто из них не будет шокировать вас!) Но в конце концов, мое решение шифрования PIN сломало один из трех и останется тем не менее. Любопытно еще? читать дальше.

ПИН-раствор

Поэтому сначала решение проблемы банковской карты: напишите свой PIN-код, зашифрованный секретом, который только вы знаете. Вместо того, чтобы нуждаться в том, чтобы запомнить четырехзначное число для каждой новой карты, вам просто нужно один четырехзначный номер навсегда. Ключ состоит в том, чтобы выбрать схему шифрования, которая достаточно проста, чтобы отменить, чтобы вы не будете выглядеть слишком странно, когда попросили ввести PIN-код в окне Tailer Bank. Это классическое использование OTP – шифрование, которое вы можете отменить в своей голове.

Во-первых, случайным образом выберите секретное четырехзначное число. Затем вычтите это число из вашего булавки и напишите результат на вашей карте. Чтобы получить ваш PIN-код, когда стоя перед баком-кассиром, просто посмотрите на карту и добавьте секретный номер обратно. Теллер подумает, что вы написали свой PIN-код на карте. Не стесняйтесь чувствовать себя самодовольно, потому что вы использовали нерубленную схему шифрования.

Вместо нормального добавления и вычитания, с переносом и заимствованием по ценам, вы захотите использовать математику Modulo-10 – добавление или вычитание десяти из результата в любое время, когда он выходит за пределы диапазона 0-9. Мы поговорим о том, почему ниже, но на данный момент вот рабочий пример.

Предположим, штифт 1234 – это должно произойти так кого-то, верно? – И мой случайный секретный номер 1337, естественно. Давайте шифем. Вычитание 1 из 1 дает ноль, поэтому я пишу это вниз. Вычитание 3 из 2 дает -1, который находится в том месте, где входит арифметика модуло-10. В этом случае -1 превращается в 9, добавив десять. 3 – 3 = 0 и 4 – 7 = 7, мод-10. Моя карта сейчас 0907 написана на нем.

Теперь давайте расшифроем. Глядя вниз на карточку, я вижу 0 и добавляю 1. 9 + 3 = 12, однако, нам понадобится вычтите десять, чтобы получить 2. (вот причина выбрать дополнение к этапу дешифрования, легко просто просто Снимите любые ведущие 1s.) 0 + 3 = 3 и 7 + 7 = 14 -> 4 <. Я введите 1234, а деньги мои! После того, как вы получите повешение добавления своего секретного номера на любое другое число, Digit-Wise MOD-10, вы будете удивлены тем, как быстро он будет работать. Попробуйте и посмотрите, хорошо лишь у вас в течение десяти минут. Одноразовые подушки Одноразовый прокладки - это самая простая симметричная схема шифрования, а также полностью не разрывна. Он имеет три важных особенностя, два из которых были продемонстрированы выше, и их неправильно может быть катастрофическим. Наиболее важной особенностью OTP является то, что пароль должен быть случайной, и ту же длина, что и текст, который он шифрует - отсюдат четырехзначный секрет для PIN-кода. В OTP все вращаются вокруг секрета, что также является его ахиллесской каблукой. Для четырехзначного числа сохранение четырехзначного секрета не проблема. Но представьте, что вы хотите отправить гигабайты зашифрованных фотографий вашего отпуска с другом. Это много ключевого материала, чтобы держать в руках и секрет. Оригинал Chat Matt_Crypto], Public Domainsecond, метод объединения сообщения с секретом должен быть похож на арифметику по модулю, в том, что набор зашифрованных символов и набора символов открытого текста - PIN в нашем примере - приходится на карту один к одному. MOD-10 обеспечивает это легко: оба находятся в диапазоне 0-9. Может быть, вы знакомы с использованием оператора XOR в двоичных данных, что является то же самое, что и ADDITIon or subtraction, mod-2. ( 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, and 1 + 1 = 2 -> 0. QED.) You can also use letters and wrap the alphabet around at “z” like the Caesar cipher or ROT13, which is just mapping the alphabet into numbers and doing math mod-26.

Third, and maybe this is a corollary of the first, you shouldn’t re-use the secret in a one-time pad. You’d think that this was obvious, since it’s even in the name of the encryption method, but it’s hard to do in practice. and in fact, my PIN-encryption scheme breaks this rule by using the same secret across multiple keys. We’ll get into that soon.

Messing up the perfect Encryption

Why is a OTP unbreakable? breaking most encryption schemes often boils down to probability and statistics. For instance, if you encrypt a text with the Caesar cipher above, each letter in the plaintext is mapped to another single letter every time it occurs in the ciphertext. If you know that the original text is in English, where the most commonly used letter is “e”, it’s a good bet that if “q” is the most common letter in the ciphertext, it stands for “e”. That is, we find statistical similarities between the plaintext and the ciphertext, and use them to make a bridge between the two.

Using a secret key that is as long as the plaintext, and randomly chosen, breaks any statistical relationship with the ciphertext. given a specific ciphertext written down on my card, every PIN from 0000 to 9999 is possible, and if the key was chosen randomly, is equally likely. There is no information about the plaintext in the ciphertext — that’s essentially Claude Shannon’s proof (absolutely classic PDF) in a nutshell. and that’s why an OTP is unbreakable.

DIANA one-time Pad [US NSA], Public DomainThis is actually the key to understanding the field of cryptography: it is an attempt to scramble up the information about the plaintext during the encryption process so that even though a shorter key is used, no statistically relevant traces of the plaintext remain. This desire for short keys isn’t just a matter of convenience either: imagine that you and Hackaday had to previously exchange 500 KiB of random data just to download this article and read it. imagine the length of the WiFi password that you’d have to write down for guests! This is the sense in which the OTP is trivial and uninteresting — it may be unbreakable, but the secrets are just too long for most applications. real crypto is about finding algorithms that break the statistical relationship with a minimum of key material.

With that in mind, you can screw up an OTP implementation by using a short or non-random password. imagine using 1 as your password and repeating it as necessary; our ciphertext would read 2345, and the PIN would be guessed on the second try. You also want to use a random password; picking 0000 because it makes the math easy is the only thing worse than the above. (Although, strictly speaking, I’d re-roll if I got 0000, 1111, 9999, 1234, 4321, or similar.) Anyway, don’t use your birthday. Old phone numbers of childhood friends might be acceptable.

The role of modulo arithmetic is a little more subtle. Whatever function is used, the set of possible characters in the plaintext has to map one-to-one with the ciphertext. Почему? imagine that you used simple addition instead of mod-10 addition. To get the last digit of our PIN ciphertext, we used 4 – 7 = -3 -> 7 and decrypted with 7 + 7 = 14 -> 4. If we wrote down -3 instead, an attacker would know that our last digit couldn’t be greater than 6 because adding 9, the maximum value, gives only 6. We’ve leaked information by having a larger set in the ciphertext than in the plaintext.

And that leaves the last way to mess up: re-using the “one-time” pad. Obvious, right? Неправильно.

Lorenz Machine, Public Domain
On one hand, reuse is a definite liability. Re-using a password in a very similar encryption scheme broke “Tunny”, an important code during WWII. A 4,000 character encrypted message was sent but not received correctly. The sender re-sent the message, with the same secret but made small changes in the text, using different abbreviations and so on. This gave the Allies enough to break Tunny and reverse engineer the machine that encrypted it. игра окончена.

Here’s the math that made the Tunny decrypt work, and should convince you to almost never reuse a key. If we encode the messages A and B with the secret key C, and someone overhears both, they can just mod them together to get (A mod C) mod (B mod C) = (A mod B) mod C mod C = A mod B, where mod is the bitwise or number-wise modulo operator that we’re now used to. since taking the binary modulo is its own reverse, the result is something that’s related to both plaintexts, and independent of the secret key.

From here, comparing smart guesses for A and B and comparing them with the A mod B result can break the code. So if you’re pretty sure that “attack” appears in both texts (crypto types always encrypt “attack at dawn”),Тогда вы можете попробовать моддинг «атаковать» вместе в разных положениях, пока не получите совпадение с модом B.

Неожиданный конец

Но вот окончательный поворот! Мы можем уйти с повторным использованием секретного ключа всех наших банковских карт, даже несмотря на вышеуказанную математику. Почему? Потому что сами булаты случайны. В отличие от натурального языковых сообщений, отправленных во время военного времени, мод B так же случайным, как мод C, если оба A и B являются случайными булавками.

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