web-dev-qa-db-ja.com

OpenVPNを使用するときにeasy-rsaを使用する必要があるのはなぜですか?

Raspberry PiでOpenVPNサーバーをセットアップする方法について このガイド を読んで、私はこの行を見ました:

4)VPNサーバーのアドレスを見つけた人が接続できるようにしたくない。次に、サーバーアドレスのキーを作成します。家のドアに鍵をかけておくようなものです。

どういう意味かわかりません。誰かが私のVPNサーバーを見つけた場合、とにかく私のVPNを使用するには、ユーザーの1人のユーザー名とパスワードが必要になります。簡単なRSAを使用してキーを生成する意味は何ですか

現在 OpenVPN ESXi仮想アプライアンス を使用していますが、これを構成する必要はありませんでした。これは、私のVPNサーバーが安全ではないことを意味しますか?

4
user1301428

キーベースの認証は、ブルートフォースすることがほぼ不可能であるため、ユーザー名/パスワードベースの認証よりもはるかに安全です。ブルートフォースとは、ログインできる正しいものが見つかるまで、すべての可能性を試します。一般に、正しいユーザー名とパスワードの組み合わせを見つけるのが難しいほど、システムの安全性は高くなります。

例えば:

次のようなユーザー名を使用します:aH#398x * t $
そして、あなたは次のようなパスワードを使います:%ygo74Xg2&

したがって、どちらも完全にランダムな10文字です。小文字、大文字、数字、特殊文字を使用するため、すべての文字に95の可能性があります(ASCII)。これにより、ユーザー名を95 ^ 10にブルートフォースする複雑さが増し、ユーザー名とパスワードの両方をブルートフォースにすると、95 ^ 20になります。したがって、95 ^ 20 = 3.58 * 10 ^ 39です。

2048ビットのRSAキー(2 ^ 2048は10 ^ 616にほぼ等しい)で標準のキーベースの認証を使用する場合、これをブルートフォースする必要がある場合は、可能なすべてのRSAキーを試す必要があります。これは事実上、1024ビットのサイズのすべての素数を試すことを意味します。次の式を使用して、おおよその素数の数を概算できます。n/ln(n)

2 ^ 1024/ln(2 ^ 1024)は、およそ10 ^ 310です。

したがって、攻撃者がシステムを攻撃したい場合、10 ^ 39または10 ^ 310の可能性をブルートフォースする必要があります。攻撃者がオフライン攻撃の能力があるとすると、かなり平均的なビデオカードはすでに1秒あたり 100億の可能性 を試す能力があります。多くの場合、ユーザー名を知ることができるため、10 ^ 19個のパスワードをブルートフォースするだけで済みます。

10 ^ 19/10 ^ 10 = 10 ^ 9秒=平均的なデスクトップコンピューターで31年。

したがって、攻撃者が十分なコンピュータを利用できる場合、攻撃者が短時間でこれを解読することは現実的です。

しかし、10 ^ 310はその数が非常に多いため、総当たりすることはほぼ不可能です。同じセキュリティを得るには、長さが約156文字のランダムなパスワードが必要になります。 (10 ^ 310 = 95 ^ x)

そのため、ほとんどの場合、vpn/sshには鍵が推奨されます。パスワードとはまったく異なるレベルのセキュリティです。

EasyRSAは、openvpnに含まれているツールで、RSAキーの生成を容易にします。ただし、OpenSSLまたは他の暗号化ツールで生成されたRSAキーは、openvpnでも完全に正常に機能します。

このstackoverflowの回答は、RSAキーの素数の量をさらに説明しています: https://stackoverflow.com/questions/16091581/how-many-prime-numbers-are-there-available-for-rsa-encryption

より数学的に正確なサイドノート:10 ^ 310は、そのキースペース内の素数の数にすぎません。すべての素数を試すブルートフォースよりも効率的なアルゴリズムがあります。現在知られている最も速い因数分解の方法は [〜#〜] gnfs [〜#〜] です。

exp((((64/9)^(1/3))(log(2 ^ 2048))^(1/3)(log( log(2 ^ 2048))^(2/3)))

512:63.9ビット
1024:86.7ビット
2048:116.8ビット
4096:156.5ビット
8192:208.4ビット
16384:276.5ビット

したがって、2048ビットの素数の場合、1029ビット(2 ^ 1029 = 10 ^ 310)の複雑さを持つ代わりに、116.8ビットを攻撃するだけで済みます。

10 ^ 116.8 = 95 ^ x-> x = 59

したがって、59文字のランダムパスワードは、現在の因数分解法を使用した2048ビットのRSAキーと同等のセキュリティを備えています。

10
sukosevato