RSA adalah algoritma untuk kriptografi kunci publik yang didasarkan pada kesulitan dugaan anjak bilangan bulat besar, masalah anjak piutang. RSA adalah singkatan dari Ron Rivest, Adi Shamir dan Leonard Adleman, yang pertama kali secara terbuka dijelaskan algoritma pada tahun 1977. Clifford Cocks, seorang matematikawan Inggris, telah mengembangkan sebuah sistem yang setara pada tahun 1973, tapi itu tidak dideklasifikasi sampai 1997.
Seorang pengguna RSA menciptakan dan kemudian menerbitkan produk dari dua bilangan prima besar, bersama dengan nilai tambahan, seperti kunci publik mereka. Faktor prima harus dirahasiakan. Siapapun dapat menggunakan kunci publik untuk mengenkripsi pesan, tetapi dengan metode saat ini diterbitkan, jika kunci publik cukup besar, hanya seseorang dengan pengetahuan tentang faktor prima dapat membuka pesan. Apakah melanggar enkripsi RSA adalah sekeras anjak adalah pertanyaan terbuka yang dikenal sebagai masalah RSA.
Sejarah
Adi Shamir, , salah satu penulis dari RSA : Rivest , Shamir dan AdlemanAlgoritma
RSA adalah publik dijelaskan pada tahun 1977 oleh Ron Rivest , Adi
Shamir , dan Leonard Adleman di MIT , huruf RSA adalah inisial nama
keluarga mereka , tercantum dalam urutan yang sama seperti di atas
kertas.
MIT diberikan US Patent 4.405.829 untuk " sistem komunikasi kriptografi dan metode " yang digunakan algoritma pada tahun 1983 . Paten
akan berakhir pada tanggal 21 September 2000 ( jangka waktu paten
adalah 17 tahun pada saat itu ) , tetapi algoritma ini dirilis ke dalam
domain publik oleh RSA Security pada tanggal 6 September 2000, dua
minggu sebelumnya . [ 4 ] Karena kertas
yang menjelaskan algoritma telah diterbitkan pada bulan Agustus 1977 , [
3 ] sebelum Desember 1977 tanggal pengajuan aplikasi paten , regulasi
di sebagian besar sisa paten menghalangi dunia di tempat lain dan hanya
paten AS diberikan . Telah bekerja Cocks ' sudah dikenal publik , hak paten di Amerika Serikat mungkin tidak mungkin terjadi , baik .
Dari abstrak DWPI tentang paten ,
Sistem ini mencakup saluran komunikasi digabungkan untuk setidaknya satu terminal memiliki perangkat encoding dan setidaknya satu terminal memiliki perangkat decoding . Pesan - to-be - ditransfer dienkripsi ke ciphertext di terminal pengkodean dengan pengkodean pesan sebagai M nomor dalam satu set yang telah ditentukan . Angka itu kemudian dinaikkan menjadi kekuatan yang telah ditentukan terlebih dahulu ( terkait dengan penerima yang dituju ) dan akhirnya dihitung . Sisanya atau residu , C, ... dihitung ketika jumlah exponentiated dibagi dengan produk dari dua bilangan prima yang telah ditentukan ( terkait dengan penerima yang dituju ) .Clifford Cocks , seorang matematikawan Inggris yang bekerja untuk badan intelijen Inggris GCHQ , dijelaskan sistem setara dalam dokumen internal pada tahun 1973 tetapi, mengingat komputer relatif mahal yang diperlukan untuk menerapkannya pada saat itu, itu sebagian besar dianggap keingintahuan dan , sejauh diketahui publik , tidak pernah digunakan . Penemuannya , bagaimanapun, tidak terungkap sampai 1998 karena klasifikasinya rahasia , dan Rivest , Shamir , dan Adleman dirancang RSA independen pekerjaan Cocks ' .
Sistem ini mencakup saluran komunikasi digabungkan untuk setidaknya satu terminal memiliki perangkat encoding dan setidaknya satu terminal memiliki perangkat decoding . Pesan - to-be - ditransfer dienkripsi ke ciphertext di terminal pengkodean dengan pengkodean pesan sebagai M nomor dalam satu set yang telah ditentukan . Angka itu kemudian dinaikkan menjadi kekuatan yang telah ditentukan terlebih dahulu ( terkait dengan penerima yang dituju ) dan akhirnya dihitung . Sisanya atau residu , C, ... dihitung ketika jumlah exponentiated dibagi dengan produk dari dua bilangan prima yang telah ditentukan ( terkait dengan penerima yang dituju ) .Clifford Cocks , seorang matematikawan Inggris yang bekerja untuk badan intelijen Inggris GCHQ , dijelaskan sistem setara dalam dokumen internal pada tahun 1973 tetapi, mengingat komputer relatif mahal yang diperlukan untuk menerapkannya pada saat itu, itu sebagian besar dianggap keingintahuan dan , sejauh diketahui publik , tidak pernah digunakan . Penemuannya , bagaimanapun, tidak terungkap sampai 1998 karena klasifikasinya rahasia , dan Rivest , Shamir , dan Adleman dirancang RSA independen pekerjaan Cocks ' .
Operasi
Algoritma RSA melibatkan tiga langkah: pembangkitan kunci, enkripsi dan dekripsi.
pembangkitan kunci
RSA melibatkan kunci publik dan sebuah kunci pribadi . Kunci publik dapat diketahui oleh semua orang dan digunakan untuk mengenkripsi pesan . Pesan dienkripsi dengan kunci publik hanya dapat didekripsi dalam jumlah waktu yang wajar dengan menggunakan kunci pribadi . Kunci untuk algoritma RSA yang dihasilkan dengan cara berikut :
1. Pilih dua berbeda nomor perdana p dan q .
4. Pilih e bilangan bulat sehingga 1 < e < φ ( n ) dan gcd ( e , φ ( n ) ) = 1 , yaitu e dan φ ( n ) adalah coprime .
RSA melibatkan kunci publik dan sebuah kunci pribadi . Kunci publik dapat diketahui oleh semua orang dan digunakan untuk mengenkripsi pesan . Pesan dienkripsi dengan kunci publik hanya dapat didekripsi dalam jumlah waktu yang wajar dengan menggunakan kunci pribadi . Kunci untuk algoritma RSA yang dihasilkan dengan cara berikut :
1. Pilih dua berbeda nomor perdana p dan q .
- Untuk tujuan keamanan , bilangan bulat p dan q harus dipilih secara acak , dan harus menjadi serupa bit - panjang . Integer Perdana dapat efisien ditemukan menggunakan tes primality .
- n digunakan sebagai modulus untuk kedua kunci publik dan swasta . Panjangnya , biasanya dinyatakan dalam bit , adalah panjang kunci.
4. Pilih e bilangan bulat sehingga 1 < e < φ ( n ) dan gcd ( e , φ ( n ) ) = 1 , yaitu e dan φ ( n ) adalah coprime .
- e dilepaskan sebagai eksponen kunci publik .
- e memiliki Hamming hasil berat bit - panjang dan kecil pendek enkripsi yang lebih efisien - paling sering 216 + 1 = 65.537 . Namun, nilai yang lebih kecil dari e (seperti 3 ) telah terbukti kurang aman dalam beberapa pengaturan . [ 5 ]
- Hal ini lebih jelas dinyatakan sebagai memecahkan d diberikan d ⋅ e ≡ 1 ( mod φ ( n ) )
- Hal ini sering dihitung dengan menggunakan algoritma Euclidean diperpanjang .
- d disimpan sebagai eksponen kunci pribadi .
- Sebuah alternatif , yang digunakan oleh PKCS # 1 , adalah memilih d pencocokan de ≡ 1 ( mod λ ) dengan λ = lcm ( p - 1 , q - 1 ) , di mana lcm adalah beberapa yang paling umum . Menggunakan λ bukan φ ( n ) memungkinkan lebih banyak pilihan untuk d . λ juga dapat didefinisikan menggunakan fungsi Carmichael , λ ( n ) .
- ANSI X9.31 standar mengatur , IEEE 1363 menjelaskan , dan PKCS # 1 memungkinkan , bahwa p dan q sesuai persyaratan tambahan : menjadi bilangan prima yang kuat , dan menjadi cukup berbeda bahwa Fermat faktorisasi gagal .
Enkripsi
Alice mentransmisikan kunci publik-nya (n, e) Bob dan menjaga rahasia kunci pribadi. Bob kemudian ingin mengirimkan pesan M untuk Alice.
Dia pertama kali ternyata M ke integer m, sedemikian sehingga 0 ≤ m <n dengan menggunakan protokol yang disepakati reversibel dikenal sebagai skema bantalan. Dia kemudian menghitung ciphertext c sesuai dengan
Hal ini dapat dilakukan dengan cepat menggunakan metode exponentiation dengan cara mengkuadratkan. Bob kemudian mengirimkan c untuk Alice.
Dekripsi
Alice dapat memulihkan m dari c dengan menggunakan kunci pribadi eksponen d melalui komputasi
Mengingat m, dia dapat memulihkan pesan M asli dengan membalik skema bantalan.
(Dalam prakteknya, ada metode yang lebih efisien menghitung cd menggunakan nilai precomputed di bawah ini.)
Menggunakan algoritma sisa Cina
Untuk efisiensi banyak perpustakaan kripto populer (seperti OpenSSL, Java dan NET.) Menggunakan optimasi berikut untuk enkripsi dan penandatanganan didasarkan pada teorema sisa Cina. Nilai-nilai berikut precomputed dan disimpan sebagai bagian dari kunci pribadi :
Kunci publik adalah (n = 3233, e = 17). Untuk pesan plaintext m mengisi, fungsi enkripsi adalah
Kunci pribadi (n = 3233, d = 2.753). Untuk dienkripsi ciphertext c, fungsi dekripsi c2753(mod 3233).
misalnya, dalam proses enkripsi m = 65, kita hitung
untuk mendekripsi c = 2790, kita hitung
Kedua perhitungan tersebut dapat dihitung secara efisien menggunakan persegi dan kalikan algoritma untuk eksponensial modular. Dalam situasi kehidupan nyata bilangan prima yang dipilih akan jauh lebih besar, dalam contoh kita akan sepele faktor n, 3233 (diperoleh dari kunci publik tersedia secara bebas) kembali ke bilangan prima p dan q. Mengingat e, juga dari kunci publik, kita kemudian bisa menghitung d sehingga memperoleh kunci pribadi.
Dia pertama kali ternyata M ke integer m, sedemikian sehingga 0 ≤ m <n dengan menggunakan protokol yang disepakati reversibel dikenal sebagai skema bantalan. Dia kemudian menghitung ciphertext c sesuai dengan
Hal ini dapat dilakukan dengan cepat menggunakan metode exponentiation dengan cara mengkuadratkan. Bob kemudian mengirimkan c untuk Alice.
Dekripsi
Alice dapat memulihkan m dari c dengan menggunakan kunci pribadi eksponen d melalui komputasi
Mengingat m, dia dapat memulihkan pesan M asli dengan membalik skema bantalan.
(Dalam prakteknya, ada metode yang lebih efisien menghitung cd menggunakan nilai precomputed di bawah ini.)
Menggunakan algoritma sisa Cina
Untuk efisiensi banyak perpustakaan kripto populer (seperti OpenSSL, Java dan NET.) Menggunakan optimasi berikut untuk enkripsi dan penandatanganan didasarkan pada teorema sisa Cina. Nilai-nilai berikut precomputed dan disimpan sebagai bagian dari kunci pribadi :
- p dan q: bilangan prima dari pembangkitan kunci,
Nilai-nilai ini memungkinkan penerima untuk menghitung eksponensial m = cd (mod pq) lebih efisien sebagai berikut:
Sebuah Contoh Pekerjaan
Berikut adalah contoh dari enkripsi dan dekripsi RSA. Parameter yang digunakan di sini adalah artifisial kecil, tetapi kita juga bisa menggunakan OpenSSL untuk menghasilkan dan memeriksa pasangan kunci nyata.
- jika ( kemudian beberapa librarie menghitung h sebagai ).
Sebuah Contoh Pekerjaan
Berikut adalah contoh dari enkripsi dan dekripsi RSA. Parameter yang digunakan di sini adalah artifisial kecil, tetapi kita juga bisa menggunakan OpenSSL untuk menghasilkan dan memeriksa pasangan kunci nyata.
- Pilih dua bilangan prima yang berbeda, sepertidan .
- Hitung n = pq memberikan
- Hitunglah totient dari produk sebagai φ (n) = (p - 1) (q - 1) memberikan
- Pilih angka 1 <e <3120 yang coprime ke 3120. Memilih bilangan prima untuk e meninggalkan,kita hanya untuk memeriksa bahwa e bukan pembagi dari 3120. Let
- Hitung d, yang perkalian invers modular e (mod φ (n)) menghasilkan
Kunci publik adalah (n = 3233, e = 17). Untuk pesan plaintext m mengisi, fungsi enkripsi adalah
Kunci pribadi (n = 3233, d = 2.753). Untuk dienkripsi ciphertext c, fungsi dekripsi c2753(mod 3233).
misalnya, dalam proses enkripsi m = 65, kita hitung
untuk mendekripsi c = 2790, kita hitung
Kedua perhitungan tersebut dapat dihitung secara efisien menggunakan persegi dan kalikan algoritma untuk eksponensial modular. Dalam situasi kehidupan nyata bilangan prima yang dipilih akan jauh lebih besar, dalam contoh kita akan sepele faktor n, 3233 (diperoleh dari kunci publik tersedia secara bebas) kembali ke bilangan prima p dan q. Mengingat e, juga dari kunci publik, kita kemudian bisa menghitung d sehingga memperoleh kunci pribadi.
Implementasi praktis menggunakan teorema sisa Cina untuk mempercepat perhitungan menggunakan modulus faktor (mod pq menggunakan mod p dan mod q).
nilai-nilai dp, dq dan qinv, yang merupakan bagian dari kunci pribadi adalah sebagai berikut:
(karenanya )
Berikut adalah bagaimana dp, dq and qinv digunakan untuk mengefisiensi dekripsi. (Enkripsi efisien dengan pilihan eksponen publik e)
(sama seperti di atas, tetapi dihitung lebih efisien).
NB:
Mohon maaf apabila ada kalimat atau kata yang tidak dimengerti, karena sebagian referensi berasal dari terjemahan google transleter.
Sumber : http://en.wikipedia.org/wiki/RSA_%28algorithm%29
No comments:
Post a Comment