Perbezaan antara penyulitan simetri dan asimetri. Apa itu HTTP. Sistem kriptografi kunci awam

Terdapat dua metodologi untuk pemprosesan maklumat kriptografi menggunakan kekunci - simetri dan tidak simetri.

Simetri (rahsia) satu metodologi di mana kedua-dua untuk penyulitan dan penyahsulitan, pengirim dan penerima menggunakan kunci yang sama, penggunaan yang dipersetujui sebelum permulaan interaksi (Rajah 2.1). Jika kunci tidak dikompromi, penyahsulitan secara automatik mengesahkan pengirim, kerana hanya pengirim yang mempunyai kunci untuk menyulitkan maklumat, dan hanya penerima yang mempunyai kunci untuk menyahsulit maklumat. Oleh kerana pengirim dan penerima adalah satu-satunya orang yang mengetahui perkara ini kunci simetri, jika kunci terjejas, hanya interaksi antara kedua-dua pengguna ini akan terjejas.

nasi. 2.1

Algoritma penyulitan simetri tidak menggunakan kunci dengan baik panjang panjang dan boleh menyulitkan sejumlah besar data dengan cepat.

Alat yang tersedia hari ini yang menggunakan metodologi simetri termasuk, sebagai contoh, rangkaian ATM. Sistem ini adalah pembangunan asal bank yang memilikinya dan bukan untuk dijual.

Antara algoritma penyulitan simetri, algoritma yang paling banyak digunakan ialah penyulitan DES(dicipta oleh IBM), yang disyorkan dalam sektor terbuka ekonomi AS. Algoritma ini pada mulanya ditakdirkan untuk jangka hayat terhad kerana panjang kunci dihadkan kepada 56 bit.

Pada awal tahun 1997, algoritma DES, yang mempunyai kunci 56-bit, telah dicabar. Pada 17 Jun 1997, selepas 140 hari, kunci telah dinyahsulit. Ini bermakna kematian maya DES sebagai standard penyulitan. Malah, apabila, pada awal tahun 1998, pertandingan seterusnya untuk mencari kunci DES berjaya dalam hanya 39 hari, Institut Piawaian Kebangsaan (NIST) AS mengumumkan pertandingan untuk meluluskan piawaian AES (Advanced Encryption Standard) baharu. AES telah menjadi algoritma simetri terbuka sepenuhnya dengan saiz kunci 128, 192, 256 bit.

Keadaan ini diburukkan lagi oleh fakta bahawa, menurut undang-undang AS, eksport sebagai produk perisian Sistem penyulitan dengan kunci tidak lebih daripada 128 bit dibenarkan. Iaitu, apabila membeli sistem penyulitan dengan kunci 1024 atau 2048 atau lebih bit, anda perlu tahu bahawa apabila kunci ditukar, bahagian aktif (berubah) akan menjadi bahagian 128-bit kunci. Sistem penyulitan simetri mempunyai satu kelemahan biasa, iaitu kesukaran mengedarkan kunci. Jika kunci dipintas oleh pihak ketiga, sistem perlindungan kriptografi sedemikian akan terjejas. Jadi, apabila menggantikan kunci, ia mesti dimajukan secara sulit kepada peserta dalam prosedur penyulitan. Jelas sekali, kaedah ini tidak sesuai apabila anda perlu mewujudkan sambungan selamat dengan beribu-ribu atau lebih pelanggan Internet. Masalah utama ialah cara menjana dan menghantar kunci dengan selamat kepada peserta dalam interaksi. Bagaimana untuk mewujudkan saluran penghantaran maklumat yang selamat antara peserta interaksi untuk memindahkan kunci ke atas saluran komunikasi yang tidak selamat? Kekurangan kaedah pertukaran kunci yang selamat mengehadkan penyebaran teknik penyulitan simetri di Internet.

Mereka cuba menyelesaikan masalah ini dengan membangun tidak simetri (terbuka) metodologi penyulitan. Ia menyulitkan dokumen dengan satu kunci dan menyahsulitnya dengan yang lain. Setiap peserta dalam penghantaran maklumat secara bebas menjana dua nombor rawak (kunci rahsia dan awam).

Kunci awam dihantar melalui saluran komunikasi terbuka kepada peserta lain dalam proses perlindungan kripto, tetapi Kunci rahsia dirahsiakan.

Pengirim menyulitkan mesej kunci awam penerima, A Hanya pemilik kunci peribadi boleh menyahsulitnya(Gamb. 2.2).

nasi. 2.2

Kunci awam tidak perlu disembunyikan. Tidak kira siapa yang tahu kunci yang diberi, kerana ia hanya bertujuan untuk penyulitan data. Kaedah ini sesuai untuk aplikasi luas. Jika anda menetapkan setiap pengguna di Internet pasangan kunci mereka sendiri dan menerbitkan kunci awam sebagai nombor dalam buku telefon, maka hampir semua orang akan dapat bertukar-tukar mesej yang disulitkan antara satu sama lain. Ia kelihatan seperti kotak dengan dua pintu di sisi yang berbeza. Setiap pintu mempunyai kunci sendiri. Dokumen diletakkan di dalam kotak, dikunci dan dibuka di sisi lain dengan kunci penerima. Ini menggunakan teori nombor perdana. Algoritma keselamatan kriptografi ini dipanggil RSA.

Semua sistem kriptografi asimetri tertakluk kepada serangan kekerasan dan oleh itu mesti menggunakan kunci yang lebih panjang daripada yang digunakan dalam sistem kriptografi simetri untuk menyediakan tahap keselamatan yang setara. Ini mempunyai kesan segera ke atas sumber pengkomputeran yang diperlukan untuk penyulitan. RSA telah menjadi algoritma kunci asimetri standard industri yang digunakan oleh perniagaan untuk tandatangan digital dan penyulitan.

Sistem penyulitan simetri dan asimetri masing-masing mempunyai kelebihan dan kekurangan masing-masing. Kelemahan sistem penyulitan simetri ialah sukar untuk menggantikan kunci yang terjejas, dan keburukan sistem tidak simetri– pada kelajuan operasi yang agak rendah. Dari segi kekuatan kriptografi, panjang kunci 128 bit dalam sistem simetri sepadan dengan kunci 2304 bit dalam sistem tidak simetri.

Pada masa ini, sistem penyulitan menggunakan algoritma gabungan telah menjadi meluas, membenarkan penggunaan pemindahan terbuka kunci penyulitan (seperti dalam RSA) pada kelajuan penyulitan tinggi yang wujud dalam AES.

Untuk mengelakkan kelajuan perlahan algoritma penyulitan asimetri, kunci simetri sementara dijana untuk setiap mesej. Mesej disulitkan menggunakan kunci sesi simetri sementara ini. Kunci sesi ini kemudian disulitkan menggunakan kunci awam asimetri penerima dan algoritma asimetri penyulitan. Memandangkan kunci sesi jauh lebih pendek daripada mesej itu sendiri, masa penyulitannya akan menjadi agak singkat. Selepas ini, kunci sesi yang disulitkan ini, bersama-sama dengan mesej yang disulitkan, dihantar kepada penerima (Gamb. 2.3).

nasi. 2.3

Penerima menggunakan algoritma penyulitan asimetri yang sama dan kunci rahsia mereka untuk menyahsulit kunci sesi, dan kunci sesi yang terhasil digunakan untuk menyahsulit mesej itu sendiri (Rajah 2.4).

nasi. 2.4

Sistem kriptografi kunci awam kini digunakan secara meluas dalam pelbagai protokol rangkaian, khususnya, dalam protokol TLS dan SSL pendahulunya (mendasari HTTPS), dalam SSH. Juga digunakan dalam PGP, S/MIME.

  • pembangunan laman web,
  • Algoritma
    • Terjemahan

    Bagaimanakah HTTPS berfungsi pula? Ini adalah soalan yang saya telah bergelut selama beberapa hari dalam projek kerja.

    Sebagai pembangun Web, saya faham bahawa menggunakan HTTPS untuk melindungi data pengguna adalah sangat, sangat idea yang bagus, tetapi saya tidak pernah memahami cara HTTPS sebenarnya berfungsi.

    Bagaimanakah data dilindungi? Bagaimana klien dan pelayan boleh memasang sambungan selamat, jika seseorang sudah mendengar saluran mereka? Apakah sijil keselamatan dan mengapa saya perlu membayar seseorang untuk mendapatkannya?

    Saluran paip

    Sebelum kita menyelami cara ia berfungsi, mari kita bincangkan secara ringkas tentang sebab penting untuk melindungi sambungan Internet dan perkara yang dilindungi HTTPS.

    Apabila penyemak imbas membuat permintaan ke tapak web kegemaran anda, permintaan itu mesti melalui banyak rangkaian yang berbeza, mana-mana daripadanya berpotensi digunakan untuk mencuri dengar atau mengganggu sambungan yang telah ditetapkan.

    Daripada anda komputer sendiri ke komputer anda yang lain rangkaian tempatan, melalui penghala dan suis, melalui ISP anda dan melalui banyak pembekal perantaraan lain - sejumlah besar organisasi menyampaikan data anda. Jika penyerang berakhir dengan sekurang-kurangnya salah satu daripada mereka, dia mempunyai peluang untuk melihat data yang dihantar.

    Biasanya, permintaan dihantar menggunakan HTTP biasa, di mana kedua-dua permintaan pelanggan dan respons pelayan dihantar borang terbuka. Dan terdapat banyak hujah yang baik mengapa HTTP tidak menggunakan penyulitan secara lalai:

    Ia memerlukan lebih banyak kuasa pengkomputeran
    Lebih banyak data dipindahkan
    Caching tidak boleh digunakan

    Tetapi dalam beberapa kes, apabila maklumat yang sangat sensitif dihantar melalui saluran komunikasi (seperti kata laluan atau maklumat kad kredit), adalah perlu untuk menyediakan langkah tambahan untuk mengelakkan penyambungan pendengaran pada sambungan tersebut.

    Keselamatan Lapisan Pengangkutan (TLS)

    Sekarang kita akan menyelami dunia kriptografi, tetapi kita tidak memerlukan pengalaman istimewa untuk ini - kita akan mempertimbangkan hanya yang paling isu umum. Jadi, kriptografi membolehkan anda melindungi sambungan daripada penyerang berpotensi yang ingin mempengaruhi sambungan atau sekadar mencuri dengar.

    TLS - pengganti SSL - ialah protokol yang paling kerap digunakan untuk menyediakan sambungan HTTP yang selamat (yang dipanggil HTTPS). TLS terletak pada lapisan di bawah protokol HTTP dalam model OSI. Ringkasnya, ini bermakna semasa proses melaksanakan permintaan, mula-mula semua "perkara" yang dikaitkan dengan sambungan TLS berlaku dan selepas itu semua yang berkaitan dengan sambungan HTTP.

    TLS ialah sistem kriptografi hibrid. Ini bermakna ia menggunakan beberapa pendekatan kriptografi, yang akan kita lihat seterusnya:

    1) Penyulitan asimetri (sistem kripto kunci awam) untuk menjana kunci rahsia dan pengesahan yang dikongsi (iaitu, mengesahkan bahawa anda adalah diri anda yang anda katakan).
    2) Penyulitan simetri, yang menggunakan kunci rahsia untuk menyulitkan permintaan dan respons selanjutnya.

    Sistem kriptografi kunci awam

    Sistem kriptografi kunci awam ialah sejenis sistem kriptografi, apabila setiap pihak mempunyai kedua-dua kunci awam dan peribadi, berkaitan secara matematik antara satu sama lain. Kunci awam digunakan untuk menyulitkan teks mesej menjadi "omong kosong", manakala kunci peribadi digunakan untuk menyahsulit dan mendapatkan semula teks asal.

    Sebaik sahaja mesej telah disulitkan menggunakan kunci awam, ia hanya boleh dinyahsulit oleh kunci persendiriannya yang sepadan. Tiada kunci boleh melaksanakan kedua-dua fungsi. Kunci awam diterbitkan dalam akses terbuka tanpa risiko mendedahkan sistem kepada ancaman, tetapi kunci persendirian tidak boleh sampai ke tangan sesiapa sahaja yang tidak mempunyai hak untuk menyahsulit data. Jadi, kami mempunyai kunci - awam dan peribadi. Salah satu kelebihan penyulitan asimetri yang paling mengagumkan ialah kedua-dua pihak, sebelum ini sepenuhnya kawan yang berilmu rakan, boleh mewujudkan sambungan selamat, pada mulanya bertukar data melalui sambungan terbuka dan tidak terjamin.
    Pelanggan dan pelayan menggunakan kunci peribadi mereka sendiri dan kunci awam yang diterbitkan untuk mencipta kunci rahsia yang dikongsi untuk sesi tersebut.

    Ini bermakna jika seseorang berada di antara pelanggan dan pelayan dan memerhati sambungan, dia masih tidak akan dapat mengetahui sama ada kunci peribadi pelanggan, kunci peribadi pelayan atau kunci rahsia sesi.

    Bagaimana ini boleh berlaku? Matematik!

    Algoritma Diffie-Hellman

    Salah satu pendekatan yang paling biasa ialah algoritma pertukaran kunci Diffie-Hellman (DH). Algoritma ini membolehkan pelanggan dan pelayan bersetuju dengan kunci rahsia yang dikongsi tanpa perlu menghantar kunci rahsia melalui sambungan. Oleh itu, penyerang yang mendengar saluran tidak akan dapat menentukan kunci rahsia, walaupun mereka memintas semua paket data tanpa pengecualian.

    Sebaik sahaja kunci telah ditukar menggunakan algoritma DH, kunci rahsia yang terhasil boleh digunakan untuk menyulitkan komunikasi selanjutnya dalam sesi itu menggunakan penyulitan simetri yang lebih mudah.

    sedikit matematik...

    Fungsi matematik yang mendasari algoritma ini adalah penting ciri tersendiri- ia agak mudah untuk dikira dalam arah hadapan, tetapi boleh dikatakan tidak dikira dalam arah sebaliknya. Ini betul-betul kawasan di mana nombor perdana yang sangat besar dimainkan.

    Biarkan Alice dan Bob menjadi dua pihak yang bertukar kunci menggunakan algoritma DH. Mula-mula mereka bersetuju atas dasar tertentu akar(biasanya nombor kecil seperti 2,3 atau 5) dan nombor perdana yang sangat besar perdana(lebih daripada 300 digit). Kedua-dua nilai dihantar dalam teks yang jelas melalui saluran komunikasi, tanpa ancaman menjejaskan sambungan.

    Ingat bahawa kedua-dua Alice dan Bob mempunyai kunci peribadi mereka sendiri (lebih daripada 100 digit), yang tidak pernah dihantar melalui saluran komunikasi.

    Campuran dihantar melalui saluran komunikasi campuran, diperoleh daripada kunci persendirian serta nilai perdana Dan akar.

    Oleh itu:
    Campuran Alice = (akar ^ Rahsia Alice) % perdana
    Campuran Bob = (akar ^ Rahsia Bob) % perdana
    di mana % ialah baki bahagian

    Oleh itu, Alice mencipta campurannya berdasarkan nilai pemalar yang diluluskan ( akar Dan perdana), Bob melakukan perkara yang sama. Sebaik sahaja mereka mendapat nilai campuran satu sama lain, mereka menghasilkan tambahan operasi matematik untuk mendapatkan kunci peribadi sesi. Iaitu:

    pengiraan Alice
    (Campuran Bob ^ Rahsia Alice) % perdana

    pengiraan Bob
    (Campuran Alice ^ Rahsia Bob) % perdana

    Hasil daripada operasi ini ialah nombor yang sama untuk Alice dan Bob, dan nombor ini menjadi kunci peribadi sesi ini. Ambil perhatian bahawa kedua-dua pihak tidak perlu menghantar kunci peribadi mereka melalui saluran komunikasi, dan kunci rahsia yang terhasil juga tidak dihantar melalui sambungan awam. Hebat!

    Bagi mereka yang kurang mahir matematik, Wikipedia menyediakan gambaran yang sangat baik menerangkan proses ini menggunakan contoh mencampurkan warna:

    Perhatikan bagaimana warna permulaan (kuning) akhirnya menjadi warna "campuran" yang sama untuk Bob dan Alice. Satu-satunya perkara yang dihantar saluran terbuka komunikasi adalah warna separuh campuran, sebenarnya tidak bermakna kepada sesiapa sahaja yang mendengar saluran komunikasi.

    Penyulitan simetri

    Pertukaran kunci berlaku hanya sekali setiap sesi, semasa penubuhan sambungan. Sebaik sahaja pihak-pihak telah bersetuju dengan kunci rahsia, interaksi pelanggan-pelayan berlaku menggunakan penyulitan simetri, yang jauh lebih cekap untuk menghantar maklumat kerana tiada kos pengesahan tambahan diperlukan.

    Menggunakan kunci rahsia yang diperoleh sebelum ini dan perjanjian mengenai mod penyulitan, pelanggan dan pelayan boleh berkomunikasi dengan selamat dengan menyulitkan dan menyahsulit mesej yang diterima daripada satu sama lain menggunakan kunci rahsia. Penyerang yang menyambung ke saluran hanya akan melihat "sampah" berjalan ke sana ke mari merentasi rangkaian.

    Pengesahan

    Algoritma Diffie-Hellman membenarkan dua pihak mendapatkan kunci rahsia peribadi. Tetapi bagaimana kedua-dua pihak boleh memastikan bahawa mereka benar-benar bercakap antara satu sama lain? Kami belum bercakap tentang pengesahan lagi.

    Bagaimana jika saya menghubungi rakan saya, kami melakukan pertukaran kunci DH, tetapi tiba-tiba ternyata panggilan saya dipintas dan saya sebenarnya bercakap dengan orang lain?! Saya masih akan dapat berkomunikasi dengan selamat dengan orang ini - tiada orang lain yang boleh mendengar kami - tetapi ini bukan orang yang saya fikir saya sedang berkomunikasi. Ia tidak begitu selamat!

    Untuk menyelesaikan masalah pengesahan, kami memerlukan Infrastruktur Kunci Awam untuk memastikan subjek adalah seperti yang mereka katakan. Infrastruktur ini direka bentuk untuk mencipta, mengurus, mengedar dan membatalkan sijil digital. Sijil ialah perkara yang menjengkelkan yang anda perlu bayar untuk membolehkan tapak anda berfungsi melalui HTTPS.

    Tetapi apakah sebenarnya sijil itu, dan bagaimanakah ia memberi kita keselamatan?

    Sijil

    Dalam anggaran paling kasar, sijil digital ialah fail yang menggunakan tandatangan digital elektronik (lebih lanjut mengenainya dalam satu minit) dan mengaitkan kunci awam komputer dengan pemilikannya. Tandatangan digital pada sijil bermakna seseorang sedang mengesahkan bahawa kunci awam yang diberikan adalah milik orang atau organisasi tertentu.

    Pada asasnya, sijil mengaitkan nama domain dengan kunci awam tertentu. Ini menghalang kemungkinan penyerang memberikan kunci awam mereka dengan menyamar sebagai pelayan yang diakses oleh pelanggan.

    Dalam contoh telefon di atas, penggodam mungkin cuba menunjukkan kunci awamnya kepada saya dengan berpura-pura menjadi rakan saya - tetapi tandatangan pada sijilnya bukan tandatangan seseorang yang saya percayai.

    Untuk sijil yang boleh dipercayai oleh mana-mana pelayar web, ia mesti ditandatangani oleh pihak berkuasa pensijilan bertauliah (Certificate Authority, CA). CA ialah syarikat yang mengesahkan secara manual bahawa orang yang cuba mendapatkan sijil memenuhi dua syarat berikut:

    1. benar-benar wujud;
    2. mempunyai akses kepada domain yang ia cuba mendapatkan sijil.

    Setelah CA berpuas hati bahawa pemohon adalah benar dan benar-benar mengawal domain, CA menandatangani sijil untuk tapak tersebut, pada asasnya meletakkan setem kelulusan pada fakta bahawa kunci awam tapak itu sebenarnya adalah miliknya dan boleh dipercayai.

    Penyemak imbas anda telah dipramuat dengan senarai CA yang diiktiraf. Jika pelayan mengembalikan sijil yang tidak ditandatangani oleh CA bertauliah, amaran merah besar akan muncul. Jika tidak, semua orang boleh menandatangani sijil palsu.

    Jadi, walaupun penggodam mengambil kunci awam pelayannya dan menghasilkan sijil digital yang mengesahkan bahawa kunci awam ini dikaitkan dengan tapak web facebook.com, penyemak imbas tidak akan mempercayainya kerana sijil itu tidak ditandatangani oleh CA yang bertauliah.

    Perkara lain yang anda perlu tahu tentang sijil

    Pengesahan Dilanjutkan
    Selain sijil X.509 biasa, terdapat sijil pengesahan Lanjutan yang memberikan tahap kepercayaan yang lebih tinggi. Dengan mengeluarkan sijil sedemikian, CA melakukan lebih banyak pemeriksaan ke atas orang yang menerima sijil (biasanya menggunakan data pasport atau akaun).

    Apabila menerima sijil sedemikian, penyemak imbas memaparkan bar hijau dalam bar alamat, sebagai tambahan kepada ikon biasa dengan gembok.

    Melayan berbilang tapak web pada satu pelayan
    Memandangkan pertukaran data menggunakan protokol TLS berlaku sebelum sambungan HTTP bermula, masalah mungkin timbul jika beberapa tapak web terletak pada pelayan web yang sama, pada alamat IP yang sama. Penghalaan hos maya dijalankan oleh pelayan web, tetapi sambungan TLS berlaku lebih awal. Sijil tunggal untuk keseluruhan pelayan akan digunakan apabila meminta mana-mana tapak yang terletak pada pelayan, yang mungkin menyebabkan

    Kami melepaskan buku baru“Pemasaran Kandungan di Media Sosial: Cara Menguasai Pengikut Anda dan Membuat Mereka Jatuh Cinta dengan Jenama Anda.”

    Langgan

    HTTP ialah perkara yang membolehkan data dipindahkan. Pada mulanya, ia dicipta untuk menghantar dan menerima dokumen yang mengandungi pautan di dalam untuk membuat peralihan kepada sumber pihak ketiga.

    Singkatan berbunyi "HyperText Protokol Pemindahan”, yang diterjemahkan bermaksud “protokol penghantaran”. HTTP tergolong dalam kumpulan itu peringkat permohonan berdasarkan spesifikasi yang digunakan oleh OSI.

    Untuk lebih memahami maksud HTTP, mari kita lihat analogi mudah. Bayangkan anda sedang berkomunikasi dengan orang asing di rangkaian sosial. Dia menghantar mesej kepada anda Bahasa Inggeris, anda mendapatkannya. Tetapi anda tidak dapat memahami kandungan kerana anda tidak bercakap bahasa dengan baik. Untuk menguraikan mesej, gunakan kamus. Setelah memahami intipatinya, anda menjawab orang asing dalam bahasa Rusia dan menghantar jawapannya. Orang asing menerima jawapan dan, dengan bantuan penterjemah, mentafsir mesej. Untuk memudahkan keseluruhan mekanisme, protokol Internet HTTP melaksanakan fungsi penterjemah. Dengan bantuan mereka, penyemak imbas boleh menterjemah kandungan yang disulitkan halaman web dan memaparkan kandungannya.

    HTTP untuk apa?

    Protokol HTTP digunakan untuk bertukar maklumat menggunakan model pelayan pelanggan. Pelanggan mengarang dan menghantar permintaan kepada pelayan, kemudian pelayan memproses dan menganalisisnya, selepas itu respons dibuat dan dihantar kepada pengguna. Pada akhir proses ini, pelanggan mengeluarkan arahan baru, dan semuanya berulang.

    Oleh itu, protokol HTTP membolehkan anda bertukar maklumat antara pelbagai aplikasi pengguna dan pelayan web khas, serta menyambung ke sumber web (biasanya pelayar). Hari ini, protokol yang diterangkan memastikan operasi keseluruhan rangkaian. Protokol pemindahan data HTTP juga digunakan untuk menghantar maklumat melalui protokol lain lebih banyak lagi Level rendah cth WebDAV atau SOAP. Dalam kes ini, protokol adalah alat pengangkutan. Banyak program juga bergantung pada HTTP sebagai alat utama untuk bertukar maklumat. Data dibentangkan dalam pelbagai format, sebagai contoh, JSON atau XML.

    HTTP ialah protokol untuk bertukar maklumat melalui sambungan IP/TCP. Biasanya, pelayan menggunakan port TCP 80 untuk tujuan ini. Jika pelabuhan tidak didaftarkan, perisian pelanggan akan menggunakan port TCP 80 secara lalai. Dalam sesetengah kes, port lain boleh digunakan.

    DALAM protokol HTTP skim penyulitan simetri digunakan; ia menggunakan sistem kripto simetri. Sistem kriptografi simetri melibatkan penggunaan kunci yang sama untuk menyulitkan dan menyahsulit maklumat.

    Apakah perbezaan antara HTTP dan HTTPS

    Perbezaannya boleh dikesan walaupun dari penyahkodan singkatan. HTTPS adalah singkatan dari Hypertext Transfer Protocol Security. Oleh itu, HTTP ialah protokol bebas, dan HTTPS ialah lanjutan untuk melindunginya. Oleh maklumat HTTP dihantar secara tidak selamat, dan HTTPS menyediakan perlindungan kriptografi. Ini terutama berlaku untuk sumber dengan kebenaran yang bertanggungjawab. Ini mungkin rangkaian sosial atau tapak sistem pembayaran.

    Apakah bahaya menghantar data yang tidak dilindungi? Program pemintas boleh memindahkannya kepada penyerang pada bila-bila masa. HTTPS mempunyai organisasi teknikal yang kompleks, yang membolehkan anda melindungi maklumat dengan pasti dan menghapuskan kemungkinan akses yang tidak dibenarkan kepadanya. Perbezaannya terletak pada pelabuhan. HTTPS biasanya berfungsi pada port 443.

    Oleh itu, HTTP digunakan untuk pemindahan data, dan HTTPS membenarkan pemindahan data selamat menggunakan penyulitan dan kebenaran pada sumber dengan tahap keselamatan yang tinggi.

    Fungsi tambahan

    HTTP kaya dengan fungsi dan serasi dengannya pelbagai sambungan. Spesifikasi 1.1 yang digunakan hari ini membolehkan pengepala Naik Taraf digunakan untuk menukar dan berfungsi melalui protokol lain apabila bertukar data. Untuk melakukan ini, pengguna mesti menghantar permintaan kepada pelayan dengan pengepala ini. Jika pelayan perlu bertukar kepada pertukaran tertentu menggunakan protokol yang berbeza, ia mengembalikan permintaan kepada pelanggan, yang memaparkan status "426 Peningkatan Diperlukan".

    Ciri ini amat relevan untuk bertukar-tukar maklumat melalui WebSocket (mempunyai spesifikasi RFC 6455, membolehkan anda menukar data pada bila-bila masa, tanpa permintaan HTTP yang tidak perlu). Untuk berhijrah ke WebSocket, seorang pengguna menghantar permintaan dengan pengepala Naik Taraf dan nilai "websocket". Seterusnya, pelayan bertindak balas dengan "101 Protokol Penukaran." Selepas detik ini, pemindahan maklumat melalui WebSocket bermula.

    Terdapat sejumlah besar pernyataan berani yang terapung di Internet seperti penyulitan asimetri lebih baik daripada penyulitan simetri, sama seperti sebaliknya. Dan selalunya pemula mendengar kata-kata ini tanpa memahami maksudnya kita bercakap tentang. Dikatakan bahawa AES hebat atau, sebaliknya, peraturan RSA, dan semua orang diambil pada nilai muka. Walau bagaimanapun, pendekatan ini sering membawa kepada masalah apabila, disebabkan pemahaman yang tidak mencukupi tentang intipati isu itu, bahagian yang tidak diperlukan sepenuhnya dilaksanakan atau sistem ternyata tidak berdaya.

    Oleh itu, dalam artikel ini saya akan memberitahu anda minimum asas yang perlu diketahui oleh seorang pemula. Tidak akan ada formula kompleks atau justifikasi matematik, tetapi perbezaan antara penyulitan simetri dan asimetri akan dijelaskan, dan beberapa perkara penting juga akan diberikan. Tetapi perkara pertama dahulu.

    Penyulitan simetri

    Penyulitan simetri hanya menggunakan satu kata laluan (atau kerana ia juga dipanggil kunci). Mari kita lihat bagaimana semuanya berlaku. Ada sesetengah algoritma matematik penyulitan, yang menerima kata laluan dan teks sebagai input. Output adalah teks yang disulitkan. Untuk mendapatkan teks asal, kata laluan yang sama digunakan, tetapi dengan algoritma penyahsulitan (kadangkala ia mungkin sama).

    Dalam erti kata lain, sebaik sahaja seseorang mengetahui kata laluan ini, keselamatan serta-merta rosak. Oleh itu, jika penyulitan simetri digunakan, perhatian yang besar harus diberikan kepada isu mencipta dan mengekalkan keselamatan kata laluan itu sendiri. Ia tidak boleh dihantar dalam teks yang jelas, tidak kira sama ada rangkaian atau sekeping kertas yang dilampirkan pada monitor. Kata laluan mestilah cukup kompleks supaya ia tidak boleh diperolehi dengan kekerasan mudah. Jika kata laluan digunakan oleh beberapa orang, ia mesti difikirkan kaedah selamat pengedarannya, serta sistem amaran sekiranya kata laluan diketahui oleh orang lain.

    Walaupun hadnya, penyulitan simetri digunakan secara meluas. Terutamanya disebabkan oleh kemudahan pemahaman keseluruhan proses (satu kata laluan) dan beban teknikal (biasanya algoritma sedemikian cepat).

    Penyulitan asimetri

    Penyulitan asimetri menggunakan dua kata laluan - satu terbuka (awam) dan satu peribadi (rahsia). Buka kata laluan dihantar kepada semua orang, manakala kata laluan peribadi kekal di sisi pelayan atau penerima lain. Lebih-lebih lagi, nama itu selalunya bersyarat, kerana mesej yang disulitkan dengan salah satu kunci hanya boleh dinyahsulit menggunakan kunci lain. Dalam erti kata lain, kunci adalah setara dalam pengertian ini.

    Algoritma penyulitan sedemikian membolehkan kata laluan (kunci) diedarkan secara bebas melalui rangkaian, kerana tanpa kunci kedua adalah mustahil untuk mendapatkan mesej asal. Berdasarkan prinsip ini protokol SSL, yang memudahkan untuk mewujudkan sambungan selamat dengan pengguna disebabkan oleh fakta bahawa kunci peribadi (kata laluan) disimpan hanya pada bahagian pelayan. Jika anda perasan, mesej "sambungan tidak selamat" muncul secara berkala dalam penyemak imbas anda apabila anda membuka tapak dengan awalan https. Ini bermakna kemungkinan besar kunci persendirian telah lama dibuka, juga dikatakan terjejas, dan diketahui oleh penyerang. Oleh itu, sambungan selamat sedemikian mungkin tidak selamat.

    Dalam kes penyulitan asimetri, ia menjadi agak mudah dari segi menyimpan kata laluan, kerana kunci rahsia tidak perlu dipindahkan kepada sesiapa. Ia cukup untuk hanya seorang atau pelayan mengetahuinya. Selain itu, isu memecahkan kata laluan menjadi lebih mudah, kerana pelayan boleh menukar pasangan kunci pada bila-bila masa dan menghantar kata laluan awam yang dibuat kepada semua orang.

    Walau bagaimanapun, penyulitan asimetri adalah lebih "berat", dengan kata lain, ia memerlukan lebih banyak sumber komputer. Terdapat juga sekatan pada proses penjanaan kunci itu sendiri (mereka masih perlu dipilih). Oleh itu, dalam amalan, penyulitan asimetri biasanya digunakan hanya untuk pengesahan dan pengenalan pengguna (contohnya, log masuk ke tapak web), atau untuk mencipta kunci sesi untuk penyulitan simetri ( Kata laluan sementara untuk pertukaran data antara pengguna dan pelayan), atau untuk mencipta tandatangan digital yang disulitkan dengan kunci rahsia. Seperti yang anda mungkin sudah faham, dalam kes kedua, sesiapa sahaja boleh mengesahkan tandatangan sedemikian menggunakan kunci awam yang tersedia secara umum.

    Perkara Penting Mengenai Penyulitan Simetri dan Asimetri

    Perbezaan paling penting antara penyulitan simetri dan asimetri ialah pendekatan mereka. Oleh itu, apabila anda mendengar atau membaca artikel tentang perbandingan mereka seperti "algoritma ini lebih baik" tanpa menyebut secara spesifik (syarat dan tugas tertentu), anda boleh mula melakukan perkara lain dengan selamat, kerana ini adalah aktiviti yang sangat sia-sia serupa dengan perbahasan "Yang manakah adakah lebih baik? Tangki atau kapal wap? ". Tanpa spesifik, tidak satu atau yang lain. Namun, ada perkara penting, yang patut diketahui:

    1. Algoritma simetri adalah baik untuk penghantaran jumlah yang besar data yang disulitkan. Algoritma asimetri, semua perkara lain adalah sama, akan menjadi lebih perlahan. Di samping itu, untuk mengatur pertukaran data menggunakan algoritma asimetri, sama ada kedua-dua pihak mesti mengetahui kunci awam dan peribadi, atau mesti ada dua pasangan sedemikian (satu pasangan untuk setiap sisi).

    2. Penyulitan asimetri membolehkan anda memulakan sambungan selamat tanpa sebarang usaha daripada pengguna. Algoritma simetri mengandaikan bahawa pengguna perlu "mengetahui kata laluan." Walau bagaimanapun, perlu difahami bahawa algoritma asimetri juga tidak memberikan keselamatan 100%. Sebagai contoh, mereka terdedah kepada serangan man-in-the-middle. Intipati yang terakhir ialah komputer dipasang di antara anda dan pelayan, yang menghantar kunci awamnya kepada anda, dan menggunakan kunci awam pelayan untuk memindahkan data daripada anda.

    3. Dari sudut pandangan menggodam (mengkompromi) kata laluan, algoritma asimetri lebih mudah, kerana pelayan hanya perlu menukar sepasang kunci dan mengedarkan kunci awam yang dibuat. Dalam kes penyulitan simetri, persoalan timbul tentang cara menghantar kata laluan seterusnya. Walau bagaimanapun, sekatan ini dielakkan, sebagai contoh, pada kedua-dua belah kunci sentiasa dijana mengikut algoritma yang sama, maka persoalannya menjadi tentang merahsiakan algoritma ini.

    4. Algoritma simetri biasanya dibina berdasarkan beberapa blok dengan fungsi transformasi matematik. Oleh itu, lebih mudah untuk mengubah suai algoritma tersebut. Algoritma asimetri biasanya dibina berdasarkan beberapa masalah matematik, contohnya. RSA dibina atas masalah eksponen dan modulo. Oleh itu, ia hampir mustahil atau sangat sukar untuk diubah suai.

    5. Algoritma asimetri biasanya digunakan bersama-sama dengan yang simetri. Ia berlaku kira-kira seperti berikut. Menggunakan algoritma asimetri, kunci sesi ciptaan pengguna untuk penyulitan simetri dihantar ke pelayan, selepas itu pertukaran data berlaku menggunakan algoritma simetri. Urutan mungkin sebahagiannya berubah atau kunci mungkin dibentuk sedikit berbeza, tetapi maknanya lebih kurang sama.

    6. Mencipta kunci selamat (kata laluan) dalam algoritma asimetri adalah perkara yang sangat sukar, berbeza dengan algoritma simetri, di mana ia cukup untuk membentuk kunci mengikut peraturan untuk menjana kata laluan selamat (nombor, huruf, kes, dll.). Namun, hakikatnya kata laluan rahsia Hanya pelayan yang tahu, menjadikannya lebih mudah untuk memastikan kunci selamat.

    Penyulitan simetri

    Penyulitan di mana kata laluan yang sama digunakan untuk kedua-dua penyulitan dan penyahsulitan. Ini berbeza dengan penyulitan asimetri, yang menggunakan dua kunci berbeza untuk penyulitan dan penyahsulitan: kunci "awam" dan "peribadi".

    Kelebihan utama penyulitan simetri berbanding penyulitan asimetri: ia adalah lebih pantas (1000 kali). "Skim penyulitan hibrid" sering digunakan, apabila sambungan kawalan dibuat oleh penyulitan asimetrik, dan melalui saluran ini pihak-pihak bersetuju antara satu sama lain algoritma penyulitan simetri mana yang hendak dipilih dan apakah kunci penyulitan (kunci sesi). Saluran simetri dalam skema sedemikian biasanya dibuat semula selepas beberapa ketika untuk mengelakkan meneka kata laluan simetri (jika saluran simetri telah wujud, katakan, selama beberapa tahun, maka dengan algoritma penyulitan yang tidak boleh dipercayai, penyerang boleh meneka kata laluan pada masa ini pada beberapa kelompok superkomputer) .


    Majoriti sifir simetri menggunakan kombinasi yang kompleks Kuantiti yang besar penggantian dan pilih atur. Banyak sifir sedemikian dilaksanakan dalam beberapa pas (kadang-kadang sehingga 80), menggunakan "kunci pas" pada setiap pas. Set "kunci pas" untuk semua pas dipanggil "jadual kunci". Sebagai peraturan, ia dicipta daripada kunci dengan melakukan operasi tertentu padanya, termasuk pilih atur dan penggantian.

    Selalunya kekuatan algoritma, terutamanya terhadap kriptanalisis pembezaan, bergantung pada pilihan nilai dalam jadual carian (kotak-S). Sekurang-kurangnya, dianggap tidak diingini untuk mempunyai elemen tetap S(x) = x, serta ketiadaan pengaruh sedikit bait input pada sedikit hasil - iaitu, kes apabila bit hasil ialah sama untuk semua pasangan kata input yang berbeza hanya dalam bit ini.

    Sifir "Blok" memproses maklumat dalam blok dengan panjang tertentu (biasanya 64, 128 bit), menggunakan kunci pada blok dalam susunan yang ditetapkan, biasanya melalui beberapa kitaran shuffling dan penggantian, yang dipanggil "pusingan". Hasil daripada "pusingan" berulang ialah "kesan longsoran" - kehilangan korespondensi bit yang semakin meningkat antara blok data terbuka dan disulitkan.

    Contoh algoritma penyulitan simetri: AES, Twofish.

    Algoritma Diffie-Hellman

    Semua kriptografi, dibina walaupun pada algoritma penyulitan simetri yang paling boleh dipercayai, mempunyai satu masalah asas yang tidak dapat diselesaikan - masalah pertukaran awal "kunci rahsia", yang akan digunakan untuk menyulitkan data. Iaitu, untuk berkomunikasi menggunakan saluran yang disulitkan secara simetri, anda perlu bertemu di suatu tempat secara peribadi dan menghasilkan "kunci rahsia" biasa, dan kemudian menggunakan kunci ini anda boleh berkomunikasi dengan selamat antara satu sama lain melalui rangkaian menggunakan penyulitan simetri. .

    Tetapi bertemu dengan semua orang secara peribadi dalam dunia yang serba pantas hari ini adalah mustahil secara fizikal.

    Masalah pertukaran kunci rahsia awal ini tidak dapat diselesaikan sehingga Diffie dan Hellman menerbitkan kertas kerja mereka pada tahun 1976.

    Anda boleh memahami idea algoritma Diffie-Hellman dengan menonton video ini:


    Justifikasi matematik

    Justifikasi matematik untuk algoritma Diffie-Hellman menggunakan dua identiti tambahan.

    X mod y mengikut takrifan "baki x dibahagikan dengan y." Identiti pertama: (x mod y)^z mod y = x^z mod y. Identiti ini boleh dibuktikan dengan hanya mengembangkan x = a * y + b:

    ((a * y + b) mod y)^z mod y = b^z mod y

    X^z mod y = (a * y + b)^z mod y = b^z mod y, kerana kurungan akan dikembangkan dalam binomial Newton dan semua sebutan lain dengan y akan memberikan baki 0 ​​apabila dibahagikan dengan y.

    Identiti tambahan kedua - (x^y)^z = x^(yz) - adalah berdasarkan sifat kuasa darab, dan mudah dibuktikan pengembangan mudah kuasa kepada faktor: (x^y)^z = (x darab y kali), darab z darab = x, darab y*z darab = x^(yz).

    Sekarang terus ke penerangan algoritma Diffie-Hellman. Katakan terdapat dua pelanggan: Alice dan Bob. Mereka bersambung antara satu sama lain melalui saluran yang tidak disulitkan dan menghantar satu sama lain secara rawak dua nombor g dan p, yang bukan rahsia dan boleh dilihat oleh sesiapa sahaja. Untuk kini mencipta kunci rahsia yang tidak diketahui oleh orang lain, kedua-dua pelanggan menjana besar nombor rawak: Alice ialah nombor a, Bob ialah nombor b. Alice kemudian mengira A = g^a mod p dan menghantarnya kepada Bob, dan Bob mengira B = g^b mod p dan menyerahkannya kepada Alice. Nombor ini juga dihantar melalui saluran yang tidak disulitkan dan boleh diperhatikan oleh sesiapa sahaja.

    Seterusnya, Alice mengira nilai B^a mod p = (g^b mod p)^a mod p = g^(ab) mod p, dan Bob mengira nilai A^b mod p = (g^a mod p) ^b mod p = g^(ab) mod p, dan ini akan menjadi kunci rahsia kongsi mereka K, yang boleh digunakan untuk mencipta saluran yang disulitkan simetri. Walaupun penyerang memintas semua nombor yang dihantar (A, B, g, p), maka jika nombor p, a dan b yang dipilih cukup besar, dia tidak akan dapat mengira kunci rahsia K daripada A = g^a mod p dan B = dalam masa yang munasabah g^b mod p.

    Keperluan untuk nombor yang dijana adalah seperti berikut (penjelasan di bawah):

    P ialah nombor perdana yang agak besar
    (p - 1) / 2 juga merupakan nombor perdana
    g — modulo akar antiterbitan p

    (nombor perdana ialah nombor tulen yang tidak boleh difaktorkan kepada integer)

    "g— akar primitif modulo p" bermaksud bahawa untuk semua kemungkinan n ungkapan g^n mod p terbentuk set penuh nombor dari 1 hingga p - 1, dan oleh itu kunci sesi (rahsia) yang dikira Alice dan Bob boleh menjadi apa-apa dari 1 hingga p - 1, dan penyadap perlu mencuba semua nombor dari 1 hingga p - 1, dan ini adalah Mengikut syarat tugas, adalah mustahil untuk melakukannya dalam masa yang munasabah.

    Keperluan bahawa nombor p adalah perdana dikemukakan kerana telah terbukti bahawa bagi setiap nombor perdana p terdapat modulo p punca primitif, oleh itu sebarang nombor perdana rawak boleh dipilih untuk sesi komunikasi.

    Keperluan untuk saiz nombor p dikemukakan supaya set nombor lengkap dari 1 hingga p - 1 adalah sangat besar sehingga penyadap tidak dapat menyusun kesemuanya secara fizikal dalam masa yang munasabah.

    Keperluan "(p - 1) / 2 juga merupakan nombor perdana" diperkenalkan untuk meningkatkan keselamatan penyulitan, kerana terdapat algoritma logaritma diskret yang membolehkan penyadap untuk mengira kunci sesi (rahsia) dalam masa "polinomial" ( iaitu "dalam masa yang munasabah") dengan syarat nombor p - 1 diuraikan kepada faktor perdana yang kecil. Oleh itu, keperluan tambahan diperkenalkan bahawa wujud nombor perdana q supaya p - 1 = 2q, dalam kes ini q akan menjadi nombor perdana yang sangat besar (tertib yang sama seperti p), dan algoritma untuk mengira (rahsia). ) kekunci sesi akan melakukan perkara yang sama "panjang tidak munasabah."

    Lazimnya, kekunci rahsia a dan b berada pada susunan 10^100, dan nombor p adalah pada susunan 10^300. Nombor g tidak perlu besar dan biasanya dalam tempoh sepuluh.

    Rintangan terhadap penggodaman algoritma Diffie-Hellman adalah berdasarkan sepenuhnya pada tidak ditemui pada masa semasa secara munasabah algoritma pantas.

    Algoritma Diffie-Hellman digunakan untuk mewujudkan sambungan dalam HTTPS (SSL/TLS), VPN dan banyak protokol. Terdapat khabar angin di Internet bahawa Agensi Keselamatan Negara AS telah menemui cara yang berkesan untuk menggodam algoritma ini.

    Keterdedahan

    Penemuan Diffie dan Hellman merevolusikan kriptografi, kerana satu-satunya masalah yang tidak dapat diselesaikan nampaknya telah diselesaikan sepenuhnya. Walau bagaimanapun, ternyata algoritma pertukaran kunci rahsia ini terdedah kepada kerentanan man-in-the-middle (lelaki dalam pertengahan): penyerang hanya boleh menjejak ke saluran penghantaran data antara Alice dan Bob dan berpura-pura menjadi Bob untuk Alice dan Alice untuk Bob. Dengan skim ini, penyerang akan mencipta dua saluran yang disulitkan (dengan setiap pelanggan), dan pelanggan akan berfikir bahawa terdapat hanya satu saluran yang disulitkan - antara kedua-duanya. Dan penyerang akan melihat semua data dihantar antara pelanggan dalam bentuk yang dinyahsulit.

    Oleh itu, sebagai tambahan kepada algoritma Diffie-Hellman, beberapa cara untuk mengesahkan identiti kedua-dua pelanggan dengan pasti diperlukan (Alice mesti memastikan bahawa dia telah menjalinkan hubungan dengan Bob, dan Bob, seterusnya, mesti memastikan bahawa orang di hujung talian yang lain betul-betul Alice). Kerentanan ini diselesaikan oleh "algoritma tandatangan RSA" dan "pihak berkuasa sijil".

    Penyulitan asimetri

    Penyulitan asimetri ialah skema di mana terdapat dua kunci: satu daripadanya adalah "awam" (ia tersedia secara umum), dan satu lagi adalah "swasta" (ia dirahsiakan oleh pemiliknya). Sebagai contoh, setiap orang di Bumi boleh diberikan sepasang kunci peribadi: awam dan peribadi. Dalam kes ini, kunci awam semua orang akan tersedia secara terbuka dan setiap orang akan merahsiakan kunci peribadinya.

    Persoalannya timbul: mengapa skim sedemikian diperlukan, dan mengapa ia lebih baik daripada skim dengan satu kunci? Apa yang menjadikan skim ini istimewa ialah sesiapa sahaja boleh menyulitkan mesej yang ditujukan untuk Alexander bersyarat, hanya dengan mengambil kunci awam Alexander, tetapi hanya Alexander sendiri boleh menyahsulit mesej sedemikian, kerana hanya pemilik kunci peribadi berpasangan boleh menyahsulit mesej yang disulitkan. dengan kunci awam.

    Pada pandangan pertama, ia kelihatan seperti sejenis sihir. Walau bagaimanapun, tiada keajaiban - ia hanya penemuan matematik yang hebat.

    Diffie-Hellman untuk penyulitan asimetri

    Algoritma Diffie-Hellman boleh diubah suai sedikit untuk menghasilkan beberapa persamaan algoritma penyulitan data asimetri (namun, ini bukan tujuan Diffie-Hellman dicipta, dan ia tidak bertujuan untuk penyulitan data asimetri).

    Dalam kes ini, Alice dan Bob tidak mewujudkan saluran komunikasi. Sebaliknya, Alice memilih nilai p dan gnya, mengira Anya daripada nilai tersebut dan menerbitkan tiga nombor ini dalam domain awam, memanggilnya sebagai "kunci awam". Bob, berdasarkan tiga nombor ini, sama seperti dalam algoritma Diffie-Hellman, mengira kunci rahsia K, selepas itu dia menyulitkan mesej dengan mana-mana algoritma simetri menggunakan K sebagai kunci, dan menghantar teks sifir kepada Alice bersama-sama dengan nilainya B Alice, mempunyai B, g dan p, juga mengira kunci rahsia K, dan boleh menyahsulit serta membaca mesej yang dihantar Bob kepadanya.

    Ternyata sesiapa sahaja boleh menyulitkan mesej yang ditujukan untuk Alice, tetapi hanya dua orang yang boleh menyahsulit mesej sedemikian - penghantar mesej (yang sudah mengetahuinya) dan penerima mesej (Alice).

    Ia ternyata sesuatu seperti penyulitan data asimetri pada lutut. Pada hakikatnya, sudah tentu, adalah lebih baik untuk mempercayakan penyulitan data asimetri kepada protokol yang dibangunkan khusus untuk tujuan ini. Protokol pertama sedemikian ialah RSA.

    Algoritma penyulitan asimetri RSA telah dicipta pada tahun 1977 oleh tiga saintis dari MIT. Selepas bekerja pada lebih daripada 40 pilihan yang mungkin, mereka dapat mencari algoritma berdasarkan perbezaan betapa mudahnya untuk mencari nombor perdana yang besar dan betapa sukarnya untuk memfaktorkan hasil darab dua nombor perdana yang besar.

    Dua nombor perdana besar p dan q dipilih (contohnya, 2048 bit setiap satu)
    Hasil darab mereka n = p * q dikira
    Fungsi Euler φ(n) = (p - 1)(q - 1) dikira
    Integer e (1< e < φ(n)), взаимно простое с φ(n). Обычно в качестве e берут простые числа, содержащие небольшое количество единичных бит в двоичной записи, например, простые числа Ферма 17, 257 или 65537. Такой трюк позволяет возводить любое число в степень e очень быстро в двоичной системе исчисления (n^(2^k) = ((((n^2)^2)^2)^...)
    Nombor d dikira, " songsangan darab" bagi nombor e modulo φ(n): ed mod φ(n) = 1
    Pasangan (e, n) ialah kunci awam dan d ialah kunci persendirian

    Kini Alice boleh menyulitkan mesej (nombor) m yang ditujukan untuk Bob menggunakan kunci awam Bob (e, n): c = m^e mod n. Dan kini hanya Bob yang dapat mentafsir mesej ini m, yang ditujukan kepadanya oleh Alice: c^d mod n = (m^e mod n)^d mod n = m^(ed) mod n = m (ahli matematik mengatakan bahawa semuanya berkumpul).

    Anda boleh melihat bahawa skema dengan pembahagian eksponen dan modulo di sini sangat serupa dengan algoritma Diffie-Hellman. Perbezaan penting ialah keseluruhan rantaian operasi dalam algoritma RSA mengekalkan semua maklumat asal mesej yang disulitkan m. Oleh itu, algoritma RSA boleh digunakan untuk menyulitkan dan menyahsulit mesej. Algoritma Diffie-Hellman, pada gilirannya, tidak menetapkan sendiri tugas untuk memelihara semua maklumat asal semasa rantaian pengiraan, dan oleh itu hanya mampu menghantar nilai terbitan pengiraan tertentu, yang mana ia sudah mungkin dilakukan secara tempatan. kira satu kunci penyulitan (sesi) K, yang telah digunakan selanjutnya oleh beberapa algoritma penyulitan simetri untuk menghantar mesej secara langsung.

    Rintangan terhadap penggodaman algoritma RSA adalah berdasarkan sepenuhnya pada fakta bahawa pada masa ini algoritma "pemfaktoran" yang agak pantas (penguraian integer kepada faktor utama) belum ditemui.

    RSA atau Diffie-Hellman

    Anda boleh menyulitkan kunci penyulitan simetri yang dipilih secara rawak dengan algoritma RSA dan menghantarnya ke hujung wayar yang lain, di mana ia akan dinyahsulit, mewujudkan saluran penghantaran data yang selamat.

    Anda boleh menggunakan algoritma Diffie-Hellman untuk menukar kunci penyulitan simetri, dan anda akan mendapat saluran penghantaran data selamat yang sama.

    Dari segi kerumitan pengiraan, kedua-dua algoritma adalah setanding antara satu sama lain.

    Tandatangan digital (EDS)

    "Algoritma penyulitan asimetri RSA" telah dibincangkan di atas. Sebagai tambahan kepada algoritma ini, perkataan "RSA" sering juga bermaksud algoritma lain - "algoritma tandatangan digital RSA", yang digunakan bukan untuk menyulitkan data, tetapi untuk menandatanganinya.

    Jom ubah sedikit gambarajah yang dibincangkan di atas. Biarkan Bob, bukannya menyulitkan mesej yang ditujukan untuk Alice dengan kunci awam Alice, menyulitkan mesej ini dengan kunci peribadinya: s(m) = m^d mod n, dan hantar mesej yang disulitkan ini kepada Alice. Dalam kes ini, Alice, menggunakan kunci awam Bob, akan dapat mengesahkan ketulenan mesej yang diterima daripadanya: m" = s(m)^e mod n (m" dan m mesti sepadan). Dengan cara ini, Alice boleh memastikan bahawa mesej itu dihantar oleh Bob dan tidak diganggu.

    Algoritma tandatangan digital RSA digunakan dalam protokol TLS (aka HTTPS, aka SSL) bersama-sama dengan algoritma pertukaran kunci Diffie-Hellman dan algoritma penyulitan simetri (contohnya, AES). Dalam skim ini, Diffie-Hellman berfungsi untuk pertukaran selamat kunci rahsia untuk penyulitan simetri data yang dihantar (contohnya, AES), dan algoritma tandatangan RSA berfungsi untuk mengesahkan identiti kedua-dua pelanggan semasa penubuhan sambungan.

    Dalam amalan, menandatangani sejumlah besar data dengan algoritma tandatangan digital RSA adalah operasi yang perlahan, oleh itu, untuk mengoptimumkan kos pengiraan, "tandatangan digital" boleh diambil dengan cara yang sedikit berbeza: pertama, "cetakan" tertentu diambil daripada mesej, dipanggil "cincang" mesej, yang tidak bersaiz besar. melebihi bilangan bait tertentu, dan kemudian "cetakan" ("cincang") ini disulitkan sepenuhnya dengan algoritma RSA, dan ini berlaku dengan cepat , kerana "Pelakon" ("cincang") adalah sangat kecil.

    Dalam kes ini, maklumat mesej asal hilang dalam teks sifir yang diterima, dan oleh itu "snapshot" ("cincang") yang terhasil dihantar kepada penerima bersama-sama dengan teks mesej asal (dalam teks yang jelas, kerana menurut syarat tugas tidak perlu menyembunyikan teks mesej asal daripada wiretapping, dan dalam Tiada rahsia tentang mesej ini.)

    Seterusnya, penerima mesej mengambil daripadanya dengan cara yang sama "snapshot" ("hash"), dan membandingkan "snapshot" ("hash") yang diterimanya dengan "snapshot" ("hash") yang dinyahsulitkan, teks sifir yang diterimanya bersama dengan mesej teks. Jika kedua-dua "cetakan" ("cincang") bertepatan, ini bermakna dengan kebarangkalian menghampiri 100%, mesej yang diterima adalah tulen: ia diterima daripada pengirim dan mengandungi tepat teks yang ditulis oleh pengirim.

    Jika tidak, ia akan segera dikesan bahawa seseorang cuba memalsukan mesej, dan penyerang tidak akan dapat menipu penerima. Oleh itu, tandatangan digital memastikan kedua-dua ketulenan pengarang mesej dan integriti mesej itu. Hanya pengarang mesej boleh menandatanganinya dan sesiapa sahaja boleh mengesahkan kesahihan tandatangan ini.

    Oleh itu, kebolehpercayaan tandatangan digital sedemikian bergantung pada kedua-dua kebolehpercayaan algoritma penyulitan asimetri dan pada kebolehpercayaan algoritma untuk mengambil "snapshot" ("hash") (dan juga pada kebolehpercayaan kunci awam).

    Cincang ialah susunan data tertentu dengan panjang tertentu yang diperoleh dengan menghantar data asal melalui algoritma pencincangan. Anda boleh membandingkan cincang dengan salinan atau cap jari maklumat, dengan perbezaan bahawa cincang mempunyai tugas yang bertentangan: sehingga mustahil untuk membuat sebarang kesimpulan daripada cincang tentang maklumat asal itu. Untuk ini ciri yang baik cincang mesti memenuhi keperluan bahawa semua corak statistik mesej asal hilang sepenuhnya. Untuk melakukan ini, algoritma pencincangan mesti mempunyai "kesan longsoran" - ia mesti berlaku perubahan yang kuat hash dengan perubahan 1-bit dalam data input (idealnya, nilai separuh daripada semua bit hash harus berubah).

    Menggunakan cincang, anda boleh menyemak integriti data: jika sekurang-kurangnya satu bit data telah diubah (akibat daripada beberapa kegagalan rangkaian, kegagalan storan cakera, atau dengan sengaja oleh penyerang), maka cincangan diambil daripada yang diubah. data akan berbeza sama sekali, dan dengan itu anda boleh mengetahui dengan serta-merta bahawa data itu sama ada rosak secara tidak sengaja atau seseorang cuba menggantikannya.

    Contoh algoritma pencincangan: SHA, Twofish, Whirlpool.

    Sijil

    Apabila Alice menyambung kepada seseorang melalui saluran yang disulitkan secara tidak simetri, dia perlu yakin sepenuhnya bahawa pihak yang satu lagi itu adalah yang mereka katakan. Iaitu, jika Alice menyambung kepada Bob, maka dia perlu memastikan sepenuhnya bahawa kunci awam ini adalah milik Bob (iaitu tulen) berdasarkan kunci awam yang diterima sebagai tindak balas (daripada Bob yang sepatutnya).

    Peluang ini disediakan oleh tandatangan elektronik. Terdapat beberapa pihak berkuasa yang dipercayai oleh semua orang, dan kunci awamnya yang semua orang pada mulanya telah ditulis di suatu tempat, dan kunci yang direkodkan ini pastinya 100% tulen dan tidak dipersoalkan. Dan kemudian orang yang berwibawa ini mengeluarkan "sijil" kepada semua orang, menandatangani "sijil" ini dengan kunci peribadinya. Setiap orang mempercayai orang yang berwibawa dalam erti kata dia benar-benar jujur ​​(dia tidak akan menipu), dan menyimpan kunci peribadinya dalam keselamatan yang sempurna (dan oleh itu ia tidak boleh dicuri oleh penyerang untuk menandatangani sijil "penipuan" mereka).

    Sijil (X.509) yang dikeluarkan kepada pelanggan (dan ditandatangani oleh orang yang berwibawa) mengandungi kunci awam pelanggan dan maklumat terperinci tentang pelanggan (pemilik kunci awam ini): siapa pelanggan ini, alamatnya E-mel, apabila kunci dicipta, algoritma yang dimaksudkan untuk kunci tersebut, apabila kunci tamat tempoh, dsb.). Bersama-sama dengan sijil yang ditandatangani, pelanggan menerima "kunci peribadi" sebagai pasangan, yang akan digunakannya untuk menandatangani dan menyulitkan data yang dihantar secara elektronik.

    Pihak berkuasa dalam sistem ini dipanggil "pihak berkuasa pensijilan yang dipercayai" ("pihak berkuasa yang mengesahkan"). Pada masa ini terdapat kira-kira 60 pusat yang dipercayai sedemikian, dan kunci awam mereka dibenamkan dalam semua sistem pengendalian moden dan pelayar Internet (untuk mengesahkan ketulenan tandatangan elektronik sijil yang diterima apabila menyambung ke tapak).

    Contohnya, apabila pengguna menyambung ke tapak https://google.com (“melalui SSL”, juga dikenali sebagai “TLS”), dia menerima sijil sebagai balasan (“sijil SSL”) yang ditandatangani oleh beberapa “pihak berkuasa pensijilan yang dipercayai ”, dan sijil yang diterima boleh segera disahkan kesahihannya dengan menyemak tandatangan digitalnya (penyemak imbas melakukan ini secara automatik). Jika sijil itu tulen dan "domain" (google.com) yang dinyatakan dalam sijil sepadan dengan "domain" (alamat) yang cuba diakses oleh pengguna, maka semuanya betul dan penyemak imbas menunjukkan halaman Internet ini kepada pengguna. (dan Ikon "sambungan selamat" muncul dalam bar alamat (biasanya kunci gembok hijau). Jika sijil tidak lulus pengesahan tandatangan, atau jika "domain" yang dinyatakan dalam sijil tidak sepadan dengan "domain" (alamat) yang pengguna cuba akses, maka penyemak imbas tidak akan memaparkan halaman Internet ini, dan sebaliknya akan paparkan amaran tentang sambungan mungkin tidak selamat dan penyerang mungkin cuba menipu pengguna.

    Oleh itu, apabila melayari Internet, pengguna hanya selamat seperti penyemak imbas Internetnya dan sistem pengendaliannya adalah tulen: untuk memintas perlindungan ini, penyerang sama ada perlu menipu pengguna untuk memasang pelayar pada sistemnya yang sama ada mempunyai tapak tersebut. fungsi pengesahan dilumpuhkan (atau mempunyai sijil "kiri" yang dipercayai dipercayai), atau pemasangan tanpa kebenaran dalam sistem operasi sijil "kiri" pengguna sendiri yang kononnya dipercayai.

    Mana-mana syarikat boleh menjadi pihak berkuasa yang dipercayai, tetapi untuk berbuat demikian, ia perlu menjalani pemeriksaan keselamatan tahunan yang ketat (WebTrust). Peserta utama dalam pasaran pensijilan setakat November 2012:

    Symantec (pemilik VeriSign, Thawte dan Geotrust) dengan 42.9% bahagian pasaran
    Comodo dengan bahagian 26%
    GoDaddy dengan bahagian 14%.
    GlobalSign dengan bahagian 7.7%

    Pihak berkuasa pensijilan yang pertama ialah Keselamatan Data RSA, yang diasaskan oleh pencipta algoritma RSA (mereka mungkin menghasilkan wang yang baik).

    Untuk mendapatkan sijil untuk tapak web anda ("domain"), anda perlu menjalani pemeriksaan rapi di pihak berkuasa pensijilan untuk menentukan sama ada anda pemilik sebenar tapak ini ("domain").

    Jika penyerang berjaya mendapatkan kunci peribadi anda, sijil anda tidak lagi akan dapat mengesahkan anda semasa membuat sambungan dan anda harus memberitahu organisasi yang mengeluarkan sijil anda. Selepas pemberitahuan, sijil akan diletakkan dalam senarai sijil yang tidak sah (Senarai Pembatalan Sijil, Senarai Pembatalan Kuasa). Seterusnya, setiap kali penyemak imbas menyambung ke tapak melalui HTTPS, mereka membuat permintaan menggunakan Protokol Status Sijil Dalam Talian untuk menyemak sama ada sijil tersebut berada dalam senarai sijil yang tidak sah. Jika didapati bahawa sijil ini tidak lagi sah, sambungan tidak akan diwujudkan.

    Kod Pengesahan Mesej berasaskan hash ialah kaedah "orang miskin" untuk menandatangani mesej secara digital: ia tidak memerlukan sijil atau pengiraan intensif. Ia boleh digunakan dalam beberapa kes mudah apabila penggunaan tandatangan digital tidak digalakkan.

    Dengan pendekatan ini, "gambar" ("cincang") mesej ini juga dihantar bersama-sama dengan mesej, yang kemudiannya disahkan oleh pihak yang menerima. Tidak seperti penyulitan asimetri, penyulitan simetri digunakan di sini, iaitu, kedua-dua pihak mengetahui terlebih dahulu kata laluan rahsia tertentu.

    Teks mesej m dicampur dengan kata laluan s dalam corak yang boleh dinyatakan secara konsep sebagai cincang(s + cincang(s + m)). Dengan pendekatan ini, kekuatan kriptografi terbaik (pada masa ini) bagi tandatangan dicapai.

    Penyulitan lengkung eliptik

    Beberapa tahun selepas algoritma Diffie-Hellman dan RSA dilahirkan, bekerja pada ruang integer, ahli matematik mencadangkan ruang nombor alternatif untuk penyulitan - lengkung eliptik.

    Lengkung elips (tiada kaitan dengan "elips") ialah set semua (titik lengkung) penyelesaian kepada persamaan:

    y^2 + a xy + c y = x^3 + b x^2 + d x + f


    Sebagai contoh, untuk ruang semua x dan y sebenar (nyata), anda boleh memperkenalkan operasi menambah titik pada lengkung eliptik, mengikut mana bagi mana-mana dua titik lengkung eliptik P dan Q terdapat titik unik “R ”, yang boleh didapati dengan melukis garis lurus melalui titik P dan Q, dan menandakan titik R" persilangan garis ini dengan lengkung elips. "Titik pada infiniti 0" juga diperkenalkan, supaya P + Q + R" = 0. Titik R, simetri kepada titik R" berbanding dengan paksi Ox, akan menjadi jumlah P + Q yang diperlukan.

    Dengan memperkenalkan operasi penambahan dan pendaraban titik yang serupa pada lengkung eliptik, seseorang boleh mendapatkan subset terhingga titik yang terletak pada lengkung ini, yang akan membentuk "medan terhingga". Dalam kriptografi lengkung eliptik, dua medan terhingga tersebut digunakan: " bidang yang mudah ciri ganjil" dan "medan ciri 2", walau apa pun maksudnya.

    Oleh itu, oleh kerana operasi penambahan dan pendaraban ditakrifkan, maka, seperti dalam kes ruang biasa integer, adalah mungkin untuk mencari operasi algebra sedemikian yang mudah dilakukan dalam satu arah (seperti mendarab dua nombor perdana besar dalam algoritma RSA) dan hasil yang sangat kompleks dalam sisi terbalik(seperti penguraian nombor besar hasil darab dua nombor perdana dalam algoritma RSA). Dan menggunakan operasi algebra seperti itu seseorang boleh membina analog lengkap sudah sedia ada algoritma penyulitan asimetri (RSA, Diffie-Hellman), tetapi secara eksklusif pada lengkung elips.

    Mengapa perlu bersusah payah dengan ini: pada lengkung elips, tiada algoritma "logaritma diskret" belum ditemui (yang mana anda boleh memecahkan penyulitan) yang akan memberikan penyelesaian dalam masa kurang daripada "eksponen". Oleh itu, dalam kes algoritma penyulitan lengkung eliptik, adalah mungkin untuk menggunakan kunci penyulitan dengan panjang yang lebih pendek dengan selamat berbanding dengan algoritma yang sama pada ruang integer, yang memberikan penjimatan yang lebih besar dalam sumber pengkomputeran.

    Tor ialah cara untuk mengakses sumber rangkaian tanpa nama. Anda boleh menyemak imbas tanpa nama di Internet, anda juga boleh menyemak imbas tapak ".onion" yang dihoskan secara awanama dan hanya boleh diakses secara dalaman Rangkaian Tor"A.

    Tor diedarkan bersama dengan pelayar Mozilla Firefox, yang boleh dimuat turun dari laman web rasmi dan dipasang pada sistem pengendalian, selepas itu semua kerja melalui "pelayar Tor" ini akan menjadi tanpa nama (atas sebab ini, anda tidak seharusnya menggunakan penyemak imbas Tor untuk mendedahkan identiti sebenar anda: anda tidak sepatutnya log masuk ke akaun sebenar anda melaluinya di rangkaian sosial, semak e-mel sebenar anda, dsb. - biarkan diri anda yang sebenar di luar pelayar Tor).


    Cara untuk mencapai kerahasiaan Tor adalah seperti berikut. Pengguna mewujudkan sambungan ke rangkaian Tor, dan selepas itu merekrut rantaian tiga nod perantaraan rawak (dipanggil "nod"). Rantaian direkrut sedemikian rupa sehingga nod kedua dipilih selepas mewujudkan sambungan dengan nod pertama yang dipilih , oleh itu, alamat IP sebenar pengguna tidak bocor melebihi nod (input) pertama rantai. Pada masa yang sama, nod (input) pertama rantai tidak mempunyai cara untuk menentukan bahawa ia betul-betul yang pertama (input): untuk itu, pengguna kelihatan betul-betul sama seperti mana-mana nod lain rangkaian Tor. Oleh itu, hanya nod (output) terakhir rantai yang tahu bahawa ia adalah output, dan semua nod lain dalam rantai tidak tahu apa-apa tentang kedudukan mereka dalam rantai ini (kecuali ia bukan output).

    Semasa rantaian ditaip, pengguna dan setiap satu nod baharu rantai menjana kunci rahsia menggunakan algoritma Diffie-Hellman. Kunci ini akan digunakan pada masa hadapan untuk penyulitan/penyahsulitan simetri data menggunakan algoritma AES pada nod rantai ini. Selepas terowong dibina, pengguna dan setiap nod dalam rantaian mempunyai kunci rahsia mereka sendiri untuk penyulitan/penyahsulitan simetri trafik, yang selanjutnya saya akan panggil "kunci".

    Apabila menghantar data melalui terowong, pengguna menyulitkan data keluarnya trafik rangkaian tiga kali: pertama lalu lintas disulitkan dengan kunci nod ketiga (output) dalam rantai, kemudian semuanya disulitkan dengan kunci nod kedua (tengah) dalam rantai, dan kemudian semuanya disulitkan semula dengan kunci nod (input) pertama dalam rantai.

    Ia kelihatan seperti bawang, atau anak patung bersarang, apabila teras (lalu lintas) dibalut dengan beberapa lapisan penyulitan. Itulah sebabnya Tor dipanggil "onion" atau "onion routing."

    Apabila trafik mencecah nod (input) pertama rantai, nod ini mengalih keluar lapisan penyulitan (luar) - menyahsulit data yang diterima menggunakan kuncinya. Data yang disulitkan yang terhasil masih disulitkan oleh dua lapisan penyulitan lain, yang mana nod (input) pertama dalam rantai ini tidak boleh menyahsulit kerana ia tidak mempunyai kunci yang sepadan.

    Walaupun nod (input) pertama rantaian dapat mewujudkan identiti pengguna melalui alamat IP sebenarnya, maka nod ini tidak mempunyai cara untuk mengetahui data apa yang dihantar pengguna ke rangkaian, atau alamat di Internet yang dilawati pengguna. . Di samping itu, kerana dari sudut pandangan mana-mana nod dalam rangkaian Tor tidak ada cara untuk menentukan siapa yang menyambung kepadanya - pengguna atau nod lain dari jenis yang sama - maka dalam kes ini, nod pertama (input) itu sendiri tidak boleh ketahuilah bahawa ia adalah simpulan (masukan) pertama, dan apakah sebenarnya ia pengguna ini pergi ke beberapa tapak web, dan bukan sahaja mesinnya memainkan peranan nod biasa yang sama dalam rantaian untuk menghantar data daripada beberapa pengguna yang sama sekali berbeza.

    Seterusnya, nod (input) pertama rantai menghantar data, dari mana lapisan penyulitan pertama telah dialih keluar, ke nod kedua (tengah) rantai. Nod kedua (tengah) dalam rantai juga mengalih keluar lapisan penyulitannya daripada trafik, tetapi masih tidak tahu apa yang ada di dalamnya, dan kini tidak lagi mengetahui alamat IP sebenar pengguna.

    Seterusnya, nod kedua (tengah) rantai menghantar data, dari mana lapisan kedua penyulitan telah dialih keluar, ke nod ketiga (output) terakhir rantaian. Nod ketiga (output) rantaian menyahsulit sepenuhnya trafik, mengalih keluar lapisan penyulitan terakhir daripadanya, dan mengarahkan trafik ini ke alamat rangkaian yang dikehendaki (di Internet atau dalam rangkaian bawang). Ternyata nod ketiga (keluar), yang juga dipanggil "nod keluar," sepenuhnya boleh mendengar lalu lintas dan melihat semua data yang dihantar, tetapi pada masa yang sama ia tidak mengetahui apa-apa tentang sebenar pengguna. Alamat IP, jadi ia tidak dapat menjejaki trafik aliran kembali kepada pengguna.

    Apabila menerima respons daripada tapak (di Internet atau dalam rangkaian .onion), keseluruhan proses masuk ke arah terbalik: respons yang diterima kembali melalui nod rantai, pada setiap langkah bertukar menjadi lapisan penyulitan nod semasa. Apabila pengguna menerima respons mereka daripada nod (input) pertama, respons itu dibalut dalam lapisan penyulitan yang sama seperti semasa menghantar mesej, dalam susunan yang sama. Pengguna, yang mempunyai kunci yang diperlukan, mengalih keluar satu demi satu semua lapisan penyulitan daripada respons yang diterima, dan melihat data yang dimintanya (dari Internet atau dari rangkaian bawang).

    Untuk meningkatkan keselamatan pengguna, Tor secara berkala menukar sepenuhnya rantaian nod (setiap sepuluh minit jika tiada sambungan aktif). Tor juga cuba memastikan bahawa nod rantai berada di dalamnya negara berbeza ah, sekali gus menyukarkan pihak polis untuk mengakses nod ini (bidang kuasa berbeza di negara yang berbeza, kelulusan birokrasi, dsb.).

    Mana-mana peminat boleh menjadi nod ("nod"), dengan itu meningkatkan kelajuan dan kualiti keseluruhan rangkaian Tor. Nod boleh melakukan kerja sama ada hanya "nod geganti" (nod perantaraan) atau "nod keluar" (nod keluar yang berinteraksi secara langsung dengan Internet, dan untuk ini, secara teorinya, mereka boleh dipenjarakan kerana terlibat dalam jenayah) . Pada masa ini terdapat kira-kira 7,000 nod pada rangkaian Tor, 1,000 daripadanya adalah nod keluar.

    Bagi mereka yang ingin menggali lebih dalam, ada .

    Pada mulanya, konsep "onion routing" telah dicipta pada tahun 90-an di makmal Tentera Laut AS untuk memastikan keselamatan kakitangan perisikan AS yang menghantar risikan melalui Internet. DARPA, yang memperkenalkan Internet kepada dunia, juga kemudiannya mempunyai tangan. Pada awal tahun 2000-an yang pertama versi kerja Tor, dan beberapa tahun kemudian Tentera Laut AS memberikan Tor kepada Sumber Terbuka, dan sejak itu Tor telah ditaja oleh semua orang sebagai organisasi bukan untung (sebahagian besar derma, bagaimanapun, terus datang daripada agensi kerajaan AS).

    Tor melalui VPN

    Pengguna yang takut secara tidak sengaja berakhir pada rantaian nod perantaraan sedemikian, yang masing-masing dikendalikan oleh polis (yang akan memberi polis peluang untuk melihat semua lalu lintas dalam bentuk yang dinyahsulit, serta mengetahui alamat IP sebenar pengguna), boleh mengakses rangkaian Tor melalui VPN. Dalam kes ini, apa yang boleh dilakukan oleh polis ialah melihat semua lalu lintas dan mengetahui alamat IP pelayan VPN. Jika perkhidmatan VPN terletak di bawah bidang kuasa polis (kebanyakan negara), maka ia dikehendaki oleh undang-undang untuk menyimpan maklumat tentang siapa yang menyambungkannya dan bila, dan tapak yang mereka lawati. Jika perkhidmatan VPN terletak di salah satu daripada beberapa negara yang, atas sebab tertentu, undang-undang yang ketat untuk membantu penyiasatan tidak diterima pakai, maka perkhidmatan VPN sedemikian tidak diwajibkan (dan tidak akan) menyimpan maklumat tentang siapa yang menyambungkannya dan bila, dan di tapak apa yang anda lawati? Lebih-lebih lagi, polis mungkin tidak dapat menuntut apa-apa daripadanya secara sah Perkhidmatan VPN, tidak akan dapat memasang wiretappingnya di sana, dsb.

    Perkhidmatan tersembunyi Tor(tapak bawang)

    Sesiapa sahaja boleh menjalankan tapak web mereka sendiri pada rangkaian Tor. Tapak web sedemikian dipanggil "perkhidmatan tersembunyi" kerana pemilik tapak web kekal tanpa nama (dengan kata lain, secara teorinya tiada cara untuk mengetahui alamat IP sebenar mesin di mana tapak web itu berjalan; secara hipotesis, anda boleh cuba meneka. dengan menganalisis aliran trafik, tetapi ini adalah soalan untuk pakar mengenai topik ini).

    Ia berfungsi seperti ini: mesin yang tapak web berjalan secara berkala menyambung ke nod yang dipilih secara rawak (titik pengenalan) melalui rantai rawak nod perantaraan, dan menghantar kunci awam tapak web ini ke nod ini (titik pengenalan). Oleh itu, tapak web mengisytiharkan kewujudannya pada rangkaian Tor, dan kemudian semua interaksi pengguna dengan laman web ini hanya boleh dihantar melalui nod sementara (titik pengenalan) di sepanjang rantai sementara yang dibina, dan tiada siapa yang akan dapat mengetahui IP sebenar sesiapa. alamat.

    Bagaimanakah pengguna mengetahui tentang kewujudan tapak web, dan melalui titik pengenalan yang mana mereka boleh sampai ke tapak ini? Rangkaian Tor menjalankan pangkalan data teragih (Jadual Hash Teragih), iaitu pangkalan data biasa yang tersebar sama rata di semua nod rangkaian Tor. Dalam pangkalan data Tor ini, penyemak imbas akan mencari sama ada tapak web yang diminta oleh pengguna wujud pada rangkaian Tor, dan jika ada, melalui mana nod sementara tapak ini boleh dicapai.

    Siapa yang meletakkan maklumat ini ke dalam pangkalan data yang diedarkan? Laman web ini sendiri: selepas ia mengisytiharkan kewujudannya dan disambungkan ke nod sementara, ia menyusun senarai nod ini dan meletakkannya dalam pangkalan data yang diedarkan, menandatangani senarai ini dengan kunci peribadinya, dan melampirkan kunci awamnya di sebelahnya ( untuk mengesahkan tandatangan oleh pengguna).

    Kami menambah sedikit lagi keselamatan pada skim di atas dengan memperkenalkan jenis berasingan nod (titik pertemuan) untuk menghantar trafik ke laman web dan menerima trafik dari tapak web. Nod trafik ini (titik pertemuan), tidak seperti nod sementara (titik pengenalan), tidak tahu apa-apa tentang tapak web mana trafik yang dipindahkan, dengan itu memperkenalkan lebih banyak kerahasiaan dan keselamatan (untuk kedua-dua pengguna dan pemilik web -tapak).

    Nod trafik dipilih secara rawak oleh pengguna dan maklumat tentang nod trafik yang dipilih ini (disulitkan dengan kunci awam tapak web, ditambah dengan "kata laluan") yang dijana secara rawak dihantar melalui titik pengenalan ke tapak web. Seterusnya, pengguna dan tapak web mewujudkan sambungan (rantaian Tor standard) dengan nod trafik ini, dan hanya kemudian menghantar trafik antara satu sama lain melaluinya (selepas pengguna menyemak "kata laluan" yang dijana secara rawak yang sama yang dihantar oleh tapak web kembali kepada pengguna - sebagai pengesahan ini bahawa ini betul-betul tapak web dan bukan palsu, kerana hanya laman web ini sendiri boleh menyahsulit "kata laluan" yang sebelum ini dihantar oleh pengguna). Hasilnya ialah rantai gabungan 3 + 3 = 6 nod.

    Anda mungkin perasan bahawa tapak web .onion mempunyai alamat "hodoh" dan pelik. Ini, seperti semua yang lain pada rangkaian Tor, dilakukan untuk keselamatan pengguna. Untuk mendapatkan nama DNS untuk tapak, anda perlu menjana sepasang kunci awam dan peribadi, kemudian gunakan kunci awam untuk menandatangani nama tapak. Sebagai contoh, anda boleh mengambil perkataan "facebook", menandatanganinya dengan kunci awam anda dan anda akan mendapat Nama domain"facebookcorewwwi.onion", dengan "corewwwi" ialah tandatangan perkataan "facebook" dengan kunci awam tapak ini.

    Oleh itu, mana-mana pelawat tapak yang membuat sambungan ke tapak “facebookcorewwwi.onion”, apabila menerima kunci awam tapak semasa sambungan dibuat, akan dapat mengesahkan secara bebas bahawa tapak ini sememangnya sama, “sebenar”, bukan palsu, dan sepadan dengan tepat ini.alamat bawang. Oleh itu, untuk tapak .onion pada rangkaian Tor tidak ada keperluan untuk apa-apa Pusat Bersatu Pensijilan (seperti yang dilakukan dalam Internet biasa untuk sijil SSL), yang akan bercanggah dengan tujuan asal rangkaian Tor - desentralisasi dan keselamatan.

    I2p (“Itupi”) ialah rangkaian tanpa nama yang agak serupa dengan Tor. Jika tugas utama Tor adalah untuk menyediakan akses tanpa nama ke Internet, maka tugas utama i2p adalah untuk membina rangkaian tanpa nama yang diedarkan dengan tapak "tersembunyi" sendiri, sepenuhnya bebas daripada Internet.

    Adalah dipercayai bahawa tahap anonimiti dalam rangkaian i2p adalah lebih tinggi daripada tahap anonimiti dalam rangkaian Tor.