Autor Zpráva
Krakatoa
Profil
Jak pomocí openssl req vygenerovat klíč zašifrovaný heslem pomocí aes256?

Zašifrovaný klíč jde vytvořit pomocí openssl genrsa a tam jde nastavit třeba des3 nebo aes256.
Jenže pokud chci vygenerovat zašifrovaný klíč a certifikát (Root CA) jedním příkazem pomocí openssl req, tak tam je defaultně nastavené šifrování klíče na des3 (aspoň podle velikosti vygenerovaného klíče) a netuším jak to šifrování změnit na aes256.
Jde to nějak pomocí přepínače nebo parametru v konfiguraci?

Proč to chci.
Chci klíč (zašifrovaný pomocí aes256) a certifikát generovat jedním příkazem. :-)
A nejspíš na zašifrování klíče je aes256 bezpečnější a lepší než des3 nebo je to jedno?
Nebo je des3 dokonce lepší než aes256, když se pomocí des3 šifruje v openssl req defaultně?
Taky třeba v návodu na Apache
httpd.apache.org/docs/2.4/ssl/ssl_faq.html
je na zašifrování klíče použit des3.
RastyAmateur
Profil
Bezpečnost
AES by měl být bezpečnější, než Triple-DES.

DES je obecně výborná a bezpečná, ale i stará šifra, ke které, pokud vím, nebyly dodnes nalezeny žádné "zadní vrátka" a tedy možnost, jak ji prolomit, je pouze hrubou silou. To se ovšem již stalo. Co jsem nyní dohledával, tak roku 1997, za pomoci 78 000 počítačů a prolomení jedné šifry trvalo 96 dní. Takže asi tak byl bezpečný DES... Samozřejmě z pohledu bezpečnosti to byl problém, protože DES se tedy dal označit za prolomený, ale jelikož to byl opravdu útok hrubou silou, zvýšení bezpečnosti tohoto algoritmu spočívalo v pouhém prodloužení klíče, konkrétně na trojnásobek (hence - Triple-DES).

AES byl navržen přímo jako nástupce DESu, tedy už z principu by měl být "lepší". Samosebou je otázka, co je "lepší"? Znamená to bezpečnější? Rychlejší? Nebo přizpůsobitelnější na hardware implementace? Cena? Na AES se již našel, pokud vím, nějaký útok, který je lepší než brute-force, ale stále měl takovou složitost, že je to reálně těžko upočitatelné (to bylo na AES-128, takže u AES-256 je to vlastně v tuto chvíli s největší pravděpodobností nereálné).

Který algoritmus vybrat
To už záleží na tobě... Ale asi bych koukal na to, co se snažíš zabezpečit. Pokud zabezpečuješ bankovní aplikaci, pak se doptáváš správně. Pokud se snažíš zabezpečit nějaký malý webík pro svoji firmu o 3 zaměstnancích, pak bych zvážil, jestli neřešíš zbytečnosti. Vynaložíš hodiny času na to, abys nastavil AES, když na to stejně nikdo nikdy útočit nebude a i když ano, pravděpodobně nedojde k žádným škodám...

aes256 certifikát pomocí openssl
S openssl bohužel moc neumím a tudíž se mi také nepodařilo najít jeden příkaz, který právě hledáš. Každopádně furt můžeš řetězit příkazy dohromady, echo "Hello" && echo "World". Můžeš tedy "jedním příkazem" zavolat dva a bum, už to máš v jednom :)

openssl genrsa -aes256 -out domain.key 2048 && openssl req -out domain.csr -key domain.key -new
Firibix
Profil
Reakce na RastyAmateura:
konkrétně na trojnásobek
Teoreticky ano. Efektivní bezpečnost 3DES se třemi nezávislými klíči je jen 112 bitů. NIST zakazuje používání 3DES po roce 2023.

Nemyslím si, že lenost nebo neschopnost ovládat software, který používám, je oprávněný důvod ke snižování bezpečnosti.
RastyAmateur
Profil
Reakce na Firibix:
Efektivní bezpečnost 3DES se třemi nezávislými klíči je jen 112 bitů.
Jsem si toho vědom, psal jsem ovšem pouze o délce klíče.

Nemyslím si, že lenost nebo neschopnost ovládat software, který používám, je oprávněný důvod ke snižování bezpečnosti.
Nezastávám se názoru, že v tomto případě bude ten bezpečnostní benefit tak markantní, aby na tom člověk musel pálit nějaké nepřiměřené množství času.
Krakatoa
Profil
Já to prostě nechápu :-)
Na webu OpenSSL doporučují (It is highly recommended) OpenSSL Cookbook.
V OpenSSL Cookbook se konkretně tady píše:
Here, I specified that the key be protected with AES-128. You can also use AES-256 (with the -aes-256-cbc switch), but it’s best to stay away from the other algorithms (e.g., DES, 3DES, and SEED).
Jako že se má použít aes128 nebo aes256 a držet se dál od des, des3, seed...
Před pár dny vyšla nová verze OpenSSL 3.1 a i v ní je default šifra v req pořád des3 (aspoň podle velikosti a stejných prvních 48 B base64)... Kdyby se to tam aspoň dalo nějak změnit. Jako nechápu proč to tam tak je.
hm...
A dál se v OpenSSL Cookbook generuje Root CA key přes req, takže to tam generuje key zašifrovaný přes des3... kterému před tím radí se vyhnout...
Zajímám se o to jen pár hodin... a oni jsou experti (tvůrci OpenSSL, tvůrce OpenSSL Cookbook = majitel ssllabs.com)... co mi uniká? Kde je zakopaný pes? :-D
RastyAmateur
Profil
Krakatoa:
Bohužel nedokážu odpovědět, ale napadá mě, že je to prostě třeba nějaký starší přežitek. Přeci jen, na generování a šifrování klíčů jsou jiné příkazy. Podle jedné odpovědi ze SO je dle verze OpenSSL a compile options občas možné algoritmus změnit i u openssl req. Ale jak to přesně funguje, to nevím. Snad poradí někdo jiný :)
Krakatoa
Profil
To by ale někdo musel upravit zdrojový kód openssl, aby to bralo ty přepínače, třeba -aes256.
Přepínač -aes256 je funkční třeba v genrsa.
Nikde jsem ale neviděl aby byl funkční i v req a ani jsem nikde v žádném návodu neviděl, aby byl funkční i v req.
Binárky používám odtud:
slproweb.com/products/Win32OpenSSL.html
Odkaz vede přímo z wiki openssl:
wiki.openssl.org/index.php/Binaries
Případně někdy i ty z Apache:
www.apachelounge.com/download
Je možné, že to defaultní des v req budou někdy měnit, protože přepínač -NoDES, tedy aby se klíč nešifroval pomocí DES3, je od verze 3.0 deprecated a nový přepínač je -noenc.
ttttttttt
Profil *
Krakatoa
V openssl req je natvrdo nastavený algoritmus na des-ede3-cbc, viz github.com/openssl/openssl/blob/d293ebde01fc14dabbd64fd6e42dc837be7b1fad/apps/req.c#L270

pre]req[/pre] je primárně pro generování požadavku na podepsání certifikátu, generování klíče je tam jako bonus pro usnadnění. Nejspíš se počítá s tím, že když někdo chce víc než výchozí klíč, tak si ho vygeneruje přes genrsa nebo jiný příkaz.
Krakatoa
Profil
Kdyby si někdo chtěl hrát s certifikátama (rootca+subca+server, rootca+server, self-signed) třeba na localhostu a snažil se o https, http2 tak jsem udělal nedokonalý mikro návod:
krakatoa.trialhosting.cz/openssl/https-na-web-serveru.php

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0