IoT Siber Güvenliği: ESP32 Ağ Protokolleri: MQTT, HTTP ve HTTPS Uygulamaları

Bu yazıda, ESP32 ağ protokolleri kapsamında MQTT, HTTP ve HTTPS kullanımı detaylı bir şekilde ele alınacaktır. ESP32, IoT projelerinin temel taşlarından biridir ve ağ protokolleri kullanılarak farklı cihazlarla iletişim kurar. Daha önceden yayınlanan ESP32 içeriklerine buradan, IoT güvenliği hakkındaki diğer içeriklere buradan ulaşabilirsiniz.

⚠️ Yasal Uyarı:

Bu içerik yalnızca eğitim ve bilgi amaçlı olarak hazırlanmıştır. İçerikte belirtilen yöntemlerin kötüye kullanımı yasalara aykırı olabilir ve sorumluluk tamamen kullanıcının kendisine aittir.

Her zaman yasalara uygun hareket etmeniz ve izinsiz girişimlerde bulunmamanız gerektiğini unutmayın. Yazar ve devreyakan.com, bu bilgilerin kötüye kullanılmasından doğabilecek yasal veya teknik sorunlardan sorumlu tutulamaz.

MQTT
MQTT Diyagramı

MQTT Nedir ve ESP32 ile Nasıl Kullanılır?

MQTT, IoT cihazları arasında veri iletişimi için geliştirilmiş hafif ve hızlı bir protokoldür. ESP32 ağ protokolleri arasında sıkça tercih edilen MQTT, düşük enerji tüketimiyle öne çıkar. MQTT (Message Queuing Telemetry Transport), düşük bant genişliği, yüksek gecikme süreleri veya güvensiz ağlar gibi zorlu ağ koşullarında veri aktarımı için kullanılan hafif bir haberleşme protokolüdür. Genellikle IoT (Nesnelerin İnterneti) uygulamalarında kullanılır.

MQTT’nin Özellikleri

  • Hafif ve Verimli: Düşük işlem gücü ve bellek gereksinimi sayesinde IoT cihazlarında rahatlıkla çalışabilir.
  • Abone-Yayıncı (Publish-Subscribe) Modeli: MQTT, istemciler arasında veri paylaşımını merkezde bir broker aracılığıyla gerçekleştirir.
    • Publisher (Yayıncı): Mesajları belirli bir konu (topic) altında yayınlar.
    • Subscriber (Abone): İlgilendiği konuya abone olur ve o konudaki mesajları alır.
    • Broker: Mesajların alıcı ve vericiler arasında yönlendirilmesini sağlar.
  • Güvenilirlik Seviyeleri: Mesaj iletimi için farklı güvenilirlik seviyeleri (QoS – Quality of Service) sunar:
    • QoS 0: “At-most-once” (En fazla bir kere) iletim. Mesaj kaybolabilir.
    • QoS 1: “At-least-once” (En az bir kere) iletim. Mesaj en az bir kez iletilir.
    • QoS 2: “Exactly-once” (Tam bir kere) iletim. Mesaj yalnızca bir kez iletilir.
  • Bağlantı Durumu: MQTT, cihazların bağlı kalıp kalmadığını kontrol etmek için “keep-alive” ve “last will” gibi mekanizmalar içerir.

MQTT’nin Avantajları

  • Veri Azaltımı: Bant genişliği dostu.
  • Abone/Yayın Mekanizması: Birden fazla cihaz arasında hızlı iletişim sağlar.
  • ESP32 Uyumlu: Kolayca uygulanabilir.

ESP32 ile MQTT Kullanımı

Aşağıdaki örnek kod, ESP32’nin bir MQTT istemcisi olarak nasıl kullanılacağını gösterir:

#include <WiFi.h>
#include <PubSubClient.h>

// Wi-Fi bilgileri
const char* ssid = "WiFi_SSID";
const char* password = "WiFi_Password";
const char* mqttServer = "broker.hivemq.com";
const int mqttPort = 1883;

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Wi-Fi'ye bağlanıyor...");
  }
  Serial.println("Wi-Fi bağlantısı tamamlandı!");

  client.setServer(mqttServer, mqttPort);
  if (client.connect("ESP32Client")) {
    client.publish("esp32/test", "MQTT üzerinden veri gönderildi.");
  }
}

void loop() {
  client.loop();
}

HTTP Protokolü ile ESP32 Kullanımı

HTTP, web tabanlı uygulamalarda veri alışverişi için kullanılan standart bir protokoldür. ESP32 ağ protokolleri arasında HTTP, basit veri alışverişi projelerinde sıkça tercih edilir.

ESP32 Üzerinde HTTP Sunucu Kurulumu

Aşağıdaki kod, ESP32 üzerinde temel bir HTTP sunucusunun nasıl kurulacağını gösterir:

#include <WiFi.h>
#include <WebServer.h>

const char* ssid = "WiFi_SSID";
const char* password = "WiFi_Password";

WebServer server(80);

void handleRoot() {
  server.send(200, "text/plain", "Merhaba! ESP32 HTTP Sunucusu.");
}

void setup() {
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
  }

  server.on("/", handleRoot);
  server.begin();
}

void loop() {
  server.handleClient();
}

HTTPS ile Güvenli İletişim

HTTPS, IoT projelerinde veri güvenliğini artırmak için kullanılan şifrelenmiş bir protokoldür. ESP32 ağ protokolleri içinde HTTPS, özellikle hassas veri iletişiminde tercih edilir.

ESP32 ile HTTPS Uygulaması

HTTPS için ESP32’nin WiFiClientSecure kütüphanesi kullanılır. Bu kütüphane, SSL/TLS sertifikalarını destekler ve güvenli veri aktarımını sağlar.

#include <WiFi.h>
#include <WiFiClientSecure.h>

const char* ssid = "WiFi_SSID";
const char* password = "WiFi_Password";

WiFiClientSecure client;

void setup() {
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
  }

  client.setInsecure(); // Test için sertifika doğrulama devre dışı
  if (client.connect("www.example.com", 443)) {
    client.println("GET / HTTP/1.1");
    client.println("Host: www.example.com");
    client.println("Connection: close");
    client.println();
  }
}

void loop() {}

IoT uygulamalarının temel mesajlaşma protokollerinden biri olarak sayılan MQTT’in detaylarına buradan ulaşabilirsiniz.

ESP32, IoT projelerinde yaygın olarak kullanılan güçlü ve esnek bir mikrodenetleyicidir. Ancak, güvenlik dikkate alınmadan uygulanan ağ protokolleri, bu cihazları siber saldırılara açık hale getirebilir. MQTT, HTTP ve HTTPS gibi protokollerle çalışırken güvenlik önlemleri alınması kritik öneme sahiptir.

ESP32 gibi cihazlarda bu protokollerin güvenli şekilde uygulanması, hem ağ güvenliğini hem de cihazın uzun vadeli kullanılabilirliğini artıracaktır. Güvenlik uygulamalarının maliyeti ve karmaşıklığı başlangıçta göz korkutucu görünebilir, ancak IoT projelerinde güvenliği ihmal etmek, uzun vadede daha ciddi sorunlara yol açabilir.

IoT projelerinizde güvenlik önlemlerini entegre ederek hem cihazlarınızı hem de kullanıcı verilerinizi koruma altına alabilirsiniz. Bu, yalnızca bir proje değil, dijital dünyanın güvenilir bir parçası olmanın da bir gerekliliğidir.

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.