Williams Cryptosystem är ett krypteringssystem med offentlig nyckel skapat av Hugh Cowie Williams 1984.
Algoritmen utvecklades 1984 som ett alternativ till den mer kända RSA. Syftet med utvecklingen var att bli av med sårbarheterna i kryptosystemet.
För vilket kryptosystem som helst är det önskvärt att det bevisas att dess brytning har en beräkningskomplexitet som liknar beräkningskomplexiteten hos ett problem som för tillfället inte kan lösas inom en överskådlig tid. Liksom RSA, är Williams kryptosystem baserat på antagandet att det är svårt att faktorisera stora tal, och det har bevisats att för all krypteringstext som bryts med hjälp av preliminär kryptoanalys (som endast har den publika nyckeln), är det nödvändigt att faktorisera [ 1] , det vill säga lös ekvationen för och . Detta påstående har inte bevisats för RSA- systemet . Faktoriseringsproblemets beräkningskomplexitet är okänd, men den tros vara ganska hög. Men precis som RSA är Williams kryptosystem sårbart för en chiffertextattack.
Williams systemalgoritm, även om den inte är beräkningsmässigt mer komplex än RSA, är mycket mer besvärlig att beskriva. Det finns ett lemma för den [2] , som kommer att beskrivas i avsnittet om den matematiska apparaten - den spelar en nyckelroll i detta kryptosystem.
Till att börja med bör terminologin definieras - den är lånad från teorin om kvadratiska fält , men endast den mest grundläggande kunskapen krävs för ett kryptosystem. Tänk på elementet
där är heltal och är ett villkorligt element vars kvadrat är . Då kommer följande formler att vara giltiga:
Konjugatet av ett tal kallas
Vi definierar också funktioner som hjälper oss att uttrycka kraften i detta tal. Låta
då kan du uttryckas så här:
Det sista uttrycket är endast för att underlätta förståelsen. Eftersom funktionerna är definierade för par innehåller de inte . Om vi nu antar att , då kan vi skriva följande återkommande relationer:
Dessa formler är utformade för att snabbt beräkna och . Sedan och , det beror inte heller på .
LemmaLåta vara produkten av två udda primtal och ; är heltal som uppfyller ekvationen . Låt Legendre-symbolerna och tillfredsställa kongruenserna
.Vidare, låt och Jacobi-symbolen vara lika med 1. Beteckna
och vi antar det och uppfyller jämförelsen
.Under dessa antaganden
Först två primtal och väljs , och deras produkt beräknas . Med hjälp av uppräkning väljs ett nummer så att Legendre symboliserar och uppfyller de villkor som ställs i lemma. Sedan (även genom val) bestäms ett nummer så att Jacobi-symbolen
och Antal väljs på samma sätt som i lemmat:
Sedan väljs siffror som uppfyller de villkor som ställs i lemma. Vi väljer slumpmässigt, till exempel, och beräknar med formeln
Sedan är den offentliga nyckeln och är den privata nyckeln.
Alla beräkningar här är modulo . Notationen här betyder Låt oss representera klartexten som ett tal . Definiera och : om Jacobi-symbolen är lika med , då
ochannars definierar vi genom produkten
ochDå är det lätt att verifiera att Jacobi-symbolen
som verifieras genom direkt beräkning (i det andra fallet, med hänsyn till valet och multiplikativiteten för Jacobi-symbolen). Därefter hittar vi numret
Låt oss representera det i formen uppfyller de villkor som ställs i lemma. De uppfyller faktiskt byggvillkoren, och
Det följer av den sista formeln att
Efter att ha mottagit det, bör det krypteras med exponentiering - resultatet kan representeras genom och som kan [3] snabbt (för antalet operationer i ordning ) hittas med återkommande formler. Låt oss presentera notationen
Då blir kryptotexten en trippel av siffror där
Dekryptering är lättare. Beräknade först
vad en angripare kan göra. Men för den slutliga dekrypteringen är det nödvändigt att beräkna, som visas i lemma - trots vad som hålls hemligt.
Siffran som skickas i meddelandet kommer att indikera vilket av tecknen som är korrekt - det som ger ett jämnt resultat eller det som ger ett udda. Siffran kommer att indikera om resultatet ska multipliceras med . Som ett resultat kommer vi att få numret
Och vi kan enkelt hitta källtexten, som kommer att slutföra dekrypteringsprocessen.
Liksom RSA kan ett kryptosystem attackeras baserat på en vald chiffertext . Anta att en kryptoanalytiker har hittat någon algoritm som med sannolikhet gör det möjligt att dechiffrera kryptotexten. Då kan han göra följande:
1. Välj ett tal så att Jacobi-symbolen ; 2. Kryptera , men på ett sådant sätt som om den nämnda Jacobi-symbolen är lika med och , efter att ha mottagit kryptotexten vid utgången ; 3. Dekryptera den mottagna kryptotexten, få några .Då med sannolikhet kan kryptoanalytikern få
eller
Det gör att du kan faktorisera och knäcka kryptosystemet.
Efter generering av nyckeln sker huvudberäkningarna när man höjer ett tal till en potens, och detta kan göras i modulo multiplikationer, som var och en sker i additionsoperationer, som i sin tur utförs i elementära additionsoperationer med konstant hastighet - dvs. , i , med samma hastighet, vilket är exponentieringen av en heltalsmodulo, som krävs för att använda RSA.
Låt oss välja, till exempel, och , vems produkt är . Därför att
och
Du kan välja . Dessutom, om vi väljer , får vi
Vilket uppfyller satsens villkor. Nästa får vi
Och slutligen väljer vi exponenterna för kryptering och dekryptering: sedan
Kan välja
Låt originaltexten vara . Därför att
Vi har , och
Eftersom det är udda får vi . Efter att ha räknat och vi får
Således är chiffertexten en trippel .
Nu ska du räkna ut :
Sedan beräknar vi också
Sedan måste då vara udda och
Med tanke på att den andra komponenten i chiffertexten är , drar vi slutsatsen att . I detta fall
.Således fick vi , som var den ursprungliga klartexten.