Senin, 01 Mei 2017

Dukungan Encryption pada Beberapa DBMS

Beberapa Database Management System yang mendukung encryption dalam layanan database nya adalah :

MongoDB

            MongoDB adalah database NoSQL yang berbasis dokumen yang bersifat cross-platform, open-source, dan dapat digunakan secara gratis. MongoDB telah hadir sebagai salah satu database NoSQL yang sedang naik daun seiring dengan makin populernya penggunaan database NoSQL pada era Big Data sekarang ini.

            Sebelum tahun 2015, MongoDB tidak menyediakan layanan enkripsi untuk keseluruhan database, namun data di dalamnya bisa di enkripsi sendiri-sendiri. Pengguna pun mengakalinya dengan meng-enkripsi direktori tempat database tersebut disimpan, atau meng-enkripsi koneksi soketnya. Namun pada November 2015, MongoDB versi 3.2 telah dilengkapi dengan encryption storage engine. Sehingga pengguna nya tidak perlu lagi menggunakan API pihak ketiga untuk meng-enkripsi data nya. Enkripsi mesin penyimpanan milik MongoDB ini bekerja dengan WiredTiger storage engine, mengizinkan MongoDB untuk meng-enkripsi sebagian file data saja dan baru bisa dibaca setelah menggunakan kunci dekripsi.
            Database pada MongoDB dibagi menjadi dua kelompok besar, yaitu Lapisan untuk integrasi penyimpanan (Storage Integration Layer) dan Lapisan MongoDB lainnya yang digabung menjadi satu. Pada awalnya, Storage Integration Layer dihubungkan WiredTiger. WiredTiger merupakan storage engine yang digunakan MongoDB.  Setiap satu database pada MongoDB dipetakan ke banyak tabel WiredTiger. Pada lapisan atas (Various MongoDB Layers), terdapat encryption Key Manager. Encryption Key Manager digunakan untuk membuat master key yang nantinya akan disimpan di luar MongoDB , juga kunci yang digunakan pada masing – masing database. Dalam data yang disimpan di WiredTiger, Metadata akan dienkripsi menggunakan master key, sementara database akan dienkripsi menggunakan kuncinya masing – masing. Jadi Encryption Key Manager yang penting berperan dalam enkripsi database MongoDB dengan WiredTiger ini.

Firebird

            Firebird (juga disebut FirebirdSQL) adalah sistem manajemen basis data relasional yang menawarkan fitur-fitur yang terdapat dalam standar ANSI SQL-99 dan SQL-2003. RDBMS ini berjalan baik di Linux, Windows, maupun pada sejumlah platform Unix. Firebird di diarahkan dan di-maintain oleh FirebirdSQL Foundation. Ia merupakan turunan dari Interbase versi open source milik Borland. Modul-modul kode baru ditambahkan pada Firebird dan berlisensi di bawah Initial Developer’s Public License (IDPL), sementara modul-modul aslinya dirilis oleh Inprise berlisensi di bawah InterBase Public License 1.0. Kedua lisensi tersebut merupakan versi modifikasi dari Mozilla Public License 1.1.Namun dalam perkembangannya, Interbase yang komersial di-bundle oleh Borland menjadi Phoenix, sedangkan Firebird adalah interbase yang dikembangkan oleh komunitas Open Source, sehingga menjadikannya sebagai produk Database Server yang FREE. Open source DBMS ini dimotori oleh para developer Interbase 6.x open-source.
            Firebird tidak memiliki metode enkripsi yang terintegrasi, namun ada banyak solusi yang bisa dilakukan. Cara pertama adalah meng-enkripsi seluruh data di client sebelum menyimpan data ke kolom database, dan mendekripsi ketika akan membacanya. Namun cara ini akan menyulitkan saat kita akan melakukan pencarian dan peng-indeks-an. Peng-indeks-an foreign key dan primary key masih bisa dilakukan, namun index tidak bisa lagi dipakai saat melakukan pencarian data dengan kata kunci “Dimulai dari’ atau menggunakan operator numeric, karena harus dilakukan dekripsi dahulu untuk membandingkan data.
Solusi kedua adalah dengan meng-enkripsi file sistem tempat database disimpan. Contoh enkripsi yang bisa dilakukan adalah VeraCrypt, EncFS, BestScript;
            Namun untuk Firebird 3, data yang disimpan dalam database sudah bisa dienkripsi, namun tidak semuanya. Hanya data, index dan blob pages saja. Untuk dapat meng-enkripsi keseluruhan database harus memerlukan database-crypt plug-in.

SQLite

            SQLite merupakan sebuah sistem manajemen basisdata relasional yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. SQLite merupakan proyek yang bersifat public domain yang dikerjakan oleh D. Richard Hipp.
SQLite memiliki built-in untuk enkripsi yang dapat diimplementasikan, misalnya SEE, wxSQLite, SQLCipher, SQLiteCrypt, botansqlite3, SQLiteCrypto.  
Disini akan dijelaskan salah satu metode enkripsi SQLite yang, yaitu SEE (SQLite Encryption Extension). SEE merupakan add-on pada SQLite versi domain public yang mengizinkan sebuah aplikasi untuk membaca dan menulis file database. 4 algoritme enkripsi yang berbeda yang diimplementasikan dalam SEE adalah : RC4, AES­128 in OFB mode, AES­128 in CCM mode dan AES­256 in OFB mode. Versi dari SQLite yang memiliki SEE bisa membaca dan menulis file database biasa menggunaakan verisi domain public SQLite dan juga bisa membaca dan menulis file yang dienkripsi. Dalam satu aplikasi bisa menggunakan perintah ATTACH supaya SQLite bisa berkomunikasi secara kontinu dengan dua atau lebih file database yang dienkripsi ataupun tidak dienkripsi. Setiap file database meiliki kunci enkripsinya endiri.

PostgreSQL

            PostgreSQl menyediakan enkripsi dalam beberapa level, dan menyediakan fleksibilitas dalam memproteksi data dari database server theft, atau jaringan yang tidak aman. Enkripsi juga diperlukan untuk melindungi data yang sensitive seperti rekam media atau transaksi finansial.

Enkripsi penyimpanan password
            Database password user disimpan dengan metode hashing MD5, jadi admin tidak dapat menentukan password sesungguhnya milik user. Jika MD5 enkripsi dipakai untuk authentikasi client, password yang tidak di enkripsi tetap tidak terlihat oleh server karena enkripsi MD5 pada client sudah dilakukan sebelum dikirim melalui jaringan.

Enkripsi untuk Kolom Tertentu
            Enkripsi kolom tertentu menggunakan fungsi library pgcrypto. Client akan memiliki kunci untuk dekripsi, yang akan digunakan saat dia menerima data dai server. Data yang didekripsi dan kunci dekripsi tersedia di dalam server saat data didekripsi dan saat client-server berkomunikasi. Pada saat ini data dan kuncinya dapat dilihat oleh pihak yang memiliki akses penuh ke server, misalnya admin.

Data Partition Encryption
            Enkripsi ini bisa dilakukan pada platform linux dengan menggunakan sebuah file system yaitu loopback device. File system ini mengizinkan seluruh bagian file sistem dienkripsi di disk, dan didekripsi oleh Sistem Operasi. Meng-enkripsi data sebagian menghindari data yang tidak dienkripsi bisa dibaca dari drive (penyimpanan) jika drive atau komputer nya dicuri.

Encrypting Password Across a Network
            Metode authentikasi MD5 dengan menduplikasi enkripsi password pada client sebelum dikirim melalui server. Pertama-tama MD5 men-enkripsi berdasarkan username, dan men-enkripsi nya lagi berdasarkan dari nilai (random salt) yang dikirimkan server ketika koneksi database dilakukan. Nilai yang sudah di enkripsi dua kali inilah yang dikirim ke server melalui jaringan.

Encrypting Data Across A Network
            Koneksi SSL men-enkripsi semua data yang dikirim melalui jaringan : password, query, dan data yang dikembalikan. File pg_hba.cof mengizinkan administrator untuk menspesifikasi host mana yang bisa dipakai untuk koneksi non-enkripsi dan mana yang membutuhkan koneksi SSl. Client juga bisa menspesifikasikan bahwa mereka terhubung ke server hanya melalui SSL.

SSL Host Authentication
            Server dan client sama – sama menyediakan koneksi SSL satu sama lain, hal ini dapat menghindari attack untuk data yang dikirim, misalnya komputer yang berpura- pura menjadi server , sehingga bisa membaca password yang dikirim oleh client. Selain itu, cara ini juga bisa menghindari man in the middle attacks.

Client Side Encryption
            Jika admin sistem untuk server tidak bisa dipercaya, sangat penting untuk client men-enkripsi data nya, sehingga data yang masuk ke server semuanya merupakan data yang dienkripsi.

MariaDB

            MariaDB adalah sistem manajemen database relasional yang dikembangkan dari MySQL. MariaDB dikembangkan oleh komunitas pengembang yang sebelumnya berkontribusi untuk database MySQL.
MariaDB mendukung enkripi, dan enkripsinya didukung oleh XtraDB dan InnoDB Storage Enginers. Sebagai tambahan, enkripsi nya juga didukung untuk Aria Storage Engine, namun hanya untuk tabel yang dibuat dengan perintah ROW_FORMAT=PAGE. MariaDB mengizinkan pengguna untuk mengatur fleksibilitas mengenai apa yang ingin dienkripsi. Dalam XtraDb atau InnoDB, pengguna dapat memilih untuk men-enkripsi semua tablespaces (semua tabel), tabel individu, atau semuanya kecuali tabel individual.

Namun enkripsi pada MariDB dibatasi dengan aturan – aturan tertentu, misalnya hanya data dan hanya itu saja yang bisa dienkripsi. Metadata yang dikirimkan bersama data tidak dienkripsi. Lalu,hanya MariaDB server saja yang tahu bagaiman mendekripsi data, dan sebagainya.

Source : Web Resmi DBMS diatas 

Tidak ada komentar:

Posting Komentar