PKCS規格

PKCS規格

公開鍵暗号規格(PKCS)は、証明書は、無効な表を発行した証明書の内容とデジタル署名を展開し、RSAデータセキュリティ、米国および証明書申請、証明書の更新など、そのパートナー、によって開発されたPKCSのセットですデジタル封筒の形式および関連契約の一連の他の側面。

公開鍵暗号規格(公開鍵暗号規格、PKCS) 、本書の標準的な設計は、同社が開発したRSAセキュリティにかかっています。
RSAセキュリティのRSA研究所は、公開鍵技術の使用を促進するために、我々は、公開鍵暗号の一連の標準を開発しました。標準がシンボリックかなりあるがしかし、それはまた、産業部門の情報によって認識されている; RSA会社が必要と認める場合には、これらの基準の内容は、まだ変更することができます。幸いなことに、これらの変化は大きくありません。加えて、RSAは、数年を過ぎて他の組織と企業(もっとよく知られているIETF、PKIX)は標準トラック・プログラムによって基準を達成します。

PKCSはじめに
1999年の終わりまでに、PKCSは、以下の規格発表しています:
PKCS#1:デジタル署名に使用するRSA公開鍵アルゴリズム定義された暗号化と署名メカニズムをして説明するようにPKCS#7デジタル封筒を整理する[22]。
PKCS#3:定義されたのDiffie-Hellman鍵交換プロトコル。
PKCS#5:パスワードの使用に由来し、安全なキーの暗号化された文字列のための方法を説明します。使用MD2またはMD5は暗号化を使用して、パスワード、キー、およびDES-CBCモードに由来しています。主にメッセージを暗号化するために使用することはできません別のコンピュータのプライベートキーにあるコンピュータから暗号化された伝送のために使用されます。
PKCS#6:拡張フォーマットのX.509証明書を記述し、標準の構文公開鍵証明書について説明します。
PKCS#7:PKCS#7は、PEMと互換性があり、デジタル署名および暗号化メカニズムを強化するための暗号化など、一般的なメッセージの構文を定義しないので、他の暗号化操作、PEMメッセージ暗号化されたメッセージに変換することができます。
PKCS#8:記述情報のフォーマットの秘密鍵、秘密鍵情報及び任意の特性および他の公開鍵アルゴリズムのセットを含みます。
PKCS#9:PKCS#6を定義するには、証明書、属性型のデジタル署名とPKCS#7 PKCS#8秘密鍵の暗号化情報を拡張しました。
PKCS#10:証明書要求の構文について説明[29]。
PKCS#11:Cyptokiを呼び、それが暗号化装置やスマートカードなどのPCMCIAカードのための技術に依存しないプログラミング・インターフェースを定義します。
PKCS#12:個人情報交換シンタックス標準記述。これは、ユーザーの公開鍵、秘密鍵、証明書およびその他の関連情報パッケージ構文について説明します。
PKCS#13:楕円曲線暗号の標準。
PKCS#14:擬似乱数生成規格。
PKCS#15:パスワードトークンフォーマット規格。
表に以下に示します:

 

PKCS規格の概要
  名前 簡単な紹介
PKCS#1 2.1 RSA暗号規格(RSA暗号化規格) RSAの数学と物理学、パブリック/プライベートキーの形式だけでなく、暗号化/復号化、符号/検証章プロセスを定義します。バージョン1.5は、攻撃されていました。
PKCS#2 - アンドゥ RSA暗号の仕様は、もともと抽象的な方法を変換するために使用された、それは今PKCS#1に組み込まれています。
PKCS#3 1.4 標準的なDH鍵合意(のDiffie-Hellman鍵標準) キーベースのプロトコル標準を規制するDHキー合意。両者を可能にする。その機能は、会議キー(セッション・キー)を開発するために、金で契約を提案しました。
PKCS#4 - アンドゥ もともと変換プロセスRSA鍵を管理します。これは、PKCS#1に組み込まれています。
PKCS#5 2.0 パスワードベースの暗号化標準植物(パスワードベースの暗号化規格) RFC 2898を参照してくださいとPBKDF2を
PKCS#6 1.5 証明書拡張構文標準(拡張-証明書構文の標準) 元の形式の標準的なX.509証明書が展開されます。
PKCS#7 1.5 暗号メッセージ構文標準(暗号メッセージ構文標準) RFC 2315を参照してください。規制する公開鍵インフラストラクチャの署名/暗号テキスト形式(PKI)に起因します。その目的は、同じデジタル証明書の申請を拡大することです。これは含まれていS / MIMECMSを
PKCS#8 1.2 プライベートメッセージは、標準(秘密鍵情報の構文の標準)を示しています。 Apacheは、証明書の秘密鍵の基準を読み込みます。
PKCS#9 2.0 プロパティの形式を選択します(選択した属性タイプ) PKCS#6,7,8,10は、フォーマットを定義し、[プロパティ]を選択します。
PKCS#10 1.7 証明書要求基準(証明書要求の標準) RFC 2986を参照してください。認証局に証明書CSR(証明書署名要求)のためのアプリケーションのフォーマットを標準化します。
PKCS#11 2.20 パスワードの機器の標準インタフェース(暗号化トークンインタフェース(cryptokiの)) それは、本明細書の暗号装置(API)のアプリケーション・プログラミング・インターフェースを定義します。
PKCS#12 1.0 個々のメッセージ交換標準(個人情報交換シンタックス標準) これは、公開鍵と秘密鍵証明書(公開鍵証明書)であるが含まれているファイル形式を定義します。プライベートマイニングコード(パスワード)を保護。PKCS#12の実装に関する通常PFX。
PKCS#13 - 楕円曲線暗号標準(楕円曲線暗号標準) メイキング。暗号ベースのアプリケーション開発の楕円曲線暗号の仕様です。楕円曲線暗号は、強さと操作の効率の両方は、既存のインデックスよりも良いに暗号アルゴリズムに基づいており、新しい暗号です。しかし、アルゴリズムの適用はまだ普遍的ではありません。
PKCS#14 - 標準擬似乱数発生器(擬似乱数生成) メイキング。デザイナーを使用して仕様疑似乱数生成。
PKCS#15 1.1 メッセージ形式の標準的な暗号デバイス(暗号トークン情報フォーマット規格) 構造は、内部データ暗号デバイスを定義します。

 

 

PKI規格は、第一及び第二世代の規格に分割することができます。

第一代PKI标准主要包括美国RSA公司的公钥加密标准(Public Key Cryptography Standards,PKCS)系列、国际电信联盟的ITU-T X.509、IETF组织的公钥基础设施X.509(Public Key Infrastructure X.509,PKIX)标准系列、无线应用协议(Wireless Application Protocol ,WAP)论坛的无线公钥基础设施(Wireless Public Key Infrastructure,WPKI)标准等。第一代PKI标准主要是基于抽象语法符号(Abstract Syntax Notation One,ASN.1)编码的,实现比较困难,这也在一定程度上影响了标准的推广。

第二代PKI标准是在2001年,由微软、VeriSign和webMethods三家公司发布了XML密钥管理规范(XML Key Management Specification,XKMS),被称为第二代PKI标准。XKMS由两部分组成:XML密钥信息服务规范(XML Key Information Service Specification,X-KISS)和XML密钥注册服务规范(XML Key Registration Service Specification,X-KRSS)。X-KISS定义了包含在XML-SIG元素中的用于验证公钥信息合法性的信任服务规范;使用X-KISS规范,XML应用程序可通过网络委托可信的第三方CA处理有关认证签名、查询、验证、绑定公钥信息等服务。X-KRSS则定义了一种可通过网络接受公钥注册、撤销、恢复的服务规范;XML应用程序建立的密钥对,可通过X-KRSS规范将公钥部分及其它有关的身份信息发给可信的第三方CA注册。X-KISS和X-KRSS规范都按照XML Schema 结构化语言定义,使用简单对象访问协议(SOAP V1.1)进行通信,其服务与消息的语法定义遵循Web服务定义语言(WSDL V1.0)。目前XKMS已成为W3C的推荐标准,并已被微软、VeriSign等公司集成于他们的产品中(微软已在ASP.net中集成了XKMS,VeriSign已发布了基于Java的信任服务集成工具包TSIK)。

CA中心普遍采用的规范是X.509[13]系列和PKCS系列,其中主要应用到了以下规范:

1.X.209(1988) 

ASN.1是描述在网络上传输信息格式的标准方法。它有两部分:第一部份(ISO 8824/ITU X.208)描述信息内的数据、数据类型及序列格式,也就是数据的语法;第二部分(ISO 8825/ITU X.209)描述如何将各部分数据组成消息,也就是数据的基本编码规则。 

ASN.1原来是作为X.409的一部分而开发的,后来才独立地成为一个标准。这两个协议除了在PKI体系中被应用外,还被广泛应用于通信和计算机的其他领域。 

2.X.500(1993) 

X.500是一套已经被国际标准化组织(ISO)接受的目录服务系统标准,它定义了一个机构如何在全局范围内共享其名字和与之相关的对象。X.500是层次性的,其中的管理域(机构、分支、部门和工作组)可以提供这些域内的用户和资源信息。在PKI体系中,X.500被用来惟一标识一个实体,该实体可以是机构、组织、个人或一台服务器。X.500被认为是实现目录服务的最佳途径,但X.500的实现需要较大的投资,并且比其他方式速度慢;而其优势具有信息模型、多功能和开放性。 

3.X.509(1993) 

X.509是由国际电信联盟(ITU-T)制定的数字证书标准。在X.500确保用户名称惟一性的基础上,X.509为X.500用户名称提供了通信实体的鉴别机制,并规定了实体鉴别过程中广泛适用的证书语法和数据接口。 

X.509的最初版本公布于1988年。X.509证书由用户公共密钥和用户标识符组成。此外还包括版本号、证书序列号、CA标识符、签名算法标识、签发者名称、证书有效期等信息。这一标准的最新版本是X.509 v3,它定义了包含扩展信息的数字证书。该版数字证书提供了一个扩展信息字段,用来提供更多的灵活性及特殊应用环境下所需的信息传送。 

4.PKCS系列标准 

PKCS是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。到1999年底,PKCS已经公布了以下标准: 

PKCS#1:定义RSA公开密钥算法加密和签名机制,主要用于组织PKCS#7中所描述的数字签名和数字信封。 

PKCS#3:定义Diffie-Hellman密钥交换协议。 

PKCS#5:描述一种利用从口令派生出来的安全密钥加密字符串的方法。使用MD2或MD5 从口令中派生密钥,并采用DES-CBC模式加密。主要用于加密从一个计算机传送到另一个计算机的私人密钥,不能用于加密消息。 

PKCS#6:描述了公钥证书的标准语法,主要描述X.509证书的扩展格式。 

PKCS#7:定义一种通用的消息语法,包括数字签名和加密等用于增强的加密机制,PKCS#7与PEM兼容,所以不需其他密码操作,就可以将加密的消息转换成PEM消息。 

PKCS#8:描述私有密钥信息格式,该信息包括公开密钥算法的私有密钥以及可选的属性集等。 

PKCS#9:定义一些用于PKCS#6证书扩展、PKCS#7数字签名和PKCS#8私钥加密信息的属性类型。 

PKCS#10:描述证书请求语法。 

PKCS#11:称为Cyptoki,定义了一套独立于技术的程序设计接口,用于智能卡和PCMCIA卡之类的加密设备。 

PKCS#12:描述个人信息交换语法标准。描述了将用户公钥、私钥、证书和其他相关信息打包的语法。 

PKCS#13:椭圆曲线密码体制标准。 

PKCS#14:伪随机数生成标准。 

PKCS#15:密码令牌信息格式标准。 

5.OCSP在线证书状态协议 

OCSP(Online Certificate Status Protocol)[14]是IETF颁布的用于检查数字证书在某一交易时刻是否仍然有效的标准。该标准提供给PKI用户一条方便快捷的数字证书状态查询通道,使PKI体系能够更有效、更安全地在各个领域中被广泛应用。 

6.LDAP 轻量级目录访问协议 

LDAP规范(RFC1487)简化了笨重的X.500目录访问协议,并且在功能性、数据表示、编码和传输方面都进行了相应的修改。1997年,LDAP第3版本成为互联网标准。目前,LDAP v3已经在PKI体系中被广泛应用于证书信息发布、CRL信息发布、CA政策以及与信息发布相关的各个方面。

 

PKI常见的证书格式和转换

PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:
PKCS#7 Cryptographic Message Syntax Standard
PKCS#10 Certification Request Standard
PKCS#12 Personal Information Exchange Syntax Standard

X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。

PKCS#7 常用的后缀是: .P7B .P7C .SPC
PKCS#12 常用的后缀有: .P12 .PFX
X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRT
X.509 PAM 编码(Base64)的后缀是: .PEM .CER .CRT
.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
.pem跟crt/cer的区别是它以Ascii来表示。
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
p10是证书请求
p7r是CA对证书请求的回复,只用于导入
p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。

一 用openssl创建CA证书的RSA密钥(PEM格式):
openssl genrsa -des3 -out ca.key 1024

 

二用openssl创建CA证书(PEM格式,假如有效期为一年):
openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnf
openssl是可以生成DER格式的CA证书的,最好用IE将PEM格式的CA证书转换成DER格式的CA证书。

 

三 x509到pfx
pkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx

 

四 PEM格式的ca.key转换为Microsoft可以识别的pvk格式。
  pvk -in ca.key -out ca.pvk -nocrypt -topvk

五 PKCS#12 到 PEM 的转换
openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem
验证 openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem

六 从 PFX 格式文件中提取私钥格式文件 (.key)
openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key

七 转换 pem 到到 spc
openssl crl2pkcs7 -nocrl -certfile venus.pem  -outform DER -out venus.spc
用 -outform -inform 指定 DER 还是 PAM 格式。例如:
openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER

八 PEM 到 PKCS#12 的转换,
openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem

 

密钥库文件格式【Keystore】

 格式     :  JKS
 扩展名  : .jks/.ks
 描述     : 【Java Keystore】密钥库的Java实现版本,provider为SUN
 特点     :  密钥库和私钥用不同的密码进行保护
 
 格式     :  JCEKS
 扩展名  :  .jce
 描述     : 【JCE Keystore】密钥库的JCE实现版本,provider为SUN JCE
 特点     :  相对于JKS安全级别更高,保护Keystore私钥时采用TripleDES
 
 格式     :  PKCS12
 扩展名  :  .p12/.pfx
 描述     : 【PKCS #12】个人信息交换语法标准
 特点     :  1、包含私钥、公钥及其证书
               2、密钥库和私钥用相同密码进行保护
 
 格式     :  BKS
 扩展名  : .bks
 描述     :  Bouncycastle Keystore】密钥库的BC实现版本,provider为BC
 特点     :  基于JCE实现
 
 格式     : UBER
 扩展名  : .ubr
 描述     : 【Bouncycastle UBER Keystore】密钥库的BC更安全实现版本,provider为BC
  

证书文件格式【Certificate】
格式          :  DER 
扩展名       :  .cer/.crt/.rsa

描述          : 【ASN .1 DER】用于存放证书 
特点          :  不含私钥、二进制

格式          :  PKCS7 
扩展名       : .p7b/.p7r 
描述          : 【PKCS #7】加密信息语法标准

特点          : 1、p7b以树状展示证书链,不含私钥
                  2、p7r为CA对证书请求签名的回复,只能用于导入

格式          :  CMS 
扩展名       :  .p7c/.p7m/.p7s 
描述          : 【Cryptographic Message Syntax】 
特点          : 1、p7c只保存证书
                  2、p7m:signature with enveloped data
                  3、p7s:时间戳签名文件
 
格式          :  PEM 
扩展名       : .pem 
描述          : 【Printable Encoded Message】 
特点          : 1、该编码格式在RFC1421中定义,其实PEM是【Privacy-Enhanced Mail】的简写,但他也同样广泛运用于密钥管理
                  2、ASCII文件
                  3、一般基于base 64编码
                  4. Apache 用到的CA证书链就是PEM格式,它实际上可保存普通多个X509证书(.cer),  将每个证书简单加在一起就可以了

格式         :  PKCS10 
扩展名      : .p10/.csr 
描述         : 【PKCS #10】公钥加密标准【Certificate Signing Request】
特点         :  1、证书签名请求文件
                  2、ASCII文件
                  3、CA签名后以p7r文件回复

格式         :  SPC 
扩展名      : .pvk/.spc 
描述         : 【Software Publishing Certificate】 
特点         :  微软公司特有的双证书文件格式,经常用于代码签名,其中
                  1、pvk用于保存私钥
                  2、spc用于保存公钥

 

============== End

 

おすすめ

転載: www.cnblogs.com/lsgxeva/p/11701011.html