Selam !
Diyelim ki iki iot cihazı arasında güvenli bir şekilde veri iletmek istiyoruz
bu durumda verileri şifrelemek ve doğru anahtarla çözmek önemli
yaygın olarak kullanılan algoritmalar;
AES (Gelişmiş Şifreleme Standardı)
RSA (Rivest-Shamir-Adleman)
DSA (Dijital İmza Algoritması)
DH (Diffie-Hellman)
ECC (Eliptik Eğri Şifreleme) bulunmaktadır
ilk yazı için aes'i seçtim
en yaygın kullanılan şifreleme türüdür (führer iyi ki python bilmiyordu )
basit bir şekilde: kasanın anahtarını bilen kasayı açar bu yöntemde kullanıcagımız anahtar ile iki cihaz arasında bu kodları projenize göre kullanabilirsiniz
bir cihaz veriyi aes algoritması ile şifreleyecek diğer cihaz ise şifrelenmiş veriyi alıp doğru anahtarla çözecektir
sizlerle 3-5 satır kod ile nasıl veriyi şifreleyip çözeceğimizi anlatmaya çalışacağım
şimdi yolladık localhost:12345 e gitti çözme işlemine geçelim
kodumda kullandığım mod ECB modudur ama en güvenli mod bu değildir!!!
Cipher Block Chaining (CBC) veya Counter (CTR) gibi modlar daha güvenlidir
ayrıca iki cihaz arasındaki iletişimde IP adresleri ve port numaralarını doğru şekilde ayarlanmalıdır
Diyelim ki iki iot cihazı arasında güvenli bir şekilde veri iletmek istiyoruz
bu durumda verileri şifrelemek ve doğru anahtarla çözmek önemli
yaygın olarak kullanılan algoritmalar;
AES (Gelişmiş Şifreleme Standardı)
RSA (Rivest-Shamir-Adleman)
DSA (Dijital İmza Algoritması)
DH (Diffie-Hellman)
ECC (Eliptik Eğri Şifreleme) bulunmaktadır
ilk yazı için aes'i seçtim
en yaygın kullanılan şifreleme türüdür (führer iyi ki python bilmiyordu )
basit bir şekilde: kasanın anahtarını bilen kasayı açar bu yöntemde kullanıcagımız anahtar ile iki cihaz arasında bu kodları projenize göre kullanabilirsiniz
bir cihaz veriyi aes algoritması ile şifreleyecek diğer cihaz ise şifrelenmiş veriyi alıp doğru anahtarla çözecektir
sizlerle 3-5 satır kod ile nasıl veriyi şifreleyip çözeceğimizi anlatmaya çalışacağım
Kod:
from Crypto.Cipher import AES
import socket
anahtar = b'1234' #Buradaki b byte 1234 de şifremiz tabiki gerçek senaryoda işlemi değiştiriniz
veri = "mekatronik.org"
cipher = AES.new(anahtar, AES.MODE_ECB)
sifrelenmis_veri = cipher.encrypt(veri.encode())
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect(('localhost', 12345))
s.sendall(sifrelenmis_veri)
şimdi yolladık localhost:12345 e gitti çözme işlemine geçelim
Kod:
from Crypto.Cipher import AES
import socket
anahtar = b'1234' #Aynı anahtar kullanılır
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind(('localhost', 12345))
s.listen()
conn, addr = s.accept()
with conn:
print('Bağlantı adresi:', addr)
sifrelenmis_veri = conn.recv(1024)
cipher = AES.new(anahtar, AES.MODE_ECB)
orijinal_veri = cipher.decrypt(sifrelenmis_veri).decode()
print("Alınan ve çözülen veri: " + orijinal_veri)
kodumda kullandığım mod ECB modudur ama en güvenli mod bu değildir!!!
Cipher Block Chaining (CBC) veya Counter (CTR) gibi modlar daha güvenlidir
ayrıca iki cihaz arasındaki iletişimde IP adresleri ve port numaralarını doğru şekilde ayarlanmalıdır
Son düzenleme: