RSAよりも何倍も高速に動作し、キーの長さが比較できないほど短いと、耐クラック性が比較にならないほど大きくなります。 聞いたことがない場合は、 wikiを見るか、AAの本を読むことができます。 ボロトバ。
残念ながら、このタイプの暗号化は十分に配布されていません。 使用方法を説明し、OpenSSLでこれを支援します。
根拠にならないように、必要なキーの長さを比較して、さまざまなアルゴリズムで同等の耐破損性を確保します。 右側に興味があります。
現在人気のある1024-2048ビットの長さのRSAキーは、160-224ビットECCキー(楕円曲線暗号)にのみ対応していることがわかります。
さて、どのRSAブレーキを理解するためには、テーブルで提案されている最長のキーを生成しようとする(そして仮眠を取る)ことで十分です:
openssl genrsa 15360
すでに1985年に発明された「次世代」暗号に触れたい場合は、猫をお願いします。
まず最初に、キーが必要な期間を決定します。 ECCでは、特定の曲線パラメーターは特定のキー長に対応します。 しかし、私たちはそれらを選択する必要はありません。なぜなら、私たちはNISTの賢い叔父たちがそれをしたからです。
次のコマンドを使用して、使用可能な曲線のリストを表示できます
openssl ecparam -list_curves
このコマンドは印象的なリストを提供します。特定の設定がない場合は、好きなものを選択し、160ビット以上、たとえば最長のものを選択します。
secp521r1 :521ビットプライムフィールド上のNIST / SECG曲線
c:\ ec \などのフォルダーを作成すると、すべてをそこに配置します。 CAフォルダーでは、ルート証明書のすべて、クライアントフォルダーでは、クライアント証明書のすべて。
必要です
- ルート自己署名証明書(CA)を生成する
- クライアント証明書を生成する
- クライアント証明書ルートに署名する
1)ルート証明書を生成します。
1.1)ルート証明書のキーを生成します:
openssl ecparam -name secp521r1 -genkey -out c:\ ec \ CA \ CA.key
のようなものを取得
----- ECパラメータの開始-----
BgUrgQQAIw ==
----- ECパラメータの終了-----
----- ECプライベートキーの開始-----
MIHcAgEBBEIBrtyWCH0 + OAZqbr84CLFvsxbB2 / AfjKD6 + fpXQF5qs7n1yRmxItRH
vNlylh7dNZEwYwleI5RLQV3pz6p06hgo6c2gBwYFK4EEACOhgYkDgYYABAEx + OTa
s3 / djxFMW7GNcWWVGv5Y7Vwvr2k00gXVyUpSySSudXKSaWYrblBtPKOWRcuHzkq5
tks3vTKclq3NgPpdjgAPk4ha68UTdX + JI / oK + EMUwCdaCuIYMDeRO1VHByEx + 3/1
XlkYPvEKRkQDLJP22vXE / NEirdZ / WzO6QTWku5q0UQ ==
----- ECプライベートキーの終了-----
最初に曲線のパラメーター(名前はsecp521r1)があり、次にその基準に基づいて既に生成されたキーがあります。
1.1.1)必要に応じて、パスワード(256ビットのキー長でAESアルゴリズムを使用して暗号化)で保護します:
openssl ec -in c:\ ec \ CA \ CA.key -out c:\ ec \ CA \ ca.protected.key -aes256
この美しさを得る(パスワード-qwerty ):
----- ECプライベートキーの開始-----
Proc-Type:4、暗号化済み
DEK-Info:AES-256-CBC、E34E27512B4DCB01524A5F17937DA7D5
xF7XZyLtpqofqkl0PVCf / 1cOEygL82itDrz7k5tVqJLMDYzG9RnTTPwJgOXsZkV1
dk5MQe9h / ixPkFE / B / Ox1OH5SI4Frb8dgS8mT9mq620A4RJdD6yAZcpicnuyyXma
1dZ + xoyRiGeHxcnErDJpvA7H6BpIAzinz4lMzY1pz2TXTdGLU + 0bK1bMiDFxRvwA
jyUEsrZA2kZ5v ++ MZzmxTsJZ6XTCRzeUPhhvNE0VKF8xPSWMEB6WeJPr + rl3zBZ7
sE71UwiaIddFHkOe3UnlAxjohABpZytUud8uS0Wi + 5E =
----- ECプライベートキーの終了-----
2)証明書リクエストを生成します。 リクエストは、公開鍵、そのハッシュ、および証明書所有者データの構造です。 キーハッシュアルゴリズムはSHA512を選択します:
openssl req -new -key c:\ ec \ CA \ ca.protected.key -sha512 -out c:\ ec \ CA \ CA.req
もう1つの美しさを取得します。
-----証明書リクエストの開始-----
MIIBrzCCARACAQAwazELMAkGA1UEBhMCUlUxDzANBgNVBAgMBk1vc2NvdzEPMA0G
A1UEBwwGTW9zY293MRIwEAYDVQQKDAloYWJyYWhhYnIxCzAJBgNVBAsMAklUMRkw
FwYDVQQDDBB3d3cuaGFicmFoYWJyLnJ1MIGbMBAGByqGSM49AgEGBSuBBAAjA4GG
AAQBMfjk2rN / 3Y8RTFuxjXFllRr + WO1cL69pNNIF1clKUskkrnVykmlmK25QbTyj
lkXLh85KubZLN70ynJatzYD6XY4AD5OIWuvFE3V / iSP6CvhDFMAnWgriGDA3kTtV
RwchMft / 9V5ZGD7xCkZEAyyT9tr1xPzRIq3Wf1szukE1pLuatFGgADAKBggqhkjO
PQQDBAOBjAAwgYgCQgHa0d5nc9UX41jj42lOnv0Hh9EXfROFm7QoUSoKdye7s7uE
nZPmGTM + h5bRG8Y + hHD3QQyM8vY9TnMVVp0r2xmYHwJCAbE5CTRDoeXf3ZpKUW77
SpXtPgYEEelkOm3Ua + / 0XVoZviBT7wF5nrqTYnMJ2MQtyvKKMCO74qqUiMoudZ7z
Msgo
-----証明書リクエストの終了-----
3)最終ステップ。 秘密鍵でリクエストに署名します。 リクエスト全体がサブスクライブされるのではなく、そのハッシュのみがサブスクライブされるため、前のステップで選択するハッシュアルゴリズムを示しました
このために必要です
3.1)[CA_default] dirセクションのopenssl.cfgをデフォルトの./DemoCAではなく「c:/ ec」に変更します
3.2)c:\ ecフォルダーに、空のindex.txtとシリアルファイルの2つのファイルを作成します。01はスペースや改行なしで書き込まれます。
3.3)マジックコマンドを実行する
openssl ca -days 365 -policy policy_anything -keyfile c:\ ec \ CA \ CA.protected.key -in c:\ ec \ CA \ CA.req -selfsign -out c:\ ec \ CA \ ca.crt -outdir c:\ ec \ CA
入り口で、証明書要求、秘密キーへのパスを送信し、証明書が自己署名されることを伝えます( -selfsign )。 出力では、本当に美しい証明書を取得します(ca.crtとして保存し、Windowsツールを使用して表示できます)。
証明書:。
データ:
バージョン:3(0x2)
シリアル番号:1(0x1)
署名アルゴリズム:ecdsa-with-SHA1
発行者:C = RU、ST =モスクワ、L =モスクワ、O = habrahabr、OU = IT、CN = www.habrahabr.ru
有効性
以前:6月11日05:12:03 2010 GMT
終了後:2011年6月11日05:12:03 GMT
件名:C = RU、ST =モスクワ、L =モスクワ、O = habrahabr、OU = IT、CN = www.habrahabr.ru
サブジェクト公開鍵情報:
公開鍵アルゴリズム:id-ecPublicKey
公開鍵:(521ビット)
パブ:
04:01:31:f8:e4:da:b3:7f:dd:8f:11:4c:5b:b1:8d:
71:65:95:1a:fe:58:ed:5c:2f:af:69:34:d2:05:d5:
c9:4a:52:c9:24:ae:75:72:92:69:66:2b:6e:50:6d:
3c:a3:96:45:cb:87:ce:4a:b9:b6:4b:37:bd:32:9c:
96:広告:cd:80:fa:5d:8e:00:0f:93:88:5a:eb:c5:13:
75:7f:89:23:fa:0a:f8:43:14:c0:27:5a:0a:e2:18:
30:37:91:3b:55:47:07:21:31:fb:7f:f5:5e:59:18:
3e:f1:0a:46:44:03:2c:93:f6:da:f5:c4:fc:d1:22:
広告:d6:7f:5b:33:ba:41:35:a4:bb:9a:b4:51
ASN1 OID:secp521r1
X509v3拡張機能:
X509v3の基本的な制約:
CA:偽
Netscapeコメント:
OpenSSLが生成した証明書
X509v3サブジェクトキー識別子:
3D:FF:46:92:1C:7E:C1:F3:84:D0:26:BA:CD:5D:AD:25:B8:CC:DE:44
X509v3機関キー識別子:
keyid:3D:FF:46:92:1C:7E:C1:F3:84:D0:26:BA:CD:5D:AD:25:B8:CC:DE:44
署名アルゴリズム:ecdsa-with-SHA1
30:81:88:02:42:01:bf:ca:f1:4c:51:85:b4:65:26:de:eb:14:
ee:07:a1:1f:97:1d:35:1a:c3:61:8a:82:97:96:7b:f4:d4:95:
73:4d:84:d2:78:b2:35:fd:72:05:ea:6d:a4:49:e1:18:a0:ff:
13:60:7e:b0:67:ba:7f:cd:8b:ef:15:a6:5d:30:a3:48:9c:02:
42:01:53:27:2c:2c:b9:79:b1:0f:9a:c3:f6:a0:c9:dc:82:cb:
2f:3c:d8:0a:c1:53:d7:3c:37:af:54:39:78:de:ae:d9:d7:55:
6f:de:cc:9c:75:cf:d5:8e:8e:cc:2d:0c:da:d1:be:c5:8d:2d:
2b:68:94:9d:0d:8c:89:aa:b9:1d:e8:a2:05
-----証明書の開始-----
MIICxjCCAiigAwIBAgIBATAJBgcqhkjOPQQBMGsxCzAJBgNVBAYTAlJVMQ8wDQYD
VQQIDAZNb3Njb3cxDzANBgNVBAcMBk1vc2NvdzESMBAGA1UECgwJaGFicmFoYWJy
MQswCQYDVQQLDAJJVDEZMBcGA1UEAwwQd3d3LmhhYnJhaGFici5ydTAeFw0xMDA2
MTEwNTEyMDNaFw0xMTA2MTEwNTEyMDNaMGsxCzAJBgNVBAYTAlJVMQ8wDQYDVQQI
DAZNb3Njb3cxDzANBgNVBAcMBk1vc2NvdzESMBAGA1UECgwJaGFicmFoYWJyMQsw
CQYDVQQLDAJJVDEZMBcGA1UEAwwQd3d3LmhhYnJhaGFici5ydTCBmzAQBgcqhkjO
PQIBBgUrgQQAIwOBhgAEATH45Nqzf92PEUxbsY1xZZUa / ljtXC + vaTTSBdXJSlLJ
JK51cpJpZituUG08o5ZFy4fOSrm2Sze9MpyWrc2A + l2OAA + TiFrrxRN1f4kj + gr4
QxTAJ1oK4hgwN5E7VUcHITH7f / VeWRg + 8QpGRAMsk / ba9cT80SKt1n9bM7pBNaS7
mrRRo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG + EIBDQQfFh1PcGVuU1NMIEdlbmVy
YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUPf9Gkhx + wfOE0Ca6zV2tJbjM3kQw
HwYDVR0jBBgwFoAUPf9Gkhx + wfOE0Ca6zV2tJbjM3kQwCQYHKoZIzj0EAQOBjAAw
gYgCQgG / yvFMUYW0ZSbe6xTuB6Eflx01GsNhioKXlnv01JVzTYTSeLI1 / XIF6m2k
SeEYoP8TYH6wZ7p / zYvvFaZdMKNInAJCAVMnLCy5ebEPmsP2oMncgssvPNgKwVPX
PDevVDl43q7Z11Vv3sycdc / Vjo7MLQza0b7FjS0raJSdDYyJqrkd6KIF
-----証明書の終了-----
できた! クライアントを生成してみましょう。
手順1-2は非常に似ています。 パスのみが異なります:
openssl ecparam -name secp521r1 -genkey -out c:\ ec \ Client \ Client.key
openssl ec -in c:\ ec \ Client \ Client.key -out c:\ ec \ Client \ Client.protected.key -aes256
openssl req -new -key c:\ ec \ Client \ Client.protected.key -sha512 -out c:\ ec \ Client \ Client.req
手順3は、パスに加えて、CA証明書、CA秘密キー、クライアント要求を送信し、-selfsignを削除する点が異なります
openssl ca -days 365 -policy policy_anything -keyfile c:\ ec \ CA \ CA.protected.key -cert c:\ ec \ CA \ CA.crt -in c:\ ec \ Client \ Client.req -out c: \ ec \ Client \ Client.crt -outdir c:\ ec \ Client
それだけです! CA.crtを信頼されたルート証明書のストアにインストールし、Client.crtを開いて、すべてが機能するという事実を楽しむことができます(ルート証明書について少しの誓いに注意を払わず、明らかに他の拡張機能を指定する必要があります)
今、短所について少し:
- XPではデフォルトでサポートされていません。 おそらく、代替のセキュリティプロバイダーがあります
- Vista \ 7でも、すべてのブラウザがすべての曲線をサポートしているわけではありません。 IEはほとんどすべてを実行でき、Chromeはすべてを実行し、Operaは何も実行しません。
Fedora Webサイトなどで、このような証明書との互換性についてブラウザーをテストできます。
楽しんでください!
UPD:
ecフォルダーのコンテンツのアーカイブは、 ここから入手できます。