Dela via


Manuella utbyten av sessionsnycklar

Not

Proceduren som beskrivs i det här avsnittet förutsätter att användarna (eller CryptoAPI-klienterna) redan har en egen uppsättning offentliga/privata nyckelpar och även har fått varandras offentliga nycklar.

 

Följande bild visar hur du använder den här proceduren för att skicka ett krypterat meddelande.

skicka ett krypterat meddelande

Den här metoden är sårbar för minst en vanlig form av angrepp. En tjuvlyssnare kan hämta kopior av ett eller flera krypterade meddelanden och de krypterade nycklarna. Sedan kan tjuvlyssnaren vid ett senare tillfälle skicka ett av dessa meddelanden till mottagaren och mottagaren kommer inte att ha något sätt att veta att meddelandet inte kom direkt från den ursprungliga avsändaren. Den här risken kan minskas genom tidsstämpling av alla meddelanden eller med hjälp av serienummer.

Det enklaste sättet att skicka krypterade meddelanden till en annan användare är att skicka meddelandet krypterat med en slumpmässig sessionsnyckel tillsammans med sessionsnyckeln krypterad med mottagarens offentliga nyckel för nyckelutbyte.

Följande är stegen för att skicka en krypterad sessionsnyckel.

Skicka en krypterad sessionsnyckel

  1. Skapa en slumpmässig sessionsnyckel med hjälp av funktionen CryptGenKey.
  2. Kryptera meddelandet med hjälp av sessionsnyckeln. Den här proceduren beskrivs i datakryptering och dekryptering.
  3. Exportera sessionsnyckeln till en blob- med funktionen CryptExportKey och ange att nyckeln ska krypteras med målanvändarens offentliga nyckel för nyckelutbyte.
  4. Skicka både det krypterade meddelandet och den krypterade nyckeln BLOB till målanvändaren.
  5. Målanvändaren importerar nyckelbloben till sin CSP med hjälp av funktionen CryptImportKey. Detta dekrypterar automatiskt sessionsnyckeln, förutsatt att målanvändarens offentliga nyckel för nyckelutbyte angavs i steg 3.
  6. Målanvändaren kan sedan dekryptera meddelandet med hjälp av sessionsnyckeln enligt proceduren som beskrivs i datakryptering och dekryptering.