Soru:
Bir özel anahtarın bir kısmını herkese açık olarak paylaşmanın riski ne kadar büyük?
Jamie Bull
2017-12-12 16:53:01 UTC
view on stackexchange narkive permalink

İki kişi aynı (örneğin 256 bit) özel anahtara sahip olup olmadıklarını kontrol etmek isterse, potansiyel olarak herkese açık bir kanal üzerinden ilk 8 karakteri paylaşmanın riski ne kadar büyük?

Bir saldırgan kurtarabilir mi? bu karakterlerden daha fazla bilgi var mı ve / veya bir saldırgan bu 8 karakter verilen anahtarı ne kadar hızlı kırabilir?

RSA gibi asimetrik kriptografide özel bir anahtardan mı bahsediyorsunuz, yoksa AES gibi simetrik anahtarlardan mı bahsediyorsunuz?Cevap, hangisinden bahsettiğinize bağlı olarak önemli ölçüde farklılık gösterir.
Görünüşe göre insanlar bu sorunun sahip olduğu popülerlik nedeniyle yanlış cevaplar veriyor.4096 bitlik bir anahtarın 2 ^ 4096 anahtar uzayına sahip olduğundan, büyük bir RSA'yı çarpanlara ayırmanın kaba zorlamadan daha zor olduğunu iddia eden ve böyle bir anahtarın temel yapısını bile anlamayan insanlar hakkında konuşuyorlar.hepsi homojen.Gerçek cevaplar istiyorsanız muhtemelen Crypto.SE'ye gitmelisiniz.
Yorumlar uzun tartışmalar için değildir;bu konuşma [sohbete taşındı] (http://chat.stackexchange.com/rooms/70261/discussion-on-question-by-jamie-bull-how-great-is-the-risk-in-publicly-paylaşım-p).
Yedi yanıtlar:
Stephane
2017-12-12 17:21:31 UTC
view on stackexchange narkive permalink

Özel anahtarın herhangi bir bölümünü sağlamak, en azından marjinal olarak, bir saldırgana keşfedilmesi için daha küçük bir potansiyel anahtar alanı sağladığı için onu daha az güvenli hale getirir.

Başarısız oluyorum. ne elde etmek istediğinizi anlamak için. İki kişinin aynı bilgiye sahip olup olmadıklarını kontrol etmek için yapması gereken tek şey bir hash alışverişidir.

Bir protokol tasarlıyorsanız ve tekrar saldırıları konusunda endişeleriniz varsa, bir HMAC kullanarak bir sınama yanıtı gerçekleştirerek buna karşı korunabilirsiniz.

Düzenle :

Yorumlarda önerildiği ve DW'nin kapsamlı cevabında açıklandığı gibi, özel anahtarınızın güvenliği üzerindeki etkisinin, tam olarak hangi algoritmanın sizin kullanıyorlar. En kötü senaryoda, özel anahtarın yalnızca küçük bir bölümünü açığa çıkarmak, o anahtarın güvenliğini tamamen kıracaktır.

Özel anahtarlar, geniş bir anahtar alanına sahip olarak güvenlik sağlamaz, büyük yarı suçları faktoring yapmanın zorluğu ile güvenliği sağlarlar.Özel anahtarın bir kısmının sızdırılması, eşdeğer miktarda bilgi sızdırmaz.
Özel anahtardaki tüm bilgiler * eşit değildir *, bu nedenle "eşdeğer faktör" yoktur.Modülü veya genel üssü sızdırırsanız hiçbir şey olmadı (genel anahtarı paylaşmaya kıyasla).Asal sayıların "% 50" sini sızdırırsanız,% 100 kemikleşmiş olursunuz.
Yorumlar uzun tartışmalar için değildir;bu konuşma [sohbete taşındı] (http://chat.stackexchange.com/rooms/70243/discussion-on-answer-by-stephane-how-great-is-the-risk-in-publicly-sharing-Bölüm).
D.W.
2017-12-13 08:44:41 UTC
view on stackexchange narkive permalink

Özel anahtarın bir kısmını açığa çıkarmak, bazı asimetrik (açık anahtarlı) şifreleme sistemleri için felaket olabilir. Kesin risk seviyesi, tam olarak hangi şifreleme sistemini kullandığınıza bağlıdır. Bazı örnekler:

  • Genel anahtar için e = 3 ile RSA kullanıyorsanız, özel anahtarın 1 / 4'ünü (d'nin düşük 1/4 biti) bir saldırganın tüm özel anahtarı yeniden yapılandırmasına izin verecek kadar. Örneğin, 2048 bit RSA kullanıyorsanız ve özel anahtarın en az önemli 512 bitini ortaya çıkarırsanız, bir saldırgan özel anahtarınızın geri kalanını kurtarabilir. Bu sonuç Boneh, Durfee ve Frankel'den kaynaklanıyor. Literatürde buna benzer başka sonuçlar da vardır (örneğin, en önemli bitler, rastgele bir bit alt kümesi vb.).

  • DSA ile, eğer birkaç bit ise Her imzada kullanılan nonce'dan sızan (çeşitli imzalar için), bu, özel anahtarı kurtarmak için yeterlidir. Örneğin, 4000 imzanın her birinde kullanılan 5 bit gizli nonce gözlemleyebiliyorsanız, bu 384 bitlik bir ECDSA özel anahtarını kurtarmak için yeterlidir. Bu, özel anahtarı tam olarak açığa vurmuyor (imzalama sırasında üretilen diğer bazı gizli değerleri açığa çıkarıyor), ancak benzer.

Diğer yanıtların sorun olmadığını söylediğini biliyorum. Bu cevaplar, simetrik anahtarlı bir şifreleme sistemi kullandığınızı varsayıyor olabilir. Çoğu simetrik anahtar şifreleme sistemi için, anahtarın bir kısmını açığa çıkarırsanız, ancak anahtarın yeterli kısmı açığa çıkarılmamışsa, muhtemelen yine de güvende olacaklardır. Asimetrik şifreleme sistemleri söz konusu olduğunda işler farklıdır. Diğer yanıtlar, kaba kuvvetin (mümkün olan tüm özel anahtarları kapsamlı bir şekilde denemek) şifreleme sistemine karşı mümkün olan en iyi saldırı olduğunu varsayıyor gibi görünüyor. Çoğu asimetrik şifreleme sistemi için bu varsayım doğru değildir.

Diğer cevaplarda neyin yanlış olduğunu açıklamak için +1 (simetrik bir şifre varsayarak).OP'nin ne tür bir sistem hakkında sorduğuna bağlı olarak, bu konu ya tehlikeli bir şekilde yanlış ya da oldukça makul.
zakinster
2017-12-12 19:47:49 UTC
view on stackexchange narkive permalink

Bir saldırgan bu 8 karakter verildiğinde anahtarı ne kadar hızlı kırabilir?

Ne tür bir anahtardan bahsettiğimizi ve hangi algoritmanın kullanıldığını bilmeden cevap vermek zor

Anahtarın tamamen rastgele olduğu simetrik şifreleme söz konusu olduğunda (her bitin anahtarın genel belirsizliğinde eşit rol oynadığını anlayın), o zaman esas olarak "1 karakter" in terimlerde neyi temsil ettiğine bağlıdır. ikili veri. Genel olarak, n bit i açığa çıkararak, olası anahtarların sayısını en az 2 ^ n katsayısıyla etkili bir şekilde azaltırsınız.

  • 1 karakter = (0 veya 1) = 1 bit olduğu ikili metin gösterimi durumunda: 8 karakter, 2 ^ 8'lik bir azaltma faktörü anlamına gelir = 256 .
  • 1 karakter = 4 bit olduğu onaltılı gösterim durumunda: 8 karakter, 2 ^ 32 = 4294967296 .
  • 1 karakter = 6 bit olduğu bir base64 gösterimi durumunda: 8 karakter, 2 ^ 48 = 281474976710656 azaltma faktörü anlamına gelir .

Açıklanan bilginin miktarına bağlı olarak hangisi, olası (mevcut veya gelecekteki) zayıf yönlerinize bağlı olarak anahtarınızı kırmak için bir kaldıraç olarak kullanılabilir (veya kullanılmayabilir). şifreleme algoritması.

Ayrıca, anahtarın tamamen rastgele olmadığı asimetrik şifreleme durumunda (örn. RSA'da asal faktör modülü ve üs), n bit açığa çıkarılmasının aslında çok daha yararlı bilgiler ve felaket bir güvenlik kaybına yol açabilir.

Ama asıl soru şudur:

Neden birinin bunu yapması gerekir?

Yalnızca bu yöntem potansiyel bir güvenlik teşkil etmez kusur, güvenilirlik amacınıza uygun görünmüyor, peki ya kalan 248 bit?

Tanımladığınız yöntem, tamamen sürekli (bütünlük kontrolü için çok kötü) ve kısmen geri döndürülebilir (güvenlik açısından çok kötü) çok önemsiz bir hash işlevidir.

Gerçekten bunu yapmanız gerekiyorsa, SHA-256 gibi çok daha güvenli bir karma oluşturacak güvenli ve geniş çapta kullanılabilen bir şifreleme karma işlevi kullanın (pratik olarak geri çevrilemez ve hesaplama açısından yoğun) ve "ilk 8 karakterden" çok daha çarpışmaya dayanıklı .

Asimetrik şifreleme kullanıyorsanız, hiçbir zaman özel anahtarın herhangi bir bölümünü (karma bile olsa) paylaşırsanız, bunun yerine genel anahtarı kullanın .

Damon
2017-12-12 21:32:01 UTC
view on stackexchange narkive permalink

"8 karakter" in ne anlama geldiğine ve hangi algoritmaların kullanıldığına bağlı olarak "kritik değil ama biraz aptalca" ile "felaket" arasında değiştiğini söyleyebilirim.

Okursa " 8 karakter "kelimenin tam anlamıyla olduğu gibi, 64 bit, sonra anahtar boyutunuzu 64 bit azaltırsınız (" char "temel 64 kodlanmış karakter olarak varsayılırsa, o zaman yalnızca 48 bit olur).

"Özel anahtar" ın aslında simetrik bir algoritmaya (olası değil mi?) atıfta bulunduğunu varsayarsak, bu muhtemelen tolere edilebilir, çünkü 192 bit kaba kuvvetin çok ötesinde. Ama yine de, neden ilk başta 256 bitlik bir anahtar kullanalım?

"Özel anahtar, 256 bit" varsayıldığında, bir çeşit eliptik eğri kripto kullanacağınız anlamına gelir (simetrik şifreler için, "özel" çok az şey yapar tüm anahtarlar gizli olduğundan ve RSA ve diğerleri için 256 bit kullanışlı olamayacak kadar küçük olduğundan), güvenlik seviyenizi 128 bitin biraz altından (şu anda mümkün değildir) 96 bitten biraz daha az. Hangisi ... pekala, tam olarak uygulanabilir değil, ama neredeyse. Kuantum bilişimin henüz tam olarak orada olmadığını, ancak yolda olduğunu düşünürsek, "tam olarak değil, neredeyse" bir tür felakettir.
Sonuçta, birinin planladığı şey en kötü durumdur, en iyi durum em değil >.

Bunu yapmak kesinlikle,% 100 gereksiz olduğu için daha da feci.

İki taraf bir gizli anahtarı paylaşıyorsa, aynı anahtar olduğundan emin olmanın çok açık bir yöntemi yeterince uzun (karma çıktıdan daha uzun) rasgele bit modelini şifrelemek, diğer tarafın bit modelinin şifresini çözmesine izin vermek ve bit modelinin güvenli bir karmasını (örneğin, SHA-256, SHA3, her neyse) geri göndermek olacaktır.
İlk taraf, orijinal rastgele modelde hash hesaplamasının sonucuyla önemsiz bir şekilde karşılaştırabilir.

Hiçbir zaman özel anahtar (veya bir kısmı) iletilmez, hatta söz konusu anahtarın bir karması (ki bu pek olası değildir, ancak muhtemelen tersine çevrilebilir veya bir kısmına yönelik bir ipucu sağlayabilir) ve oradan beri çıktı bitlerinden daha rastgele girdi bitleridir, hash değerinden hash edilmiş orijinal bit modelini belirlemek ve bunu şifrelemede bir açı elde etmek için kullanmak imkansızdır.

Saldırgan yalnızca görebilir orijinali elde etmek için (bilinmeyen) anahtarı bilmesi gereken rastgele bir bit kalıbı ve birçok bit modelinden biri olabilecek (hangisini bilemeyeceği) başka bir bilinmeyen bit modelinin karması.

Akıllı sıfır bilgi kanıtı!
entrop-x
2017-12-12 20:34:16 UTC
view on stackexchange narkive permalink

Diğerleri, bilginin ne kadar sızdırıldığına ve dolayısıyla bir saldırgan için entropinin ne kadar azaldığına göre yanıt verdiler; ve hash'lerin (genel olarak) karşılaştırılması gereken ana nokta da not edildi.

Ancak bu, anahtarları karşılaştırmak isteyen iki kişinin birbirine güvendiğini varsayıyor. Birbirlerine güvenmezlerse, sorun şu ki, eğer A, B'ye hash (K) gönderirse, B, A'nın B'den aynı veya farklı bir K'ye sahip olduğunu bilebilir, ancak hile yapıp aynı hash'i geri gönderebilir, A'yı yanlışlıkla B'nin de aynı anahtara sahip olduğunu düşündürüyor.

Bu soruna çözüm, A'nın B'ye hash (K) göndermesi ve B'nin A'ya hash (K değil) göndermesini beklemesidir. , burada K, K'nin bitsel çevrilmiş değeri olmadığı durumlarda, bu hash'ı A'ya ancak gerçekten K'ye sahipse gönderebilir.

Bu, bir soruna düzgün ve akıllıca bir çözüm olsa da, bunun başlıkta belirtildiği gibi soruyu yanıtladığını düşünmüyorum.
@Anders: Orijinal soruda "aynı anahtara sahip olup olmadıklarını kontrol et" ile ne anladığına ve bunun sadece güvensiz bir bağlantı üzerinden karşılıklı olarak güvenen taraflarca yapılan bir kontrol olup olmadığına veya karşı tarafa da güvenilmeyip güvenilmeyeceğine bağlıdır.
AMADANON Inc.
2017-12-13 07:24:33 UTC
view on stackexchange narkive permalink

NOT Aşağıda doğrusal bir hızlanma varsayılmaktadır (kaba kuvvet saldırısında kazanılacağı gibi) - hızlanma, algoritmaya bağlı olarak ÜST DAHA FAZLA olabilir.

Büyük sayıları anlamak çok zor - cevap geldiğinde ben bile şaşırdım. İşte bunun hakkında düşünmenin bir yolu:

Herhangi bir bilgi olmadan, 8'in yardımıyla bir anahtarı kırmak 13,8 milyar yıl (şimdiye kadarki evrenin yaşı) alırsa ikili karakterler yalnızca 0,023 saniye sürer.

Bu: 13,8 milyar yıl / 2 (bits_per_symbol * number_of_symbols) .

Siz sembollerin sayısının "8 karakter" olduğunu ve sembol başına 8 bit olan ikili olduğunu varsayıyorum. yani: 13,8 milyar yıl / 2 (8 * 8)

Eğer uuencoded veya base64 iseler, sembol başına 6 bit olacaktır, bu yüzden hepsini 25 alacaktır kalan kombinasyonlar üzerinde çalışmak için dakika.

Bu oranlar yalnızca açığa çıkardığınız bit sayısı için geçerlidir ve anahtarın ne kadar uzun olduğuna bakılmaksızın (yalnızca anahtarın kırılması 13,8 milyar yıl sürer ).

Açık anahtar şifrelemesinin tüm amacı, ASLA ASLA özel anahtarı paylaşmanıza gerek kalmamasıdır. Her özel anahtar yalnızca tek bir yerde bulunmalı ve asla bir ağ üzerinden geçmemelidir. Anahtarların gönderilmesi, açık anahtar şifreleme ilkesine aykırıdır. Kısmen veya başka şekilde, ASLA özel anahtar göndermeye gerek yoktur.

İki (veya daha fazla) farklı cihazın aynı mesajı çözebilmesini istiyorsanız, her birinin kendi özel anahtarını oluşturmasını sağlayın, size açık anahtarlarını (güvenli bir şekilde !!) sonra mesajı her iki anahtarla şifreleyin. Genellikle PKC ile, uzun mesajlar rastgele bir anahtarla simetrik şifreleme kullanılarak şifrelenir ve ardından anahtar PKC ile şifrelenir ve mesajla birlikte gönderilir; rastgele anahtarı birden çok genel anahtarla kolayca şifreleyebilir ve hepsini aynı mesajla gönderebilirsiniz.

Tek yapmak istediğiniz, özel anahtara sahip olduğunuzu göstermekse, aşağıdakileri yapabilirsiniz:

Kanıtlamak istediğiniz kişiden rastgele bir değer ("nonce") sağlamasını isteyin . Kendinize ait rastgele bir değer ekleyin, hash'leyin ve hash'i imzalayın. Rastgele değerinizi ve imzanızı geri gönderin.

Karşı tarafınız daha sonra gönderdiği nonce'yi ve rastgele değerinizi alacak, hash hale getirecek ve imzayı genel anahtarınızla kontrol edecektir.

Gönderenden rastgele bir değer eklemek, daha önce gerçek sahip tarafından imzalanmış bir değeri seçmediğinizi kanıtlar.

HİÇBİR KOŞUL ALTINDA başka biri tarafından gönderilen bir şeyi kabul ETMEYİN ve herhangi bir değişiklik olmadan imzalamak. Size yazdıkları bir belgenin parmak izini gönderebilirler ve bu belgeyi etkili bir şekilde imzalarsınız.

Açık anahtar şifrelemesi için, bir anahtardaki her bit eşdeğer değildir ve ne kadar zayıflatılacağını hesaplamak için basit anahtar alanı argümanlarını kullanamazsınız.Simetrik bir anahtar için bu geçerli bir argüman olabilir, ancak 256 bitlik bir anahtar alanının 13,8 milyar yılda aranabileceği varsayımınız yanlıştır.8 karakter 64 bittir.64 bit azaltılmış 256 bit anahtar hala 2 ^ 192 anahtar alanına sahiptir ve bu kesinlikle 0,023 saniyede aranamaz.** Bu cevabın bir büyüklük sırası dahilinde bile doğru olması için saniyede bir quattuorsexagintillion anahtar tahmin etmeniz gerekir. **
O hızda hesaplanabileceğini hiç söylemedim.Demek istediğim, azalmanın oranıydı.insanlar 2 ^ 256 ile 2 ^ 192'yi karşılaştırmakta zorlanırlar, hatta "1 / (2 ^ 64) kat daha uzun sürer", oysa insanlar evrenin yaşının -> 23ms, oldukçabüyük azalma.Belirli bir algoritmaya atıfta bulunulmadan, bir anahtarı kırmanın ne kadar süreceği hakkında hiçbir şey söylenemez.
O zaman bu, soruya bir cevap değil, büyük sayıların anlaşılmasının ne kadar zor olduğuna dair bir açıklama gibi görünüyor.Asimetrik kriptografiyi mi tanımlıyorsunuz (bunu genel / özel anahtar çiftlerinden bahsettiğiniz için hayal ediyorum)?Öyleyse, diğer yorum ve cevapların da belirttiği gibi, hızlanma da doğrusal olmayacak.
Anlaşılır bir karşılaştırma yapmanın bu konuşma ile son derece alakalı olduğunu düşünüyorum.Cevabım (çoğunlukla) simetrik asimetrik olup olmadığından bağımsızdır, ancak doğrusal bir hızlanma (örneğin kaba kuvvet) varsayar.Bu varsayım doğru olmayabilir.Asimetrik kriptografide, doğrusal olmasını zorunlu olarak durduran bir şey var mı?Bazılarının (örneğin, en yaygın kullanılan RSA, EC) daha iyi saldırılara sahip olduğunu anlıyorum, bu her şeyin (zorunlu) olduğu anlamına mı geliyor?
Bildiğim kadarıyla, tüm açık anahtarlı şifreleme sistemleri, ayrık log problemi, büyük yarıçapları hesaba katma, en kısa vektör problemi, vb. Gibi "sertlik problemlerine" dayalıdır.problemi çözmek için mevcut en iyi algoritma (örneğin, tamsayı çarpanlara ayırma için GNFS).Simetrik kripto ise tamamen farklı teknikler kullanır.Sertlik problemlerini kullanmak yerine, feistel ağları, ikame-permütasyon ağları, ekle-döndür-xor vb. Gibi şeylerle "karışıklık ve yayılma" ortaya çıkarırlar.
emory
2017-12-14 20:16:12 UTC
view on stackexchange narkive permalink

Alice ve Bob aynı özel anahtarı paylaştıklarından şüpheleniyorlarsa, neden olmasın?

  1. Alice nonce X üretir.
  2. Alice X'i kendisine şifreler - Y.
  3. Alice, Bob'a X, Y gönderir.
  4. Alice ve Bob gerçekten aynı özel anahtara sahipse, Bob Y'nin şifresini çözdüğünde X'i alacaktır. Artık Bob, Alice'in kendi özel anahtar.
  5. Bob aynı şeyi tersine yapar. Artık Alice, Bob'un kendi özel anahtarını paylaştığını biliyor.

Ben bir kriptografi uzmanı değilim. Bir şeyi mi kaçırıyorum?

Yukarıdakilerin sırlarını ifşa etmeden sorularını tatmin edeceğini düşünüyorum. Eve de sorunun cevabını bilmeyecek.

Bu iyi bir cevap.Ben de aynısını yazmak üzereydim!Ve 2 kişinin (/ server / etc) aynı özel anahtarlara sahip olmaması gerektiğini eklemiştim!
@OlivierDulac bunun bir problem olmadığı konusunda haklısınız
Soruda özel anahtarın asimetrik kriptoda özel anahtar olup olmadığı söylenmedi.Simetrik bir özel anahtar ise mantıklıdır.Ve asimetrik bir anahtar çiftinin parçasıysa, hiçbir anlamı yoktur: genel anahtarları karşılaştırırsınız!"Aynı şifreyi kontrol etmekten" bahsediyor olabiliriz.
İki kişi aynı özel anahtarı paylaşıyorsa (aynı algoritmayı kullanarak, örneğin RSA), o zaman aynı ortak anahtarı paylaşmaları GEREKİR.Böylece Alice, https://keyserver.pgp.com gibi genel bir anahtar dizininde kendi genel anahtarını arayabilir.Bu, tek seferde milyonlarca anahtarı kontrol etmesini sağlar.
@AMADANONInc.Bunun kesinlikle doğru olduğuna inanmıyorum.İspatlayabilir misin?
@emory Yapamam.Genel anahtar, P ve Q'nun asal olduğu (P * Q) 'dur, bu nedenle genel anahtarın asal faktörleri (P, Q) veya (Q, P) olmalıdır.Özel anahtar bir "e" ve ((P-1) * (Q-1)) değerinden türetilir, bu nedenle P ve Q'nun sırası önemli değildir.E'nin değeri ya protokole yazılır (tüm anahtarlar için aynı değer, örneğin 3 veya 65537) ya da genel anahtarın bir parçasıdır.Özel anahtar, (d * e-1) / ((p-1) * (q-1)) bir tamsayı olduğu herhangi bir d değeri olabilir.Bunun için birden fazla cevap var mı bilmiyorum.Bununla birlikte, birden fazla yanıt varsa, bunların tümü ortak anahtar için eşdeğer özel anahtarlardır.


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...