Back to IF4020 Kriptografi

Algoritma RSA

Questions/Cues

  • Siapa pembuat RSA dan pada persoalan sulit apa keamanannya bersandar?
  • Apa saja properti dan parameter RSA (p, q, n, φ(n), e, d)?
  • Bagaimana rumus enkripsi/dekripsi diturunkan dari Teorema Euler?
  • Bagaimana membangkitkan pasangan kunci RSA?
  • Bagaimana contoh enkripsi pesan angka dan teks (blok)?

Reference Points

  • IF4020 Kriptografi — Algoritma RSA (Slides 2-16)

Pendahuluan

RSA adalah algoritma kunci-publik paling terkenal dan paling luas aplikasinya, dibuat tiga peneliti MIT: Ronald Rivest, Adi Shamir, Leonard Adleman (RSA = Rivest-Shamir-Adleman; slide menyebut 1976). Keamanannya terletak pada sulitnya memfaktorkan bilangan bulat besar menjadi faktor primanya.

Properti RSA

ParameterKeteranganStatus
bilangan primarahasia
modulustidak rahasia
fungsi totient Eulerrahasia
kunci enkripsi, syarat tidak rahasia (kunci publik)
kunci dekripsirahasia (kunci privat)
plainteksrahasia
ciphertekstidak rahasia

Penurunan Rumus

Berdasar Teorema Euler: untuk . Totient Euler = banyak bilangan di yang relatif prima dengan . Contoh (yaitu 1, 3, 7, 9, 11, 13, 17, 19). Bila dengan prima, (lihat Teori Bilangan untuk Kriptografi).

Pangkatkan kedua ruas dengan , ganti dengan , lalu kalikan :

Pilih dan dengan , yaitu . Maka , sehingga:

Pembangkitan Kunci

  1. Pilih dua bilangan prima dan (sebaiknya ).
  2. Hitung .
  3. Hitung .
  4. Pilih relatif prima terhadap .
  5. Hitung , atau (cari hingga bulat).

Kunci publik = , kunci privat = .

flowchart TD
    PQ["Pilih prima p, q"] --> N["n = p x q"]
    PQ --> PHI["phi(n) = (p-1)(q-1)"]
    PHI --> E["Pilih e,<br/>gcd(e, phi) = 1"]
    E --> D["d = e^-1 mod phi(n)"]
    N --> PUB["Kunci publik (e, n)"]
    E --> PUB
    D --> PRIV["Kunci privat (d, n)"]
    N --> PRIV

Enkripsi dan Dekripsi

  • Enkripsi: (1) preprocessing: kodekan pesan menjadi integer ; bila besar, pecah menjadi blok dengan . (2) .
  • Dekripsi: (1) . (2) postprocessing: kodekan kembali menjadi pesan.

Contoh: Pembangkitan Kunci Alice

, , (slide menulis 60; yang benar , sehingga ). Pilih (). Kunci publik .

Hitung : , , …, (bulat). Kunci privat .

Contoh 1: Pesan Angka

Bob mengirim : . Alice mendekripsi: .

Contoh 2: Teks HELLO ALICE

Kodekan (spasi diabaikan): . Terlalu besar untuk , jadi dipecah blok 4 digit: .

Blok
0704328
1111301
14002653
11082986
02041164

Cipherteks: 0328 0301 2653 2986 1164. Dekripsi mengembalikan blok-blok itu, dikodekan kembali menjadi HELLO ALICE.

Summary

RSA (Rivest-Shamir-Adleman) berbasis kesulitan memfaktorkan . Kunci: pilih prima rahasia , , , pilih dengan , hitung ; publik , privat . Berdasar Teorema Euler, sehingga dan . Pesan panjang dipecah menjadi blok . Contoh , , memberi ; , dan HELLO ALICE terenkripsi blok 4 digit menjadi 0328 0301 2653 2986 1164. Keamanan, ukuran kunci, hybrid, dan implementasi ada di Keamanan dan Praktik RSA.