birden çok anahtarla şifreleme / şifre çözme


110

Verileri birkaç farklı anahtarla deşifre edilebilecek şekilde şifrelemek mümkün mü?

Misal:

Verileri key1 ile şifreledim, ancak 2, 3 ve 4 anahtarlarıyla şifresini çözebilmek istiyorum.

Mümkün mü?

Yanıtlar:


170

GnuPG , standart olarak çok anahtarlı şifreleme yapar.

Aşağıdaki komut, doc.txtAlice için genel anahtarı ve Bob için genel anahtarı kullanarak şifreleyecektir . Alice, özel anahtarını kullanarak şifresini çözebilir. Bob, özel anahtarını kullanarak da şifresini çözebilir.

gpg --encrypt --recipient alice@example.com \
    --recipient bob@example.com doc.txt

Bu özellik "başlıklı kullanıcı kılavuzu bölümünde ayrıntılı edilir Şifreleme ve şifre çözme belgeler "


Aynen. Bunu nasıl yapacağımı bilmek harika, ama üzerinde bir adam sayfası gizleyemiyorum.
MarkusQ

@Mitch, bir cevap yayınlanmıştır olabilir bizim cevabım var! (Lütfen test edin ve eğer öyleyse / değilse
övün

@MarkusQ, yukarıdaki Mitch ile olan bağlantıma bakın . Test edin / yapabilirseniz teşekkürler! :-)
pythonlarry

Yani bu, anahtar başına 1 dosya değil, özel anahtar kullanılarak okunabilen 1 şifreli dosya ile sonuçlanır.
user8675309

7
@ user8675309, Evet. Veriler, ortak bir simetrik anahtarla şifrelenir. Yalnızca simetrik anahtar, her alıcının genel anahtarı tarafından şifrelenir. Her alıcı için tüm verileri yeniden şifrelemiyor.
wisbucky

55

Evet mümkün

Evet, birden fazla alıcı için şifreleme mümkündür. Ayrıca, birine gönderdiklerinizi okuyabilmek ve bunu yapmak için alıcılar listesinde olmanız gerektiğini düşündüğünüzde mantıklı görünüyor .

Komut satırı

Bunu gpgkomut satırı aracılığıyla nasıl yapacağınız aşağıda açıklanmıştır ( David Segonds'un cevabında açıklandığı gibi ):

gpg --encrypt \
  --recipient alice@example.com \
  --recipient bob@example.com \
clear-message.txt

GUI istemcisi

GUI'niz birkaç kişi için şifreleme yolu sağlamalıdır

Mekanizma

Bilgi Güvenliği , GPG Dosya boyutu ve birden fazla alıcıyla ilgili bir soru var mı? , şifreleme mekanizmasını açıklar :

GPG, dosyayı bir kez simetrik bir anahtarla şifreler, ardından hedef anahtar çiftini tanımlayan bir başlık ve simetrik anahtarın şifrelenmiş bir sürümünü yerleştirir.

[...] Birden çok alıcıya şifrelendiğinde, bu başlık birden çok kez yerleştirilerek her alıcı için aynı simetrik anahtarın benzersiz şekilde şifrelenmiş bir sürümünü sağlar .


4
son iki cümle için özel teşekkürler: şimdi her şeyi tamamen netleştirdiler!
radistao

31

GnuPG ve PGP istemcileri genel olarak gerçek verileri "oturum anahtarı" adı verilen simetrik bir anahtarla şifreler. Oturum anahtarı daha sonra her "alıcı anahtarı" ile (yani -r / - alıcı ile belirlediğiniz anahtarlar) şifrelenir. Bu bazen hibrit şifreleme olarak adlandırılır . Şu anda, GnuPG'nin düz metin verilerini söz konusu AES-256 oturum anahtarına şifrelemek için varsayılan olarak 256 bit oturum anahtarları ve AES kullandığına inanıyorum ve alıcı anahtarlarınız sizin RSA / DSA / ECDSA / vb. bu durumda asimetrik anahtar.

Bunu bu şekilde yapmanın bir nedeni, AES gibi simetrik kriptografik algoritmaların genellikle RSA gibi asimetrik olanlardan çok daha hızlı olmasıdır. GnuPG bu nedenle RSA ile sadece ~ 256 biti (oturum anahtarı) şifrelemek zorundadır ve bu oturum anahtarıyla verileri şifrelemek için (istediğiniz kadar büyük!) AES kullanabilir. Intel makinelerinde donanımda algoritmanın bazı adımlarını gerçekleştirmek için yerleşik bir talimat olan AES-NI bile vardır , bu da GnuPG'yi verileri şifreleme / şifre çözme konusunda ekstra hızlı hale getirir.

Bunu bu şekilde yapmanın bir başka nedeni de, PGP ile şifrelenmiş belgelerin, belgenin boyutunu iki katına çıkarmak zorunda kalmadan birden çok tarafa şifrelenmesine izin vermesidir. Şifrelenmiş bir belge için birden fazla alıcı belirttiğinizde (örneğin gpg -ea -r Alice -r Bob -o ciphertext.asc), depolanan şifreli belgenin (ciphertext.asc) Alice'e şifrelemişsiniz gibi 2 kat daha büyük olmadığına dikkat edin.

Yalnızca oturum anahtarının şifresini çözebilmek için gpg man sayfasındaki--show-session-key parametreye de bakın ; örneğin, üçüncü bir tarafın size şifrelenmiş bir belgenin özel anahtarınızı veya düz metin verilerinizi aktarmasına gerek kalmadan şifresini çözmesine izin vermek için.


1
Şifrelenmiş belgenin n'nin imzalayanların sayısı olduğu n kat daha büyük olmamasıyla ilgili açıklama için teşekkürler.
theartofbeing

4

Evet mümkün. Başlangıç ​​için Google "çok taraflı şifreleme".

AFAIK, içinde bırakma yok ve bunun için paket kullan.

- MarkusQ

Not: Nasıl yapılabileceğinin bir taslağı için şunu düşünün. Şifrelenmiş mesaj şunlardan oluşur:

  • yük, tek seferlik bir ped ile şifrelenmiş
  • key1 ile şifrelenmiş bir zaman çizelgesi
  • key2 ile şifrelenmiş bir zaman çizelgesi
  • ...
  • keyN ile şifrelenmiş bir zaman çizelgesi

İ tuşunu tutan alıcı, pedin kopyasının şifresini anahtarıyla çözer ve ardından yükün şifresini çözer.

Ancak, bu sadece yapılabileceğinin ve gerçek bir uygulama olarak berbat olacağının bir kanıtıdır . Mümkünse, kendi şifrelemenizi döndürmekten kaçınmalısınız. Nedenini anlamıyorsanız, kesinlikle kendi şifrelemenizi devirmekten kaçınmalısınız.

-----Düzenle ------------

Yanılıyorsam ve Gnu araçları bunu yaparsa, onları kullanın. Ama nasıl yapılacağına dair herhangi bir bilgi bulamıyorum.


1
Bununla ilgili berbat olabilecek şey, bir zaman çizelgesini öğrendikten sonra, diğer anahtarlar için şifrelenmiş değerlerin yanı sıra bilinen bir düz metne sahip olmanızdır. Bu bilgileri kullanarak, diğerlerinin anahtarlarının ne olduğunu bulmayı kolaylaştırabilirsiniz.
Kibbee

2
Google'da "çok taraflı şifreleme" pek ortaya çıkmaz. Bu durumu da kapsayan "yayın şifrelemesi" ile muhtemelen daha şanslı olacaksınız.
staktrace

1
@Kibbee: Anahtarlar gizli değil, halka açıklar. Bu yüzden ne olduklarını bulmayı kolaylaştırmak önemli değil. (Bu şemalar yalnızca şifreleme için kullanılabilen, şifre çözme için kullanılabilen anahtarlarla kullanılır.)
David Schwartz

5
Gerçek uygulamaların paylaşılan tek seferlik bir ped kullanmadığından oldukça eminim (bu, düz metin ve şifreli metin kadar büyük olması ve dolayısıyla mesaj boyutunu iki katına çıkarması gerekir), ancak aslında paylaşılan bir simetrik şifreleme anahtarı kullanıyor (genellikle mesajdan çok daha küçüktür).
Joachim Sauer

-16

Çoklu (ikiden fazla) anahtarlı RSA belki şuna benzer - iyi bir matematikçi değilim, bu yüzden bu algoritma mutlaka güvenli değil, sadece onunla bir fikir vermek istiyorum.

m = p * q * r; p, q, r büyük asal sayılardır

fi (m) = (p-1) (q-1) (r-1)

d == (e1 * e2 * e3 * ... * ei) ^ (- 1) (mod fi (m)); e1 ... ei keyfi sayılardır, d denklemi yerine getirmek için hesaplanır

y1 == x ^ e1 (mod m)

y2 == y1 ^ e2 (mod m)

y3 == y2 ^ e3 (mod m)

...

x == yi ^ d (mod m)

Bu algoritma, örneğin The Onion Router'ın hızını artırmak için kullanılabilir.

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.