RSA kryptering, återanvända Mod och Exp

Permalänk
Medlem

RSA kryptering, återanvända Mod och Exp

Så tänkte använda RSA kryptering till ett projekt jag håller på med, nivån är väl lite högre än ett hobbyprojekt så det är inte direkt statshemligheter vi pratar om. Jag har inte direkt vridigt och vänt på den här idéen då jag kom på den just nu mitt i natten då jag inte kunde sova...risken för grovt tankefel är alltså rätt påfallande.

Antag att jag vill sända info säkert över internet genom att använda de vanliga privat+publik-nyckel sättet. Då detta är ett mindre projekt är jag inte sugen på att gå och köpa certifieringskänst etc så jag undrar om jag skulle kunna generera mod och exp för 4096 kryptering och sedan hårdkoda dem in i klient och server (två av varje alltså).

(Nu blir ju den publika nyckeln inte direkt publik då den är in kodad i programmet och inte går att hämta någonstans.)

Hur säkert skulle det bli mot avlyssningsattack?
Jag är inte erfaren inom säkerhetsmetoder på nätet, finns det något bättre sätt?

Permalänk
Medlem

Well, du kan ju generera stora primtal med typ wolfram-alpha.
Resten är matte.

Permalänk
Glömsk

Att låta klienten ha serverns publika nyckel är inget konstigt utan är hur asymmetrisk kryptering är tänkt att fungera och användas.

Mitt tips är att du inte implementerar detta själv utan använder något existerande bibliotek exempelvis OpenSSL.

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Medlem

Jag hade också använt openssl (eller ssh-tunnel eller liknande) som nämnt tidigare men om jag skulle ha kodad något själv skulle jag nog ha gjort något liknande:

  1. Klienten genererar en symmetrisk nyckel. (typ. AES)

  2. Klienten krypterar den symmetriska nyckeln med serverns publika RSA nyckel (som är hårdkodad?)

  3. Klienten skickar nyckeln till servern som avkodar den med sin privata.

  4. Vanlig kommunikation startar som använder den symmetriska nyckeln med AES kryptering.

Visa signatur

citera!

Permalänk
Medlem

Den bästa lösningen är att använda Diffie-Hellman för själva nyckel genereringen och sen använda någon form av certifikat för att verifiera serverns identitet, vilket är vad SSH och SSL/TLS brukar göra.

Visa signatur

Intel Core i7-3770K | NVIDIA Geforce GTX 980 | 16 GB DDR3 | DELL P2415Q | DELL U2711 | DELL U2410

Permalänk
Medlem
Skrivet av Dosshell:

Jag hade också använt openssl (eller ssh-tunnel eller liknande) som nämnt tidigare men om jag skulle ha kodad något själv skulle jag nog ha gjort något liknande:

  1. Klienten genererar en symmetrisk nyckel. (typ. AES)

  2. Klienten krypterar den symmetriska nyckeln med serverns publika RSA nyckel (som är hårdkodad?)

  3. Klienten skickar nyckeln till servern som avkodar den med sin privata.

  4. Vanlig kommunikation startar som använder den symmetriska nyckeln med AES kryptering.

Det här är nog metoden jag skulle köra på också, det ger en bra kombination av säkerhet och prestanda.