Pertimbangkan senario di mana anda perlu mendapatkan peti besi bank. Ia dianggap benar-benar tidak dapat ditembusi tanpa kunci, yang diberikan kepada anda pada hari pertama bekerja. Matlamat anda adalah untuk menyimpan kunci dengan selamat.
Katakan anda memutuskan untuk menyimpan kunci bersama anda pada setiap masa, memberikan akses kepada storan mengikut keperluan. Tetapi anda akan segera menyedari bahawa penyelesaian sedemikian tidak berskala baik dalam amalan, kerana kehadiran fizikal anda diperlukan setiap kali anda membuka storan. Bagaimana dengan percutian yang dijanjikan kepada anda? Di samping itu, persoalannya lebih menakutkan: bagaimana jika anda kehilangan satu-satunya kunci anda?
Dengan mengambil kira percutian anda, anda memutuskan untuk membuat salinan kunci dan mempercayakannya kepada pekerja lain. Walau bagaimanapun, anda faham bahawa ini juga tidak sesuai. Dengan menggandakan bilangan kunci, anda juga menggandakan peluang kecurian kunci.
Dalam keadaan terdesak, anda memusnahkan pendua dan memutuskan untuk membelah kunci asal kepada separuh. Sekarang, anda akan berfikir bahawa dua orang yang dipercayai dengan serpihan kunci perlu hadir secara fizikal untuk mengambil kunci dan membuka peti besi. Ini bermakna pencuri perlu mencuri dua keping, iaitu dua kali lebih sukar daripada mencuri satu kunci. Walau bagaimanapun, anda tidak lama lagi menyedari bahawa skim ini tidak lebih baik daripada hanya satu kunci, kerana jika seseorang kehilangan separuh kunci, kunci penuh tidak boleh dipulihkan.
Masalahnya boleh diselesaikan dengan satu siri kunci dan kunci tambahan, tetapi pendekatan ini akan memerlukan dengan cepat ΠΌΠ½ΠΎΠ³ΠΎ kunci dan kunci. Anda memutuskan bahawa reka bentuk yang ideal adalah untuk berkongsi kunci supaya keselamatan tidak bergantung sepenuhnya pada satu orang. Anda juga membuat kesimpulan bahawa mesti ada beberapa ambang untuk bilangan serpihan supaya jika satu serpihan hilang (atau jika seseorang pergi bercuti), keseluruhan kunci kekal berfungsi.
Bagaimana untuk berkongsi rahsia
Skim pengurusan utama jenis ini telah difikirkan oleh Adi Shamir pada tahun 1979 apabila beliau menerbitkan karyanya
Dari sudut keselamatan, sifat penting skim ini ialah penyerang tidak sepatutnya mengetahui apa-apa melainkan dia mempunyai sekurang-kurangnya bahagian. Malah kehadiran bahagian tidak boleh memberikan sebarang maklumat. Kami memanggil harta ini keselamatan semantik.
Interpolasi polinomial
Skim ambang Shamir dibina di sekeliling konsep interpolasi polinomial. Jika anda tidak biasa dengan konsep ini, ia sebenarnya agak mudah. Malah, jika anda pernah melukis titik pada graf dan kemudian menyambungkannya dengan garisan atau lengkung, anda sudah menggunakannya!
Melalui dua mata anda boleh menarik bilangan polinomial tanpa had darjah 2. Untuk memilih satu-satunya daripada mereka, anda memerlukan mata ketiga. Ilustrasi:
Pertimbangkan polinomial dengan darjah satu, . Jika anda ingin memplot fungsi ini pada graf, berapa banyak mata yang anda perlukan? Nah, kita tahu bahawa ini adalah fungsi linear yang membentuk garis dan oleh itu ia memerlukan sekurang-kurangnya dua titik. Seterusnya, pertimbangkan fungsi polinomial dengan darjah dua, . Ini ialah fungsi kuadratik, jadi sekurang-kurangnya tiga titik diperlukan untuk memplot graf. Bagaimana pula dengan polinomial dengan darjah tiga? Sekurang-kurangnya empat mata. Dan seterusnya dan seterusnya.
Perkara yang sangat menarik tentang harta ini ialah, memandangkan tahap fungsi polinomial dan sekurang-kurangnya mata, kita boleh memperoleh mata tambahan untuk fungsi polinomial ini. Kami memanggil ekstrapolasi mata tambahan ini interpolasi polinomial.
Mengada-adakan rahsia
Anda mungkin sudah menyedari bahawa di sinilah skema bijak Shamir berlaku. Katakan rahsia kita - Adakah . Kita boleh pusing ke satu titik pada graf dan menghasilkan fungsi polinomial dengan darjah , yang memenuhi perkara ini. Biar kami ingatkan anda itu akan menjadi ambang serpihan yang diperlukan, jadi jika kita menetapkan ambang kepada tiga serpihan, kita mesti memilih fungsi polinomial dengan darjah dua.
Polinomial kami akan mempunyai bentuk Jika ΠΈ β integer positif yang dipilih secara rawak. Kami hanya membina polinomial dengan darjah , di mana pekali bebas - Ini rahsia kami , dan untuk setiap yang berikutnya istilah terdapat pekali positif yang dipilih secara rawak. Jika kita kembali kepada contoh asal dan andaikan itu , maka kita mendapat fungsi .
Pada ketika ini kita boleh menjana serpihan dengan menyambung integer unik dalam Jika (kerana itu rahsia kita). Dalam contoh ini, kami ingin mengedarkan empat serpihan dengan ambang tiga, jadi kami menjana mata secara rawak dan hantar satu mata kepada setiap empat orang yang dipercayai, penjaga kunci. Kami juga memberitahu orang ramai , kerana ini dianggap maklumat awam dan perlu untuk pemulihan .
Memulihkan rahsia
Kami telah membincangkan konsep interpolasi polinomial dan bagaimana ia mendasari skema ambang Shamir . Apabila mana-mana tiga daripada empat pemegang amanah ingin memulihkan , mereka hanya perlu interpolasi dengan keunikan tersendiri. Untuk melakukan ini, mereka boleh menentukan mata mereka dan hitung polinomial interpolasi Lagrange menggunakan formula berikut. Jika pengaturcaraan lebih jelas kepada anda daripada matematik, maka pi pada dasarnya adalah pengendali for
, yang mendarabkan semua hasil, dan sigma ialah for
, yang menambah segala-galanya.
pada kita boleh menyelesaikannya seperti ini dan mengembalikan fungsi polinomial asal kita:
Kerana kita tahu itu , pemulihan dilakukan secara ringkas:
Menggunakan aritmetik integer yang tidak selamat
Walaupun kita telah berjaya menerapkan idea asas Shamir , kita ditinggalkan dengan masalah yang kita abaikan sehingga kini. Fungsi polinomial kami menggunakan aritmetik integer yang tidak selamat. Ambil perhatian bahawa untuk setiap titik tambahan yang diperoleh penyerang pada graf fungsi kami, terdapat lebih sedikit kemungkinan untuk mata lain. Anda boleh melihat ini dengan mata anda sendiri apabila anda merancang peningkatan bilangan mata untuk fungsi polinomial menggunakan aritmetik integer. Ini adalah tidak produktif kepada matlamat keselamatan yang kami nyatakan, kerana penyerang seharusnya tidak tahu apa-apa sehingga mereka mempunyai sekurang-kurangnya serpihan.
Untuk menunjukkan betapa lemahnya litar aritmetik integer, pertimbangkan senario di mana penyerang memperoleh dua mata dan mengetahui maklumat awam itu . Daripada maklumat ini dia boleh simpulkan , sama dengan dua, dan masukkan nilai yang diketahui ke dalam formula ΠΈ .
Penyerang kemudian boleh mencari , mengira :
Oleh kerana kita telah menentukan sebagai integer positif yang dipilih secara rawak, terdapat bilangan terhad yang mungkin . Menggunakan maklumat ini, penyerang boleh membuat kesimpulan , kerana apa-apa yang lebih besar daripada 5 akan berjaya negatif. Ini ternyata benar kerana kita telah menentukannya
Penyerang kemudiannya boleh mengira nilai yang mungkin menggantikan Π² :
Dengan pilihan terhad untuk ia menjadi jelas betapa mudahnya untuk memilih dan menyemak nilai . Terdapat hanya lima pilihan di sini.
Menyelesaikan masalah dengan aritmetik integer yang tidak selamat
Untuk menghapuskan kelemahan ini, Shamir mencadangkan menggunakan aritmetik modular, menggantikan pada Jika ΠΈ β set semua nombor perdana.
Mari cepat ingat bagaimana aritmetik modular berfungsi. Jam dengan tangan adalah konsep yang biasa. Dia menggunakan jam tangan iaitu . Sebaik sahaja jarum jam melepasi dua belas, ia kembali kepada satu. Sifat menarik sistem ini ialah hanya dengan melihat jam, kita tidak dapat menyimpulkan berapa banyak pusingan yang dibuat oleh jarum jam. Walau bagaimanapun, jika kita tahu bahawa jarum jam telah berlalu 12 empat kali, kita boleh menentukan sepenuhnya bilangan jam yang telah berlalu menggunakan formula mudah Jika adalah pembahagi kita (di sini ), ialah pekali (berapa kali pembahagi masuk ke nombor asal tanpa baki, di sini ), dan ialah bakinya, yang biasanya mengembalikan panggilan operator modulo (di sini ). Mengetahui semua nilai ini membolehkan kita menyelesaikan persamaan untuk , tetapi jika kita terlepas pekali, kita tidak akan dapat memulihkan nilai asal.
Kami boleh menunjukkan cara ini meningkatkan keselamatan skim kami dengan menggunakan skim tersebut pada contoh dan penggunaan terdahulu kami . Fungsi polinomial baharu kami , dan mata baharu . Kini penjaga kunci boleh sekali lagi menggunakan interpolasi polinomial untuk membina semula fungsi kami, hanya kali ini operasi penambahan dan pendaraban mesti disertakan dengan pengurangan modulo (contohnya ).
Menggunakan contoh baharu ini, mari kita anggap bahawa penyerang mempelajari dua daripada mata baharu ini, , dan maklumat awam . Kali ini, penyerang, berdasarkan semua maklumat yang dia ada, mengeluarkan fungsi berikut, di mana ialah set semua integer positif, dan mewakili pekali modulus .
Sekarang penyerang kami menemui semula , mengira :
Kemudian dia mencuba lagi menggantikan Π² :
Kali ini dia menghadapi masalah yang serius. Formula tiada nilai , ΠΈ . Oleh kerana terdapat bilangan gabungan yang tidak terhingga bagi pembolehubah ini, dia tidak boleh mendapatkan sebarang maklumat tambahan.
Pertimbangan Keselamatan
Skim perkongsian rahsia Shamir mencadangkan keselamatan dari sudut teori maklumat. Ini bermakna bahawa matematik adalah tahan walaupun terhadap penyerang dengan kuasa pengkomputeran tanpa had. Walau bagaimanapun, litar masih mengandungi beberapa isu yang diketahui.
Sebagai contoh, skim Shamir tidak mencipta serpihan untuk diperiksa, iaitu, orang ramai boleh bebas membentangkan serpihan palsu dan mengganggu pemulihan rahsia yang betul. Penyimpan serpihan yang bermusuhan dengan maklumat yang mencukupi bahkan boleh menghasilkan serpihan lain dengan menukar mengikut budi bicara anda sendiri. Masalah ini diselesaikan menggunakan skim perkongsian rahsia yang boleh disahkan, seperti skim Feldman.
Masalah lain ialah panjang mana-mana serpihan adalah sama dengan panjang rahsia yang sepadan, jadi panjang rahsia mudah ditentukan. Masalah ini boleh diselesaikan secara remeh padding rahsia dengan nombor arbitrari sehingga panjang tetap.
Akhir sekali, adalah penting untuk ambil perhatian bahawa kebimbangan keselamatan kami mungkin melangkaui reka bentuk itu sendiri. Untuk aplikasi kriptografi dunia sebenar, selalunya terdapat ancaman serangan saluran sisi di mana penyerang cuba mengekstrak maklumat berguna daripada masa pelaksanaan aplikasi, caching, ranap sistem, dsb. Jika ini membimbangkan, pertimbangan yang teliti harus diberikan semasa pembangunan untuk menggunakan langkah perlindungan seperti fungsi dan carian masa tetap, menghalang memori daripada disimpan ke cakera, dan beberapa pertimbangan lain yang berada di luar skop artikel ini.
Demo
Pada
Sumber: www.habr.com