If you have more than a few bank cards, door-entry keycodes, or other small numeric passwords to remember, it eventually gets to be a hassle. The worst, for me, is a bank card for a business account that I use once in a blue moon. I probably used it eight times in five years, and then they gave me a new card with a new PIN. Mendesah.
Quick, What’s My PIN?
How would a normal person cope with a proliferation of PINs? They’d write down the numbers on a piece of paper and keep it in their wallet. we all know how that ends, right? A lost wallet and multiple empty bank accounts. how would a hacker handle it? write each number down on the card itself, but encrypted, naturally, with the only unbreakable encryption scheme there is out there: the one-time pad (OTP).
The OTP is an odd duck among encryption methods. They’re meant to be decrypted in your head, but as long as the secret key remains safe, they’re rock solid. If you’ve ever tried to code up the s-boxes and all that adding, shifting, and mixing that goes on with a normal encryption method, OTPs are refreshingly simple. The tradeoff is a “long” key, but an OTP is absolutely perfect for encrypting your PINs.
The first part of this article appears to be the friendly “life-hack” pablum that you’ll get elsewhere, but don’t despair, it’s also a back-door introduction to the OTP. The second half dives into the one-time pad with some deep crypto intuition, some friendly math, and hopefully a convincing argument that writing down your encrypted PINs is the right thing to do. Along the way, I list the three things you can do wrong when implementing an OTP. (And none of them will shock you!) but in the end, my PIN encryption solution will break one of the three, and remain nonetheless sound. curious yet? read on.
The PIN Solution
So first the solution to the bank card problem: write your PIN encrypted with a secret that only you know. instead of needing to remember a four-digit number for each new card, you’ll just need one four-digit number forever. The key is to choose an encryption scheme that’s easy enough to undo so that you won’t look too strange when asked to type the PIN in at the bank teller’s window. This is the classic use of the OTP — an encryption that you can undo in your head.
First, randomly select a secret four-digit number. Then, subtract that number from your PIN and write the result on your card. To get your PIN, when standing in front of the bank teller, simply look down at the card and add the secret number back. The teller will think that you’ve written your PIN on the card. feel free to feel smug, because you’ve used an unbreakable encryption scheme.
Instead of normal addition and subtraction, with the carrying and borrowing across digits, you will want to use modulo-10 math — adding or subtracting ten from the result any time it gets outside the range 0-9. We’ll talk about why below, but for now, here’s a working example.
Suppose the PIN is 1234 — it has to happen so someone, right? — and my random secret number is 1337, naturally. Let’s encrypt. Subtracting 1 from 1 gives a zero, so I write that down. Subtracting 3 from 2 gives -1, which is where the modulo-10 arithmetic comes in. In this case, -1 turns into 9 by adding ten. 3 – 3 = 0, and 4 – 7 = 7, mod-10. My card now has 0907 written on it.
Now let’s decrypt. looking down at the card, I see a 0 and add 1. 9 + 3 = 12, however, so we’ll need to subtract ten to get 2. (That’s the reason to choose addition for the decryption stage, it’s easy to just drop any leading 1s.) 0 + 3 = 3 and 7 + 7 = 14 -> 4<. I type in 1234, and the money is mine! Once you get the hang of adding your secret number to any other number, digit-wise mod-10, you’ll be surprised how quickly it will work. try it out and see if you get good at it within ten minutes. One-Time Pads A one-time pad is both the simplest symmetric encryption scheme and also completely unbreakable. It has three crucial features, two of which were demonstrated above, and getting any of them wrong can be catastrophic. The most important feature of an OTP is that the password needs to be random, and the same length as the text that it encrypts — hence the four-digit secret for the PIN. In an OTP, everything revolves around the secret, which is also its Achilles’ heel. For a four-digit number, keeping a four-digit secret is no problem. but imagine that you want to send gigabytes of encrypted photos of your vacation to a friend. That’s a lot of key material to keep on-hand and secret. Original by [Matt_Crypto], Public DomainSecond, the method of combining the message with the secret has to be similar to the modulo arithmetic, in that the set of encrypted characters and the set of plaintext characters — the PIN in our example — have to map one-to-one. Mod-10 ensures this easily: both are in the range 0-9. maybe you’re familiar with using the XOR operator on binary data, which is the same thing as either additipada atau pengurangan, mod-2. (0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, dan 1 + 1 = 2 -> 0. QED.) Anda juga dapat menggunakan huruf dan membungkus alfabet di “Z” seperti Caesar Cipher atau ROT13, yang hanya memetakan alfabet ke dalam angka dan melakukan matematika mod-26.
Ketiga, dan mungkin ini adalah wajar dari yang pertama, Anda tidak boleh menggunakan kembali rahasia dalam satu kali. Anda akan berpikir bahwa ini jelas, karena bahkan atas nama metode enkripsi, tetapi sulit dilakukan dalam praktiknya. Dan pada kenyataannya, skema pin-enkripsi saya memecah aturan ini dengan menggunakan rahasia yang sama di beberapa tombol. Kami akan segera membahasnya.
Mengacaukan enkripsi yang sempurna
Mengapa OTP tidak bisa dipecahkan? Memecah sebagian besar skema enkripsi sering bermuara pada probabilitas dan statistik. Misalnya, jika Anda mengenkripsi teks dengan Caesar Cipher di atas, setiap huruf dalam plaintext dipetakan ke huruf tunggal lainnya setiap kali terjadi pada ciphertext. Jika Anda tahu bahwa teks asli dalam bahasa Inggris, di mana surat yang paling umum digunakan adalah “E”, ini adalah taruhan yang baik bahwa jika “Q” adalah huruf yang paling umum di ciphertext, itu adalah singkatan dari “E”. Artinya, kami menemukan kesamaan statistik antara plaintext dan ciphertext, dan menggunakannya untuk membuat jembatan di antara keduanya.
Menggunakan kunci rahasia yang selama plaintext, dan dipilih secara acak, memecah hubungan statistik dengan ciphertext. Diberikan ciphertext spesifik yang ditulis pada kartu saya, setiap pin dari 0000 hingga 9999 dimungkinkan, dan jika kuncinya dipilih secara acak, sama-sama mungkin. Tidak ada informasi tentang plaintext di Ciphertext – itu pada dasarnya adalah bukti Claude Shannon (PDF benar-benar klasik) singkatnya. Dan itu sebabnya OTP tidak bisa dipecahkan.
Diana satu kali pad [AS NSA], Domain Publik ini sebenarnya adalah kunci untuk memahami bidang kriptografi: Ini adalah upaya untuk mengacak informasi tentang plaintext selama proses enkripsi sehingga meskipun kunci yang lebih pendek digunakan, no Jejak plaintext yang relevan secara statistik tetap. Keinginan untuk kunci pendek ini bukan hanya masalah kenyamanan: bayangkan bahwa Anda dan Hackaday harus bertukar 500 kib data acak hanya untuk mengunduh artikel ini dan membacanya. Bayangkan panjang kata sandi wifi yang harus Anda tulis untuk tamu! Ini adalah perasaan di mana OTP sepele dan tidak menarik – mungkin tidak dapat dipecahkan, tetapi rahasianya terlalu lama untuk sebagian besar aplikasi. Real Crypto adalah tentang menemukan algoritma yang merusak hubungan statistik dengan minimum bahan utama.
Dengan pemikiran itu, Anda dapat mengacaukan implementasi OTP dengan menggunakan kata sandi pendek atau non-acak. Bayangkan menggunakan 1 sebagai kata sandi Anda dan ulangi seperlunya; Ciphertext kami akan membaca 2345, dan pin akan ditebak pada percobaan kedua. Anda juga ingin menggunakan kata sandi acak; Memilih 0000 karena membuat matematika mudah adalah satu-satunya hal yang lebih buruk daripada di atas. (Meskipun, secara ketat, saya akan kembali jika saya mendapat 0000, 1111, 9999, 1234, 4321, atau sejenisnya.) Bagaimanapun, jangan gunakan ulang tahun Anda. Jumlah telepon lama teman masa kecil mungkin dapat diterima.
Peran aritmatika modulo sedikit lebih halus. Fungsi apa pun yang digunakan, serangkaian karakter yang mungkin dalam plaintext harus memetakan satu-ke-satu dengan ciphertext. Mengapa? Bayangkan Anda menggunakan tambahan sederhana alih-alih penambahan mod-10. Untuk mendapatkan digit terakhir dari pin ciphertext kami, kami menggunakan 4 – 7 = -3 -> 7 dan didekripsi dengan 7 + 7 = 14 -> 4. Jika kami menulis -3 sebagai gantinya, penyerang akan tahu bahwa digit terakhir kami tidak dapat ‘T menjadi lebih besar dari 6 karena menambahkan 9, nilai maksimum, hanya memberikan 6. Kami telah membocorkan informasi dengan memiliki set lebih besar di ciphertext daripada dalam plaintext.
Dan itu meninggalkan cara terakhir untuk mengacaukan: menggunakan kembali pad “satu kali”. Jelas, kan? Salah.
Mesin Lorenz, Domain Publik
Di satu sisi, penggunaan kembali adalah tanggung jawab yang pasti. Menggunakan kembali kata sandi dalam skema enkripsi yang sangat mirip memecahkan “tunny”, kode penting selama Perang Dunia II. Pesan terenkripsi 4.000 karakter dikirim tetapi tidak diterima dengan benar. Pengirim kembali mengirim pesan, dengan rahasia yang sama tetapi membuat perubahan kecil dalam teks, menggunakan singkatan yang berbeda dan sebagainya. Ini memberi sekutu cukup untuk menghancurkan tunny dan merekayasa balik mesin yang mengenkripsi itu. tamat.
Inilah matematika yang membuat Tunny Decrypt bekerja, dan harus meyakinkan Anda untuk hampir tidak pernah menggunakan kembali kunci. Jika kami menyandikan pesan A dan B dengan kunci rahasia C, dan seseorang sengaja mendengar keduanya, mereka hanya dapat memod bersama-sama untuk mendapatkan (mod c) mod (b mod c) = (mod b) mod c mod c = a Mod B, di mana mod adalah operator modulo bitwise atau angka-bijaksana yang sekarang kita gunakan. Sejak mengambil modulo biner adalah kebalikannya sendiri, hasilnya adalah sesuatu yang terkait dengan plaintext, dan independen dari kunci rahasia.
Dari sini, membandingkan tebakan pintar untuk A dan B dan membandingkannya dengan hasil Mod B dapat memecahkan kode. Jadi jika Anda cukup yakin bahwa “serangan” muncul di kedua teks (tipe crypto selalu mengenkripsi “serangan saat fajar”),Maka Anda dapat mencoba memodifikasi “serangan” bersama-sama di posisi yang berbeda sampai Anda mendapatkan kecocokan dengan mod B.
Akhir Kejutan.
Tapi inilah twist terakhir! Kita bisa pergi dengan menggunakan kembali kunci rahasia di semua kartu bank kita, bahkan meskipun matematika di atas. Mengapa? Karena pin itu sendiri acak. Berbeda dengan pesan-pesan bahasa alami yang dikirim selama masa perang, mod B sama acaknya dengan mod C jika baik A dan B adalah pin acak.
Jadi beginilah cara seorang hacker ingat pin: dengan belajar banyak tentang pad satu kali, bagaimana cara memecahnya, dan bagaimana itu tetap berguna jika pesan yang perlu dilindungi adalah pendek. Dan bagaimana, untuk pesan tertentu, Anda bahkan dapat melanggar aturan.