webForumDet fria alternativet

Kryptering av lösenord mot extern tjänst

.NET

4 svar · 628 visningar · startad av Compusa

Medlem sedan jan. 20023 327 inlägg
Frågan#1

Håller på med ett projekt där jag ska ansluta mot en extern internet-tjänst. I dagsläget finns det lite påbörjad kod som jag är i full gång att skriva om. För att använda denna tjänsten så måste man ha ett abonnemang med användarnamn och lösenord mm. Lösenordet är angivet i klartext i programkoden men tanken är nu att jag ska flytta över abonnemangsuppgifterna till en databas. Jag vill helst inte spara lösenordet i klartext.

Att kryptera lösenordet är inte svårt men det kommer ju inte fungera särskilt bra att skicka över ett krypterat lösenord till den externa tjänsten eftersom den inte känner till vilken kryptering jag använder. Hur brukar man göra i sådana här fall? Jag skulle ju kunna hitta på en egen kryptering som går att få tillbaka i klartext men det känns inte helt optimalt.

Medlem sedan nov. 20014 054 inlägg
#2

Antar att du styr ej över tjänsten i detta fall?

Med lite lek på huvudet skulle jag väl förslagsvis höra med leverantören av tjänsten och se vilka alternativ det finns. Dock ett alternatic kan väl vara att du sparar krypterade lösenord i databasen, och vid användning av tjänsten (när du anropar den) dekrypterar du lösenordet. På så viss är lösenordet i databasen åtminstone "skyddat", dock inte via transfer över nätet.

Medlem sedan jan. 20023 327 inlägg
#3

Fredde Mannen skrev:

Antar att du styr ej över tjänsten i detta fall?

Korrekt.

Fredde Mannen skrev:

Med lite lek på huvudet skulle jag väl förslagsvis höra med leverantören av tjänsten och se vilka alternativ det finns.

Tyvärr är det "ännu" mer hinder eftersom anslutningen sker via en COM-komponent, dvs: .NET-applikation -> COM-komponent -> Extern tjänst.

Fredde Mannen skrev:

Dock ett alternatic kan väl vara att du sparar krypterade lösenord i databasen, och vid användning av tjänsten (när du anropar den) dekrypterar du lösenordet. På så viss är lösenordet i databasen åtminstone "skyddat", dock inte via transfer över nätet.

Ja det räcker att lösenordet är skyddat när det väl ligger i databasen. Men det går inte att få tillbaka lösenordet i klartext på ett enkelt sätt när det väl är krypterat....

Medlem sedan juni 20008 205 inlägg
#4

Compusa skrev:

Att kryptera lösenordet är inte svårt men det kommer ju inte fungera särskilt bra att skicka över ett krypterat lösenord till den externa tjänsten eftersom den inte känner till vilken kryptering jag använder. Hur brukar man göra i sådana här fall? Jag skulle ju kunna hitta på en egen kryptering som går att få tillbaka i klartext men det känns inte helt optimalt.

Det vanliga är att man kör med en kombination lösenord + IP-koll. På det viset kan ditt lösenord bara användas från den/de maskiner du kör din applikation på. Det är inte en helt optimal lösning (framför allt pga NAT och liknande) men det är ungefär så bra som det går att få det. Visst kan du kryptera lösenordet med någon symmetrisk algoritm (hitta inte på en egen bara), men eftersom initialiseringsvektorn till krypteringen ändå måste finnas i koden är det en måttlig vinst. Det krånglar till det lite men gör det inte direkt svårare för en kompetent angripare att få tag på lösenordet.

Medlem sedan jan. 20023 327 inlägg
#5

Tack för tipsen kollade länkarna och det kanske kan vara något. Det behöver inte vara helt idiotsäkert :)

Hittade även denna länk och har testat:
http://www.csharp-tutorials.com/simple-string-encryption-and-decryption/

Kan det vara något?

/Red: såg att även den använde sig av en symmetriskt algoritm så då vet jag vad det innebär. Det får duga helt enkelt.

265 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)