Jumat, 27 Januari 2012


Pada awalnya SSH dikembangkan oleh Tatu Yl nen di Helsinki University of Technology.
SSH memberikan alternatif yang secure terhadap remote session tradisional dan file transfer
protocol seperti telnet dan relogin.Protokol SSH mendukung otentikasi terhadap remote host, yang
dengan demikian meminimalkan ancaman pemalsuan identitas client lewat IP address spoofing
maupun manipulasi DNS. Selain itu SSH mendukung beberapa protocol enkripsi secret key untuk
membantu memastikan privacy dari keseluruhan komunikasi, yang dimulai dengan
username/password awal.
Algoritma enkripsi yang didukung oleh SSH di antaranya TripleDES(Pengembangan dari
DES oleh IBM), BlowFish (BRUCE SCHNEIER), IDEA (The International Data Encryption
Algorithm), dan RSA (The Rivest-Shamir-Adelman). Dengan berbagai metode enkripsi yang
didukung oleh SSH, Algoritma yang digunakan dapat diganti secara cepat jika salah satu algoritma
yang diterapkan mengalami gangguan. SSH menyediakan suatu virtual private connection pada
application layer, mencakup interactive logon protocol (ssh dan sshd) serta fasilitas untuk secure
transfer file (scd). Setelah meng-instal SSH, sangat dianjurkan untuk mendisable telnet dan rlogin.
Implementasi SSH pada linux diantaranya adalah OpenSSH. SSH merupakan paket program yang
digunakan sebagai pengganti yang aman untuk rlogin, rsh dan rcp.

SSH dirancang untuk menggantikan protokol telnet dan FTP. SSH merupakan produk
serbaguna yang dirancang untuk melakukan banyak hal, yang kebanyakan berupa penciptaan
tunnel antar host. Dua hal penting SSH adalah console login (menggantikan telnet) dan secure
filetransfer (menggantikan FTP), tetapi dengan SSH anda juga memperoleh kemampuan
membentuk source tunnel untuk melewatkan HTTP,FTP,POP3, dan apapun lainnya melalui SSH
tunel.


SSH menggunakan metode public-key cryptography untuk mengenkripsi komunikasi
antara dua host, demikian pula untuk autentikasi pemakai. Dengan metode ini, kita akan
memerlukan 2 buah kunci berbeda yang digunakan baik untuk melakukan enkripsi dan dekripsi.
Dua buah kunci tersebut masing-masing disebut public key (dipublikasikan ke publik/orang lain)
dan private key (dirahasiakan/hanya pemiliknya yang tahu). Masing-masing kunci di atas dapat
digunakan untuk melakukan enkripsi dan dekripsi.
SSH dapat digunakan untuk login secara aman ke remote host atau menyalin data antar
host, sementara mencegah man-in-themiddle attacks (pembajakan sesi) dan DNS spoofing atau
dapat dikatakan Secure Shell adalah program yang melakukan loging terhadap komputer lain
dalam jaringan, mengeksekusi perintah lewat mesin secara remote, dan memindahkan file dari
satu mesin ke mesin lainnya. SSH merupakan produk serbaguna yang dirancang untuk
melakukan banyak hal, yang kebanyakan berupa penciptaan tunnel antar host.



[sourcecode language="cpp"]

/ / Header File – Aplikasi RSA
/ / Algoritma Rabin Miller & – Test untuk primality
/ / Pseudorandom Nomor Generator Algoritma
/ / Relatif Perdana – Algoritma Euclid

# Include <iostream.h>
# Include
# Include
# Include <string.h>
# Include <conio.h>
# Include <math.h>
# Include <process.h>

kelas RSA
{
publik:
int PR1, PR2, x1, n, n1;
int e, d, pt;
int a [20], b [10];
int len; panjang array / / biner

RSA ();

/ / Algoritma Rabin Miller & – Test untuk primality
kekosongan testprimality ();

/ / Pseudorandom Nomor Generator Algoritma
kekosongan pseudo1 ();
int pseudo2 ();

/ / Relatif Perdana – Algoritma Euclid
/ / GCD dari dua angka-mereka faktor umum adalah ’1 ‘
kekosongan relprime ();
int FPB (int c, int d);

/ / Key Generasi
int keygenerate1 (int ptext); / / untuk Enkripsi
int keygenerate2 (int ctext); / / untuk Dekripsi
kekosongan decitobin (int x);

/ / Enkripsi
int mengenkripsi (int num);

/ / Dekripsi
mendekripsi int (int ctext);

};

/ / Interface File – Aplikasi RSA
/ / Algoritma Rabin Miller & – Test untuk primality
/ / Pseudorandom Nomor Generator Algoritma
/ / Relatif Perdana – Algoritma Euclid

# Include "rh1.h"

RSA:: RSA ()
{
x1 = 1;
PR1 = 0;
PR2 = 0;
}

/ / Algoritma Rabin Miller & – Test untuk primality

kekosongan RSA:: testprimality ()
{
int a, j, p1, q, x;
int t1, t2;

int k, bendera, ch;

ch = 1;
bendera = 0;
k = 0;

/ / (N-1) = pow (2, k) * q
/ / Membagi (n-1) dengan 2 sampai hasil adalah nomor ganjil

sementara (ch)
{
x = (n-1) / (int) (pow (2, k));
if (FMOD (x, 2) == 1)
{
ch = 0;
break;
}

k + +;
}

q = (int) ((n-1) / (pow (2, k)));

/ / Untuk memilih secara acak integer yang
/ / Harus kurang dari ‘n’;
/ / Itulah mengapa memanggil pseudo2 ()
a = pseudo2 ();

jika (a> 1 & & a <(n-1))
{
t1 = (int) (pow (a, q));

if ((t1% n) == 1)
flag = 1;
lain
{

for (j = 0; j <= (k-1); j + +)
{
p1 = ((int) (pow (2, j))) * q;
t2 = (int) pow (a, p1);

if ((t2% n) == (n-1))
flag = 1;

}
}
}

if (bendera == 1)
if (PR1 == 0)
PR1 = n;
lain jika (= 0 & pr1! & PR2 == 0)
PR2 = n;

}

/ / Pseudorandom Nomor Generator Algoritma

kekosongan RSA:: pseudo1 ()
{
/ / Untuk memilih ‘n’ pseudorandomly dan lolos ke testprimality ();
/ / ‘N’ adalah harus dibuktikan baik utama atau tidak prima

int a, c, y;
unsigned int m;

y = 0;

a = (int) pow (7,5); / / (7,2), * (7,4), (7,5)
/ / (Int) pow (7,5) digunakan dalam IBM 360

/ / M harus diberi "utama" tidak.
/ / Sampai dengan pow (2,31) harus digunakan.
/ / (2,5) -1; (2,7) -1; (2,13) ??-1;
/ / (2,17) -1; (2,19) -1; (2,31) -1 bilangan prima

m = ((int) pow (2,7)) -1; / / (2,7)

n = 1; c = 0;

for (int i = 0; i <50; i + +)
{
n = ((a * n) + c) m%;
testprimality ();
/ / N akan dihitung dalam textprimality ()
}

/ / Cout <<"
PR1 = "<<PR1;
/ / Cout <<"
PR2 = "<<PR2;
}

int RSA:: pseudo2 ()
{
/ / Untuk memilih secara acak integer yang
/ / Harus kurang dari ‘n’

int a, ret;
unsigned int m;

a = (int) pow (7,4); / / (7,3), * (7,4) untuk a (7,5) di pseudo1
m = (int) pow (2,5) -1; / / (2,5)

ret = (a * x1) m%;
x1 = ret;

kembali ret;

}

/ / Relatif Perdana – Algoritma Euclid
/ / GCD dari dua angka-mereka faktor umum adalah ’1 ‘
kekosongan RSA:: relprime ()
{

/ / Mencari ‘e’ & nilai ‘d’
int sirip, ret, ret1, ret2, ch, mantan, dx;

ch = 1; ex = 2; dx = 1;
n1 = PR1 PR2 *;

fin = (PR1-1) * (PR2-1);

/ / Mencari ‘e’ sendiri
x1 = 1; / / untuk pseudo2

sementara (ch)
{
ex = pseudo2 ();
jika (mantan> 1 & & ex <sirip)
{
ret1 = FPB (ex, sirip);
ret2 = FPB (fin, (mantan sirip%));
if (== ret1 1 & & ret2 == 1)
{
e = ex;
ch = 0;
break;
}
}

}

/ / Cout <<"
Relatif Perdana: e Nilai: "<<e;

/ / Mencari ‘d’ saja
/ / De = (1 fin mod) dimana sirip = (PR1-1) * (PR2-1);
ch = 1;
sementara (ch)
{
ret = (e * dx) sirip%;
if (ret == 1)
{
d = dx;
ch = 0;
break;
}
dx = dx +1;

}

/ / Cout <<"
d Nilai: "<<d;
}

int RSA:: FPB (int c, int d)
{
int r;

r = d% c;

sementara (= 0 r!)
{
d = c;
c = r;
r = d% c;
}

kembali c;
}

int RSA:: keygenerate1 (int ptext)
{
/ / Enkripsi
int i, c;
int entext;

c = 0; entext = 1;

decitobin (e); kunci / / publik dengan ‘e’
/ / B [] -> array yang berisi nilai biner dari ‘e’

for (i = len; i> = 0; i -)
{
c = 2 * c;
entext = (entext * entext)% n1; / / 187 -> n1
jika (a [i] == 1)
{
c = c +1;
entext = (entext * ptext)% n1; / / 187 -> n1
}
}

/ / Cout <<"
Dienkripsi ‘c’: "<<c;
kembali entext;
}

int RSA:: keygenerate2 (int ctext)
{

/ / Dekripsi
int i, dntext, c;
dntext = 1;
c = 0;

decitobin (d); Kunci / / Swasta dengan ‘d’
/ / B [] -> array yang berisi nilai biner dari ‘d’

for (i = len; i> = 0; i -)
{
c = 2 * c;
dntext = (dntext * dntext)% n1;

jika (a [i] == 1)
{
c = c +1;
dntext = (dntext * ctext)% n1;
}

}

/ / Cout <<"
Didekripsi ‘c’: = "<<c;

kembali dntext;
}

kekosongan RSA:: decitobin (int x)
{
int k, i = 0;

sementara (x> 0)
{
a [i] = x% 2;
i + +;
x = x / 2;
}

/ / Saat keluar dari atas lingkaran, saya nilai bertambah dengan 1
k = i-1;

len = i-1;
}

int RSA:: mengenkripsi (int num)
{
int ctext, i;

pt = num;
ctext = keygenerate1 (num);

kembali (ctext);
}

int RSA:: mendekripsi (int ctext)
{
int dectext, i;

dectext = keygenerate2 (ctext);

kembali (dectext);

}

/ / Aplikasi File – Aplikasi RSA
/ / Algoritma Rabin Miller & – Test untuk primality
/ / Pseudorandom Nomor Generator Algoritma
/ / Relatif Perdana – Algoritma Euclid

# Include "rh1.h"
# Include

void main ()
{
int i, det, det1, len, k, k1, cnt;
int con = 0, c;
char ch [100], cipher [20], orig [20];

RSA r;
c = 1;

cout <<endl <<endl;
for (i = 0; i <70; i + +)
pengadilan <<’*';
cout <<"
RSA APLIKASI <BR>;
for (i = 0; i <70; i + +)
pengadilan <<’*';
cout <<endl;

r.pseudo1 ();
r.relprime ();

cout <<"

Masukkan String: ";
cnt = 0;
arang chr;

scanf ("% [^
] S ", ch);

len = strlen (ch);
k = 0; k1 = 0;

for (i = 0; i <len; i + +)
{
con = (int) ch [i];
det = r.encrypt (con);
cipher [k] = char (det);
k + +;
det1 = r.decrypt (det);
dgn [k1] = char (det1);
k1 + +;
}

cipher [k] = ‘

[/sourcecode]