Spring til indhold

Tilfældig API-nøglegenerator - Gratis Sikre 32-Tegns Nøgler

Generer kryptografisk sikre API-nøgler øjeblikkeligt. Gratis online værktøj opretter tilfældige 32-tegns alfanumeriske nøgler til godkendelse. Generering på klientsiden, ingen lagring.

API-nøglegenerator

Taster genereres lokalt i din browser med Web Crypto API (CSPRNG) ved hjælp af upartisk afvisningsprøvetagning. Intet sendes til nogen server.
Indlæsningsberegner...
📚

Dokumentation

En generator til tilfældige API-nøgler er et værktøj, der opretter en tilfældig streng af bogstaver og tal, som kan bruges som en adgangskodelignende kode mellem to computerprogrammer. Denne kører udelukkende i den besøgendes webbrowser. Brugeren kan vælge en nøglelængde fra 8 til 128 tegn, hvor 32 tegn er standardindstillingen.

Hvad er en API-nøgle?

En API-nøgle er en tegnstreng, som et program sender sammen med en forespørgsel for at bevise, at det har tilladelse til at bruge en tjeneste. En webserver kontrollerer nøglen, før den besvarer forespørgslen. I modsætning til et brugernavn og en adgangskode identificerer en API-nøgle normalt en applikation eller et script, ikke en person.

Nøgler fungerer bedst, når ingen kan gætte dem. En generator, der bruger ægte tilfældighed, undgår de mønstre, der optræder i nøgler, som en person indtaster, f.eks. gentagne tegn eller korte, lette ord.

Sådan fungerer denne generator

Værktøjet opbygger hver nøgle ud fra et fast sæt på 62 tegn: de 26 store bogstaver A–Z, de 26 små bogstaver a–z og de 10 cifre 0–9. For en nøgle med længden n vælger det n tegn fra dette sæt, ét ad gangen.

Hvert tegn kommer fra browserens Web Crypto API, nærmere bestemt crypto.getRandomValues(). Det er en kryptografisk sikker tilfældighedsgenerator (CSPRNG), i modsætning til JavaScripts Math.random(), som er forudsigelig og uegnet til sikkerhedsfølsomme værdier.

For at vælge et retfærdigt tegn blandt 62 muligheder ud fra en tilfældig byte (256 mulige værdier) kan generatoren ikke bare bruge byte % 62. Da 256 ikke går jævnt op i 62, ville en simpel restoperator gøre de første tegn i sættet en smule mere sandsynlige end resten. Værktøjet undgår dette med forkastningssampling: Det kasserer alle tilfældige bytes, der ville skabe denne skævhed, og trækker i stedet en ny. Hvert tegn i den endelige nøgle har derfor samme, ubiaserede sandsynlighed for at optræde på hver position.

Sådan genererer du en API-nøgle

  1. Angiv en nøglelængde på mellem 8 og 128 tegn, eller behold standardværdien på 32.
  2. Klik på "Generer." Nøglen vises i et tekstfelt og oprettes udelukkende i browseren.
  3. Klik på "Kopiér" for at kopiere nøglen til udklipsholderen. Nogle browsere beder om tilladelse første gang.
  4. Klik på "Generer igen" for at oprette en ny nøgle med samme længde, eller på "Nulstil" for at vende tilbage til standardlængden.

Ingen nøgle sendes til en server, logføres eller gemmes. Genereringen sker med lokal JavaScript-kode, så en kontrol af browserens netværksaktivitet under genereringen viser ingen udgående forespørgsler.

Sådan beregnes antallet af mulige nøgler

Antallet af forskellige nøgler, der kan oprettes med en given længde, følger en enkel formel:

Mulige nøgler = (tegnsættets størrelse) ^ (nøglens længde)

Tegnsættets størrelse er altid 62 for dette værktøj. For standardlængden på 32:

Mulige nøgler = 62³² ≈ 2,27 × 10⁵⁷

Dette tal kan også udtrykkes som entropi, målt i bit, ved hjælp af formlen:

Entropi (bit) = nøglelængde × log₂(tegnsættets størrelse)

For en nøgle på 32 tegn: 32 × log₂(62) ≈ 32 × 5,95 ≈ 190,5 bit.

Tid til at prøve alle nøgler

Antag, at en angriber kunne teste en milliard (10⁹) nøgler i sekundet, hvilket er urealistisk hurtigt for ethvert virkeligt system. Det ville tage følgende tid at prøve alle mulige nøgler på 32 tegn:

2,27 × 10⁵⁷ ÷ 10⁹ = 2,27 × 10⁴⁸ sekunder ≈ 7,2 × 10⁴⁰ år

Til sammenligning er universet cirka 1,4 × 10¹⁰ år gammelt. En udtømmende søgning gennem alle mulige nøgler er ikke en praktisk trussel ved denne længde. Kortere nøgler formindsker dette tal hurtigt: en nøgle på 8 tegn har kun 62⁸ ≈ 2,18 × 10¹⁴ mulige værdier, som en hurtig computer kan gennemsøge på få dage.

Hvorfor applikationer bruger API-nøgler

API-nøgler giver en tjeneste en enkel måde at se, hvilken applikation der sender en forespørgsel. Det har flere årsager.

Godkendelse. En server kan afvise forespørgsler, der ankommer uden en gyldig nøgle, og dermed blokere det meste tilfældige misbrug.

Brugssporing. Da hver klient kan have en anden nøgle, kan en tjeneste måle, hvor meget hver klient bruger, og anvende separate hastighedsgrænser for hver nøgle.

Tilbagekaldelse. En enkelt kompromitteret nøgle kan deaktiveres uden at påvirke andre klienter, fordi hver nøgle er uafhængig.

API-nøgler er enklere at implementere end OAuth 2,0, en godkendelsesstandard baseret på midlertidige tokens, der automatisk fornyes. OAuth egner sig til offentligt tilgængelige tjenester, der håndterer personlige brugerdata. API-nøgler er almindelige til interne værktøjer, scripts og kald mellem tjenester, hvor langvarige legitimationsoplysninger er acceptable.

Sikkerhedspraksis for API-nøgler

Nogle praksisser reducerer risikoen for en lækket nøgle:

  • Gem ikke nøgler i kildekoden. Versionsstyringens historik er svær at slette, og offentlige repositorier skannes konstant for blotlagte adgangsoplysninger. Gem i stedet nøgler i miljøvariabler eller i et system til håndtering af hemmeligheder.
  • Udskift nøgler med jævne mellemrum. Udskiftning af en nøgle med få måneders mellemrum begrænser, hvor længe en lækket nøgle kan bruges af en angriber.
  • Giv en nøgle mindst mulig adgang. En nøgle, der kun læser data, bør ikke også kunne skrive eller slette dem.
  • Hold øje med usædvanlig aktivitet, f.eks. en pludselig stigning i antallet af forespørgsler fra én nøgle.

Begrænsninger

Værktøjet fører ikke register over de nøgler, det har genereret, så det kan ikke garantere, at en nøgle aldrig er blevet oprettet før. Sandsynligheden for, at to tilfældige nøgler på 32 tegn er ens, er cirka 1 ud af 2,27 × 10⁵⁷, hvilket er tæt nok på nul til almindelig brug. Systemer, der kræver en absolut garanti for unikhed, f.eks. primærnøgler i databaser, bør dog kontrollere nye værdier mod eksisterende på en server.

Tegnsættet består fast af store bogstaver, små bogstaver og cifre. Det omfatter ikke symboler som ! eller -, hvilket gør det sikkert at indsætte nøgler i de fleste URL'er, headere og konfigurationsfiler uden at skulle bruge escape-tegn.

Ofte stillede spørgsmål

Hvad er en generator til API-nøgler?

Det er et værktøj, der opretter tilfældige strenge til brug som legitimationsoplysninger til godkendelse mellem softwareapplikationer. Dette værktøj opretter nøgler på 8 til 128 tegn, valgt blandt 62 mulige tegn ved hjælp af browserens kryptografisk sikre generator af tilfældige tal.

Er en nøgle fra dette værktøj sikker nok til brug i produktion?

Selve tilfældigheden er kryptografisk sikker. Den samlede sikkerhed afhænger også af, hvordan nøglen gemmes og overføres bagefter: Læg den aldrig i versionsstyring, send den altid over HTTPS, og udskift den regelmæssigt.

Hvilken længde bør jeg vælge?

Standardlængden på 32 tegn giver omkring 2,27 × 10⁵⁷ mulige kombinationer, langt flere end noget realistisk brute force-forsøg kunne søge igennem. Kortere nøgler, f.eks. på 16 tegn, kan være passende til interne værktøjer med lav risiko. Meget lange nøgler giver kun lidt ekstra beskyttelse, men er sværere at gemme og indsætte.

Kan jeg angive en brugerdefineret længde?

Ja. Længdefeltet accepterer alle hele tal fra 8 til 128. Selve tegnsættet (A–Z, a–z, 0–9) forbliver uændret.

Gemmer eller overfører værktøjet de nøgler, det genererer?

Nej. Hver nøgle genereres med lokal JavaScript-kode i browseren. Intet sendes til en server, logføres eller gemmes.

Hvad er forskellen mellem en API-nøgle og et OAuth-token?

En API-nøgle fungerer som langvarige legitimationsoplysninger, der forbliver gyldige, indtil nogen tilbagekalder dem. Et OAuth-token udløber automatisk efter et bestemt tidsrum og kan fornyes uden direkte involvering fra brugeren. OAuth passer til offentlige tjenester, der håndterer persondata, mens API-nøgler passer til enklere, interne eller udviklingsrelaterede formål.

Hvilke browsere understøtter dette værktøj?

Enhver moderne browser med Web Crypto API fungerer: Chrome 60 og nyere, Firefox 55 og nyere, Safari 10 og nyere, Edge 79 og nyere samt Opera 47 og nyere.

Referencer

  1. MDN Web Docs (Mozilla). Crypto: getRandomValues() method. Crypto.getRandomValues() — returnerer kryptografisk stærke tilfældige værdier, der egner sig til kryptografiske formål.
  2. MDN Web Docs (Mozilla). Math.random(). Math.random() — leverer ikke kryptografisk sikre tilfældige tal og bør ikke bruges til sikkerhedsformål.
  3. OWASP Foundation. Secrets Management Cheat Sheet. Secrets Management Cheat Sheet — API-nøgler skrevet direkte ind i kildekoden og argumenterne for central opbevaring og rotation af hemmeligheder.
  4. NASA Science. Universe overview. Universe overview — universet opstod for omkring 13,8 milliarder år siden.