Spørgsmål:
Hvad er forskellen mellem en "Thumbprint Algorithm" "Signature Algorithm" og "Signature Hash Algorithm" for et certifikat?
Mike B
2014-10-21 01:31:01 UTC
view on stackexchange narkive permalink

Jeg er lidt forvirret over forskellene mellem Signature Algorithm , Signature Hash Algorithm og Thumbprint Algorithm , der findes i SSL / TLS-certifikater. Kan nogen uddybe?

To svar:
Tom Leek
2014-10-21 01:45:56 UTC
view on stackexchange narkive permalink

Du er forvirret, fordi nogle mennesker (ja jeg kigger på dig, Microsoft) har brugt termerne inkonsekvent.

En signaturalgoritme er en kryptografisk algoritme, der:

  • Underskriveren ejer et offentlig / privat nøglepar . Den offentlige nøgle er offentlig, den private nøgle er privat; selvom begge nøgler er matematisk knyttet sammen, er det ikke muligt at beregne den private nøgle fra den offentlige nøgle (det er grunden til, at den offentlige nøgle sikkert kunne gøres offentlig).
  • På en given inputmeddelelse er underskriver kan bruge sin private nøgle til at beregne en signatur , som er specifik for både underskriverens nøglepar og inputmeddelelsen.
  • Der er en verifikationsalgoritme der tager som input beskeden, signaturen og den offentlige nøgle og svarer "sandt" (de matcher) eller "falsk" (de gør ikke).

Hjørnestenen i signatur sikkerhed er, at det ikke skal være muligt uden kendskab til den private nøgle at generere par besked + signatur, som verifikationsalgoritmen accepterer.

Du kan støde på nogle "forklaringer", der forsøger at sige, at digital underskrifter er en slags kryptering; de beskriver det normalt som "du krypterer med den private nøgle". Tro det ikke; disse forklaringer er faktisk forkerte og forvirrende.

Af tekniske årsager begynder signaturalgoritmer (både til signering og til bekræftelse) ofte med en hash-funktion. En hash-funktion er en helt offentlig algoritme uden nøgle. Pointen med hash-funktioner er, at de kan spise terabyte data og producere en "fordøjelse" (også kaldet "fingeraftryk" eller endda "tommelfingerprint"), der har en fast, lille størrelse. Signaturalgoritmer har brug for det, fordi de arbejder med værdier i en algebraisk struktur af en begrænset størrelse og derfor ikke kan rumme store beskeder. Derfor hashes meddelelsen først, og kun hashværdien bruges til at generere eller verificere en signatur.

Den hashalgoritme, når den bruges som første trin i en signaturgenererings- eller verifikationsalgoritme, vil blive kaldt "signaturhashalgoritme". Når vi siger noget i retning af "RSA / SHA-256", mener vi "RSA-signatur med SHA-256 som ledsagende hash-funktion".

En "thumbprint-algoritme" er et andet navn for en hash-funktion. Det stødes ofte, når vi taler om certifikater : "certifikatets" fingeraftryk er virkelig resultatet af en hash-funktion, der anvendes på selve certifikatet (i Windows-systemer bruges SHA-1-hash-funktionen) .

Digitale signaturer GØR involverer kryptering med den private nøgle. Som diagrammet i linket 'signaturalgoritme' viser, tager du hash af hele certifikatet og krypterer derefter hash med den private nøgle. Underskriften er inkluderet sammen med certifikatet. Bekræftelsesproceduren er at dekryptere signaturen med den offentlige nøgle for at få hash, derefter hash certifikatet med den samme hash-algoritme og se om de 2 hash-værdier er de samme.
Fantastisk svar Tom. Virkelig klar på signaturalgoritmen og signatur hash-algoritmen. Kan du bekræfte, at "tommelfingerprintalgoritmen" (som angivet på et typisk TLS-certifikat) ikke bruges som en del af signaturgenerering / -bekræftelse, og også hvis det er tilfældet, hvad bruges det til (hvorfor er det overhovedet der) ?) Tak
Tommelfingerprint er til mennesker. Al validering af certifikater handler om at verificere signaturer fra CA, selv bekræftet med signaturer fra anden CA. Det skal starte et eller andet sted med en "root CA", der er tillid til, fordi den allerede er der. Når du _installerer_ en ny rod-CA i din Windows, viser grænsefladen rod-CA-certifikat-fingeraftrykket (i hexadecimal); det er meningen, at du skal kontrollere, at det er det korrekte (formodentlig sammenligner du med et udskrevet dokument, der indeholder det forventede rod CA-fingeraftryk, eller du ringer til sysadmin og _speak_ de hexadecimale cifre).
Så fingeraftrykket på certifikater er til valideringsjob, der ikke er dækket af den generiske certifikatvalideringsmekanisme. Især installation af root CA, fordi root CA-certifikater ikke kan valideres på anden måde (fordi det er hvad det betyder at være en root).
Så fingeraftrykket svarer til når man verificerer en stor fildownload med en hash. Vi kan se på fingeraftrykket og sige, ja, det er det certifikat, jeg forventer osv.
Jeg har altid hørt, at hvad den ene nøgle krypterer, den anden dekrypterer og vice versa.Og at faktisk den private nøgle kunne være den offentlige nøgle (i den sammenhæng, at der ikke er noget særligt i den private nøgle, men det faktum, at det ikke deles, og det offentlige er).Derfor antog jeg, at den private nøgle krypterer en signatur.Kan du venligst uddybe, hvorfor "du krypterer med den private nøgle" er forkert?
user1156544, selvom det er muligt for ejeren af certifikatet at bruge den private nøgle til at kryptere en besked, ville det ikke være sikkert, fordi alle kan dekryptere det med den offentligt tilgængelige offentlige nøgle.Det er mere nøjagtigt at sige "du underskriver med den private nøgle, du bekræfter med den offentlige nøgle, du dekrypterer med den private nøgle, og du krypterer med den offentlige nøgle".
Per [digital signatur om kryptografi] (https://crypto.stackexchange.com/questions/66148/digital-signature): `En digital signatur er ikke kryptering ... Det forklares ofte som kryptering med en privat nøgle, fordi RSAsignaturskema bruger modulær eksponentiering både til kryptering såvel som at generere signaturer.... (PKCS # 1 v2.2) går ud af vejen for at forklare, at signaturgenerering ikke er kryptering ... `
Peter G
2017-03-30 03:47:19 UTC
view on stackexchange narkive permalink

Mens det accepterede svar går i detaljer om, hvordan beregningen udføres, behandler det slet ikke det originale spørgsmål - Signaturalgoritme, Signatur Hash-algoritme og Thumbprint Algoritme, der findes i SSL / TLS-certifikater - hvilken er hvilket stykke af ligningen (især hvis Microsoft også blander det sammen)?

Svaret virker ret simpelt - fra:

https://social.technet.microsoft .com / Forums / windowsserver / da-US / 4f8fb14a-256e-4c77-86bc-40c364ec5ed0 / certifikater-forskelle-mellem-signatur-algoritme-og-signatur-hash-algoritme? forum = winserversecurity

og markeret som korrekt svar derovre:

Forskelle mellem "Signaturalgoritme" og "Signatur Hash-algoritme"

De bruges til at bestemme signaturalgoritmen og hash funktion, der bruges til at underskrive certifikatet. Disse oplysninger bruges af certifikatkædemotoren til at validere certifikatets signatur. Certifikatkædemotor beregner en hash over et certifikat (signeret del). Hash-metoden er valgt fra Signatur Hash-algoritme-feltet. Derefter afkoder certifikatkædemotor vedhæftet signatur ved hjælp af signaturalgoritme, der er angivet i feltet Signaturalgoritme og gendanner underskrevet hash. Hvis begge hashes matcher, er signaturen gyldig, hvis de adskiller sig, betragtes signaturen som ugyldig.

Min tilføjelse fra en anden kilde - Thumbprint Algo - enkel ikke-kryptoegenskab, der bruges til at identificere certifikatet på et givet system (ikke godkende det eller verificere dets gyldighed)

Jeg har virkelig problemer med at se, hvordan du har tilføjet noget til, hvad det accepterede svar giver.Du angiver alt, hvad Tom gør.
Jeg forstår motivationen til dette svar, da Toms svar ikke var særlig tydeligt / eksplicit på, hvad forskellen mellem "Signaturalgoritme" og "Signatur hash-algoritme" er.Det er dog stadig ikke klart for mig, hvorfor begge eksisterer


Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 3.0-licens, den distribueres under.
Loading...