Dokumen tersebut membahas tentang enkripsi data dan beberapa metode enkripsi yang dapat digunakan untuk melindungi data, seperti enkripsi RSA, Caesar cipher, Vigenere cipher, MD2, MD4, MD5, SHA, RC4, base64, dan PGP. Metode-metode tersebut masing-masing memiliki cara kerja yang berbeda untuk mengenkripsikan data sehingga hanya orang yang memiliki kunci dekripsinya saja yang dapat membaca datanya.
1 of 15
Downloaded 24 times
More Related Content
Enkripsi Data
1. Manajemen Keamanan Komputer
Enkripsi Data
oleh :
Ana Tolirenisa A1.1300017
Mirna Nurlitasari A1.1300003
Alvia Octavia S. A1.1300004
SEKOLAH MANAJEMEN INFORMATIKA DAN KOMPUTER
(STMIK SUMEDANG)
JL. Anggkrek Situ No.19
2014-2015
2. 2
1. Program Aplikasi menjelaskan enkripsi RSA
import java.math.BigInteger;
import java.util.Random;
import java.io.*;
public class RSA {
private BigInteger p;
private BigInteger q;
private BigInteger N;
private BigInteger phi;
private BigInteger e;
private BigInteger d;
private int bitlength = 1024;
private int blocksize = 256; //blocksize in byte
private Random r;
public RSA() {
r = new Random();
p = BigInteger.probablePrime(bitlength, r);
q = BigInteger.probablePrime(bitlength, r);
N = p.multiply(q);
phi = p.subtract(BigInteger.ONE).multiply(q.subtract(BigInteger.ONE));
e = BigInteger.probablePrime(bitlength/2, r);
while (phi.gcd(e).compareTo(BigInteger.ONE) > 0 && e.compareTo(phi) < 0 )
{
e.add(BigInteger.ONE);
}
d = e.modInverse(phi);
}
public RSA(BigInteger e, BigInteger d, BigInteger N) {
this.e = e;
this.d = d;
this.N = N;
}
public static void main (String[] args) throws IOException
{
RSA rsa = new RSA();
DataInputStream in=new DataInputStream(System.in);
3. 3
String teststring ;
System.out.println("Enter the plain text:");
teststring=in.readLine();
System.out.println("Encrypting String: " + teststring);
System.out.println("String in Bytes: " + bytesToString(teststring.getBytes()));
// encrypt
byte[] encrypted = rsa.encrypt(teststring.getBytes());
System.out.println("Encrypted String in Bytes: " + bytesToString(encrypted));
// decrypt
byte[] decrypted = rsa.decrypt(encrypted);
System.out.println("Decrypted String in Bytes: " + bytesToString(decrypted));
System.out.println("Decrypted String: " + new String(decrypted));
}
private static String bytesToString(byte[] encrypted) {
String test = "";
for (byte b : encrypted) {
test += Byte.toString(b);
}
return test;
}
public byte[] encrypt(byte[] message) {
return (new BigInteger(message)).modPow(e, N).toByteArray();
}
public byte[] decrypt(byte[] message) {
return (new BigInteger(message)).modPow(d, N).toByteArray();
}
}
4. 4
2. Program code enkripsi cipher Caesar dan Vigenere Cipher
A. Cipher Caesar
/*
* CaesarCipher.java
* Encrypts/Decrypts text using the Caesar Cipher method
* Made by Shofiul Arif
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CaesarCipher extends JFrame implements ActionListener {
private static JLabel msgLabel = new JLabel("Message: ");
private static JLabel keyLabel = new JLabel("Key: ");
private static JLabel actionLabel = new JLabel("Action: ");
private static JLabel resultLabel = new JLabel("Result: ");
private static JTextField msgTextField = new JTextField(20);
private static JTextField resultTextField = new JTextField(20);
private static JSpinner keySpinner = new JSpinner( new SpinnerNumberModel(3,
1, 25, 1) );
private static JRadioButton encryptRadio = new JRadioButton("Encrypt");
private static JRadioButton decryptRadio = new JRadioButton("Decrypt");
private static JButton actionButton = new JButton("Encrypt Message");
private static JPanel panel = new JPanel();
private static ButtonGroup group = new ButtonGroup();
public static void main(String[] args) {
new CaesarCipher();
}
public CaesarCipher() {
this.setSize(310, 192);
this.setTitle("Caesar Cipher");
6. 6
gc.weightx = 100.0;
gc.weighty = 100.0;
gc.insets = new Insets(5, 5, 5, 5);
gc.anchor = align;
gc.fill = GridBagConstraints.NONE;
p.add(c, gc);
}
private void encryptMessage(String msg, int k) {
String result = "";
resultTextField.setText("");
for (int i = 0; i < msg.length(); i++)
result += encryptChar(msg.charAt(i), k);
resultTextField.setText(result);
}
private char encryptChar(char c, int k) {
if (Character.isLetter(c))
return (char) ('A' + (c - 'A' + k) % 26);
else
return c;
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == encryptRadio)
actionButton.setText("Encrypt Message");
if (e.getSource() == decryptRadio)
actionButton.setText("Decrypt Message");
if (e.getSource() == actionButton) {
String str = msgTextField.getText();
int k = (Integer) keySpinner.getValue();
int key = 0;
String message = "";
if (str.equals("")) {
JOptionPane.showMessageDialog(null, "Please enter a message!", "Error!",
JOptionPane.ERROR_MESSAGE);
msgTextField.requestFocus();
return;
}
message = str.toUpperCase();
7. 7
if (encryptRadio.isSelected())
key = k;
else
key = 26 - k;
encryptMessage(message, key);
}
}
}
B. Vigener Cipher
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package vigenere;
/**
*
* @author Guest
*/
8. 8
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
new vig().setVisible(true);
}
public String indraadiputra (String plain, String key) {
int m = key.length();
plain = plain.toUpperCase().trim();
key = key.toUpperCase();
byte[] bytePlainText = plain.getBytes();
byte[] byteCipherText = new byte[plain.length()];
byte[] byteKey = key.getBytes();
for (int i=0; i < m; i++) byteKey[i] -= 64;
for (int i=0; i < plain.length(); i++) {
bytePlainText[i] -= 65;
// abaikan selain alfabet
if (bytePlainText[i]>-1 && bytePlainText[i]< 26) {
byteCipherText[i] = (byte)((bytePlainText[i] + byteKey[i % m]-1) % 26);
byteCipherText[i] += 65;
}
else byteCipherText[i] = (byte)(bytePlainText[i] + 65);
}
return new String (byteCipherText);
}
public String indraadi (String sandi, String kunci) {
int m = kunci.length();
sandi = sandi.toUpperCase().trim();
kunci = kunci.toUpperCase();
byte[] bytesandiText = sandi.getBytes();
byte[] byteterangText = new byte[sandi.length()];
byte[] bytekunci = kunci.getBytes();
for (int i=0; i < m; i++) bytekunci[i] -= 64;
for (int i=0; i < sandi.length(); i++) {
9. 9
bytesandiText[i] -= 65;
// abaikan selain alfabet
if (bytesandiText[i]<-1 && bytesandiText[i]< 26)
{
byteterangText[i] = (byte)((bytesandiText[i] - bytekunci[i % m]+1) % 26);
byteterangText[i] += 65;
if (byteterangText[i]&<65)
{
byteterangText[i] += 26;
}
}
else byteterangText[i] = (byte)(bytesandiText[i] + 65 );
}
return new String (byteterangText); } }
3. Enkripsi
A. Pengertian Enkripsi
Enkripsi adalah suatu metode yang digunakan untuk mengkodekan data
sedemikian rupa sehingga keamanan informasinya terjaga dan tidak dapat dibaca
tanpa di dekripsi (kebalikan dari proses enkripsi) dahulu. Encryption berasal dari
bahasa yunani kryptos yang artinya tersembunyi atau rahasia.
Dikarenakan enkripsi telah digunakan untuk mengamankan komunikasi di
berbagai negara, hanya organisasi-organisasi tertentu dan individu yang memiliki
kepentingan yang sangat mendesak akan kerahasiaan yang menggunakan enkripsi.
Di pertengahan tahun 1970-an, enkripsi kuat dimanfaatkan untuk pengamanan
oleh sekretariat agen pemerintah Amerika Serikat pada domain publik, dan saat ini
enkripsi telah digunakan pada sistem secara luas, seperti Internet e-commerce,
jaringan Telepon bergerak dan ATM pada bank.
Enkripsi dapat digunakan untuk tujuan keamanan, tetapi teknik lain masih
diperlukan untuk membuat komunikasi yang aman, terutama untuk memastikan
integritas dan autentikasi dari sebuah pesan. Contohnya, Message Authentication
Code (MAC) atau digital signature. Penggunaan yang lain yaitu untuk melindungi
dari analisis jaringan komputer.
B. Manfaat enkripsi
Beberapa manfaat yang bisa didapatkan dari enkripsi ini adalah :
Kerahasiaan suatu informasi terjamin
Menyediakan authentication dan perlindungan integritas pada algoritma
checksum/hash
Menanggulangi penyadapan telepon dan email
Untuk digital signature. Digital signature adalah menambahkan suatu baris
statemen pada suatu elektronik copy dan mengenkripsi statemen tersebut
dengan kunci yang kita miliki dan hanya pihak yang memiliki kunci
dekripsinya saja yang bisa membukanya.
10. 10
Untuk digital cash
C. Kerugian Enkripsi
Penyandian rencana teroris
Penyembunyian record criminal oleh seorang penjahat
Pesan tidak bisa dibaca bila penerima pesan lupa atau kehilangan kunci
(decryptor).
D. Macam-macam Enkripsi pada pemrograman WEB
a. Metode Enkripsi MD2
Message-Digest algortihm 2 (MD2) adalah fungsi hash cryptographic
yang dikembangkan oleh Ronald Rivest pada tahun 1989'
Algoritma dioptimalkan untuk komputer 8-bit. MD2 yang ditetapkan
dalam RFC 1319.
Meskipun algoritma lainnya telah diusulkan sejak dulu, seperti MD4,
MD5 dan SHA, bahkan sampai dengan 2004 [update] MD2 tetap
digunakan dalam infrastruktur kunci publik sebagai bagian dari
sertifikat yang dihasilkan dengan MD2 dan RSA.
b. Metode Enkripsi MD4
Message-Digest algortihm 4(seri ke-4) yang dirancang oleh Profesor
Ronald Rivest dari MIT pada tahun 1990. Panjangnya adalah 128 bit.
MD4 juga digunakan untuk menghitung NT-hash ringkasan password
pada Microsoft Windows NT, XP dan Vista.
c. Metode Enkripsi MD5
MD5 adalah salah satu dari serangkaian algortima message digest yang
didesain oleh Profesor Ronald Rivest dari MIT (Rivest, 1994).
Saat kerja analitik menunjukkan bahwa pendahulu MD5 yaitu MD4
mulai tidak aman, MD5 kemudian didesain pada tahun 1991 sebagai
pengganti dari MD4 (kelemahan MD4 ditemukan oleh Hans
Dobbertin).
Dalam kriptografi, MD5 (Message-Digest algortihm 5) ialah fungsi
hash kriptografik yang digunakan secara luas dengan hash value 128-
bit.
Pada standart Internet (RFC 1321), MD5 telah dimanfaatkan secara
bermacam-macam pada aplikasi keamanan, dan MD5 juga umum
digunakan untuk melakukan pengujian integritas sebuah file.
d. Metode Enkripsi SHA
SHA adalah serangkaian fungsi cryptographic hash yang dirancang
oleh National Security Agency (NSA) dan diterbitkan oleh NIST
sebagai US Federal Information Processing Standard.
SHA adalah Secure Hash Algoritma. Jenis-jenis SHA yaitu SHA-0,
SHA-1, dan SHA-2.
Untuk SHA-2 menggunakan algoritma yang identik dengan ringkasan
ukuran variabel yang terkenal sebagai SHA-224, SHA-256, SHA-384,
dan SHA-512.
11. 11
e. Metode Enkripsi RC4
RC4 merupakan salah satu jenis stream cipher, yaitu memproses unit
atau input data pada satu saat. Unit atau data pada umumnya sebuah
byte atau bahkan kadang kadang bit (byte dalam hal RC4).
Dengan cara ini enkripsi atau dekripsi dapat dilaksanakan pada
panjang yang variabel.
RC4 adalah penyandian stream cipher yang dibuat oleh Ron Riverst
pada tahun 1987 untuk pengamanan RSA.
Algoritmanya didasarkan pada permutasi acak.
f. Metode Enkripsi Base64
Base64 adalah sistem untuk mewakili data mentah byte sebagai
karakter ASCII.
Base64 menyediakan 6-bit encoding 8-bit ASCII karakter.
Base64 merupakan format yang dicetak menggunakan karakter,
memungkinkan binari data yang akan dikirim dalam bentuk dan email,
dan akan disimpan di database atau file.
g. Metode Enkripsi PGP
Pengertian PGP
PGP adalah suatu metode penyandian informasi yang bersifat rahasia
sehingga jangan sampai diketahui oleh orang yang tidak berhak.
Informasi ini bisa berupa e-mail yang sifatnya rahasia, nomor kode
kartu kredit, atau pengiriman dokumen rahasia perusahaan melalui
internet. PGP menggunakan metode kriptografi yang disebut public
key encryption; yaitu suatu metode kriptografi yang sangat
sophisticate.
Prinsip Kerja PGP
PGP, seperti yang telah dijelaskan
sebelumnya, menggunakan teknik yang disebut public-key
encryption dengan dua kode. Kode-kode ini berhubungan
secara intrinsik, namun tidak mungkin untuk memecahkan satu
dan yang lainnya.
Bila suatu ketika kita membuat suatu kunci, maka secara
otomatis akan dihasilkan sepasang kunci yaitu public key and
secret key. Kita dapat memberikan public key ke
manapun tujuan yang kita inginkan, melalui
telephone, internet, keyserver, dsb. Secret key yang disimpan
pada mesin kita dan menggunakan messager decipher akan
dikirimkan ke kita. Jadi orang yang akan menggunakan public
key kita (yang hanya dapat didekripsi oleh oleh secret key
kita), mengirimkan messages kepada kita , dan kita akan
menggunakan secret key untuk membacanya.
12. 12
Kenapa menggunakan dua kunci ?. Karena
dengan conventional crypto, di saat terjadi transfer informasi
kunci, suatu secure channel diperlukan. Dan jika kita memiliki
suatu secure channel, mengapa kita menggunakan
crypto? Namun dengan public-key system, tidak akan menjadi
masalah siapa yang melihat kunci milik kita, karena kunci yang
dilihat orang lain adalah yang digunakan hanya untuk enkripsi
dan hanya kita sebagai pemilik yang mengetahui secret key;
yaitu key yang berhubungan secara fisik dengan komputer
kita yang dapat melakukan proses dekripsi dengan public key
yang ada dan kemudian kita masukan lagi passphrase. Jadi
seseorang mungkin dapat mencuri passphrase yang kita
ketikkan, namun ia dapat membaca hanya jika ia dapat
mengakses komputer kita
Enkripsi untuk File-File Biner
Untuk mereka yang terbiasa bekerja dengan file-file biner, pada usenet
mengetahui istilah uuencode. Uuenconde adalah suatu program, yang
terutama untuk UNIX, namun sekarang berkembang sehingga dapat
mengubah file-file biner seperti .GIF or .AU menjadi ASCII text yang
sesuai dengan format pengiriman usenet. Feature ini juga dimiliki
oleh PGP. File config.txt(mungkin disebut pgp.ini atau .pgprc ;
tergantung protokol local) memiliki suatu option untuk berapa banyak
baris file ASCII yang dapat dimuat. Jika jumlah ini tercapai, PGP akan
memecah-mecah file armored .asc menjadi .as1, .as2, .as3, ... dan
semuanya harus digabungkan satu sama lain secara bersama-sama dan
menjalankan PGP dalam suatu file yang besar. Untuk mengenkripsi
suatu file biner, gunakan command berikut:
pgp -a picture.gif
option TextMode diset ke ON:
pgp -a picture.gif +textmode=off
h. metode enkripsi DES
Pengertian DES
DES merupakan algoritma enkripsi yang dikembangkan oleh NIST
(National Institute of Standards and Technology) sebagai standar
pengolahan informasi Federal AS. Secara umum, Data Encryption
Standard (DES) terbagi menjadi tiga kelompok, yaitu pemrosesan
kunci, enkripsi data 64 bit dan deskripsi data 64 bit, dimana satu
kelompok saling berinteraksi satu dengan yang lainnya.
Data dienkripsi dalam blok-blok 64 bit menggunakan kunci 56 bit,
DES mentransformasikan input 64 bit dalam beberapa tahap enkripsi
ke dalam output 64 bit. Dengan demikian, DES termasuk lama block
cipher dengan tahapan pemakaian kunci yang sama untuk
deskripsinya.
Sejarah DES
DES, atau juga dikenal sebagai Data Encryption Algorithm (DEA)
oleh ANSI dan DEA-1 oleh ISO, merupakan algoritma kriptografi
13. 13
simetris yang paling umum digunakan saat ini. Sejarahnya DES
dimulai dari permintaan
pemerintah Amerika Serikat untuk memasukkan proposal enskripsi.
DES memiliki sejarah dari Lucifer1, enkripsi yang dikembangan di
IBM kala itu. Horst Feistel merupakan salah satu periset yang mula-
mulA mengembangkan DES ketika bekerja di IBM Watson Laboratory
di Yorktown Heights, New York. DES baru secara resmi digunakan
oleh pemerintah Amerika Serikat (diadopsi oleh National Bureau of
Standards)
di tahun 1977. Ia dikenal sebagai Federal Information Processing
Standard 46 (FIPS PUB46).
Aplikasi yang menggunakan DES antara lain:
enkripsi dari password di sistem UNIX
berbagai aplikasi di bidang perbankan
Memecahkan DES
DES merupakan block chiper yang beroperasi dengan menggunakan
blok berukuran 64-bit dan kunci berukuran 56-bit. Brute force attack
dengan mencoba segala kombinasi membutuhkan 256 kombinasi atau
sekitar 7x 1017 atau 70 juta milyar kombinasi. DES dengan
penggunaan yang biasa (cookbook mode) dengan panjang kunci 56 bit
saat ini sudah dapat dianggap tidak aman karena sudah berhasil
dipecahkan dengan metoda coba-coba (brute force attack). Ada
berbagai group yang mencoba memecahkan DES dengan berbagai
cara. Salah satu group yang bernama distributed.net menggunakan
teknologi Internet untuk memecahkan problem ini menjadi sub-
problem yang kecil (dalam ukuran blok). Pengguna dapat menjalankan
sebuah program yang khusus dikembangkan oleh tim ini untuk
mengambil beberapa blok, via Internet, kemudian memecahkannya di
komputer pribadinya. Program yang disediakan meliputi berbagai
operating system seperti Windows, DOS, berbagai variasi Unix,
Macintosh. Blok yang sudah diproses dikembalikan
ke distributed.net via Internet. Dengan cara ini puluhan ribu orang,
termasuk penulis, membantu memecahkan DES. Mekanisme ini dapat
memecahkan DES dalam waktu 30 hari. Sebuah group lain yang
disebut Electronic Frontier Foundation (EFF) membuat sebuah
komputer yang dilengkapi dengan Integrated Circuit chip DES cracker.
Dengan mesin seharga US$50.000 ini mereka dapat memecahkan DES
56-bit dalam waktu rata-rata empat (4) sampai lima (5) hari. DES
cracker yang mereka kembangkan dapat melakukan eksplorasi
keseluruhan dari 56-bit keyspace dalam waktu sembilan (9) hari.
Dikarenakan 56-bit memiliki 216 (atau 65536) keyspace dibandingkan
DES dengan 40-bit, maka untuk memecahkan DES 40-bit hanya
dibutuhkan waktu sekitar 12 detik1. Dikarenakan hukum average,
waktu rata-rata untuk memecahkan DES 40-bit adalah 6 detik.
14. 14
Perlu diingat bahwa group seperti EFF merupakan group kecil dengan
budget yang terbatas.
Memecakan DES
DES merupakan block chiper yang beroperasi dengan menggunakan
blok berukuran 64-bit dan kunci berukuran 56-bit. Brute force attack
dengan mencoba segala kombinasi membutuhkan 256 kombinasi atau
sekitar 7x 1017 atau 70 juta milyar kombinasi. DES dengan
penggunaan yang biasa (cookbook mode) dengan panjang kunci 56 bit
saat ini sudah dapat dianggap tidak aman karena sudah berhasil
dipecahkan dengan metoda coba-coba (brute force attack). Ada
berbagai group yang mencoba memecahkan DES dengan berbagai
cara. Salah satu group yang bernama distributed.net menggunakan
teknologi Internet untuk memecahkan problem ini menjadi sub-
problem yang kecil (dalam ukuran blok). Pengguna dapat menjalankan
sebuah program yang khusus dikembangkan oleh tim ini untuk
mengambil beberapa blok, via Internet, kemudian memecahkannya di
komputer pribadinya. Program yang disediakan meliputi berbagai
operating system seperti Windows, DOS, berbagai variasi Unix,
Macintosh. Blok yang sudah diproses dikembalikan
ke distributed.net via Internet. Dengan cara ini puluhan ribu orang,
termasuk penulis, membantu memecahkan DES. Mekanisme ini dapat
memecahkan DES dalam waktu 30 hari. Sebuah group lain yang
disebut Electronic Frontier Foundation (EFF) membuat sebuah
komputer yang dilengkapi dengan Integrated Circuit chip DES cracker.
Dengan mesin seharga US$50.000 ini mereka dapat memecahkan DES
56-bit dalam waktu rata-rata empat (4) sampai lima (5) hari. DES
cracker yang mereka kembangkan dapat melakukan eksplorasi
keseluruhan dari 56-bit keyspace dalam waktu sembilan (9) hari.
Dikarenakan 56-bit memiliki 216 (atau 65536) keyspace dibandingkan
DES dengan 40-bit, maka untuk memecahkan DES 40-bit hanya
dibutuhkan waktu sekitar 12 detik1. Dikarenakan hukum average,
waktu rata-rata untuk memecahkan DES 40-bit adalah 6 detik.
Perlu diingat bahwa group seperti EFF merupakan group kecil dengan
budget yang terbatas.
15. 15
Secara umum skema Data Encryption Standard (DES) memiliki dua
fungsi input, yaitu :
Plaintext untuk dienkripsi dengan panjang 64 bit.
Kunci dengan panjang 56 bit.
Proses initial permutasi (IP) Plaintext ada tiga :
Plaintext 64 bit diproses di Initial Permutasi (IP) dan menyusun
kembali bit untuk menghasilkan permutasi input.
Langkah untuk melakukan perulangan kata dari plaintext sebanyak 16
dengan melakukan fungsi yang sama, yang menghasilkan fungsi
permutasi substitusi, yang mana output akhir dari hal tersebut berisi 64
bit (fungsi dari plaintext dan kunci), masuk ke swap, dan menghasilkan
preouput.
Preoutput diproses, dan permutasi di inverse dari initial permutasi yang
akan menghasilkan ciphertext 64bit.