it-swarm-eu.dev

Jak šifrovat zprávy / text pomocí RSA & OpenSSL?

Mám Alice veřejný klíč. Chci poslat Alice šifrovanou zprávu RSA. Jak to mohu udělat pomocí příkazu openssl?

Zpráva je:

Ahoj Alice! Vezměte prosím na večeři malacpörkölt!

29
LanceBaynes

Na stránce openssl manual (openssl man) vyhledejte RSA a uvidíte, že příkaz pro šifrování RSA je rsautl. Poté si přečtěte rsautlman stránk a uvidíte jeho syntaxi.

echo 'Hi Alice! Please bring malacpörkölt for dinner!' |
openssl rsautl -encrypt -pubin -inkey alice.pub >message.encrypted

Výchozí schéma vycpávky je původní PKCS # 1 v1.5 (stále se používá v mnoha procotols); openssl také podporuje OAEP (nyní doporučeno) a hrubé šifrování (užitečné pouze za zvláštních okolností).

Přímé použití openssl je většinou cvičení. V praxi byste použili nástroj jako gpg (který používá RSA, ale ne přímo k šifrování zprávy).

Nejprve, pokud chcete pouze dobré šifrování, měli byste se podívat na GnuPG . Pokud ale experimentujete a chcete se jen naučit, jak to funguje, musíte pochopit, co je RSA . RSA není navržen tak, aby šifroval libovolný řetězec, je to algoritmus, který šifruje celé číslo. Konkrétně celé číslo od 0 do n-1, kde n je hodnota modulu z veřejného klíče. Když mluvíte o klíči RSA, který má 1024 bitů, znamená to, že uložení modulu v binárním režimu trvá 1024 bitů. Toto je jeden z důvodů, RSA se používá v kombinaci se symetrickou klíčovou šifrou jako DES nebo AES . Můžete vygenerovat náhodný 256bitový klíč pro AES a zašifrovat jej pomocí 1024bitového veřejného klíče RSA. Pak kdokoli, kdo má přístup k soukromému klíči, může extrahovat symetrický klíč a dekódovat zprávu pomocí AES. Úplný standard pro RSA se nazývá PKCS # 1

Dále DES a AES jsou blokové šifry. Šifrují pouze data v bloku konkrétní velikosti. DES používá 64bitové bloky a AES používá 128bitové Chcete-li šifrovat více než blok, musíte použít provozní režim jako CBC nebo CTR. Tyto režimy určují, jak zašifrovat proud bitů pomocí šifry blokového režimu.

Nakonec je důležité ověřit data, která přijímáte. Zatímco útočník nemusí být schopen číst data v tranzitu, může být schopen převrátit bity bez detekce, pokud není na datový proud aplikována žádná integrita nebo autenticita. Útočník může snadno hádat, že připojení SSL k portu 443 je pravděpodobně požadavek webové stránky začínající GET / a mohl to převrátit změnou na PUT / bez zasahování do zbytku šifrování. Jednoduchý přístup k integritě je připojit konec MD5 nebo SHA-1 na konec, ale to poskytuje pouze integritu dat, nikoli autenticitu dat. Kdokoli s úplnou znalostí toku dat může vygenerovat správný součet, bezpečnějším přístupem je použití hashovaného klíče jako HMAC , který vyžaduje znalost tajný klíč pro generování, čímž poskytuje autentičnost dat kromě integrity.

25
penguin359

V níže uvedené poznámce můžete zadat jakýkoli požadovaný algoritmus, ať už jde o ty uvedené nebo RSA (i když nevím přesný název používaný pro RSA pomocí OpenSSL)

použijte "openssl enc -help" pro získání seznamu podporovaných šifrů ve vašem systému a předejte to jako argument. např. "-aes256"

Poznámka: V mém systému nemám RSA ve svých možnostech - alespoň pod tímto jménem.


Jak zašifruji zprávu S/MIME?

Řekněme, že vám někdo pošle její veřejný certifikát a žádá, abyste jí zašifrovali nějakou zprávu. Uložili jste její certifikát jako her-cert.pem. Odpověď jste uložili jako my-message.txt.

Chcete-li získat výchozí - i když poměrně slabé - šifrování RC2-40, stačí říct openssl, kde se nachází zpráva a certifikát.

openssl smime her-cert.pem -encrypt -in my-message.txt

Pokud jste si jisti, že váš vzdálený korespondent má robustní sadu nástrojů SSL, můžete určit silnější šifrovací algoritmus, jako je například Triple DES:

openssl smime her-cert.pem -encrypt -des3 -in my-message.txt

Ve výchozím nastavení je šifrovaná zpráva včetně záhlaví pošty odesílána na standardní výstup. Použijte volbu -out nebo Shell k přesměrování do souboru. Nebo, mnohem složitější, posílejte výstup přímo na sendmail.

openssl smime her-cert.pem \
   -encrypt \
   -des3 \
   -in my-message.txt \
   -from 'Your Fullname <[email protected]>' \
   -to 'Her Fullname <[email protected]>' \
   -subject 'My encrypted reply' |\
 sendmail [email protected]

Jak podepíšu zprávu S/MIME?

Pokud nepotřebujete šifrovat celou zprávu, ale chcete ji podepsat, aby si příjemce mohl být jistý, že je zpráva integrita, recept je podobný jako u šifrování. Hlavní rozdíl spočívá v tom, že musíte mít svůj vlastní klíč a certifikát, protože pomocí certifikátu příjemce nemůžete nic podepsat.

 openssl smime \
   -sign \
   -signer /path/to/your-cert.pem \
   -in my-message.txt \
   -from 'Your Fullname <[email protected]>' \
   -to 'Her Fullname <[email protected]>' \
   -subject 'My signed reply' |\
 sendmail [email protected]

(od http://www.madboa.com/geek/openssl/ )

(ehm ... všechna ta zpětná lomítka - ty by měly uniknout novým řádkům. Nejste si jisti, co se děje, protože se zobrazuje v mém textovém poli v pořádku!

5
draeath