Bu basit XOR şifreli iletişim kesinlikle güvenli midir?


23

Diyelim ki Alice ve Peter her birinde 4GB'lık bir USB flash bellek çubuğu var. Her iki çubukta rastgele oluşturulmuş bitler içeren alice_to_peter.key(2GB) ve peter_to_alice.key(2GB) adlı iki dosyayı karşılar ve saklarlar. Bir daha asla buluşmazlar, ancak elektronik olarak iletişim kurarlar. Alice aynı zamanda denilen bir değişkeni korur alice_pointerve Peter peter_pointer, her ikisi de başlangıçta sıfıra ayarlanan denilen değişkeni korur .

Alice'in Peter'a bir mesaj göndermesi gerektiğinde, bunu yapar ( nmesajın 10. baytı nerede ):

encrypted_message_to_peter[n] = message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n]
encrypted_payload_to_peter = alice_pointer + encrypted_message_to_peter
alice_pointer += length(encrypted_message_to_peter)

(ve maksimum güvenlik için, anahtarın kullanılan kısmı silinebilir)

Peter mesajın başında saklanır encrypted_payload_to_peter, okur alice_pointerve şunu yapar:

message_to_peter[n] = encrypted_message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n]

Maksimum güvenlik için, mesajı okuduktan sonra anahtarın kullanılmış kısmını da silin. - EDIT: Aslında bu basit algoritma ile bu adım (bütünlük kontrolü ve doğrulama olmadan) güvenliği azaltır, aşağıdaki Paŭlo Ebermann yazısına bakınız.

Peter'ın Alice'e bir mesaj göndermesi gerektiğinde, bu kez peter_to_alice.keyve ile tersini yapıyorlar peter_pointer.

Bu önemsiz şema ile, her iki yöne 2GB / (50 * 365) = ~ 115kB şifreli veri her gün gönderebilirler. Göndermek için daha fazla veriye ihtiyaç duyarlarsa, daha büyük tuşlar kullanabilirler; örneğin, bugünün 2 TB HD'leri (1 TB tuşları) ile, önümüzdeki 50 yıl boyunca 60 MB / gün alışverişi yapmak mümkün olacak! Uygulamada çok fazla veri var; örneğin, sıkıştırma kullanarak bir saatten fazla kaliteli sesli iletişim söz konusudur.

Bana öyle geliyor ki bir saldırganın şifreli mesajları anahtarsız okumanın bir yolu yok, çünkü sonsuz derecede hızlı bir bilgisayar olsalar bile, kaba kuvvetle mümkün olan her mesajı limit altında alabilirler, ancak bu astronomik bir sayıdır. mesajların ve saldırganın hangisinin asıl mesaj olduğunu bilmiyor.

Haklı mıyım Bu iletişim programı gerçekten kesinlikle güvenli mi? Ve eğer güvenli ise, kendi adı var mı? XOR şifrelemesi iyi bilinir, ancak her iki taraftaki büyük tuşları kullanarak bu pratik pratik uygulamanın adını arıyorum. Bu uygulamanın benden önce birisini icat ettiğini bekliyorum. :-)

Not: Kesinlikle güvenliyse şaşırtıcıdır, çünkü günümüzün düşük maliyetli büyük depolama aygıtlarıyla, güvenli iletişim kurmak pahalı kuantum şifrelemeden çok daha ucuz olacaktır ve bu da eşit güvenlik sağlar!

EDIT: Bunun gelecekte depolama maliyetleri azaldıkça daha pratik olacağını düşünüyorum.Sonsuza kadar güvenli iletişim çözebilir.Bugün birisi bir yıl sonra bile mevcut şifrelere başarılı bir şekilde saldırırsa ve genellikle pahalı uygulamalarını güvensiz hale getirirse, hiçbir şüpheniz yoktur. İletişim kurulmadan önce birçok durumda, her iki taraf da kişisel olarak buluştuğunda, anahtarları oluşturma zamanı gelmiştir. Askeri iletişim için mükemmel olduğunu düşünüyorum, örneğin büyük anahtarlara sahip HD'lere sahip denizaltılar ve askeri merkezde her denizaltı için bir HD olabilir. Günlük hayatta da, örneğin banka hesabınızı kontrol etmek pratik olabilir, çünkü hesabınızı oluştururken banka ile tanışırsınız.


4
Kullanılacak anahtarın hangi bölümünü koordine edecek özel şema dışında, bu sadece bir defalık bir peddir . Ancak, daha yakından incelendiğinde kullanım durumlarının% 99'u için gerçekten kullanışlı olmadığı ortaya çıktı.

10
Bu soru, belirli bir kripto algoritmasının gücüyle ilgili olduğundan, kripto.stackexchange.com için daha uygun olabilir . Sorunuzu oraya taşımak için, moderatör dikkatini işaretleyebilir ve göç isteyebilirsiniz.
Bart van Ingen Schenau

12
OTP'ler bir asırdan fazla bir süre önce icat edildi ve her iki Dünya Savaşında da gerçek fiziksel kağıt altlıkları olarak kullanıldı. ( en.wikipedia.org/wiki/One-time_pad ) Kriptografideki problem şu an olduğu gibi anahtar değişimidir.
Robot’a

6
Bunun, iki taraf tekrar bir araya gelinceye kadar beklenen tüm veriler için yeterli benzersiz anahtar üretme sorununu çözmenize ve anahtarların bir GENEL ÇIKIŞI rastgele işlemle üretilmesi gerektiğine karar vermenize neden olduğunu unutmayın; Aynı PRNG'yi kullanan daha fazla numune mevcut olduğunda.
keshlam

1
@keshlam. Gerçek kuantum-rasgele sayıların üretilmesi çok ucuz hale geliyor. Arxiv'deki ilginç makale: Bir cep telefonunda kuantum rasgele sayı üretimi: arxiv.org/abs/1405.0435
user3123061

Yanıtlar:


50

Evet, bu bir kerelik bir ped . Ana malzeme bir daha asla kullanılmazsa, teorik olarak güvenlidir.

Dezavantajları, her bir iletişim kurucusu müdürü için bir anahtara ihtiyacınız olacak ve iletişim kurmadan önce ana materyali değiş tokuş etmek için güvenli bir yola ihtiyacınız olacak.


52
Bence "teorik olarak güvenli" nin , anahtarların gerçekten rastlantısal olması ve tekrar kullanılmaması şartıyla kırılmaz olduğu kanıtlanmış olduğunu vurgulamakta fayda var . Bu, kriptografide her yere götürebileceğiniz en güçlü garantidir.
Michael Borgwardt

1
@ MichaelBorgwardt orada büyük nokta. Bu durumda "teorik olarak güvenli" aslında "pratik olarak güvenli" den daha iyidir.
Mark

2
Durumda: 16 sıralı bayt 0 olan 2GB rasgele bir anahtar var.
Michael

@Michael Bu olma şansı 10 ^ 27'de 1 civarında.
bu

1
@ Floris Benim "hesaplama": Bir bayt 256 olası değerlere sahip. Bu 256'da biri sıfır olacak. 256 ^ 16, 16 bayt için şansı. Daha sonra, bu şansa göre bayt sayısını 2GB'ye bölün. Sanırım yine de 16'ya bölünmüş bir bölümü kaçırdım (1024 * 1024 * 1024 * 1024 * 2 * (1/16)) / (256 ^ 16) Son noktanız bu hesaplamayı yine de alakasız yapıyor.
bu 21

32

As valin adlı cevabı gösterir, sizin algoritması temelde bir defalık-pad olduğunu.

Ancak notlarınızdan biri hakkında yorum yapmak için:

Not: Kesinlikle güvenliyse şaşırtıcıdır, çünkü bugün düşük maliyetli büyük hatıralarda, pahalı kuantum şifrelemeden ve eşdeğer güvenlikten daha pratik bir şekilde daha güvenli bir iletişim şeklidir!

Cevabım hayır, şaşırtıcı değil. Şeytan her zaman ayrıntıda gizlidir ve buradaki şeytan anahtarların değiş tokuşundadır. Yönteminiz kusursuz, yüz yüze anahtar değiş tokuşuna bağlıdır. Bir şey satın almak veya başka güvenli bağlantılar kurmak istediğim her seferinde İnternet'teki tüm satıcılara benim için 4GB flash disk taşıyan James Bond'u göndermeyi göze alamam.

Ve son olarak, algoritmanızın XOR yönü önemli değil. Basit bir ikame şifresi bir OTP ile gayet iyi. OTP’nin gücü, anahtarın hiçbir zaman tekrar kullanılmadığı ve James Bond’un her iki taraf için de anahtarların kusursuz bir şekilde değiştirildiğini varsayıyor (yani, önce güvenli anahtar değişimi).


13
Bir OTP ile ilgili diğer bir şey, anahtarın (en azından) şifrelenecek mesaj olduğu sürece olmasıdır ve çok yüksek kalitede rastgele bir sayı kaynağına ihtiyaç duyar .
Donal Fellows

Çoğu şifreleme algoritması, bir şekilde bir anahtarı rasgele verilerden ayırt edilemeyen bir veri akışına dönüştürerek çalışır, ardından bu verileri bir zaman dilimi olarak kullanır. Bir saldırganın bakış açısından bakıldığında, gerçekten rastlantısal olan veriler ile rastgele verilerden ayırt edilemeyen veriler arasında bir fark yoktur (tanım gereği; eğer bir fark bulursanız, ayırt edilemez değildi), yani teoride bu OTP kadar güvenli . Tabii ki, verinin gerçek rastgele verilerden ayırt edilemez olduğunu söylediğimizde, genellikle bir sürü uyarı vardır. Bu açıklama elbette büyük bir aşırı basitleştirmedir.
Brian

21

Bir defalık pad, yalnızca mesaj okuyabilen bir saldırgana karşı koşulsuz (matematiksel olarak kanıtlanmış) bir mahremiyet garantisine sahip olsa da, bazı zayıf yönleri vardır.

  • Düz metni doğru bir şekilde tahmin eden engelleyici bir saldırgan şifreli metni istediği şekilde değiştirebilir (aynı uzunlukta).

  • Bir saldırgan bazı mesajları (veya bir kısmını) ekler veya silerse, Alice ve Bob'un işaretçileri senkronize olmaz ve gelecekteki her iletişim kopar.

    Güncelleme: Bu, her iki tarafın da her iki işaretçiyi de takip ettiğini varsaydı. Geçerli işaretçi değerini gönderirseniz, iki seferlik saldırılara (aynı tuş aralığının birden fazla kullanılmasına izin verirseniz) veya DOS saldırılarına (aynı tuş aralığına izin vermezseniz) savunmasız kalırsınız. bir kereden fazla kullanılmak üzere, örneğin onları silerek).

Bu sorunların her ikisine de eksik bütünlük ve kimlik doğrulama koruması neden olur - mükemmel bir şifreniz var ancak MAC'iniz yok.

Tek seferlik protokolünüze bir MAC ekleyin ve güvenli olmasını sağlayın. Her mesaj, sözde gönderici tarafından gönderilmesini ve aralarında değiştirilmemesini sağlayan bir "sağlama toplamı" almalıdır. Ayrıca, bazı sıra numaralarını da göndermelisiniz, böylece alıcı, önceki bir mesaj kaybolduğunda hangi tuşun kullanılacağını (ya da çoğaltılmışsa mesajı reddetmek için) hangi anahtarın kullanılacağını bilir - bunu sağlama toplamı hesaplamasına dahil edin.

Burada her zamanki gibi bir MAC algoritması olur, ama sanırım bir defalık pad'inizle aynı güvenliği sağlamak için bir defalık polinom MAC kullanmak isteyebilirsiniz. (MAC anahtarını şifreleme anahtarınızdan önce veya sonra bitlerden alın, yani her iki amaç için bir anahtar kullanmayın.)


Bir saldırgan bazı mesajları (veya bir kısmını) ekler veya silerse, Alice ve Bob'un işaretçileri senkronize olmaz ve gelecekteki her iletişim kopar. İşaretçiler bağımsızdır ve senkronize olmaları gerekmez, bu nedenle mesaj kaybedilirse gelecekteki birleşme kopmaz (mesajı şifrelemek için kullanılan anahtarın ofseti bu mesajla birlikte gönderilir). Ancak kısmen haklısınız: Senkronizasyon dışı, silinen mesaj alınmadığı için silinen ve alma tarafında anahtarın bir kısmı kullanılır (kullanılan kısım bir sonraki alınan mesajla silinir).
user3123061

Fakat haklısın. Sunulan basit algoritma bütünlüğü ve doğrulamayı özlüyor. Pratik uygulamanın daha sağlam olması gerekecektir.
user3123061

@ user3123061 Yerinde olsam bütünlük ve kimlik doğrulamasını silemezdim. Adaptif olarak seçilen şifreli metin saldırısı tekniği, gizliliği bozmak için bir bütünlük koruması olmamasından yararlanır . Klasik bir defalık pedin (ki bu, yeniden icat ettiğiniz şey), bu matematik saldırıdaki görünür matematiksel sağlamlığına rağmen düz olmayan güvensiz olduğunu söyleyeceğim kadar ileri giderdim .
zwol

2
Adaptif seçilen cipertext saldırısı, insan tarafından kontrol edilen OTP'ye karşı oldukça zayıf bir saldırı seçimidir. OOS farkedilecek ve saldırganınız oldukça hızlı oynanır. Sadece alıcı makinede işlenirse ve bir cevap verdiğinde, bu saldırı hiç de iyi olmaz.
Joshua

@Zack OTP'lerle ilgili birçok sorun var, ancak hiçbiri gizliliği tehdit etmiyor. Önceki iletinin plantext + anahtarını mükemmel bir şekilde tahmin etseniz bile, bir sonraki mesajın tamamen yeni, bağımsız bir anahtarla şifrelenmiş olduğunu unutmayın (çok büyük boyutta). Birden fazla etkileşime uyum sağlayacak hiçbir şey yok.

4

Aslında tamamen güvenli değil. Protokolünüzün sızdırdığı şey, iletilen iletinin UZUNLUK.

Örneğin, casus "evet" veya "hayır" ile cevaplayacağınızı biliyorsa ve uzunluğu = 2 olarak görürse, "hayır" olduğunu çıkarabilir.

Bir bağlamı tahmin edebiliyorsanız, sadece bilinen uzunluklardan ne kadarlık bir sonuç alınabileceği şaşırtıcı.


3
Bununla birlikte, makul bir güvenlik seviyesine göre düzeltilmesi oldukça kolaydır, çünkü mesajı rastgele önemsiz mesajlarla doldurabilirsiniz, bu nedenle mesaj uzunluğu sabit blok boyutunun katlarıdır - 256 karakter söyleyin. Bu, basit bir evet v hayır analizi, OTP'yi daha hızlı kullanmanın bir bedeli ile mağlup eder.
Peter Bagnall

Nitekim - Eğer beri yapabilirsiniz önümüzdeki 50 yıl boyunca her gün ~ 115KB göndermek, her blok olacağını bekleyebiliriz araçlarının uzunluğu önemli olarak değil en azından 20 kb'nin en.
apnorton
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.