RSA ist ein asymmetrisches Kryptosystem, daß sich zum Verschlüsseln und zur Authentifikation eignet. Es wurde 1977 von Ron Rivest, Adi Shamir und Leonard Adleman [RSA78] erfunden. Es funktioniert folgendermaßen:
Es wird angenommen, daß es schwierig ist, den privaten Exponenten d aus dem öffentlichen Schlüssel (n,e) zu berechnen. Sollte jemand n in p und q faktorisieren, so kann er natürlich d berechnen. Deshalb ist die Sicherheit von RSA mindestens an die Annahme geknüpft, Faktorisierung sei schwierig. Ein leichter Faktorisierungsalgorithmus oder ein anderer funktionierender Angriff würde RSA "brechen" (Siehe Frage 10 und Frage 46).
Im folgenden wird beschrieben, wie man RSA zur Geheimhaltung und Authentifizung einsetzen kann (Praktisch sieht das leicht anders aus, siege Frage 16 und Frage 17).
Alice möchte eine Nachricht m an Bob schicken. Alice erstellt den Chiffretext c durch modulare Potenzierung: c = me mod n, wobei (n,e) Bobs öffentlicher Schlüssel ist. Sie sendet c an Bob. Um dies zu dechiffrieren potenziert Bob ebenfalls: cd mod n = (me*d mod n = m(p-1)*(q-1)-1 mod n =) m. (Die letzte Identität ist ein zahlentheoretischer Satz, nämlich die Eulersche Verallgemeinerung des kleinen Satzes von Fermat.) Da nur Bob d kennt, kann nur Bob c entschlüsseln.
Alice möchte eine Nachricht m an Bob unterschreiben, so daß Bob sicher sein kann, daß diese Nachricht authentisch und von Alice ist. Alice erstellt eine elektronische Unterschrift durch Potenzieren: s = md mod n, wobei (n,d) der private Schlüssel von Alice ist. Sie sendet m und s an Bob. Dieser prüft die Unterschrift durch eine Potenzierung: se mod n muß mit m übereinstimmen, wenn (n,e) Alice öffentlicher Schlüssel ist.
So ist Verschlüsselung und Authentifizung ohne Teilung eines Geheimnisses möglich: Jede Person hat nur die öffentlichen Schlüssel der anderen und seinen eigen privaten Schlüssel. Jeder kann Nachrichten verschlüsselt senden oder Unterschriften prüfen, aber nur derjenige, der den richtigen privateb Schlüssel hat, kann Nachrichten entschlüsseln oder unterschreiben.