Enkripsi Database

Secara umum, enkripsi data pada database dapat dilakukan dengan 2 cara berikut ini:

  • Data in Transit (data yang dikirim lewat jaringan komputer) -> contoh aplikasi web server dengan database di server lain
  • Data at Rest (data yang disimpan di hard disk)

Data in Transit

2 hal yang perlu dilakukan penyerang:

  • Menyadap komunikasi
  • Memahami komunikasi untuk ekstraksi data

Mekanisme Enkripsi

  • Database-specific features (e.g., Oracle Advanced Security)
  • Connection-based methods (e.g., using the Secure Sockets Layer [SSL])
  • Secure tunnels (e.g., using Secure Shell [SSH] tunnels)
  • Relying on the operating system (e.g., IPSec encryption)

SSL

  • Beberapa software database sudah ada fitur SSL
  • SSL mesti diaktifkan di server & client
  • SSL memerlukan komputasi, sehingga dapat memperlambat proses
  • SSL pada MySQL:https://dev.mysql.com/doc/refman/5.0/en/ssl-connections.html

SSH Tunnels

SSH secara umum bermanfaat untuk:

  • Secure shell sebagai secure console. Misal untuk login ke server Ubuntu
  • Secure copy (SCP, SFTP). Misal dengan software Filezilla
  • Encrypted Tunnel -> dapat dipakai untuk ditumpangi komunikasi database

Fitur Encrypted Tunnel disebut juga sebagai port forwarding.

Ilustrasi SSH Tunnel

Mekanisme SSH tunnel
Mekanisme SSH tunnel

SSH Tunnel

Contoh perintah SSH Tunnel

ssh –L 10000:localhost:3306 192.168.3.33 –l mylogin –i ~/.ssh/ id –N –g

  • -L : port forwarding
  • 1000:localhost:3306 port lokal 1000, dikirim ke port 3306 di remote
  • 192.168.3.33 : alamat server database
  • -l mylogin: nama user

 

Data at Rest

  • Data yang disimpan di database dienkripsi terlebih dahulu
  • Algoritma simetrik / asimetrik
  • Metode ini sebagai layer keamanan tambahan, bukan yang utama

Skenario Keamanan Data at Rest

  • User mengakses data yang tidak semestinya. Dengan enkripsi maka meskipun punya hak akses tidak dapat membaca datanya.
  • Hard disk yang dicuri
  • Hard disk  bekas yang dijual

Remembrance of Data Passed: A Study of Disk Sanitization Practices

  • Peneliti: SIMSON L. GARFINKEL & ABHI SHELAT (MIT)
  • The students analyzed 158 disk drives that were purchased through eBay and other sources of used computer hardware (costing a total of less than $1,000).
  • 74% of the drives contained data that could be recovered and read, including sensitive data such as detailed personal and corporate financial records, credit card numbers, medical records, love letters, and so on.

Implementasi enkripsi data-at-rest

  • Enkripsi pada aplikasi
  • Enkripsi pada filesystem
  • Enkripsi pada database
  • Enkripsi pada HDD (storage)

Implementasi data-at-rest Enkripsi pada aplikasi

Keuntungan:

  • Transparan bagi database. Database tidak tahu menahu tentang adanya enkripsi.

Kelemahan

  • Enkripsi/dekripsi mesti dibuat di beberapa tempat dengan beberapa library.
  • Data tidak dapat diakses tanpa aplikasi
  • Tidak menyederhanakan masalah, hanya memindahkan enkripsi ke aplikasi.

Implementasi data-at-rest Enkripsi pada file system

  • Menggunakan filesystem yang mendukung enkripsi

Implementasi data-at-rest Enkripsi pada database

  • Menggunakan fitur enkripsi pada database (jika databasenya mendukung).

Hal-hal penting pada enkripsi data-at-rest

  • Key Management
  • Recovery (jika kunci hilang)
  • Integrasi dengan Public Key Infrastructure
  • Backup & Restore
  • Clustering (database tersebar pada beberapa komputer berbeda untuk performance)
  • Replication
  • Performance
  • Disk space (enkripsi menambah ukuran data)
  • Audit trail (penggunaan key & password)

Contoh praktek Enkripsi Data in Transit

  • Menyadap komunikasi database (Apache <-> MySQL) dengan tcpdump / wireshark
  • Implementasi security data-in-transit dengan fitur internal MySQL
  • Implementasi security data-in-transit dengan SSH Tunnel
  • Pengukuran performance (CPU load) pada setiap implementasi.

Contoh praktek Aplikasi

  • Membuat aplikasi database sederhana (misal menampilkan daftar peserta kuliah, daftar anggota MPR, dsb)
  • Mencoba mencari data dari data file MySQL
  • Implementasi security data-at-rest dengan aplikasi
  • Mencoba mencari data dari data file MySQL (versi terenkripsi)
  • Pengukuran performance (CPU load) pada setiap implementasi.

Homomorphic Encryption

Referensi

Migrasi Thingsboard ke Server Lain

Prinsip migrasi Thingsboard ke server lain:

  • install Thingsboard di server baru, dengan versi sama dengan server asli
  • Cek Thingsboard di server baru berjalan normal
  • Matikan Thingsboard di server lama dan server baru
  • copy database dan file konfigurasi ke server baru
  • upload database ke server baru
  • timpa konfigurasi di server baru dengan konfigurasi dari server lama
  • Nyalakan Thingsboard di server baru

Sumber: https://groups.google.com/g/thingsboard/c/P7TcOnVIRqg

On the first computer, backup the database using postgres dump tool:

pg_dump thingsboard --host=localhost --username postgres -W > thingsboard.dump

Then, backup the /etc/thingsboard/conf directory:

sudo tar cvfz tb.tar.gz /etc/thingsboard/conf/*

Copy thingsboard.dump and tb.tar.gz to the new computer. On the new computer, with a fresh install of Thingsboard as per the posted instructions:

Stop Thingsboard, then:

sudo su postgres
dropdb thingsboard    # this removes the database
createdb -T template0 thingsboard
psql thingsboard -U postgres -W < thingsboard.dump

Copy the /etc config files:

cd /
sudo tar xvfz /home/ubuntu/tb.tar.gz

Start Thingsboard.

Replikasi Solusi Kompetisi Global Wheat Challenge 2021

Pada artikel ini dibahas usaha untuk mereplikasi solusi dari GWC_solution

Hardware yang dipakai: RTX 3090

Catatan

  • RTX3090 tidak kompatibel dengan Cuda 10.2 , minimal perlu CUDA 11.3
  • PyTorch 1.9.0 tidak kompatibel dengan CUDA 11.3, sehingga perlu diganti dengan PyTorch 1.10.0
  • Script GWC_YOLOv5 tidak kompatibel dengan PyTorch 1.12.0

Prosedur

Create Conda environment

conda create --name gwc8 python=3.7.10 scipy=1.4.
conda activate gwc8

Install PyTorch

pip3 install torch==1.10.0 torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113

Install prerequisites

pip install -r requirements.txt
pip install numpy==1.19.5
pip uninstall -y PyYAML
pip install PyYAML==5.3.1
pip install ensemble_boxes
pip install setuptools==59.5.0
pip install jupyter
pip install matplotlib
pip install opencv-python
pip install tensorboard

Clone GWC_solution

cd /home/admin
git clone https://github.com/ksnxr/GWC_solution.git

Clone GWC_YOLOv5

cd GWC_solution
git clone https://github.com/ksnxr/GWC_YOLOv5.git

Jalankan jupyter notebook


jupyter notebook --allow-root --no-browser --ip=0.0.0.0

Setelah itu buka jupyter notebook dari browser

Eksekusi script berikut

Training

python train.py --name 4fold0 --img 800 --batch 8 --epochs 35 --data custom.yaml --weights yolov5x.pt --cache-images --save_period 1

Monitor training

cd /home/admin/GWC_solution/GWC_YOLOv5
tensorboard --logdir runs/train  --bind_all

Berikut ini data flow diagram dari proses komputasi

Referensi