2009-11-12 23 views
12

Powiedzmy, że chcę zaszyfrować plik i jedynym sposobem, w jaki chcę go odczytać, jest wpisanie dwóch różnych osób. Na przykład są cztery klucze:Jak zaszyfrować coś, aby można go odszyfrować za pomocą dowolnych dwóch z trzech kluczy?

key1, key2, key3, key4.

Gdybym zaszyfrować go key1 następnie następujące kombinacje będzie go decypt:

  • Klawisz2, Key3
  • Key3, KEY4
  • klucz2, KEY4

Czy jest to możliwe przy użyciu standardowa metoda?

+0

Podobne, ale nie duplikat, pytanie: http://stackoverflow.com/questions/597188/encryption-with-multiple-different-keys –

+3

To, co opisujesz, to kryptografia progowa. Zobacz: http://en.wikipedia.org/wiki/Threshold_cryptosystem – Zarel

+1

Niestety, nie mogę znaleźć żadnych implementacji w Wikipedii lub Google. – Zarel

Odpowiedz

14

Generowanie unikalnego zawartość klucza do szyfrowania wiadomości (jest to wspólne dla wielu standardów szyfrowania wiadomości), a następnie zastosować erasure code schemat taki jak Reed-Solomon coding przed tym kluczem zawartości połączonego z wystarczająco dużo dodatkowych danych losowych, aby zapewnić, że każdy m z n"odłamki" klucza można połączyć, aby utworzyć końcowy klucz. Fragmenty są wydawane tylko z losowej części danych, więc żaden z podanych fragmentów nie zawiera faktycznych bitów z klucza zawartości. W ten sposób dowolna liczba zebranych odłamków krótkich od m nie daje żadnych użytecznych informacji o samym kluczu.

EDYCJA: Reed-Solomon do generowania odłamków klawiszy wydaje się być identyczny z Shamir's secret-sharing, opublikowanym po raz pierwszy w 1979 roku; dzięki @caf za wskazanie artykułu.

+0

Istnieje również licencjonowana przez GPL implementacja tajnego schematu Shamira: zobacz http://point-at-infinity.org/ssss/ – intgr

0

zrobić czwarty klucz suma kontrolna bitowe z pozostałych trzech ... można nawet kolejno przyrost której klucz miał wartość sumy kontrolnej .. tak że

  1. klucz 4 bit 1 była suma kontrolna bitu 1 w klucze 1-3, a
  2. klucz 1 bit 2 była kontrolna bitu 2 w klucze 2-4, a
  3. klucz 2 bity 3 była kontrolna bitu 3 przycisków 1,3,4 i
  4. Klucz 3 bit 4 był sumą kontrolną bitu 4 w kluczach 1,2,4 i
  5. Klucz 4 bit 5 była suma kontrolna bit 5 w klawisze 1,2,3, itp ...

trochę jak paski RAID 5 nie ...

W ten sposób, bez względu na trzy z czterech kluczy, które miałeś, możesz odtworzyć brakujący. użyj jakiejś kombinacji wszystkich czterech kluczy do zaszyfrowania wiadomości.

2

Załóżmy, że przypisanie klawiszy X1, X2, .. xN

zaszyfrować plik mistrza symetrycznego klucza M. Następnie przechowywać kilka zaszyfrowane kopie M:

  • Szyfrowane z x1 i x2
  • szyfrowane przy X2 i X3
  • szyfrowane przy X1 i X3
  • ...

Any dwa klucze odblokują jedną z zaszyfrowanych kopii wzorca, który odszyfruje plik.

+0

Zakłada to, że każdy koder ma wszystkie klucze. Musisz dodać klucz publiczny kryptograficzny. – Grumdrig

+0

O czym ty mówisz, Grumdrig? Nie jestem pewien, czy rozumiem. – Zarel

+1

To eksploduje kombinacyjnie dla większej liczby kluczy: potrzebujesz n!/M! (N-m)! kopie w tak uproszczonym schemacie! –

1

Nie tak jak państwo to stwierdzacie, nie sądzę. Ale możesz uzyskać taki sam efekt jak ten: użyj klucza publicznego krypto; teraz są 4 klucze publiczne i 4 prywatne. Jako osoba nr 1, zaszyfruj wiadomość każdą parą kombinacji pozostałych 3. E.g. zaszyfrować wiadomość za pomocą klucza 2, a następnie zaszyfrować kluczem 3. Teraz zaszyfruj wiadomość kluczem 2, a następnie zaszyfruj kluczem 4. Wreszcie, 3, a następnie 4. Teraz, jeśli dwaj inni się połączą, mogą odzyskać oryginalną wiadomość .

4

Generowanie klucza symetrycznego key1 losowo i użycie go do zaszyfrowania danych, a następnie wygenerowanie key2, key3 i key4 z key1 za pomocą Shamir's Secret Sharing protocol.

Aby bezpiecznie dystrybuować klucz2, klucz3 i klucz4, można użyć algorytmu klucza publicznego do zaszyfrowania za pomocą kluczy publicznych odbiorców.

Powiązane problemy