Tutorial Pemrograman Kriptografi C++ dan Java

Zae
Sertifikat Elektronik lagi menjadi topik hangat akhir akhir ini terutama di Instansi Pemerintah. Contohnya bisa dibaca di artikel "Lemsaneg Luncurkan Sertifikasi Digital untuk Amankan Informasi Pemerintah" .
Sebenarnya apa sih sertifikat digital atau sertifikat elektronik itu?. Mari kita bahas satu per satu.
Kalau berdasarkan literatur yang saya dapatkan dari UU ITE No 11 Tahun 2008
Sertifikat  Elektronik  adalah  sertifikat  yang  bersifat  elektronik  yang  memuat  Tanda  Tangan Elektronik  dan  identitas  yang  menunjukkan  status  subjek  hukum  para  pihak  dalam  Transaksi Elektronik yang dikeluarkan oleh Penyelenggara Sertifikasi Elektronik. 

Sudah jelaskah dengan definisi diatas? Buat orang awam saya kira masih bingung dengan definisi diatas. Secara fisik, sertifikat digital hanyalah sebuah file. Saya tunjukan bentuk fisik sertifikat elektronik, temen temen bisa buka https://ib.bankmandiri.co.id/retail/Login.do?action=form.

 

Selanjutnya klik https, nanti akan muncul informasi seperti pada gambar, Temen temen klik aja "Informasi sertifikat". Nanti akan muncul sertifikat elektroniknya, seperti dibawah ini


Nah itu dia, bentuk sertifikat elektronik/digitalnya, Di Tab General ada beberapa informasi yang dapat kita baca terkait informasi sertifikat yaitu kegunaan sertifikat, diterbitkan untuk siapa,siapa penerbitnya, dan masa berakhir sertifikat. Untuk gambar diatas didapatkan informasi bahwa sertifikat tersebut di gunakan untuk meyakinkan dan membuktikan identitas yang benar dalam hal ini adalah benar server ib.bankmandiri.co.id, sertifikat di terbitkan untuk server ib.bankmandiri.co.id, diterbitkan oleh Symantec Class 3 EV SSL SGC CA - G2, dan masa berlaku sertifkat hingga 4 Juni 2016.
Kalau file sertifikat dibuka, bentuknya seperti ini
-----BEGIN CERTIFICATE-----
MIIGeDCCBWCgAwIBAgIQCditPMDkdRoXwi0t9LNCyTANBgkqhkiG9w0BAQsFADB3
MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAd
BgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMTH1N5bWFudGVj
IENsYXNzIDMgRVYgU1NMIENBIC0gRzMwHhcNMTYwMzE1MDAwMDAwWhcNMTcwNTE0
MjM1OTU5WjCB9TETMBEGCysGAQQBgjc8AgEDEwJJRDEdMBsGA1UEDxMUUHJpdmF0
ZSBPcmdhbml6YXRpb24xGzAZBgNVBAUTEkFIVS1BSC4wMS4xMC0xNjM4OTELMAkG
A1UEBhMCSUQxEDAOBgNVBAgUB0pha2FydGExEDAOBgNVBAcUB0pha2FydGExKDAm
BgNVBAoUH1BULiBCQU5LIE1BTkRJUkkgKFBFUlNFUk8pIFRCSy4xKDAmBgNVBAsU
H1BULiBCQU5LIE1BTkRJUkkgKFBFUlNFUk8pIFRCSy4xHTAbBgNVBAMUFGliLmJh
bmttYW5kaXJpLmNvLmlkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
xd2nTAtV4gIbXljK45S6CWK03dNLKNGcxC9mPnLhwNrJhI5wEmpQF+042Ng3YhDr
0T/8cIDAfG3AmrlwWRly7SKJZBahcH14sof+Xd1ingbnmUDYT1yFK3p2/274wpWu
NkTKECIghUd2cJCLFhBoDHhMjQZWCqj/Cyh9GXLG3JWqEx15i4Vt96S1/lcmTeEt
gPoPUJQlrvx+OqIYU3onrFMIYLKgZPIn2iioXZC1bnjsaecEQ+37T5UC7uMZJZOW
wN0BzxGifk0vdNfVZP73RQ2tnYh27iR6k1TZqCaaFG8VIzaIC44iLUknEw0t2Sn7
y39UTf8HdCfx2pU5Cp+a1QIDAQABo4ICfzCCAnswHwYDVR0RBBgwFoIUaWIuYmFu
a21hbmRpcmkuY28uaWQwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBaAwbwYDVR0g
BGgwZjBbBgtghkgBhvhFAQcXBjBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3lt
Y2IuY29tL2NwczAlBggrBgEFBQcCAjAZDBdodHRwczovL2Quc3ltY2IuY29tL3Jw
YTAHBgVngQwBATArBgNVHR8EJDAiMCCgHqAchhpodHRwOi8vc3Iuc3ltY2IuY29t
L3NyLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgw
FoAUAVmr5906C1mmZGPWzyAHV9WR52owVwYIKwYBBQUHAQEESzBJMB8GCCsGAQUF
BzABhhNodHRwOi8vc3Iuc3ltY2QuY29tMCYGCCsGAQUFBzAChhpodHRwOi8vc3Iu
c3ltY2IuY29tL3NyLmNydDCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB3AN3rHSt6
DU+mIIuBrYFocH4ujp0B1VyIjT0RxM227L7MAAABU3jJyA4AAAQDAEgwRgIhAMci
+KiiiDXtd42nf7eFSTfWBOIcntrTdUQ54EmrmnTYAiEAh2uyGEhklHfX2s+20DhJ
7EpkYTSjKca0WLhEzjLchZEAdQCkuQmQtBhYFIe7E6LMZ3AKPDWYBPkb37jjd80O
yA3cEAAAAVN4ycg1AAAEAwBGMEQCIDfT+VrGKN3sppXpAmbjGBi+XQkuJJejxHIk
vpt1fMFhAiB7GMcA1yGI7MCCfeNSImCFf1oS3uK0f7EPygDO6LIDLzANBgkqhkiG
9w0BAQsFAAOCAQEACeiqS/vhQfJiVH2wS6e6IOgKbEwoTFTqHFGQYxM+ArnUCLac
cQtdM5+PsnTmxaiponyumbGeWrh3xKbeHCm5UBZ+LIVYPnUFgJaFxmCiqLNhqU/T
mE3zklaES+gbli/M4mj8OserXmDGw7woCYilo9H/FvgZH/BgeihwAeL+NgJCScme
u1FaEUPeMFtcIIgu+SBNVVOWWUnmXo7GvEqZndVO6jLQUAEjkhedbt4UTJGDU+NX
Q/QJ2Sep+y2CDcws/a2IhFcDpBH/a2j77pDBUUgR1VBogUqNQCdhdl/9kgEQi1bY
WLa1bGRTObYuiVfMWXCfyU3lcCRv2ktWAZEF3w==
-----END CERTIFICATE-----

Mungkin ini sedikit gambaran tentang sertifikat elektronik, nanti saya sambung lagi, karena obrolin sertifikat elektronik cukup luas seperti bagaimana mendapatkan sertifikat, pembaruan sertifikat,revoke sertifikat, penerbit sertifikat, dll

Zae
Wow akhirnya ada algoritma kriptografi blok cipher karya anak Indonesia, namanya algoritmanya "Pattimura", mirip nama pahlawan yah. Kalau tidak salah algoritma ini di publish pas tanggal kemerdekaan Indonesia loh (17 Agustus 2015) Algoritma ini didesain oleh Abraham Ferdinand. Kata si Abraham, Algoritma ini tidak menggunakan sub kunci dalam proses enkripsinya, melainkan menggunakan tabel yang dibangkitkan dari kunci. Dasar ide dalam pengembangan algoritma enkripsi ini adalah dari algoritma Blowfish, IDEA dan RC4. Panjang kunci yang digunakan pada algoritma Pattimura adalah 128 bit, 192 bit dan 256 bit. Lebih detail algoritma Pattimura bisa dibaca dokumentasi algortimanya, namun sebelumnya harus clone terlebih dahulu di https://bitbucket.org/abeinoe/pattimura.
Buat kamu yang belum tahu bagaimana cara clone Algoritma Pattimura, Gue coba bantu caranya :
2) Klik Clone


3) Kalau dilaptop/desktop kamu tidak ada Git, silahkan install dulu aplikasi Git, untuk Windows bisa install Atlassian Source Tree


4) Setelah Install Atlassian Source Tree, Pilih Clone/New dan isikan Source Path-nya


5) Isikan Destination Path, nama file dan pilih Clone

6) Setelah selesai Clone maka akan terbentuk file dengan nama Pattimura (sesuai yang diisi di nama)

7) Buat kamu yang ingin baca alur algoritma pattimura ada didalam folder docx.
8) Kalau Gue coba compile source algoritma tersebut menggunakan Framework QT
 

8) dan setelah decompile hasilnyaaaaa...jreng jreng


Sekian dulu, pembahasan Algoritma Pattimura, silahkan dikembangkan sendiri yah. Pesan dari Abraham
"Pattimura v0.1 belum diuji kekuatan secara statistik dan matematika. Tujuan utama pembuatan algoritma ini sendiri adalah untuk menjadi "trigger" bagi para peneliti di Indonesia untuk dapat tertarik dengan penelitian di bidang Kriptografi. Oleh karena itu, algoritma ini menggunakan lisensi MIT (baca LICENSE.md).lgoritma enkripsi ini dibuat untuk didedikasikan bagi seluruh rakyat Indonesia yang ingin menggunakan algoritma enkripsi karya anak bangsa."








Zae
Pada kesempatan ini saya mau berbagi tutorial coding algoritma kriptografi di C++ dan Java
Silahkan yang mau mencoba, namun mohon maaf baru beberapa saja yang baru saya bagi. Sabar yah yang lain.

C++ Algoritma Simetrik

Sebelum mencoba, yang perlu disiapkan 
a. Install QT 
b. Install QT Creator
c  Install Visual Studio 2010
d. Download library crypto botan 1.10.8 and build 

C++ Algoritma Simetrik
  1. C++ AES 256
  2. C++ blowfish
  3. C++ camelia
  4. C++ cast
  5. C++ des
  6. C++ idea
  7. C++ kasumi
  8. C++ rc5
  9. C++ rc6
  10. C++ safer
  11. C++ serpent
  12. C++ skipjact
  13. C++ twofish
  14. C++ tea
  15. C++ xtea

C++ Algoritma Hash

  1. C++ Md5
  2. C++ SHA1
  3. C++ SHA256
  4. C++ Tiger
  5. C++ Whirlpool
Untuk Java
Terlebih dulu install netbeans yah

Java Algoritma Simetrik
  1. AES 256
Java Algoritma Hash
  1. Md5
  2. SHA1
  3. SHA256
  4. Tiger
  5. Whirlpool


Zae
Pagi Kriptografers, sebelumnya saya telah menulis tentang "Coding Algoritma AES-256 di QT". Saya menggunakan library botan, kalau di Java kita kenal sebagai BouncyCastle. Saya mau sharing bagaimana caranya build library botan, sedikit agak repot sih daripada Java. Kalau dijava tinggal downlload aja bouncycaste.jar-nya sedangkan kalau di C++, kita harus build terlebih dahulu .dll dan .lib-nya.

Sebelum build apa saja yang dibutuhkan
1. Source botan, silahkan download di http://botan.randombit.net/download.html
2. Pastikan di Windows sudah terinstall Visual Studio (Saya menggunakan visual studio 2010)
3. Instal Python 2.6

Cara Build
1. Buka CMD Visual Studio
2. Jalankan perintah berikut

> python configure.py --cc=msvc (or --cc=gcc for MinGW) [--cpu=CPU]
> nmake
> nmake install
Zae
Pagi Kriptografers, pada kesempatan ini saya mau sharing apa yang telah lakukan yaitu pemrograman AES-256 menggunakan QT.

Sebelumnya apa yang perlu disiapkan
1. Library Botan, silahkan berkunjung ke http://botan.randombit.net/download.html.
2. Framwork QT, saya menggunakan QT 4.8.5 visual studio 2010

Berikut Source Code yang saya gunakan
AutoSeeded_RNG rng;SymmetricKey key(rng, 32); // a random 256-bit keyInitializationVector iv(rng, 16); // a random 256-bit IVPipe pipe(get_cipher("AES-256/CBC", key, iv, ENCRYPTION), new Hex_Encoder);pipe.process_msg("secrets");std::string m1 = pipe.read_all_as_string(0);Pipe pipe2(new Hex_Decoder, get_cipher("AES-256/CBC", key, iv, DECRYPTION));pipe2.process_msg(m1.c_str());std::string m2 = pipe2.read_all_as_string(0);

Semoga bermanfaat yeee...
Zae

Pendekatan teknis dalam kriptanalisis, antara lain :
  1. Brute Force Key Search (exhaustive key search). Dalam hal ini penyerang hanya memiliki informasi dengan mencoba semua kemungkinan kunci untuk mendekripsi teks sandi. Teknik ini paling mudah diaplikasikan tetapi paling tidak praktis karena membutuhkan sumber daya yang sangat besar, mengingat jumlah percobaan yang harus dilakukan sangat-sangat besar. Sebagai contoh untuk algoritma yang menggunakan input kunci sebanyak 128 bit, akan membutuhkan percobaan paling banyak 2^ 128 kali. Tentunya faktor keberuntungan (luck) juga berperan dalam tingkat keberhasilannya.
  2. Pendekatan Matematik. Dengan metode dan teknik-teknik matematik untuk memecahkan kunci. Pada teknik ini, kriptanalis berupaya mencari lubang-lubang kelemahan (security holes) pada algoritma yang dapat dijadikan petunjuk, berdasarkan asumsi-asumsi tertentu sesuai kondisi penyerang, yang termasuk dalam kriptanalisis dengan menggunakan pendekatan matematik antara lain : linier attack, differential attack, related key attack, boomerang rectangle attack, interpolation attack, square satration integral multi set attack, dan lain sebagainya.
  3. Side Channel Attack (enviromental attacks). Serangan yang dilakukan diluar transmisi dengan memanfaatkan informasi karakteristik yang diekstrak dari implementasi suatu protokol atau sistem kriptografis, misal diekstraksi dari pengukuran kompleksitas komputasi (timing), konsumsi power, radiasi elektronik, atau berdasarkan pada kesalahan software, dan computational-error

Label: 0 komentar | edit post
Reaksi: 
Zae
" Suatu algoritma disebut aman tanpa syarat jika tidak mempedulikan seberapa banyak teks sandi yang dimiliki oleh kriptanalis, informasi tersebut tidak akan cukup untuk mendapatkan teks terang "


Zaenal Suhardono
Label: 0 komentar | edit post
Reaksi: