Konten dihapus Konten ditambahkan
YurikBot (bicara | kontrib)
k robot Adding: hu Modifying: ko
Kim Nansa (bicara | kontrib)
Fitur saranan suntingan: 3 pranala ditambahkan.
 
(79 revisi perantara oleh 45 pengguna tidak ditampilkan)
Baris 1:
{{terjemah|Inggris}}
Dibidang [[kriptografi]], '''RSA (Rivest–Shamir–Adleman)''' di bidang [[kriptografi]] adalah sebuah [[algoritmaalgoritme]] pada [[enkripsi]] ''[[Public Key Infrastructure|public key]]''. RSA merupakan algoritmaalgoritme pertama yang cocok untuk ''[[digital signature]]'' seperti halnya ekripsienkripsi, dan salah satu yang paling maju dalam bidang kriptografi ''public key''. RSA masih digunakan secara luas dalam [[protokol]] ''[[electronic commerce]]'', dan dipercaya dalam mengamnkanmengamankan dengan menggunakan kunci yang cukup panjang.
 
== Sejarah RSA ==
Algortima RSA dijabarkan pada tahun [[1977]] oleh tiga orang: [[Ron Rivest]], [[Adi Shamir]] dan [[Len Adleman]] dari [[Massachusetts Institute of Technology]],. hurufSingkatan '''RSA''' itu sendiri juga berasal dari inisial nama mereka ('''R'''ivest—ivest—'''S'''hamir—hamir—'''A'''dleman).
 
[[Clifford Cocks]], seorang matematikawan [[Inggris]] yang bekerja untuk [[GCHQ]], menjabarkan tentang sistem equivalenekuivalen pada dokumen internal dipada tahun [[1973]]. Penemuan Clifford Cocks tidak terungkap hingga tahun [[1997]] dikarenankarena alasan ''top-secret classification''.
 
AlgoritmaAlgoritme tersebut dipatenkan oleh Massachusetts Institute of Technology pada tahun [[1983]] di [[Amerika Serikat]] sebagai {{US patent|4405829}}. Paten tersebut berlaku hingga [[21 September]] [[2000]]. Semenjak AlgoritmaAlgoritme RSA dipublikasikan sebagai aplikasi paten, regulasi di sebagian besar negara-negara lain tidak memungkinkan penggunaan paten. Hal ini menyebabkan hasil temuan Clifford Cocks di kenal secara umum, paten di Amerika Serikat tidak dapat mematenkannya.
 
== Operasional ==
 
=== PembangkitanPembuatan Kunci ===
Semisal Alice berkeinginan untuk mengijinkanmengizinkan Bob untuk mengirimkan kepadanya sebuah pesan pribadi (''private message'') melalui media transmisi yang tidak aman (''insecure''). Alice melakukan langkah-langkah berikut untuk membuat sebuahpasangan [[kunci (kriptografi)|kunci]] ''public key'' dan ''private key'':
 
# Pilih dua [[bilangan prima]] ''p'' ≠ ''q'' secara acak dan terpisah untuk tiap-tiap ''p'' dan ''q''. Hitung ''N'' = ''p q''. ''N'' hasil perkalian dari ''p'' dikalikan dengan ''q''.
# Hitung φφ = (''p''-1)(''q''-1).
# Pilih [[bilangan bulat]] (''integer'') antara satu dan &phi;φ (1 < ''e'' < &phi;φ) yang juga merupakan [[coprimeKoprima (bilangan)|koprima]] dari &phi;φ.
# Hitung ''d'' hingga ''d e'' &equiv; 1 (mod &phi;φ).
* bilangan prima dapat diuji [[probabilitas|probabilitasnya]]nya menggunakan ''[[Fermat's little theorem]]''- a^(n-1) mod n = 1 jika n adalah bilangan prima, diuji dengan beberapa nilai a menghasilkan kemungkinan yang tinggi bahwa n ialah bilangan prima. ''[[Carmichael numbers]]'' (angka-angka Carmichael) dapat melalui pengujian dari seluruh a, tetapi hal ini sangatlah langka.
* langkah 3 dan 4 dapat dihasilkan dengan algoritmaalgoritme ''[[extended Euclidean]]''; lihat juga [[aritmetika modular]].
* langkah 4 dapat dihasilkan dengan menemukan integer ''x'' sehingga ''d'' = (''x''(''p''-1)(''q''-1) + 1)/''e'' menghasilkan bilangan bulat, kemudian menggunakan nilai dari ''d'' (mod (''p''-1)(''q''-1));
* langkah 2 PKCS#1 v2.1 menggunakan &lamda; = lcm(''p''-1, ''q''-1) selain daripada &phi;φ = (''p''-1)(''q''-1)).
 
Pada ''public key'' terdiri atas:
Baris 36 ⟶ 37:
Bentuk ini membuat proses dekripsi lebih cepat dan ''signing'' menggunakan [[Chinese Remainder Theorem]] (CRT). Dalam bentuk ini, seluruh bagian dari ''private key'' harus dijaga kerahasiaannya.
 
Alice mengirimkan ''public key'' kepada Bob, dan tetap merahasiakan ''private key'' yang digunakan. ''p'' dan ''q'' sangat sensitif dikarenakan merupakan [[faktorial]] dari ''N'', dan membuat perhitungan dari ''d'' menghasilkan ''e''. Jika ''p'' dan ''q'' tidak disimpan dalam bentuk CRT dari ''private key'', maka ''p'' dan ''q'' telah terhapus bersama nilai-nilai lain dari proses pembangkitan kunci.
 
=== Proses enkripsi pesan ===
Misalkan Bob ingin mengirim pesan ''m'' ke Alice. Bob mengubah ''m'' menjadi angka ''n'' < ''N'', menggunakan protokol yang sebelumnya telah disepakati dan dikenal sebagai ''[[#Padding_schemesPadding schemes|padding scheme]]''.
 
Maka Bob memiliki ''n'' dan mengetahui ''N'' dan ''e'', yang telah diumumkan oleh Alice. Bob kemudian menghitung ''ciphertext'' ''c'' yang terkait pada ''n'':
: <math> c = n^e \mod{N}</math>
Perhitungan tersebut dapat diselesaikan dengan cepat menggunakan metode ''[[exponentiation by squaring]]''. Bob kemudian mengirimkan ''c'' kepada Alice.
 
=== Proses dekripsi pesan ===
Alice menerima ''c'' dari Bob, dan mengetahui ''private key'' yang digunakan oleh Alice sendiri. Alice kemudian memulihkan ''n'' dari ''c'' dengan langkah-langkah berikut:
: <math>n = c^d \mod{N}</math>
Perhitungan diatasdi atas akan menghasilkan ''n'', dengan begitu Alice dapat mengembalikan pesan semula ''m''.
Prosedur dekripsi bekerja karena
: <math>c^d \equiv (n^e)^d \equiv n^{ed} \pmod{N}</math>.
 
Kemudian, dikarenakan ''ed'' &equiv; 1 (mod p-1) dan ''ed'' &equiv; 1 (mod q-1), hasil dari ''[[Fermat's little theorem]]''.
: <math>n^{ed} \equiv n \pmod{p}</math>
 
dan
: <math>n^{ed} \equiv n \pmod{q} </math>
 
Dikarenakan ''p'' dan ''q'' merupakan bilangan prima yang berbeda, mengaplikasikan ''Chinese remainderRemainder theorem''Theorem akan menghasilkan dua macam kongruen
: <math>n^{ed} \equiv n \pmod{pq}</math>.
 
Baris 71 ⟶ 72:
{| border="0" width="95%" style="margin-left: 2em;"
|-
|width="15%"|''p'' = 61 || &mdash; bilangan prima pertama (harus dijaga kerahasiannya atau dihapus secara hati-hati)
|-
|''q'' = 53 || &mdash; bilangan prima kedua (harus dijaga kerahasiannya atau dihapus secara hati-hati)
|-
|''N'' = ''pq'' = 3233 || &mdash; modulus (diberikan kepada publik)
|-
|''e'' = 17 || &mdash; eksponen publik (diberikan kepada publik)
|-
|''d'' = 2753 || &mdash; eksponen pribadi (dijaga kerahasiannya)
|}
''Public key'' yang digunakan adalah (''e'',''N'').
Baris 96 ⟶ 97:
:decrypt(855) = 855<sup>2753</sup> mod 3233 = 123
 
Kedua perhitungan diatasdi atas diselesaikan secara effisien menggunakan ''[[square-and-multiply algorithm]]'' pada ''[[modular exponentiation]]''.
 
=== ''Padding schemes'' ===
''[[Padding Scheme]]'' harus dibangun secara hati-hati sehingga tidak ada nilai dari ''m'' yang menyebabkan masalah keamanan. Sebagai contoh, jika kita ambil contoh sederhana dari penampilan [[ASCII]] dari ''m'' dan menggabungkan [[bit|bit-bit]] secara bersama-sama akan menghasilkan ''n'', kemudian pessanpesan yang berisi ASCII tunggal karakter <code>NUL</code> (nilai numeris 0) akan menghasilkan ''n''= 0, yang akan menghasilkan ''ciphertext'' 0 apapun itu nilai dari ''e'' dan ''N'' yang digunakan. Sama halnya dengan karakter ASCII tunggal <code>SOH</code> (nilai numeris 1) akan selalu menghasilkan ''chiphertextciphertext'' 1. Pada kenyataannya, untuk sistem yang menggunakan nilai ''e'' yang kecil, seperti 3, seluruh karakter tunggal ASCII pada pesan akan disandikan menggunakan skema yang tidak aman, dikarenakan nilai terbesar ''n'' adalah nilai 255, dan 255<sup>3</sup> menghasilkan nilai yang lebih kecil dari modulus yang sewajarnya, maka proses dekripsi akan menjadi masalah sederhana untuk mengambil pola dasar dari ''ciphertext'' tanpa perlu menggunakan modulus ''N''. Sebagai konsekuensinya, standar seperti [[PKCS]] didesain dengan sangat hati-hati sehingga membuat pesan asal-asalan dapat terenkripsi secara aman. Dan juga berdasar pada bagian [[#Kecepatan|Kecepatan]], akan dijelaskan kenapa ''m'' hampir bukanlah pesan itu sendiri tetapi lebih pada ''message key'' yang dipilh secara acak.
 
== Pengesahan pesan ==
Baris 107 ⟶ 108:
 
== Keamanan ==
Penyerangan yang paling umum pada RSA ialah pada penanganan masalah [[faktorisasi]] pada bilangan yang sangat besar. Apabila terdapat faktorisasi metode yang baru dan cepat telah dikembangkan, maka ada kemungkinan untuk membongkar RSA.
 
Pada tahun [[2005]], bilangan faktorisasi terbesar yang digunakan secara umum ialah sepanjang 663 bit, menggunakan metode distribusi mutakhir. Kunci RSA pada umumnya sepanjang 1024&mdash;20481024—2048 bit. Beberapa pakar meyakini bahwa kunci 1024-bit ada kemungkinan dipecahkan pada waktu dekat (hal ini masih dalam perdebatan), tetapi tidak ada seorangpun yang berpendapat kunci 2048-bit akan pecah pada masa depan yang terprediksi.
 
Semisal Eve, seorang ''eavesdropper'' (pencuri dengar&mdash;pengupingdengar—penguping), mendapatkan ''public key'' ''N'' dan ''e'', dan ''ciphertext'' ''c''. Bagimanapun juga, Eve tidak mampu untuk secara langsung memperoleh ''d'' yang dijaga kerahasiannya oleh Alice. Masalah untuk menemukan ''n'' seperti pada ''n<sup>e</sup>=c'' mod N di kenal sebagai permasalahan RSA.
 
Cara paling efektif yang ditempuh oleh Eve untuk memperoleh ''n'' dari ''c'' ialah dengan melakukan faktorisasi ''N'' kedalam ''p'' dan ''q'', dengan tujuan untuk menghitung (''p''-1)(''q''-1) yang dapat menghasilkan ''d'' dari ''e''. Tidak ada metode waktu polinomial untuk melakukan faktorisasi pada bilangan bulat berukuran besar di komputer saat ini, tapi hal tersebut pun masih belum terbukti.
Baris 122 ⟶ 123:
Jika ''N'' sepanjang 512-bit atau lebih pendek, ''N'' akan dapat difaktorisasi dalam hitungan ratusan jam seperti pada tahun [[1999]]. Secara teori, [[perangkat keras]] bernama [[TWIRL]] dan penjelasan dari Shamir dan Tromer pada tahun [[2003]] mengundang berbagai pertanyaan akan keamanan dari kunci 1024-bit. Santa disarankan bahwa ''N'' setidaknya sepanjang 2048-bit.
 
Pada thaun [[1993]], [[Peter Shor]] menerbitkan [[AlgoritmaAlgoritme Shor]], menunjukkan bahwa sebuah [[komputer quantum]] secara prinsip dapat melakukan faktorisasi dalam waktu polinomial, mengurai RSA dan algoritmaalgoritme lainnya. Bagaimanapun juga, masih terdapat pedebatan dalam pembangunan komputer quantum secara prinsip.
 
 
== Pertimbangan praktis ==
 
=== PembangkitanPembuatan kunci ===
Menemukan bilangan prima besar ''p'' dan ''q'' pada biasanya didapat dengan mencoba serangkaian bilangan acak dengan ukuran yang tepat menggunakan probabilitas bilangan prima yang dapat dengan cepat menghapus hampir semua bilangan bukan prima.
 
''p'' dan ''q'' seharusnya tidak "saling-berdekatan", agar [[faktorisasi fermat]] pada ''N'' berhasil. Selain itu pula, jika ''p''-1 atau ''q''-1 memeiliki faktorisasi bilangan prima yang kecil, ''N'' dapat difaktorkan secara mudah dan nilai-nilai dari ''p'' atau ''q'' dapat diacuhkan.
 
Seseorang seharusnya tidak melakukan metodametode pencarian bilangan prima yang hanya akan memberikan informasi penting tentang bilangan prima tersebut kepada penyerang. Biasanya, pembangkit bilangan acak yang baik akan memulai nilai bilangan yang digunakan. Harap diingat, bahwa kebutuhan disini ialah "acak" '''''dan''''' "tidak-terduga". Berikut ini mungkin tidak memenuhi kriteria, sebuah bilangan mungkin dapat dipilah dari proses acak (misal, tidak dari pola apapun), tetapi jika bilangan itu mudah untuk ditebak atau diduga (atau mirip dengan bilangan yang mudah ditebak), maka metode tersebut akan kehilangan kemampuan keamanannya. Misalnya, tabel bilangan acak yang diterbitkan oleh [[Rand Corp]] pada tahun [[1950-an]] mungkin memang benar-benar teracak, tetapi dikarenakan diterbitkan secara umum, hal ini akan mempermudah para penyerang dalam mendapatkan bilangan tersebut. Jika penyerang dapat menebak separuh dari digit ''p'' atau ''q'', para penyerang dapat dengan cepat menghitung separuh yang lainnya (ditunjukkan oleh [[Donald Coppersmith]] pada tahun [[1997]]).
 
Sangatlah penting bahwa kunci rahasia ''d'' bernilai cukup besar, Wiener menunjukkan pada tahun [[1990]] bahwa jika ''p'' diantaradi antara ''q'' dan 2''q'' (yang sangat mirip) dan ''d'' lebih kecil daripada ''N''<sup>1/4</sup>/3, maka ''d'' akan dapat dihitung secara effisien dari ''N'' dan ''e''.
Kunci enkripsi ''e'' = 2 sebaiknya tidak digunakan.
 
=== Kecepatan ===
RSA memiliki kecepatan yang lebih lambat dibandingkan dengan [[DES]] dan [[algoritmaalgoritme simetrik]] lainnya. Pada prakteknyapraktiknya, Bob menyandikan pesan rahasia menggunakan algoritmaalgoritme simetrik, menyandikan kunci simetrik menggunakan RSA, dan mengirimkan kunci simetrik yang dienkripsi menggunakan RSA dan juga mengirimkan pesan yang dienkripasidienkripsi secara simetrik kepada Alice.
 
Prosedur ini menambah permasalahan akan keamanan. Singkatnya, Sangatlah penting untuk menggunakan pembangkit bilangan acak yang kuat untuk kunci simetrik yang digunakan, karena Eve dapat melakukan ''bypass'' terhadap RSA dengan menebak kunci simterik yang digunakan.
 
=== Distribusi kunci ===
Sebagaimana halnya ''chipercipher'', bagaimana ''public key'' RSA didistribusi menjadi hal penting dalam keamanan. Distribusi kunci harus aman dari ''[[man-in-the-middle attack]]'' (''penghadang-ditengahdi tengah-jalan''). Anggap Eve dengan suatu cara mampu memberikan kunci arbitari kepada Bob dan membuat Bob percaya bahwa kunci tersebut milik Alice. Anggap Eve dapan "menghadang" sepenuhnya transmisi antara Alice dan Bob. Eve mengirim Bob ''public key'' milik Eve, dimana Bob percaya bahwa ''public key'' tersebut milik Alice. Eve dapat menghadap seluruh ''ciphertext'' yang dikirim oleh Bob, melakukan dekripsi dengan kunci rahasia milik Eve sendiri, menyimpan salinan dari pesan tersebut, melakukan enkripsi menggunakan ''public key'' milik Alice, dan mengirimkan ''ciphertext'' yang baru kepada Alice. Secara prinsip, baik Alice atau Bob tidak menyadari kehadiran Eve diantaradi antara transmisi mereka. Pengamanan terhadap serangan semacam ini yaitu menggunakan [[sertifikat digital]] atau kompnenkomponen lain dari infrastuktur ''public key''.
 
 
=== Key distribution ===
 
As with all ciphers, how RSA public keys are distributed is important to security. Key distribution must be secured against a [[man-in-the-middle attack]]. Suppose Eve has some way to give Bob arbitrary keys and make him believe they belong to Alice. Suppose further that Eve can ''intercept'' transmissions between Alice and Bob. Eve sends Bob her own public key, which Bob believes to be Alice's. Eve can then intercept any ciphertext sent by Bob, decrypt it with her own secret key, keep a copy of the message, encrypt the message with Alice's public key, and send the new ciphertext to Alice. In principle, neither Alice nor Bob would be able to detect Eve's presence. Defenses against such attacks are often based on [[digital certificate]]s or other components of a [[public key infrastructure]].
 
=== Timing attacks ===
 
Kocher described an ingenious new attack on RSA in [[1995]]: if the attacker Eve knows Alice's hardware in sufficient detail and is able to measure the decryption times for several known ciphertexts, she can deduce the decryption key ''d'' quickly. This attack can also be applied against the RSA signature scheme. One way to thwart the attack is to ensure that the decryption operation takes a constant amount of time for every ciphertext. Another way makes use of the multiplicative property of RSA. Instead of computing ''c<sup>d</sup> mod N'', Alice first chooses a secret random value ''r'' and computes ''(r<sup>e</sup>c)<sup>d</sup> mod N''. The result of this computation is ''rm mod N'' and so the effect of ''r'' can be removed by multiplying by its inverse. A new value of ''r'' is chosen for each ciphertext. With this technique, known as ''message blinding'', the decryption time is no longer correlated to the value of the ciphertext and so the timing attack fails.
 
 
=== Penyerangan waktu ===
Kocher menjelaskan sebuah serangan baru yang cerdas pada RSA dipada tahun [[1995]]: jika penyerang, Eve, mengetahui perangkat keras yang dimiliki oleh Alice secara terperinci dan mampu untuk mengukur waktu yang dibutuhkan untuk melakukan dekripsi untuk beberapa ''ciphertext'', Eve dapat menyimpulkan kunci dekripsi ''d'' secara cepat. Penyerangan ini dapat juga diaplikasikan pada skema "tanda tangan" RSA. SAlah satu cara untuk mencegah penyerangan ini yaitu dengan memastikan bahwa operasi dekripsi menggunakan waktu yang konstan untuk setiap ''ciphertext'' yang diproses. Cara yang lainnya, yaitu dengan menggunakan properti multipikatif dari RSA. Sebagai ganti dari menghitung ''c<sup>d</sup> mod N'', Alice pertama-tama memilih nilai bilangan acak ''r'' dan menghitung ''(r<sup>e</sup>c)<sup>d</sup> mod N''. Hasil dari penghitungan tersebut ialah ''rm mod N'' kemudian efek dari ''r'' dapat dihilangkan dengan perkalian dengan inversenya. Nilai baru dari ''r'' dipilih pada tiap ''ciphertext''. Dengan teknik ini, dikenal sebagai ''message blinding'' (pembutaan pesan), waktu yang diperlukan untuk proses dekripsi tidak lagi berhubungan dengan nilai dari ''ciphertext'' sehingga penyerangan waktu akan gagal.
 
=== Penyerangan ''ciphertext'' adaptive ===
 
Pada tahun [[1998]], [[Daniel Bleichenbacher]] menjelaskan penggunaan penyerangan ''ciphertext'' adaptive, terhadap pesan yang terenkripsi menggunakan RSA dan menggunakan PKCS #1 v1 ''padding scheme''. Dikarenakan kecacatan pada skema PKCS #1, Bleichenbacher mampu untuk melakukan serangkaian serangan terhadap implementasi RSA pada [[protokol]] [[Secure Socket Layer]], dan secara potensial mengungkap kunci-kunci yang digunakan. Sebagai hasilnya, para pengguna kriptografi menganjurkan untuk menggunakan ''padding scheme'' yang relatif terbukti aman seperti ''[[Optimal Asymmetric Encryption Padding]]'', dan Laboratorium RSA telah merilis versi terbaru dari PKCS #1 yang tidak lemah terdapat serangan ini.
 
== Lihat jugapula ==
* [[Kriptografi Quantum]]
* ''[[Cryptographic key length]]''
* ''[[Computational complexity theory]]''
* [[MD5]]
 
== Pranala Luarluar ==
* {{en}} [http://www.rsasecurity.com/rsalabs/node.asp?id=2125 PKCS #1: Standar Kriptografi RSA] {{Webarchive|url=https://web.archive.org/web/20051029040347/http://rsasecurity.com/rsalabs/node.asp?id=2125 |date=2005-10-29 }} (website [[Laboratorium RSA]])
* {{en}} [http://theory.lcs.mit.edu/~rivest/rsapaper.pdf Metode untuk mendapatkan ''Digital DignatureSignature'' dan ''Public Key Cryptosystems''] {{Webarchive|url=https://web.archive.org/web/20070127130201/http://theory.lcs.mit.edu/~rivest/rsapaper.pdf |date=2007-01-27 }}, R. Rivest, A. Shamir, L. Adleman, Komunikasi ACM, Seri. 21 (2), 1978, halaman 120--126120–126. Dirilis sebagai MIT "Technical Memo" pada April [[1977]].
* {{en}} [http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=544&printer=t Pengenalan tentang RSA ''Cryptosystem''] {{Webarchive|url=https://web.archive.org/web/20050504064303/http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=544&printer=t |date=2005-05-04 }}, M. Griep, Okt. 2002,
 
 
{{stub}}
 
[[category:Kriptografi]]
 
[[categoryKategori:Kriptografi]]
[[de:RSA-Kryptosystem]]
[[en:RSA]]
[[eo:RSA]]
[[es:RSA]]
[[et:RSA]]
[[fi:RSA]]
[[fr:Rivest Shamir Adleman]]
[[he:RSA]]
[[hu:RSA-eljárás]]
[[it:RSA]]
[[ja:RSA暗号]]
[[ko:RSA 암호]]
[[nl:RSA (Cryptografie)]]
[[pl:RSA (kryptografia)]]
[[pt:RSA]]
[[ru:RSA]]
[[sv:RSA]]
[[zh:RSA]]