Pengantar Kriptografi Modern
Kriptografi adalah ilmu menyimpan rahasia atau lebih khusus ilmu menyamar. Kriptografi telah berkembang lebih jauh dan sekarang meliputi berkas integritas pesan, otentikasi pengirim, dan pseudo-random generator nomor.
Kebanyakan artikel tentang kriptografi lebih skim fakta-fakta dan biasanya menutupi substitusi abjad paling dasar dan permutasi algoritma enkripsi. Sementara saya akan menyebutkan di awal sehingga tetap membuat konsep yang lebih modern.
Pada artikel ini, saya akan membahas awal kriptografi. Kemudian saya akan menutupi apa artinya sebuah algoritma enkripsi untuk menjadi pecah dan bisa dipecahkan. Kemudian akan mencakup fungsi iterasi dengan perhatian khusus pada Pergantian Permutasi Network (SPN). Akhirnya, saya akan menyebutkan apa enkripsi dapat dilakukan dan apa yang tidak bisa dilakukan.
Catatan: Semua contoh dalam artikel ini akan mengikuti format berikut.
• Kode terenkripsi unbolded dan tidak dikapitalisasi
• Dienkripsi kode bold dan dikapitalisasi
Sebuah Contoh Sederhana
Semua algoritma enkripsi didasarkan pada transformasi dan permutasi dari unsur-unsur informasi. Contoh klasik dari transformasi dengan substitusi adalah Caesar cipher dan turunannya, sebagai contoh Vigenere, kita bisa memiliki kalimat berikut...
the quick brown fox jumps over the lazy dog
Kalimat ini bisa dienkripsi dengan cipher Caesar dengan kunci dari "b" ...
VJKS WKEM DTQY PHQZ LWOR GFQX GTVJ KNCB AFQI
Perhatikan bahwa surat sudah bertambah dua dan format dihapus. Vigenere bekerja dengan cara yang sama, tapi bukan satu huruf atau tombol angka, menggunakan beberapa huruf dan angka. Misalnya, kalimat yang sama sekarang dienkripsi dengan kata kunci "disney" ...
XQXE ZHGT UFTV Rohl OTQY XRTU IAMV JKEI RRTF
Akhirnya, kita dapat menggunakan cipher transposisi. Sebuah cipher transposisi tidak mengubah distribusi surat itu. Sebaliknya, itu hanya mengacak pesanan mereka. Sebuah pagar cipher adalah salah satu yang paling terkenal dari transposisi sederhana. Pertama Anda mengambil kalimat yang Anda ingin mengkodekan dan menulis mereka dalam formasi seperti ini...
teucbonojmeoeteayo
hqikrwfxupdvrhlzdg
Kemudian Anda menyalin setiap baris bawah...
TEUC BONO JMEO ETEA YOHQ IKRW FXUP DVRH LZDG
Dalam setiap kasus, kalimat dikodekan sehingga Anda tidak bisa hanya membacanya. Namun, bagaimana jika seseorang ingin membacanya cukup untuk mencoba dan istirahat itu?
Dasar Teori Pembacaan Sandi
Pada akhirnya informasi tidak surat maupun koleksi bit. informasi adalah pola surat-surat ini dan bit membuat. Kriptanalisis adalah semua tentang mencari pola yang dapat memberikan petunjuk untuk apa kuncinya.
Pada intinya, kriptanalis mencari informasi satu set data yang telah dienkripsi atau meta data yang berhubungan dengan data yang dienkripsi. Sebagian besar ini adalah di luar lingkup artikel ini, tapi mungkin akan mencakup nanti.
Sebelum saya berbicara tentang teori di balik kekuatan algoritma enkripsi, saya pertama kali akan menggunakan contoh. Lihatlah contoh pertama saya menggunakan cipher Caesar.
Misalkan penyerang (sering disebut Oscar dalam banyak kasus) tahu bahwa kata-kata itu dienkripsi dengan cipher Caesar. Dia mungkin mencoba untuk brute force jawaban dengan menebak beberapa kunci dekripsi...
"A" uifr vjdl cspx ogpy kvnq fepw FSUI fmba Zef
"B" theq uick alis nfox melompat edov erth elaz ydog
"C" sgdp thbj aqnv menw Knlo`s dcnu dqsg dkzy xcnf...
Caesar cipher sangat rentan terhadap serangan brute-force karena memiliki ruang kunci yang sangat kecil. Sebuah ruang utama adalah jumlah kemungkinan kunci, biasanya diwakili dengan modal K, subscript l, untuk menunjukkan jumlah nilai sebuah 'sepotong' kunci memiliki, dan superscript untuk mewakili jumlah buah per kunci. Nilai-nilai umum untuk l 2, 10, dan 26. Dalam kasus cipher Caesar, ruang utamanya adalah K sub 26, yang sama dengan 26. Angka itu cukup kecil bahwa Caesar dapat dipaksa dengan tangan tanpa komputer.
Cara yang lain untuk mengumpulkan informasi tentang kunci ini adalah dengan melihat pola dalam surat-surat dan menghitung jumlah kemunculan huruf individu dan bigrams. Kebanyakan bahasa memiliki pola yang dilestarikan melekat melalui proses enkripsi. Memang ada banyak cara untuk menemukan pola, tapi untuk artikel ini, hal yang paling penting untuk diingat adalah bagaimana bahwa fakta ini benar.
Ada Beberapa Sistem Unbreakable?
Jawabannya panjang dan membutuhkan beberapa informasi. Pertama, kita harus menyadari bahwa untuk semua n-gram (n potongan informasi berturut-turut), ada kemungkinan tertentu yang melekat pada penampilan mereka. Ada beberapa yang sangat umum.
Misalnya, huruf e sangat umum dalam bahasa Inggris, operator 'JGE' adalah umum dalam perakitan, pitches tertentu suara lebih sering terjadi pada musik, dan sebagainya. N-gram dapat mewakili apa saja dari kata-kata dan kalimat, untuk kode dan algoritma. Selanjutnya, frekuensi ini dapat ditentukan sebelumnya jika penyerang tahu apa yang dia cari.
Kedua, kita umumnya menganggap bahwa kunci yang dipilih secara acak. Artinya kita mengasumsikan pengetahuan yang telah diberikan tentang kunci kami sebelumnya dipilih dari keyspace kami, penyerang tidak dapat menentukan kunci bersih yang akan digunakan.
Catatan bahwa ini adalah asumsi, dan itu tidak selalu benar. Beberapa ada sistem enkripsi yang telah rusak karena sejumlah pembangkit yang buruk. Namun demikian, ketika menganalisis kekuatan sistem, kita mengasumsikan informasi tentang kunci yang dapat diperoleh dari sistem itu sendiri, bukan yang mendasari masalah dengan implementasi. Sekarang kita bisa memahami apa artinya dipecahkan.
Misalkan kita memiliki satu set probabilitas n-gram dan kunci secara acak. Menurut Shannon (informasi teori asli), "Sebuah sistem bisa dipecahkan jika hanya ada dari setiap ciphertext diberikan, bahwa probabilitas ciphertext menjadi sama dengan plaintext tertentu diberi kunci tertentu, sama dengan probabilitas menerima plaintext yang acak. Nah mari kita kembali ke cipher Caesar sejenak.
Misalkan saya mengirim surat seperti "e" dan dienkripsi dengan huruf yang dipilih secara acak "b". Misalkan penyerang menerima teks "g". Entah bagaimana menentukan apa surat saya dikirim Anda dari surat yang saya miliki.
Dia bisa berkonsultasi daftarnya probabilitas, tapi ini memberikan dia tidak ada informasi lain tentang kecenderungan saya untuk mengirimkan e surat dari dia sudah punya. Memang, ia hanya menyadari fakta bahwa saya telah mengirim Anda hanya satu huruf. Ini tidak akan membantu untuk brute force identitas huruf baik, karena hal ini hanya akan memberinya daftar surat tapi tidak ada informasi tentang kemungkinan saya memiliki yang dipilih itu.
Caesar cipher bisa dipecahkan dalam kasus ini. Bahkan, Caesar cipher bisa dipecahkan untuk semua panjang plaintext sama dengan 1, dan cipher Vigenere bisa dipecahkan untuk semua panjang plaintext sama dengan keylength tersebut.
Shannon juga memiliki definisi untuk cipher yang kuat, tapi saya akan menggantikan definisi nya untuk lebih sederhana.
Sebuah cipher adalah kuat (meskipun tidak bisa dipecahkan) jika dan hanya jika, untuk semua jumlah yang wajar dari daya komputasi dan untuk semua jumlah waktu yang wajar, probabilitas bahwa penyerang akan memecahkan kode tertentu kurang dari timbal balik dari nilai melanggar kode.
Untuk membuat yang lebih jelas, saya mencoba untuk menentukan atau tidak skema enkripsi saya cukup baik untuk melindungi nomor kartu kredit limit $ 1.000 saya. Nilai penyerang akan mendapatkan dari melanggar enkripsi kartu tertentu saya adalah $ 1.000. Mari kita juga rasa kartu berakhir (dan kehilangan semua nilai) dalam dua tahun.
Akhirnya, penyerang memiliki superkomputer. Skema enkripsi saya buat akan menjadi kuat, jika setelah dua tahun dari penyerang mencoba untuk kekerasan atau menganalisis sistem saya, probabilitas kebetulan mendapatkan kunci yang tepat dan karenanya mendapatkan nomor kartu saya kurang dari 1/1000.
Ini berarti bahwa jika penyerang tahu sebelumnya berapa lama akan mengambil, dan bahwa kesempatan keberhasilan kurang dari 1/1000, maka ia akan tahu untuk semua dua tahun bekerja, ia bisa berharap, rata-rata nilai kurang dari satu dolar.
Jelas kerangka waktu dapat berubah (dalam perang perintah terenkripsi tertentu mungkin hanya berguna untuk satu bulan paling banyak), nilai dapat mengubah (database diisi dengan kartu kredit misalnya bernilai lebih), dan apa yang dianggap wajar dalam daya komputasi akan berubah tergantung pada siapa penyerang (pemerintah memiliki lebih banyak daripada hacker rata-rata).
Sekarang bahwa saya telah membahas apa cipher yang kuat, saya akan mencakup jenis cipher modern yang baik populer dan kuat (tergantung pada cipher digunakan).
Pergantian Permutasi Networks
Ini adalah salah satu jenis yang paling populer dari cipher blok simetris yang digunakan saat ini (Feistel). Sama seperti namanya, jenis ini cipher menggunakan kedua substitusi dan permutasi untuk mengubah plaintext menjadi ciphertext. Untuk memahami bagaimana ini bekerja, Anda harus terlebih dahulu memahami bahwa cipher ini pertama memecah data ke dalam potongan.
Setiap potongan terdiri dari sejumlah byte disebut kata. Sebagai contoh, saya akan membuat sebuah SPN yang memiliki bagian substitusi, bagian permutasi, dan bagian whitening. Misalkan saya memiliki kode heksadesimal:
0xa258fe1b
Jika saya mendefinisikan kata ukuran saya menjadi 4 bit (1/2 byte), maka saya bisa membaginya seperti ini ...
2 5 8 fe 1 b
Untuk tahap substitusi, saya akan menambahkan tiga untuk masing-masing ...
D 5 8 B 2 1 4 E
Kemudian saya akan mengubah urutan data dengan memindahkan setiap kata dua ke kanan dan kemudian beralih kata kedua dengan ketiga, keempat dengan kelima, dan seterusnya sampai delapan diaktifkan dengan yang pertama.
1 DE 8 5 2 B 4
Akhirnya, saya akan mengambil kunci saya (0x01234567) dan saya akan XOR untuk data saat ini. Proses ini disebut pemutih.
1 CC 6 1 7 D 3
Ini mungkin tampak seperti hasil akhir, tapi tidak! Dalam SPN hari ini, kita akan melakukan hal ini beberapa kali sebelum selesai.
Rijndael, alias AES, menggunakan satu set yang lebih kompleks dari substitusi dan permutasi, menambahkan dalam key generator yang menghasilkan kunci untuk setiap siklus dan mengulangi proses dua belas kali! Proses ini cukup rumit dan acak bahwa setiap perubahan kunci atau plaintext akan mempengaruhi setiap bit di blok tersebut.
Pro dan Kontra Enkripsi
Enkripsi tidak bisa melakukan semuanya untuk Anda. Ada banyak hal yang dapat dilakukan sekalipun. Sebagai contoh enkripsi dapat digunakan untuk membuat pesan aman jelas. Dengan skema enkripsi yang cukup kuat dan kunci cukup kuat, bahkan pemerintah tidak dapat memecahkan enkripsi.
Kriptografi juga digunakan untuk jaminan integritas menggunakan berkas hash, kita bisa yakin bahwa sejak terakhir kali file itu 'hash', file belum diubah. Akhirnya, dengan menggunakan hash dan skema tanda tangan, kita bisa memverifikasi identitas seseorang tanpa setiap pertemuan mereka. Namun enkripsi tidak bisa melakukan semuanya.
Seperti yang saya katakan, skema enkripsi yang cukup baik tidak dapat rusak bahkan oleh pemerintah. Jika pemerintah yang dimaksud adalah benar-benar tertarik pada informasi Anda, mereka dapat hanya memaksa Anda untuk memberi mereka password menggunakan cara apapun yang tersedia bagi mereka. Hal ini membawa saya ke titik kedua saya.
Enkripsi tidak menjamin kerahasiaan komunikasi, hanya konten. Bahkan, fakta bahwa ada sesuatu yang dienkripsi begitu jelas bahwa entitas kuat dapat menggunakannya untuk menandai komunikasi Anda di internet. Proses ini disebut analisis lalu lintas dan, sekali lagi, di luar lingkup artikel ini.
Jika Anda ingin mencegah analisis lalu lintas, Anda perlu mengaburkan endpoint dengan proxy (seperti TOR rute), atau Anda perlu untuk menyembunyikan kenyataan bahwa Anda bahkan berkomunikasi secara diam-diam dengan steganografi.
Saya harap Anda menikmati artikel ini. Jika Anda menyukai artikel ini, silakan balas di bawah. Selamat mencoba!
Comments
Post a Comment
WeLcOmE TO My SiTeS