Oletetaan, että olet diplomaatti, joka on löytänyt kauheita uutisia. Hallituksen korkeimmalla tasolla on 16 henkilöä, joille voit lähettää viestin, ja haluat valita heistä 5, joista vähintään 3 on läsnä viestiä purettaessa. Et esimerkiksi halua presidentin tietävän, mutta haluat sotilasjohtajan ja neljä lainsäädäntöelimen johtajaa saamaan viestin. Normaalilla salauksella voit lähettää viestin jokaiselle henkilölle erikseen, mutta et voi pakottaa kynnysarvoa purkamiseen osallistuvien ihmisten määrälle. Kynnyssalauksen idea on, että sinulla on yhteensä N henkilöä, joiden julkiset avaimet ovat yhdessä lohkossa. Kuka tahansa voi valita heistä L ja luoda salausavaimen käyttämällä heidän julkisia avaimiaan lohkosta. Sitten he voivat määrittää kynnysarvon T ja salata viestin, joka lähetetään L vastaanottajalle. Jokainen vastaanottaja tekee osittaisen salauksen purkamisen. Tämä osa voi olla todella monimutkainen tai pakotettu olemaan todella yksinkertainen riippuen siitä, miten käyttötapaus toteutetaan. Voit esimerkiksi tehdä salauksen purkamisen yhdellä tietokoneella, ja kaikki kiintiöön kuuluvat henkilöt syöttävät salasanansa kyseiseen koneeseen. Tai voit lähettää jokaisen henkilön salauksen purkamisen yhdelle listan henkilölle, joka yhdistää ne lopullista salauksen purkamista varten. Kun kaikki kynnysarvon mukaiset henkilöt ovat tehneet oman osansa, salauksen purkamisen viimeinen vaihe voi tapahtua. Kynnyssalauksen takana oleva matematiikka on melko tiheää. Yksityiskohtia varten, katso Olen myös toteuttanut sen koodina, ja matematiikan ja koodin kuvaus löytyy . Mielenkiintoista ovat kynnyssalauksen mahdolliset käyttötavat. Vaikka matematiikan ymmärtäminen on hyödyllistä, potentiaalisten käyttötapojen ymmärtäminen on mielenkiintoisempi haaste. NISTistä. täältä Tässä algoritmassa N on kahden potenssi. Tämä ei ole kriittistä, koska voit käyttää joukkoa valekäyttäjiä. Mutta se vaikuttaa julkisen avainlohkon kokonaiskokoon. Henkilöiden määrä, joille viesti salataan, "L" edellä mainitussa kuvauksessa, on pienempi tai yhtä suuri kuin N. Joten, mitä tapahtuu rajoissa? Jos L = N, kaikki listalla olevat voivat olla "purkajia". Jos T = 1, saat "lähetysjärjestelmän". Yksi salattu viesti lähetetään kaikille, ja jokainen henkilö voi purkaa sen omatoimisesti. Jotta matematiikka toimisi, T:n on oltava pienempi tai yhtä suuri kuin L. Voit pakottaa kaikki listalla olevat osallistumaan salauksen purkamiseen asettamalla T = L. Diplomaattiesimerkissä lähettäisit viestin 5 henkilölle ja sanoisit sitten, että kaikkien 5 on oltava läsnä viestin purkamiseksi, koska järkytys on jaettava. Koko algoritmi kuvataan seitsemällä vaiheella. Ensimmäinen vaihe on "asetus", joka määrittää turvallisuustason ja kokonaiskäyttäjämäärän N, jota voidaan käsitellä. Jos myöhemmin haluat lisätä käyttäjiä, aloitat tästä 2N:llä luodaksesi ns. "Common Reference String" (CRS). CRS on vektoreiden ja matriisien lohko, jonka koko riippuu N:stä. Kun CRS on luotu, jokainen henkilö luo yksityisen avaimen, joka muunnetaan julkiseksi avaimeksi. Pidän ajatuksesta, että yksityisiä avaimia ei koskaan tallenneta; ne luodaan aina uudelleen salasanan tiivisteen avulla. Toteuttamalla algoritmin elliptisillä käyrillä tämä on triviaalia. Kunkin käyttäjän koko julkinen avain koostuu 4N pisteestä, joten se on paljon suurempi kuin standardi julkinen avainalgoritmi. Kenen viestin saa, valitseminen kutsutaan "esikäsittelyvaiheeksi". Lähettäjä valitsee L vastaanottajaa, ja algoritmi yhdistää heidän julkiset avaimensa salausavaimeksi ja vektoriksi, jota kutsutaan aggregaatioavaimeksi. Salausavain riippuu L-listan käyttäjistä. Aggregaatioavain on yhdistelmä avaimista, jotka eivät ole L:ssä, ja avaimista, jotka ovat L:ssä. Näitä kahta avainta voidaan sitten käyttää seuraavassa vaiheessa. Salausvaihe käyttää useita satunnaislukuja yhdistettynä CRS:ään ja salausavaimeen viestin piilottamiseksi. Viesti on numero, mutta mikä tahansa merkkijono voidaan muuntaa kelvolliseksi numeroksi melko helposti, koska numerot ovat niin suuria. Esimerkkiohjelmani sisältää 520 tavun numeron. Pohdittuani ohjelman kirjoitustapaa tajusin, että voisin käyttää samaa piilotusarvoa useisiin 520 tavun lohkoihin. Joten viestin kokoiselle ei ole todellista rajaa, jonka voi piilottaa. Mutta voi olla helpompaa käyttää 520 tavua avaimena symmetriselle algoritmille. Kun kaikki ovat saaneet salatun viestin, he käyttävät kukin omaa yksityistä avaintaan luodakseen kertakäyttöisen julkisen avaimen. He valitsevat kukin satunnaisluvun yhdistettäväksi CRS-tietojen ja julkisen avaimensa kanssa. Algoritmissa tätä kutsutaan "osittaiseksi salauksen purkamiseksi", mutta se on todellisuudessa vain tunnettujen parametrien ja toisen satunnaisluvun yhdistelmä yksityisen avaimen piilottamiseksi. Kaikkien osittaisten salauksen purkuarvojen aggregaattori tekee sitten "osittaisen varmistusvaiheen" käyttäen kunkin käyttäjän julkista avainta ja CRS-tietoja. Tämä ei ole todella välttämätöntä, mutta ei ole koskaan pahitteeksi tarkistaa asioita, kun voi. Toteutuksen kannalta se on olennainen turvallisuustarkistus. Kun riittävästi käyttäjiä on yhdistänyt osittaiset salauksen purkuarvonsa, viesti voidaan purkaa. Tässä matematiikka tulee todella sotkuiseksi. Kaikki satunnaisluvut supistuvat pois, kaikki julkiset avaimet yhdistyvät, ja käänteinen matriisi poistaa joukon salaisia numeroita CRS:stä. Jos pidät matematiikasta, se on melko siistiä. Matematiikka perustuu pisteiden pariliitokseen elliptisten käyrien yli. Tällä hetkellä ei tunneta algoritmia, joka voisi kumota matematiikan (ns. elliptisen käyrän logaritmiongelma). On ehdotettu algoritmeja, jotka toimisivat kvanttitietokoneella, jossa on noin 2^32 Toffoli-porttia. Kun yksi Toffoli-portti on rakennettu, kvanttitietokoneiden Moore-laki voi alkaa. Jos kaksinkertaistumisaika on yksi vuosi, silloin kestää 32 vuotta ennen kuin 128-bittiset turvalliset elliptiset käyrät murtuvat. Jos sinun on piilotettava asioita 50 vuodeksi, silloin saatat haluta huolehtia siitä, että kvanttitietokoneet murtavat viestisi 40 vuoden kuluttua. Mutta koska kello ei ole vielä käynnistynyt, voi hyvin kestää 60 vuotta ennen kuin kukaan voi murtaa nykyisen elliptisen käyrän algoritmin. Useimmille ihmisille kynnyssalaus on täysin turvallinen ja tulee olemaan vielä 30+ vuotta. Erityisesti, jos sinun tarvitsee piilottaa asioita vain muutaman vuoden ajan. Olen luottavainen siitä, että kynnyssalaukselle on monia muita käyttötapoja, joita en ole ajatellut. Joten, tutustu siihen ja katso, mitä voit tehdä.