Haddeleme Kodu Açıklaması


13

Birisi KeeLoq gibi haddeleme kodu protokollerinin nasıl çalıştığını açıklayabilir mi? Her seferinde farklı bir kod kullandıkları temel önermeyi anlıyorum, böylece sadece tekrar saldırısı kullanamazsınız, ancak bir tarafın doğru kodu nasıl doğruladığını anlamıyorum.

Ayrıca, yuvarlanan kodlara ilişkin dizin önceden bilinmiyorsa / paylaşılmıyorsa nasıl bir başlangıç ​​senkronizasyonu gerçekleştirir?

Bunun iyi olduğunu açıklamak için Keeloq'u örnek olarak kullanmanız gerekiyorsa, yuvarlama kodlarının genel bir açıklamasını tercih ederim.


Yanıtlar:


10

Yuvarlama kodlarının düzgün çalışması için birkaç parça gerekir. Burada tüm parçaları belirli bir şekilde kullanan genel bir uygulamayı tarif edeceğim. Diğer sistemler bu temanın varyasyonlarıdır, ancak genellikle aynı tekniklerin çoğunu benzer şekilde kullanırlar. Uygulamanın tamamını ve bir kerede nasıl çalıştığını anlatmaya çalışmak yerine, basit bir sistemi tanımlayacağım ve kriptografik olarak güvenli bir sisteme ulaşıncaya kadar karmaşıklık ekleyeceğim.

Kriptografik olmayan bir döner kod, her ikisi de aynı sahte rasgele sayı üretecini (PRNG) kullanan bir verici ve alıcıdır. Bu jeneratörün iki önemli bilgisi vardır: bir hesaplama ve önceden oluşturulmuş sayı. Hesaplama genellikle tek bir sayı ile temsil edilebilen doğrusal bir geri besleme denklemidir. PRNG'yi bir önceki sayı ile besleyerek ve geri besleme numarasını aynı tutarak belirli bir sayı dizisi üretilir. Sekans, üretebildiği her sayıdan geçene kadar tekrarlanan sekansa sahip değildir ve daha sonra aynı sekans ile tekrar başlar.

Hem uzaktan hem de verici geri besleme numarasını ve geçerli numarayı biliyorsa, uzaktan kumanda bir sonraki numarayı ilettiğinde, alıcı kendi jeneratörüne karşı test edebilir. Eşleşirse etkinleşir. Başlamazsa, uzaktan kumandanın gönderdiği numarayı bulana kadar sekans boyunca ilerler. Uzaktan kumandayı tekrar basarsanız, eşleşmelidir ve önceki iletim sayı jeneratörlerini senkronize ettiği için etkinleşecektir. Bu yüzden bazen kilit açma düğmesine iki kez basmanız gerekir - alıcınız veya vericiniz senkronize değil.

Bu kodun yuvarlanan kısmı. PRNG yeterince uzunsa, normal kullanımda elde edilmesi zor olan arka arkaya çok sayıda numara olmadan geri bildirim numarasını bulmak çok zordur. Ancak kriptografik olarak güvenli değil.

Bunun üzerine tipik şifreleme eklersiniz. Araç üreticisi verici ve alıcı için özel bir gizli anahtar kullanır. Üreticiye bağlı olarak, her model ve yılın farklı bir kodu olduğunu veya kodu birkaç araç modeli arasında ve birkaç yıl içinde paylaşabileceğini görebilirsiniz. Alım satım, her birinin farklı bir uzaktan kumandanın stoklanması gerektiğini, ancak birçok model üzerinde bir kod paylaşmanın sorunu, eğer kırılırsa daha fazla otomobilin savunmasız olmasıdır.

Şifrelemenin arkasında düğme bilgisi, oluşturulan PRNG numarası ve geri bildirim numarası hakkında biraz bilgi var. PRNG'yi sıfırdan yapmak için yeterli değil, ancak belirli sayıda düğmeye basıldıktan sonra ve sınırlı alan hakkında bazı iç bilgilerle bir geri bildirim numarası içerebilir (tekrar, üreticiye, hatta özgü), alıcı birkaç eğitimden sonra iletimler, geri bildirim numarasını belirleyin ve uzaktan kumandanın PRNG'sini izlemeye başlayın.

Dönme kodu yalnızca tekrar saldırılarını durdurmak içindir. Şifreleme, yuvarlanma kodunun kırılmasını önlemek için güvenliğini sağlamak içindir. Sadece biri ya da diğeri ile sistemin kırılması çok kolay olurdu. Üretici hem vericiyi hem de alıcıyı kontrol ettiğinden, eğitim ortak anahtar şifrelemesini veya özellikle ilgili herhangi bir şeyi içermez. Ayrıca bu tür bir sistemle satış sonrası fobların araçlarda çalışmasını önler.

Ancak haddeleme kodu geçirimsiz değildir. Eski keeloq sistemi sadece birkaç yıl önce (on yıl kullanımdan sonra) başarılı bir şekilde saldırıya uğradı, böylece üretici şifreleme kodu bulunabilir ve yuvarlanma kodları daha kolay bulunabilir. Bundan daha önce, insanların kodu gerçekten kırmadan araç almasına izin verecek şekilde saldırıya uğradı. Yanıt olarak yeni şifreleme anahtarı 60 bittir. Birçok modern şifreleme sistemi kadar güvenli değil, ama kırılmadan önce muhtemelen daha uzun yıllar sürecek kadar güvenli.


Ah, PRNG'nin "tekrarlanan sekans yok" kısmını unutmuş olmalıyım, bu çok önemli. Alıcının geri bildirim kodunu belirlemesine izin veren bilgi iletmenin avantajı nedir? Bu sadece bir geri bildirim kodu seçmekten ve hem alıcı hem de verici üretmekten daha az güvenli görünüyor ...
NickHalden

@NickHalden geri bildirim kodu her uzaktan kumanda için farklıdır ve müşteriler daha sonra daha fazla uzaktan kumanda eklemek veya eksik uzaktan kumandaları değiştirmek isteyecektir. Sadece eğitim için gereklidir. Biraz daha güvenli bazı sürümler, ekstra geri bildirim bilgisi vermeden önce uzaktan kumandada belirli bir düğmeye basma dizisini gerektirir, ancak genellikle genel sistem, şifrelemeyi kırsanız bile, o küçük şeyden önce çok daha fazla bilgiye ihtiyacınız olacak kadar güvenlidir. Tüm bilgi kodunu almak için biraz bilgi yeterlidir.
Adam Davis

8

KeeLoq ile bir garaj kapısı açıcısında çipi araştırırken ilk karşılaştım. Mikroçip veri sayfası nasıl çalıştığını açıklayan iyi bir iş yapar.

Kısaca:

  • alıcı, seri numaralarına yazılan tüm vericilerin bir veritabanını tutar.
  • her verici çip üzerinde ve ayrıca alıcının veritabanında simetrik bir şifreleme anahtarı (64 bit) ile ilişkilidir.
  • her verici, çipte ve veritabanında da saklanan 16 bitlik döngüsel sıra numarası ile ilişkilidir.
  • verici etkinleştirildiğinde, sıra numarası modulo 65536'yı (sarma 16 bit) arttırır ve hangi düğmelere basıldığını, seri kimliğini ve seri numarasının şifrelenmiş bir versiyonunu temsil eden bir bit maskasından oluşan bir paket gönderir.
  • alıcı veritabanındaki seri numarasıyla eşleşir, anahtarı çıkarır ve seri numarasının şifresini çözer.
  • seri numarası yeni olmalıdır; tekrar kullanılan saldırılara karşı koruma sağlayan son zamanlarda kullanılan bir seri numarası olamaz. (Bkz. Veri sayfasındaki Şekil 7.3).
  • seri numarası doğrulanırsa, alıcı hangi düğmelere basıldığının bit maskesine göre işlevselliği etkinleştirebilir.
  • yeni seri numarası 16'dan fazla değerden öndeyse (kullanıcı, alıcıdan uzaktayken düğmelere yanlışlıkla birçok kez bastıysa), yeniden senkronize etmek için ekstra düğmeye basılması gereken ekstra bir el sıkışma gerçekleşmelidir. (Kullanıcı, kötü alım olduğuna inanarak ekstra düğmeye basmayı gerçekleştirecektir).

Alıcı veritabanına yeni bir verici eklemek, bir Wi-Fi erişim noktasına istemci eklemek için yüksek düzeyde düğme basma yapılandırma yöntemine belirsiz bir şekilde benzemektedir. Alıcıya bir şekilde yeni bir vericiyi kabul ettiği bir moda geçtiği söylenir.

Alıcı ve verici aynı gizli üretici kimliğini paylaşıyorsa, normal etkinleştirme mesajlarında iletilen bilgilerden yeni bir verici kabul edilebilir. Bunun nedeni 64 bit şifreleme anahtarının alıcının üretici kimliğinden ve seri bilgisinden türetilmiş olmasıdır. (Bkz. Bölüm 7.1).

Buna daha güvenli bir alternatif var: "Güvenli Öğrenme". Bu, verici üzerinde özel bir şekilde başlatılır (aynı anda üç düğmeye basıldığında). Verici özel bir paket gönderir: muhtemelen üretici kimliğine veya seri numarasına bağlı olarak değil, şifreleme anahtarının türetildiği 60 bitlik bir tohum değeri.

Alıcı öğrenme modunda olmadığında, elbette bilmediği vericilerin iletimini reddeder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.