Makine öğreniminin "geri tepmesi": Makine öğrenimi şifre kırma için kullanıldığında, başarı oranı çok yüksektir

Leifeng.com AI geliştiricisinin notu: Geçmişte, bilgisayarların kediler ve köpekler arasında ayrım yapmasına izin vermek en gelişmiş araştırma olarak görülüyordu; şimdi ise görüntü sınıflandırması, TensorFlow kullanılarak birkaç satır kodda uygulanabilen makine öğreniminin (ML) "Merhaba Dünyası" na benziyor. Yalnızca birkaç yıl içinde, makine öğrenimi alanında büyük ilerleme kaydedildi, öyle ki artık geliştiriciler potansiyel olarak "faydalı" veya "ölümcül" uygulamaları kolayca oluşturabilirler.

Bu nedenle, meraklı bir bilim adamı Tikeswar Naik, basit bir deneyle, bu teknolojinin olası bir kötüye kullanımını tartıştı - bu giriş yoluyla daha fazla insanın uyanık kalacağını ve bulabileceğini umarak, ML'yi kullanarak şifreyi kırmak Kötüye kullanımı azaltmanın veya önlemenin yolları. Leifeng.com AI geliştiricileri, özel araştırma içeriklerini aşağıdaki gibi derlediler.

Klavyede yazarak, maruz kaldınız!

Makalenin başında yazar cesur bir fikir ortaya attı: Birisinin ne yazdığını sadece klavyeyi dinleyerek bilebilir miyiz? Ve eğer bu işlem gerçekten başarılabilirse, hacker şifresinin çözülmesi gibi arkasındaki potansiyel uygulamalar çok ciddi bir güvenlik riski oluşturacak mı? (Şekil 1'de gösterildiği gibi)

Şekil 1: Tuş vuruşlarını dinleme (Resim kaynağı: rawpixel.com; eacs.com)

Bu nedenle yazar, bunun mümkün olup olmadığını araştırmak için kido (tuş vuruşu çözme) adlı bir projeye katıldı (https://github.com/tikeswar/kido).

Biz yapacağız

Yazar, bu sorunu denetlenen bir makine öğrenimi sorunu olarak ele almayı ve ardından aşağıdaki tüm adımları tek tek tamamlamayı önermektedir:

  • Veri toplama ve hazırlama

  • Eğitim ve değerlendirme

  • Test ve hata analizi (model doğruluğunu iyileştirin)

  • Sonuç; GitHub bağlantısı

Not: Bu projede Python, Keras ve TensorFlow kullanılmaktadır.

1. Veri Toplama

Klavye vuruşlarının ses verilerini toplamanın birçok yolu vardır.Bu deneyde yazar, yazmak için günlük klavyeyi kullandı ve makine öğreniminin günlük hayatta şifreleri deşifre etmek için uygulanabilirliğini daha iyi kanıtlamak için yerleşik mikrofon QuickTime'ı kullandı. Oyuncu yazmanın sesini kaydetti (Şekil 2).

Şekil 2: Egzersiz verilerini oluşturmak için dizüstü bilgisayar klavyesini kullanma

Bu yöntemin iki avantajı vardır: Birincisi, verilerin değişkenliği küçüktür ve verilerin değişkenliği küçük olduğundan, daha fazla değişkeni düşünmek zorunda kalmadan bu fikri ispatlamaya (veya çürütmeye) odaklanmamıza yardımcı olacaktır.

2. Veri hazırlama

Verilerin kaynağını netleştirdikten sonraki adım, verileri eğitim için sinir ağına (NN) besleyebilmemiz için hazırlamaktır.

QuickTime, kaydedilen sesi MP4 olarak kaydeder. Öncelikle mp4'ü wav'a dönüştürmemiz gerekiyor, çünkü wav dosyalarını işleyebilen iyi bir Python kütüphanesi var. Şekil 3'ün sağ üst köşesindeki her tepe bir tuş vuruşuna karşılık gelir).

Şekil 3: mp4'ü wav'a dönüştürün ve ardından bölün

Ardından sesi ayrı bloklara ayırmak için sessizlik algılamasını kullanırız, böylece her blok yalnızca bir harf içerir. Bundan sonra, bu bireysel blokları sinir ağına girebiliriz.

Ancak yazar daha iyi bir yöntem düşündü, tek bir renk bloğunu bir spektrograma dönüştürmeyi seçti (Şekil 4). Şimdi, daha fazla bilgi sağlamak için Evrişimli Sinir Ağlarını (CNN) kullanan ve kullanımı daha kolay olan görsellerimiz var.

Şekil 4: Tek bir bloğu bir spektrograma dönüştürme

Ağı eğitmek için yazar, yukarıda açıklanan 16.000 örneği topladı ve her harf için en az 600 örnek olmasını sağladı (Şekil 5).

Şekil 5: Veri örneği

Daha sonra veriler yeniden düzenlenir ve eğitim seti ve doğrulama setine bölünür. Her mektup yaklaşık 500 eğitim örneğine ve 100 doğrulama örneğine sahiptir (Şekil 6).

Şekil 6: Eğitim-doğrulama bölümü

Kısaca bu karşılaştığımız maksimum olabilirlik oranı problemidir, bkz.Şekil 7.

Şekil 7: Makine öğrenimi problem temsili

3. Eğitim ve doğrulama

Yazar oldukça küçük, basit bir ağ mimarisi kullanıyor (Laurence Moroney'nin taş-kağıt-makas örneğine göre, https://www.coursera.org/learn/convolutional-neural-networks-tensorflow/), bkz. Şekil 8.

Bunlar arasında, giriş görüntüsü 150 x 150 piksel olarak ölçeklendirilmiştir ve 3 renk kanalına sahiptir. Daha sonra bir dizi evrişim + birleştirme katmanından geçer, düzleştirilir (aşırı uyum kaybını önlemek için), tamamen bağlı katmana ve son olarak çıktı katmanına beslenir. Çıktı katmanı, her harfe karşılık gelen 26 sınıfa sahiptir.

Şekil 8: Ağ mimarisi

TensorFlow'da model şuna benzer:

model = tf.keras.models.Sequential ()

Ve model özeti:

___________________________________________________________

Katman (tip) Çıktı Şekli Param #

==================================

conv2d_4 (Dönş2D) (Yok, 148, 148, 64) 1792

___________________________________________________________

max_pooling2d_4 (MaxPooling2 (Yok, 74, 74, 64) 0

___________________________________________________________

Conv2d_5 (Conv2D) (Yok, 72, 72, 64) 36928

___________________________________________________________

max_pooling2d_5 (MaxPooling2 (Yok, 36, 36, 64) 0

___________________________________________________________

conv2d_6 (Conv2D) (Yok, 34, 34, 128) 73856

___________________________________________________________

max_pooling2d_6 (MaxPooling2 (Yok, 17, 17, 128) 0

___________________________________________________________

conv2d_7 (Conv2D) (Yok, 15, 15, 128) 147584

___________________________________________________________

max_pooling2d_7 (MaxPooling2 (Yok, 7, 7, 128) 0

___________________________________________________________

flatten_1 (Düzleştir) (Yok, 6272) 0

___________________________________________________________

dropout_1 (Dropout) (Yok, 6272) 0

___________________________________________________________

yoğun_2 (Yoğun) (Yok, 512) 3211776

___________________________________________________________

yoğun_3 (Yoğun) (Yok, 26) 13338

================================= =

Toplam parametreler: 3,485,274

Eğitilebilir parametreler: 3.485.274

Eğitilemez parametreler: 0

Eğitim sonucu Şekil 9'da gösterilmektedir. Yaklaşık 13 dönemde,% 80 doğrulama doğruluğuna ve% 90 eğitim doğruluğuna yaklaşır. Problemin karmaşıklığı ve kullanılan basit ağ mimarisi göz önüne alındığında, elde edilen yüksek doğruluk gerçekten şaşırtıcıdır.

Şekil 9: Eğitim ve doğrulama doğruluğu

Mevcut sonuçlar umut verici görünüyor, ancak bu yalnızca karakter düzeyinde doğruluk, kelime düzeyinde doğruluk değil. Bir şifreyi tahmin etmek için, sadece çoğu karakteri değil, her karakteri doğru bir şekilde tahmin etmeliyiz! Şekil 10'a bakın.

Şekil 10: Bir şifreyi tahmin etmek, her karakteri tahmin etmeyi gerektirir

4. Test Etme

Yazar, bu modeli test etmek için rockyou.txt listesinden 200 farklı şifreyi daha sayısallaştırdı ve daha sonra eğittiğimiz modeli kullanarak kelimeleri tahmin etmeye çalıştı (Şekil 11).

Şekil 11: Test modeli

Şekil 12, test doğruluğunu gösterir; bunların arasında, çubuk grafik karakter düzeyinde doğruluğu gösterir (soldaki grafik düzeltme ve hata sayısını gösterir ve sağdaki grafik aynı yüzdeyi gösterir).

Karakter seviyesinde test doğruluk oranının% 49, kelime seviyesinde test doğruluk oranının ise% 1.5 olduğu (yani sinir ağının 200 test kelimesinden doğru 3 kelimeyi tamamen tahmin edebildiği) görülebilmektedir.

Şekil 12: Test doğruluğu

Bununla birlikte, görevin karmaşıklığı göz önüne alındığında,% 1,5 kelime düzeyinde doğruluk kötü değildir, ancak yazar, doğruluğu artırmak için bazı yöntemleri de değerlendirmiştir.

Tahmin doğruluğu nasıl geliştirilir?

İlk olarak yazar, test sonuçlarındaki bireysel hataları analiz eder. Şekil 13, bazı örnek test sonuçlarını gösterir, burada:

  • İlk sütun gerçek test kelimelerini içerir;

  • İkinci sütun, karşılık gelen tahmin edilen kelimeleri içerir; burada her karakter, doğru (yeşil) ve yanlış (kırmızı) tahminleri göstermek için renk kodludur;

  • Üçüncü sütun yalnızca doğru tahmin edilen karakterleri gösterir ve yanlış tahmin edilen karakterler alt çizgilerle değiştirilir (görselleştirme için).

Şekil 13: Veri testi sonuçları

"Aaron" kelimesi için kullanılan model sadece bir doğru karaktere sahip, "kanada" kelimesi için tahmin edilen karakterlerin çoğu doğru ve "lokita" için tüm karakter tahminleri doğrudur. Şekil 12'de gösterildiği gibi, kelime düzeyinde doğruluk oranı yalnızca% 1.5'tir.

Ancak test örneğine (Şekil 14), özellikle de "kanada" ya baktığımızda, çoğu karakteri doğru bir şekilde işleyebildiğini ve gerçek kelimelere çok yakın olduğunu fark ettik. Öyleyse, CNN sonucunu yazım denetiminden geçirirsek ne olur?

Şekil 14: Test sonucu ekranı

Yazarın yaptığı tam olarak buydu (Şekil 15) Yazım denetleyicisini kullandıktan sonra, doğruluğu% 1.5'ten% 8'e çıkardı. Bu aynı zamanda oldukça basit bir model mimarisi + yazım denetleyicisi ile 100 şifreden 8'ini doğru bir şekilde tahmin edebileceğimiz anlamına gelir!

Şekil 15: Yazım denetleyiciyi kullandıktan sonra iyileştirilmiş doğruluk

Yazar, basit bir yazım denetleyicisi yerine bir dizi modeli (RNN? Transformer?) Kullanılırsa, kelime belirlemede daha yüksek doğruluk elde edebilir miyiz?

Ancak test sonuçlarına yakından bakarak (Şekil 16), "a" nın "s", "n" nin "b" olarak tahmin edildiğini vb. Fark edebilirsiniz.

Şekil 16: Test örneğinin ayrıntıları yakınlaştırma

Bu yardımcı olamaz, ancak klavyedeki haritalama hatalarımızı düşünün ve eşleme hatalarının çoğu (bkz. Şekil 17) yakınlıkla ilgilidir.

Şekil 17: Klavyede eşleme hatası

Daha sonra yazar, bu korelasyon ve yakınlığın hatasını ölçtü. Şekil 18, mikrofon ile klavye arasında belirli bir ölçekte çizilmiş tuşların konumunu göstermektedir.

Şekil 18: Mikrofonlu klavye ve ölçeklemek için çizilmiş düğme konumları

Şekil 19, sayısal tuş takımındaki bazı örnek harflerin yanlış benzetimini göstermektedir. Şekilde, sol üst köşedeki şekil "a" nın yanlış bir şekilde "z", "x", "y", "k", "s", "w" veya "q" olarak tahmin edildiğini göstermektedir. Diğer alt resimlerin açıklamaları benzerdir.

Şekil 19: Örnek harflerin hata grafiği

Şekil 19'dan, tahmin hatasının yakınlıkla ilgili olduğunu açıkça görebiliriz. Bununla birlikte, daha nicel bir ölçüm standardı elde edebilir miyiz?

Bu niceleme standardını elde etmek için yazar, d_ref'i referans harfi ile mikrofon arasındaki mesafe olarak ayarlar; d_predicted, tahmin edilen harf ile mikrofon arasındaki mesafedir ve d, d_ref ile d_predicted arasındaki farkın mutlak değeridir (bkz. Şekil 20).

Şekil 20: Bazı parametre tanımları

Şekil 21, ortaya çıkan hata histogramını göstermektedir. Çok bariz bir eğilim görüyoruz, yani hataların çoğu yakın yerlerden geliyor. Bu aynı zamanda, modelin doğruluğunu daha fazla veri, daha büyük bir ağ veya bu verileri daha iyi yakalayabilen bir ağ mimarisi aracılığıyla geliştirebileceğimiz anlamına gelir.

Şekil 21: Hatayla ilgili histogram

Ancak mikrofonun konumu da hata kaynaklarından biri mi? Hata, düğme ile mikrofon arasındaki mesafeyle mi ilgili?

Yazar, bunu incelemek için Şekil 12'deki hata grafiğini de çizdi, bu da X eksenindeki harf ile MIC arasındaki mesafeyi artırdı (bkz. Şekil 22).

Şekil 22: Mikrofon konumu ile hata arasındaki ilişkinin histogramı

Şekilde, hata ile düğmenin mikrofondan konumu arasında güçlü bir ilişki olmadığını görebiliriz, bu da hatanın temelde mikrofon konumundan bağımsız olduğunu kanıtlayabilir.

Bununla birlikte, Şekil 22'de gösterilen sonuçlarla, yazar aynı zamanda çok önemli bir mesaj buldu, yani bir kişi mikrofonu herhangi bir yere koyarak tuş vuruşlarını dinleyebilir ve ardından bilgisayar korsanlığı saldırıları gerçekleştirebilir. Bu keşif gerçekten de ürkütücü!

Modeldeki bazı küçük hatalar

Bu çalışmada yazar, sadece klavyenin sesini dinleyerek bilgisayar korsanlığı yapıp yapamayacağını doğrulamak istedi, bu nedenle belirli deneyde birçok basitleştirme yaptı.

Daha karmaşık ve gerçek senaryoların üstesinden gelmek için modeli geliştirme konusunda yazardan bazı öneriler şunlardır:

  • Normal yazma hızı Zorlu sinyal işleme (tek bir tuş vuruşunu izole edin). Çünkü bu çalışmada yazar, veri içeriğini yazmak için daha yavaş bir hız kullandı.

  • Herhangi bir tuş zorlu sinyal işleme (büyük harf kullanımı? Shift işlev tuşu? ...). Çünkü bu çalışmada yazar sadece küçük harfler kullanmıştır (büyük harfler, sayılar, özel karakterler, özel tuş vuruşları vb. Hariç).

  • Arka plan gürültüsü Gürültü ekleyin. Çünkü bu çalışmada veri kaydederken, sadece bazı araçlarda geçerken bazı basit ve hafif arka plan gürültüsü olacaktır, ancak karmaşık arka plan gürültüsü yoktur (örneğin: restoran arka plan gürültüsü, vb.)

  • Farklı klavye ve mikrofon ayarları + farklı kişiler yazarak daha fazla veri + veri geliştirme + daha büyük ağ + farklı ağ mimarisi modeli iyileştirmeye yardımcı olabilir.

Son olarak, yazar ayrıca ilginç bir fikir ortaya attı: "Ses sinyalleri yerine başka titreşim sinyalleri kullanabilir miyiz".

Şekil 23: Diğer titreşim sinyalleri

Sonunda bu sonuca vardık

Yazar, bu çalışmanın basitleştirilmesini dikkate alarak iki sonuç çıkarmaktadır:

  • Yazılı içeriği tuş vuruşu sesleriyle kırmak mümkündür;

  • Az miktarda veri ve basit bir CNN mimarisi + yazım denetimi ile iyi bir kelime düzeyinde doğruluk oranı elde edebiliriz (bu çalışmada% 8);

Hata kaynağı:

  • Basit bir yazım denetimi kelime düzeyinin doğruluğunu artırabilir (bu durumda% 1,5'ten% 8'e);

  • Hata, diğer tuşların yakınlığıyla ilgilidir;

  • Hata, mikrofon konumundan bağımsız görünüyor.

Orijinal bağlantı:

https://towardsdatascience.com/clear-and-creepy-danger-of-machine-learning-hacking-passwords-a01a7d6076d5

GitHub bağlantısı:

https://github.com/tikeswar/kido

Leifeng.com AI Geliştiricisi

CBA normal sezon: Shenzhen Marco Polo, Beijing Shougang'ı yener
önceki
İnternet İnceleme Özeti Çin Yönetişimi · Kültürel Güven · Etik Yapı
Sonraki
Az önce duyuruldu! Fuzhou'daki bu öğretmenler harika! Bakın okulunuzdan bir tane var mı?
CIKM 2019 Challenge Cup "Kullanıcı Davranışı Tahmini" Şampiyon Şeması: Tavsiyede Hiyerarşik GNN Modelinin Uygulanması
Facebook açık kaynak SlowFast: çift kare hızı bölme ve yönetme tabanlı hafif bir video tanıma modeli
Çernobil Nükleer Santrali Hariç Tutma Bölgesine yürüyün
Hong Kong Açık: Ulusal tüy triatlon şampiyonası, tek erkekler ve çift erkekler finalleri kaçırdı
"Biri Hong Kong'u kurtarmak için ateşe verdi, biz ülkeye hizmet etmek için kitaplar okuduk!" Alarm zili çaldığında derslere katılmakta ısrar ettiler.
Dev pandalar "kar mevsiminin" tadını çıkarıyor
Ağ bağlantı noktalarına odaklanmak için "İnternet ünlüleri" çapalarını tanıtan Wuhan'ın ulusal güvenlik tanıtımı ve eğitimi vatandaşlara yaklaşıyor
"Eskiler bağımlısı" Sima Guang gerçekten tanka vurdu mu?
"The Lancet" dergisinde yayınlanan Çinli doktorlardan oluşan bir ekip | Üst gastrointestinal tümörler için yapay zeka destekli teşhis sistemi 6 hastane ile işbirliği içinde% 90'ın üzerinde bir hassas
Mavi asitli su doğrudan nehre akıyor, Guangzhou'daki Zengcheng Bölgesi'ndeki 2 şirket engellendi ve sorumlu 2 kişi gözaltına alındı
2020'de 1,5 milyar AI terminalinin pazar talebiyle karşı karşıya kalan özelleştirilmiş AI çipleri bir trend haline geldi
To Top