Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Selasa, 26 Agustus 2025

Keamanan Dasar Raspberry Pi Pico dalam Komunikasi Data: Panduan untuk Pemula

Keamanan Dasar Raspberry Pi Pico dalam Komunikasi Data: Panduan untuk Pemula - Raspberry Pi Pico adalah papan mikrokontroler yang populer karena kemudahan penggunaan dan fleksibilitasnya. Namun, dalam proyek yang melibatkan komunikasi data, keamanan sering kali diabaikan oleh pemula. Artikel ini membahas prinsip keamanan dasar yang perlu diterapkan saat menggunakan Raspberry Pi Pico untuk komunikasi data, termasuk teknik enkripsi, manajemen koneksi, dan praktik terbaik untuk mencegah serangan umum.

 


Peran Penting Keamanan dalam Komunikasi Data

 

Komunikasi data antara perangkat Raspberry Pi Pico dan sistem lainnya rentan terhadap berbagai ancaman, seperti interceptasi data, man-in-the-middle attacks, dan eksploitasi kerentanan perangkat. Tanpa perlindungan yang memadai, data bisa dicuri atau diubah. Untuk proyek pemula, memahami dasar-dasar keamanan adalah langkah kritis untuk memastikan integritas dan kerahasiaan informasi. Salah satu contoh ancaman adalah serangan berbasis USB (seperti BadUSB), yang dapat membuat perangkat tampak seperti input sah. Pemula perlu menyadari risiko ini dan hanya menggunakan firmware serta perangkat dari sumber tepercaya.


Cara Mengenkripsi Data di Raspberry Pi Pico

 

Enkripsi adalah metode utama untuk melindungi data selama transmisi. Untuk Raspberry Pi Pico, beberapa pendekatan enkripsi dapat diterapkan tergantung pada kompleksitas dan kebutuhan proyek.

Enkripsi Sederhana dengan AES

Advanced Encryption Standard (AES) adalah algoritma enkripsi simetris yang efisien untuk mikrokontroler. Pico dapat menggunakan library seperti micropython-crypto untuk mengimplementasikan AES dengan kunci yang dibagikan antara pengirim dan penerima. Meskipun ini tidak sekuat metode enkripsi asimetris, ini cukup untuk banyak aplikasi pemula seperti transmisi sensor atau data kontrol.

Catatan: AES(Advanced Encryption Standard): Algoritma enkripsi standar yang umum dipakai di perangkat kecil maupun besar. 

 

Keamanan Koneksi Nirkabel

 

Banyak proyek Pico melibatkan komunikasi nirkabel, seperti WiFi atau Bluetooth, yang rentan terhadap penyadapan. Berikut adalah praktik terbaik untuk mengamankan koneksi tersebut.

1. Penggunaan WiFi yang Aman

Saat menghubungkan Pico ke jaringan WiFi, pastikan untuk menggunakan protokol WPA2 atau WPA3 yang kuat. Hindari jaringan terbuka tanpa kata sandi. Simpan kredensial WiFi (SSID dan kata sandi) dalam file terpisah (misalnya, secret.py) untuk mencegah eksposur tidak sengaja dalam kode. Contoh implementasi:


# secret.py

ssid = 'NAMA_JARINGAN'

password = 'KATA_SANDI'


2. Komunikasi via Bluetooth

Untuk komunikasi Bluetooth, gunakan pairing yang aman dan non-default PIN. Nonaktifkan fitur yang tidak diperlukan untuk mengurangi permukaan serangan. Library seperti `bluetooth` dalam MicroPython menyediakan dasar untuk implementasi, tetapi pastikan untuk menambahkan lapisan enkripsi jika data sensitif ditransmisikan.

 

Manajemen Koneksi dan Autentikasi

 

Autentikasi perangkat adalah langkah kunci untuk memastikan bahwa hanya perangkat tepercaya yang dapat berpartisipasi dalam komunikasi.

1. Penggunaan Token atau API Keys

Untuk komunikasi client-server, gunakan token atau kunci API yang disimpan aman di Pico. Misalnya, dalam proyek dimana Pico bertindak sebagai klien yang mengirim data ke server, sertakan token autentikasi dalam header HTTP. Contoh:

- secret.py 

 

ssid = 'NAMA_JARINGAN'

password = 'KATA_SANDI'

TOKEN = 'YOUR_API_TOKEN'



- main.py

 

import urequests

from secret import TOKEN


url = "http://alamat-server/data"

headers = {'Authorization': f'Token {TOKEN}'}


response = urequests.post(url, headers=headers, data=data)


2. Autentikasi Perangkat Keras

Beberapa proyek mungkin memerlukan autentikasi berbasis perangkat keras, seperti menggunakan chip keamanan dedicated (contoh: ATECC608A) yang menyimpan kriptografi kunci. Ini memberikan lapisan keamanan tambahan dibandingkan menyimpan kunci dalam software.

 

Praktik Pengembangan yang Aman

 

Keamanan dimulai dari tahap pengembangan. Terapkan praktik coding yang aman untuk mengurangi kerentanan.

1. Hindari Hardcoding Kredensial

Jangan menyimpan kredensial atau kunci enkripsi secara langsung dalam kode. Gunakan file konfigurasi terpisah atau environment variables. Untuk Pico, file seperti secret.py yang tidak diunggah ke repositori publik adalah suatu keharusan.

2. Validasi Input dan Output

Selalu validasi data yang diterima dari sumber eksternal untuk mencegah injeksi kode atau buffer overflow. Misalnya, jika Pico menerima data melalui socket, pastikan untuk memeriksa ukuran dan format data sebelum diproses.

3. Pembaruan Firmware secara Berkala

Raspberry Pi Foundation secara berkala merilis pembaruan firmware untuk address keamanan kerentanan. Pastikan untuk menggunakan versi terbaru dari MicroPython atau CircuitPython pada Pico.

 

Studi Kasus: Implementasi Komunikasi WiFi yang Aman

 

Sebagai contoh, pertimbangkan skenario dimana dua Raspberry Pi Pico W berkomunikasi via WiFi. Satu bertindak sebagai server, dan lainnya sebagai klien.

1. Setup Server

Server menyimpan data sensor dan hanya merespons jika klien terautentikasi. Gunakan socket programming dengan enkripsi data sederhana:

 

from ucryptolib import aes

import socket, network

from secret import ssid, password


# Hubungkan ke WiFi

wlan = network.WLAN(network.STA_IF)

wlan.active(True)

wlan.connect(ssid, password)

while not wlan.isconnected():

    pass


# Setup AES (kunci 16 byte)

key = b'1234567890123456'

cipher = aes(key, 1)  # mode 1 = AES-ECB


# Buat socket server

addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]

s = socket.socket()

s.bind(addr)

s.listen(1)

print('Server listening on', addr)


while True:

    cl, addr = s.accept()

    request = cl.recv(1024)

    if b"Token MY_TOKEN" in request:   # validasi sederhana

        msg = b'Data rahasia'

        encrypted = cipher.encrypt(msg)

        cl.send(encrypted)             # <- sudah dalam bentuk bytes

    else:

        cl.send(b"Akses ditolak")

    cl.close()


Catatan: Mode AES-ECB digunakan di sini hanya untuk contoh sederhana. Untuk proyek nyata, gunakan mode yang lebih aman (misalnya AES-CBC atau AES-CTR) agar pola data tidak mudah ditebak.

Studi Kasus: Enkripsi Data dan Validasi Akses

Selain enkripsi data, pengendalian akses menggunakan token autentikasi juga dapat diterapkan pada Raspberry Pi Pico W.

Berikut ini contoh sederhana server yang memeriksa apakah request berisi token tertentu:


import socket


TOKEN = "MY_TOKEN"


def is_authorized(request: bytes) -> bool:

    try:

        headers = request.decode().split("\r\n")

        auth_header = [h for h in headers if h.startswith("Authorization:")]

        if not auth_header:

            return False

        return auth_header[0] == f"Authorization: Token {TOKEN}"

    except Exception:

        return False


def start_server():

    addr = socket.getaddrinfo('0.0.0.0', 8080)[0][-1]

    s = socket.socket()

    s.bind(addr)

    s.listen(1)

    print("Server berjalan di port 8080...")


    while True:

        cl, addr = s.accept()

        print('Client connected from', addr)

        request = cl.recv(1024)


        if is_authorized(request):

            response = b"HTTP/1.1 200 OK\r\n\r\nHalo, akses diterima!"

        else:

            response = b"HTTP/1.1 401 Unauthorized\r\n\r\nToken tidak valid"


        cl.send(response)

        cl.close()


start_server()


2. Setup Klien

Klien mengirim request ke server dengan token autentikasi:

 

from ucryptolib import aes

import socket, network

from secret import ssid, password, TOKEN


wlan = network.WLAN(network.STA_IF)

wlan.active(True)

wlan.connect(ssid, password)

while not wlan.isconnected():

    pass


# Setup AES dengan kunci yang sama

key = b'1234567890123456'

cipher = aes(key, 1)


ai = socket.getaddrinfo("IP_SERVER", 80)

addr = ai[0][-1]


s = socket.socket()

s.connect(addr)

s.send(b"GET /data HTTP/1.1\r\nAuthorization: Token " + TOKEN.encode() + b"\r\n\r\n")


data = s.recv(16)  # ambil blok 16 byte

decrypted = cipher.decrypt(data)

print(decrypted)

s.close()


Baca juga: Handshaking di Raspberry Pi Pico: Teori dan Implementasi dalam Komunikasi Data

 

 

 

 

 

 

 

 

Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?

Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami! 

 

0 on: "Keamanan Dasar Raspberry Pi Pico dalam Komunikasi Data: Panduan untuk Pemula"