- Vad är RSA-utfyllnad och varför är det nödvändigt?
- Förstå PKCS#1 v1.5: Hur det fungerar och dess begränsningar
- OAEP förklarad: Den moderna standarden för RSA-kryptering
- PSS förklarat: Säker utfyllnad för digitala RSA-signaturer
- PKCS#1 v1.5 vs. OAEP vs. PSS: Viktiga skillnader och bästa användningsområden
- Hur krypteringskonsulting kan hjälpa
- Slutsats
Om du arbetar med säkerhetssystem, API:er eller kryptografiska bibliotek har du förmodligen stött på RSA-kryptering . RSA är en av de mest använda kryptografiska algoritmerna för publika nycklar i världen. Den driver TLS-anslutningar, digitala signaturer, certifikatbaserad autentisering och säkert nyckelutbyte inom praktiskt taget alla branscher. Men här är något som inte alltid förklaras väl: RSA i sig är inte säkert att använda direkt. Det behöver utfyllnad.
Det är utfyllnad som gör RSA-kryptering och digitala signaturer säkra i praktiken. Utan den kan angripare utnyttja förutsägbara mönster i den krypterade datan. Rå RSA är deterministisk, vilket innebär att samma indata alltid producerar samma utdata. Den förutsägbarheten skapar utnyttjandemönster som angripare har vetat hur de missbrukar i årtionden. Utfyllnadsscheman bryter mot den förutsägbarheten genom att introducera slumpmässighet och struktur innan datan krypteras eller signeras.
Det finns tre huvudsakliga RSA-padding-scheman som används idag: PKCS#1 v1.5, OAEP och PSS. Var och en har utformats för ett specifikt syfte och har en helt annan säkerhetsprofil. Att använda fel schema, eller att använda en föråldrad i ett nytt system, är inte ett mindre konfigurationsproblem. Det är en sårbarhet. Den här bloggen förklarar hur varje schema fungerar, var det hör hemma och vad din organisation bör göra just nu.
Vad är RSA-utfyllnad och varför är det nödvändigt?
När man krypterar data med rå RSA producerar samma meddelande alltid samma chiffertext . Den förutsägbarheten är ett allvarligt problem. En angripare som övervakar krypterad trafik kan upptäcka mönster och använda dem för att lära sig saker de inte borde känna till.
Padding åtgärdar detta genom att lägga till struktur-, slumpmässighets- och integritetskontroller i meddelandet före kryptering. Detta gör att varje krypteringsresultat är annorlunda, även när indata är detsamma. Tänk på padding som ett skyddande lager som RSA behöver innan det är säkert att driftsätta.
Utfyllnad är inte valfritt. Att använda RSA utan utfyllnad i ett produktionssystem är en kritisk säkerhetsbrist. Det finns tre huvudsakliga RSA-utfyllnadsscheman som används i praktiken: PKCS#1 v1.5 , OAEP och PSS . Var och en byggdes för ett specifikt syfte och var och en har sin egen säkerhetsprofil.
Förstå PKCS#1 v1.5: Hur det fungerar och dess begränsningar
PKCS#1 v1.5 introducerades 1993 och blev standard RSA-utfyllnadsschemat under många år. Det finns fortfarande i ett stort antal äldre system, TLS-implementeringar och äldre företagsprogramvara. Om du granskar eller underhåller äldre infrastruktur kommer du sannolikt att stöta på det.
För kryptering formaterar PKCS#1 v1.5 meddelandet innan det krypteras. Det börjar med en fast bytesekvens, följt av slumpmässiga byte som inte är noll, sedan en nollbyte och slutligen själva meddelandet. De slumpmässiga bytorna hjälper till att göra varje chiffertext unik, och strukturen låter mottagaren hitta och ta bort utfyllnaden efter dekryptering. För digitala signaturer använder formatet ett annat bytemönster och inkluderar en hash-identifierare.
Problemet är att forskaren Daniel Bleichenbacher år 1998 upptäckte det som nu kallas Bleichenbacherattacken. Denna attack fungerar genom att skicka ett stort antal skapade chiffertexter till en server och leta efter ett specifikt svar: huruvida utfyllnaden var giltig eller inte. Genom att använda det svaret som en signal kan en angripare så småningom dekryptera ett meddelande utan att någonsin ha den privata nyckeln.
Det som gör detta särskilt oroande är att attacken fortfarande fungerar idag. En forskningsinsats från 2017 kallad ROBOT (Return of Bleichenbacher's Oracle Threat) fann att stora leverantörer inklusive F5, Citrix och Palo Alto Networks hade produkter som fortfarande var sårbara, nästan två decennier efter den ursprungliga upptäckten.
Begränsningar för PKCS#1 v1.5:
- Sårbar för Bleichenbacher-padding-orakelattacker
- Dess struktur skapar felsignaler som angripare kan utnyttja
- Inga formella säkerhetsbevis mot moderna attackmodeller
- Bör inte användas i någon ny krypteringsimplementering
OAEP förklarad: Den moderna standarden för RSA-kryptering
OAEP, som står för Optimal Asymmetric Encryption Padding, introducerades 1994 och är nu en del av PKCS#1 v2.0. Det är den rekommenderade metoden för RSA-kryptering idag. Till skillnad från PKCS#1 v1.5 har OAEP ett formellt säkerhetsbevis, vilket innebär att dess säkerhet är matematiskt kopplad till svårigheten att bryta RSA självt.
OAEP fungerar genom att använda en maskgenereringsfunktion (MGF) baserad på en kryptografisk hash, vanligtvis SHA-256, för att blanda in ett slumpmässigt frö i meddelandet före kryptering. Denna process är mer grundlig än att bara lägga till slumpmässiga byte i början. Slumpmässigheten är djupt inbyggd i strukturen hos det utfyllda blocket. Med OAEP ger ändring av en enda bit i chiffertexten ett helt oförutsägbart resultat vid dekryptering. Detta tar bort de strukturerade felsignalerna som Bleichenbacher-attacken förlitar sig på.
I praktiken, när du konfigurerar en HSM , ställer in en TLS-policy eller granskar ett kryptografiskt bibliotek, bör du bekräfta att RSA-krypteringsåtgärder använder OAEP med en säker hashalgoritm. Om PKCS#1 v1.5 fortfarande är specificerad för kryptering i ett nytt system är det värt att flagga omedelbart.
Varför OAEP är rätt val för kryptering:
- Bevisat säkert under den slumpmässiga orakelmodellen
- Eliminerar felkanalerna som används i Bleichenbacher-attacker
- Producerar olika chiffertexter varje gång, även för samma inmatning
- Stöds i alla moderna kryptografiska bibliotek
- Krävs enligt NIST-riktlinjer för RSA-kryptering
PSS förklarat: Säker utfyllnad för digitala RSA-signaturer
PSS står för Probabilistic Signature Scheme och är specifikt utformat för digitala RSA-signaturer. Det fungerar tillsammans med OAEP men tjänar ett annat syfte. Medan OAEP hanterar kryptering hanterar PSS signering. Båda delar en liknande designstrategi, nämligen att säkerhet ska vara formellt bevisbar, inte bara antagen.
En punkt som ofta orsakar förvirring: PKCS#1 v1.5 användes för både kryptering och signaturer. PSS är ett dedikerat signaturschema. Man skulle inte använda PSS för kryptering, precis som man inte skulle använda OAEP för signaturer. Varje schema har sin roll.
Vid signering med PSS genererar schemat ett slumpmässigt salt och hashar det tillsammans med meddelandesammanfattningen. Detta resultat kodas sedan med en maskeringsfunktion. Verifieraren återställer saltet, beräknar om hashen och kontrollerar att allt matchar. Två signaturer över samma meddelande kommer att se olika ut, men båda kommer att verifieras korrekt.
Att bryta PSS är matematiskt likvärdigt med att bryta RSA i sig. PKCS#1 v1.5-signaturer kan inte göra det påståendet. För organisationer som arbetar mot FIPS 186-5 eller enligt SOC 2- eller ISO 27001-ramverk är PSS det rekommenderade eller obligatoriska schemat.
När man ska använda PSS:
- Alla nya implementeringar som kräver digitala RSA-signaturer
- Kodsignering, certifikatutfärdande och arbetsflöden för dokumentintegritet
- Överensstämmelse med FIPS 186-5 eller NIST SP 800-131A
- Ersätta äldre PKCS#1 v1.5-signaturscheman i befintliga system
PKCS#1 v1.5 vs. OAEP vs. PSS: Viktiga skillnader och bästa användningsområden
Här är en enkel jämförelse av alla tre systemen.
PKCS#1 v1.5 byggdes för både kryptering och signaturer, men den medför betydande säkerhetsrisker idag. Dess säkerhetsnivå är svag enligt moderna standarder, den använder minimal slumpmässighet och är mycket sårbar för Bleichenbacher-attacken. Den bör endast förvaras i system där det ännu inte är möjligt att ersätta den, och även då bör migrering planeras.
OAEP är byggd exklusivt för kryptering. Det är den moderna, säkra standarden, som backas upp av formella bevis och stöds överallt. Den introducerar korrekt slumpmässighet genom ett frö, vilket eliminerar attackytan som PKCS#1 v1.5 lämnade öppen. All ny RSA-kryptering bör använda OAEP.
PSS är byggt exklusivt för digitala signaturer. Liksom OAEP använder det slumpmässighet genom ett saltvärde och har ett strikt säkerhetståligt skydd kopplat direkt till RSA. Det är rätt val för alla nya implementeringar av RSA-signaturer och krävs enligt flera viktiga regelverk.
Slutsatsen är enkel: PKCS#1 v1.5 bör inte förekomma i någon ny kryptografisk design. Använd OAEP för RSA-kryptering. Använd PSS för digitala RSA-signaturer. Detta är inte en fråga om preferens; det återspeglar aktuell kryptografisk forskning och regulatoriska riktlinjer.
För många organisationer som kör blandade miljöer är den större utmaningen att hitta var dessa system används, inte att åtgärda dem. Man kan inte åtgärda ett problem man inte har hittat. Kryptografiska agilitetsbedömningar och PKI-hälsokontroller är det mest tillförlitliga sättet att upptäcka dessa problem innan de blir till incidenter.
Hur krypteringskonsulting kan hjälpa
Att veta att PKCS#1 v1.5 borde ersättas är enkelt. Att hitta var det än används i din miljö är en helt annan utmaning. De flesta organisationer som kör blandad infrastruktur har RSA-utfyllnadsscheman spridda över kryptografiska bibliotek, API:er, HSM:er, TLS-konfigurationer och äldre applikationer; och ingen tydlig bild av var var och en finns. Det är problemet CBOM Secure är byggt för att lösa.
CBOM Secure är Encryption Consultings kryptografiska identifierings- och inventeringslösning. Den skannar kontinuerligt din kod, molnmiljöer och HSM:er för att hitta alla kryptografiska tillgångar som används, inklusive algoritmer, utfyllnadsscheman och nyckelkonfigurationer bakom dem. Om PKCS#1 v1.5 används någonstans i din miljö kommer den att hitta den.
Här är vad den behandlar i samband med vad den här bloggen tar upp:
Kryptografisk identifiering över kod och infrastruktur: CBOM Secure identifierar RSA-användning i din miljö och kartlägger utfyllnadsscheman kopplade till varje implementering, så att du vet exakt var OAEP och PSS behöver ersätta äldre konfigurationer.
Kvantriskpoängsättning: Utöver utfyllnadsscheman poängsätter den din kryptografiska ställning mot kvantrisk, vilket hjälper dig att prioritera vad du ska åtgärda först baserat på faktisk exponering snarare än gissningar.
Efterlevnadsanpassning: CBOM Secure mappar ditt kryptografiska inventarium mot ramverk inklusive FIPS, CMMC och PCI DSS, och visar konfigurationer som faller utanför efterlevnadskraven, inklusive föråldrade utfyllnadsscheman som flaggats under NIST SP 800-131A.
Stöd för kryptografisk flexibilitet: När du väl vet vad som finns i din miljö ger CBOM Secure dig den inventeringsgrund som behövs för att planera migreringar metodiskt, vilket är precis vad som krävs för att bygga kryptografisk flexibilitet.
För organisationer som har identifierat behovet av att granska och modernisera sina RSA-implementeringar är CBOM Secure utgångspunkten som gör resten av arbetet möjligt.
Slutsats
RSA-utfyllnadsscheman kan verka som ett smalt ämne, men de står i centrum för hur kryptografi med publik nyckel faktiskt fungerar i verkliga system. Att få dem rätt är inte valfritt. Att välja PKCS#1 v1.5 för en ny krypteringsimplementering är inte ett litet misstag; det öppnar dörren för en klass av attacker som har varit kända och aktivt utnyttjade i över två decennier.
Vägen är enkel: använd OAEP för RSA-kryptering och PSS för digitala RSA-signaturer. Granska dina befintliga system för PKCS#1 v1.5. Bygg in kryptografisk flexibilitet så att framtida migreringar inte kräver att man börjar om från början.
- Vad är RSA-utfyllnad och varför är det nödvändigt?
- Förstå PKCS#1 v1.5: Hur det fungerar och dess begränsningar
- OAEP förklarad: Den moderna standarden för RSA-kryptering
- PSS förklarat: Säker utfyllnad för digitala RSA-signaturer
- PKCS#1 v1.5 vs. OAEP vs. PSS: Viktiga skillnader och bästa användningsområden
- Hur krypteringskonsulting kan hjälpa
- Slutsats
