RSA og sikerhed

Hvis man læser på nettet om kryptering opdager man, at der er mange der anbefaler at man ikke skriver sit eget computer-program til RSA kryptering.

Man bør, ifølge anbefalingerne, bruge færdige ‘biblioteker’, hvor færdige program-dele importeres og anvendes. Det er sikkert rigtig nok.

En meget stor fordel ved selv at skrive koden til RSA, er dog, at man har 99% styr på hvad der foregår. Det har men ikke ved brug af færdige biblioteker.

Det er dog lidt mere vanskeligt at lave et sikkert RSA kryptosystem, der er en del man skal tage hensyn til. Jeg er ikke krypteringsekspert, men herunder er nogle råd.

Et RSA-system kræver, som nævnt, to meget store primtal p og q.

De to primtal ganges så sammen til \(n = p \cdot q\).

Så skal man finde e og d. Og det er sådan set det!

For at systemet skal være rimelig sikkert, så skal man, for det første, bruge store primtal p og q, samt værdier for e og d med mange cifre.

Ifølge artiklen herunder, så er det ikke nok bare at finde to meget store primtal. De to primtal bør desuden være stærke primtal; se artiklen. Et problem er, som artiklen beskriver, at der ikke er ret mange stærke primtal. Som jeg har læst mig til, så vælger man derfor ikke stærke primtal, men primtal som opfylder krav der gør at de næsten er ‘stærke primtal’.

Man kan yderligere søge råd i

Jeg kommer måske til at skrive mere om det med sikkerhed. Jeg tror ikke det er helt så vanskeligt som nogen gør det til, og jeg vil gerne afslutte med mit eget RSA kryptosystem som opfører sig præcis som jeg vil have det til.

Det anbefales også at man bruger ‘padding’ og ‘salting’.

Padding betyder nok(?) ikke andet end at man skal særge for at de filer man krypterer har fuld information. Er de for korte skal de udfyldes med anden date.

Salting betyder nok(?) at man, inden kryptering med RSA, skal tilføje tilfældig data, således at strukturen i de oprindelige date fjernes.

Det skal jeg nok læse lidt lidt op på, men det er nærppe ret vanskeligt.

Pointen er, at man, for at alt lave RSA rimelig sikker, skal sørge for at det grundlæggende er i orden. Da princippet i RSA matematisk set er i orden, så er udfordringen at det grundlæggende er i orden, således at an angriber ikke kan angribe pga. svagheder i den grundliggende.

Jeg vender frygtelig tilbage med et RSA krypto-system som prøver at fjerne kendte svagheder, som kan tweekes efter behov, som bliver ubrydeligt for alle ‘fjender’. Jeg skal undgå kendte fælder, jeg skal lade nøglelængden være bestemt af brugeren, og jeg skal fjerne al information om selve kryptosystemet – hvorfor hjælpe en modstander med information om metoden, det er direkte åndsvagt.