2009-10-08 12 views
8

Potrzebuję zaimplementowanych zabezpieczeń komunikacji klient-serwer. I wprowadziły następujące hybrid cryptosystemJak komunikować inicjowanie AES Wektor do klienta dla hybrydowego kryptosystemu

zaszyfrować wiadomość skierowana do Alicji w hybrydowym kryptosystemu Bob wykonuje następujące operacje:

  1. Pobiera klucz publiczny Alicji.
  2. Generuje nowy klucz symetryczny dla schematu enkapsulacji danych.
  3. Szyfruje wiadomość pod schematem enkapsulacji danych za pomocą wygenerowanego właśnie klucza symetrycznego.
  4. Zaszyfruj klucz symetryczny w schemacie enkapsulacji klucza, używając klucza publicznego Alicji.
  5. Wyślij oba te szyfrowania do Alicji.

Aby odszyfrować ten hybrydowy szyfrogram, Alice wykonuje następujące operacje:

  1. używa swojego prywatnego klucza do odszyfrowania klucza symetrycznego zawartą w segmencie enkapsulacji klucza.
  2. używa tego klucza symetrycznego do odszyfrowania wiadomości zawartej w segmencie enkapsulacji danych.

Używam RSA Dla kryptosystemu klucza publicznego i AES dla kryptosystemu klucza symetrycznego. Wszystko działa dobrze, ale nie wiem, jak sobie poradzić z wektorem inicjującym AES. Obecnie łączę klucz AES i wektor inicjalizacyjny, zaszyfrując go kluczem publicznym i wysyłając go na serwer.

Chciałam tylko poznać opinie na temat tego podejścia. W jaki sposób ten problem został rozwiązany przez inne protokoły komunikacyjne SSL itp.

Dzięki.

Odpowiedz

9

Nie szyfrujesz IV. Załaduj go zaszyfrowanym kluczem i wyślij go (w sposób wyraźny) do odbiorcy.

Normy do tego istnieją. Schemat ten nazywa się "KeyTransRecipientInfo" w CMS (na którym opiera się S/MIME), a PGP oferuje podobny tryb. Protokół TLS zawiera również wektor inicjujący jako parametr w kluczowym identyfikatorze algorytmu szyfrowania, wykorzystujący tę samą składnię ASN.1, co CMS. Solidna biblioteka o otwartym kodzie źródłowym do wykonywania tej operacji jest dostępna dla wielu, wielu platform.

Badanie specyfikacji CMS może przynajmniej pomóc w uniknięciu wielu pułapek związanych z wdrażaniem własnego browaru. Zobacz §6.1 and §6.2.1 of RFC 3369.

2

Zrobiłem to samo i potraktowałem to w ten sam sposób - połącz klucz AES z IV i zaszyfruj oba.

Można również po prostu wysłać klucz i użyć klucza do wygenerowania IV - na przykład przy użyciu pierwszych 128 bitów skrótu klucza jako IV. To powinno być bezpieczne pod warunkiem, że generujesz nowy klucz AES dla każdej sesji i nie używasz ponownie tego samego klucza AES z tą samą IV.

2

Nie ma żadnego powodu, aby zaszyfrować IV - można to wysłać w sposób jasny. Po prostu upewnij się, że wybierasz nowy za każdym razem (tak samo jak robisz klucz AES).

Powiedziawszy, często wygodnie jest spakować klucz AES i IV razem. Szyfrowanie 16 bajtów nie jest tak drogie.