引用:PKCS: Public-Key Cryptography Standards | Encryption Consulting

PKCS: PUBLIC-KEY CRYPTOGRAPHY STANDARDS

Cryptographic standards have two important goals: to make different implementations interoperable and to avoid various known errors in typical schemes. In this blog, we discussed the Public Key Cryptography Standard (PKCS), which has had a significant impact on the use of public-key encryption in practice. The PKCS standard is a set of standards called PKCS 1 to 15. These standards cover RSA encryption, RSA signature, password-based encryption, encrypted message syntax, private key information syntax, selected object category and attribute type, authentication request syntax, encryption token interface, personal information exchange syntax, and encrypted token information grammar. RSA Laboratories publishes the PKCS standard. Although RSA Laboratories solicits comments and suggestions from the public on the PKCS standard, RSA Laboratories reserves the exclusive power to decide all aspects of the PKCS standard. PKCS has become the basis for many other standards, such as S/MIME.

Public key cryptography is based on an asymmetric cryptographic algorithm, which uses two related keys, a public key, and a private key; the nature of these two keys is that, given the public key, the private key is derived. It is computationally infeasible. Users publish their public keys in public directories, such as LDAP directories, and leave their private keys to themselves.

Depending on the purpose of the algorithm, there are public-key encryption and decryption algorithms and signature algorithms. Encryption algorithms can be used to encrypt data using a public key (for example, a symmetric key) so that only the recipient with the corresponding private key can decrypt the data. Typical public key encryption algorithms are RSA and ECIES (Elliptic Curve Integrated Encryption Scheme, see SECG 2000). The signature algorithm is combined with the message digest algorithm, which can convert messages of any length using the private key into a signature. In this way, without knowing the private key, the same signature cannot be found computationally. The message with the default signature can be found, or see the signature of a specific message. Anyone with the corresponding public key can verify the validity of the signature. Typical public key digital signature algorithms are RSA, DSA, and ECDSA.

PKCS Specifications

No. PKCS Title Comments
1 RSA Cryptography Standard
2,4 incorporated into PKCS #1
3 Diffie-Hellman Key Agreement Standard superseded by IEEE 1363a etc.
5 Password-Based Cryptography Standard
6 Extended-Certificate Syntax Standard never adopted
7 Cryptographic Message Syntax Standard superseded by RFC 3369 (CMS)
8 Private-Key Information Syntax Standard
9 Selected Object Classes and Attribute Types
10 Certification Request Syntax Standard
11 Cryptographic Token Interface Standard referred to as CRYPTOKI
12 Personal Information Exchange Syntax Standard
13 (reserved for ECC) never been published
14 (reserved for pseudo-random number generation) never been published
15 Cryptographic Token Information Syntax Standard

PKCS Standards

PKCS #1: RSA Cryptography Standard

PKCS #1 v2.1 provides standards for implementing RSA algorithm-based public key cryptographic encryption schemes and digital signature schemes with appendix. It also defines corresponding ASN.1 syntax for representing keys and for identifying the techniques. The security of the RSA algorithm is believed to be based on the hardness of factoring the product of large prime numbers. In PKCS #1 v2.1, a multi-prime RSA scheme is introduced. Multiprime RSA means that the modulus isn’t the product of two primes but more than two primes. This is used to increase the performance of RSA cryptographic primitives.

PKCS #3 (outdated): Diffie-Hellman Key Agreement Standard

PKCS #3 v1.4 describes a method for implementing the Diffie-Hellman key agreement, whereby two parties can agree upon a secret key known only to them. PKCS #3 is superseded by the modern treatment of key establishment schemes specified in IEEE 1363a (2003), ANSI 9.42, ANSI X9.44, ANSI X9.63, etc.

PKCS #5: Password-Based Cryptography Standard

In many applications of public-key cryptography, user security is ultimately dependent on one or more secret text values or passwords. For example, a user’s private key is usually encrypted with a password, and the encrypted private key is kept in storage devices. However, there are two fundamental problems regarding password application:

  1. A password is not directly applicable as a key to any conventional cryptosystem
  2. Passwords are often chosen from a relatively small space.

Thus special care is required to defend against search attacks. PKCS #5 provides a general mechanism to achieve enhanced security for password-based cryptographic primitives, covering key derivation functions, encryption schemes, message-authentication schemes, and ASN.1 syntax identifying the techniques.

PKCS #6 (Historical): Extended-Certificate Syntax Standard

When PKCS #6 was drafted, X.509 was in version 1.0, and no extensions component was defined in the certificate. An X.509 v3 certificate can contain information about a given entity in the extensions component. Since the introduction of X.509 v3, the status of PKCS #6 is historic.

PKCS #7 and RFC 3369: CMS or Cryptographic Message Syntax

PKCS #7 has been superseded by IETF RFC 3369 (Housley 2002): cryptographic message syntax (CMS), which is the basis for the S/MIME specification. CMS defines the syntax used to digitally sign, digest, authenticate, or encrypt arbitrary message content. In particular, CMS describes an encapsulation syntax for data protection. The syntax allows multiple encapsulations; one encapsulation envelope can be nested inside another. Likewise, one party can digitally sign some previously encapsulated data. In the CMS syntax, arbitrary attributes, such as signing time, can be signed along with the message content, and other details, such as countersignatures can be associated with a signature. A variety of architectures for certificate-based key management (e.g., the one defined by the IETF PKIX working group) are supported in CMS.

PKCS #8: Private-Key Information Syntax Standard

The security of the public key cryptosystem is entirely dependent on the protection of the private keys. Generally, the private keys are encrypted with a password and stored in some storage medium. It is essential to have a standard to store private keys to move private keys from one system to another system without any trouble. PKCS #8 v1.2 describes a syntax for private-key information, including a private key for some public-key algorithms, a set of attributes, and a syntax for encrypted private-key information. A password-based encryption algorithm (e.g., one of those described in PKCS #5) could be used to encrypt the private-key information.

PKCS #9: Selected Object Classes and Attribute Types

To support PKCS-defined attributes (e.g., to store PKCS attributes in a directory service) in directory systems based on LDAP and the X.500 family protocols, PKCS #9 v2.0 defines two auxiliary object classes, pkcsEntity, and naturalPerson. PKCS attributes could be packaged into these two object classes and be exported to other environments such as LDAP directory systems. PKCS #9 v2.0 also defines some new attribute types and matching rules that could be used in different PKCS standards. For example, it defines challengePassword and extensionRequest attribute types to be used in PKCS #10 attribute field, and it describes some attribute types to be used in PKCS #7 (CMS) signedAttrs, unsignedAttrs, unprotectedAttrs, authAttrs, and unauthAttrs fields

PKCS #10: Certification Request Syntax Standard

PKCS #10 v1.7 specifies syntax for certificate request. When one entity wants to get a public key certificate, the entity constructs a certificate request. It sends it to a certification authority, which transforms the request into an X.509 public-key certificate. A certification authority fulfills the request by authenticating the requesting entity and verifying the entity’s signature, and, if the request is valid, constructing an X.509 certificate from the distinguished name and public key, the issuer name, and the certification authority’s choice of a serial number, validity period, and signature algorithm. Suppose the certification request contains any PKCS #9 attributes. In that case, the certification authority may also use the values in these attributes and other information known to the certification authority to construct X.509 certificate extensions. PKCS #10 does not specify the forms that the certification authority returns the new certificate.

PKCS #11: Cryptographic Token Interface Standard

PKCS #11 v2.20 specifies an application programming interface (API), called “Cryptoki”, to devices that hold cryptographic information and perform cryptographic functions. Cryptoki, pronounced “crypto-key” and short for “cryptographic token interface”, follows a simple object-based approach, addressing the goals of technology independence (any device) and resource sharing (multiple applications accessing multiple devices), presenting to applications a standard, logical view of the device called a “cryptographic token”. Cryptoki was intended from the beginning to be an interface between applications and all kinds of portable cryptographic devices, such as those based on smart cards, PCMCIA cards, and intelligent diskettes. The primary goal of Cryptoki was a lower-level programming interface that abstracts the details of the devices and presents to the application a standard model of the cryptographic device, called a “cryptographic token”.

PKCS #12: Personal Information Exchange Syntax Standard

PKCS #12 v1.0 describes a transfer syntax for personal identity information, including private keys, certificates, miscellaneous secrets, and extensions. Machines, applications, browsers, Internet kiosks, and so on that support this standard will allow users to import, export, and exercise a single set of personal identity information. PKCS #12 can be viewed as building on PKCS #8 by including essential but ancillary identity information and private keys and instituting higher security through public-key privacy and integrity modes.

PKCS #15: Cryptographic Token Information Syntax Standard

Cryptographic tokens, such as Integrated Circuit Cards (or IC cards), are intrinsically secure computing platforms ideally suited to providing enhanced security and privacy functionality to applications. They can handle authentication information such as digital certificates and capabilities, authorizations, and cryptographic keys. Furthermore, they can provide secure storage and computational facilities for sensitive information such as private keys and key fragments. At the same time, many of these tokens provide an isolated processing facility capable of using this information without exposing it within the host environment where it is at potential risk from malicious code (viruses, Trojan horses, and so on). Unfortunately, using these tokens for authentication and authorization purposes has been hampered by the lack of interoperability. First, the industry lacks standards for storing a common format of digital credentials (keys, certificates, etc.) on them. This has made it difficult to create applications that can work with credentials from various technology providers. Second, mechanisms to allow multiple applications to share digital credentials effectively have not yet reached maturity.

Resources:

  • What is Public-Key Cryptography Standards (PKCS)? - Definition from WhatIs.com
  • rfc2986
  • PKCS | 15 Most Useful Public Key Cryptography Infrastructure Standards

PKCS 系列很好介绍相关推荐

  1. SpringBoot 2.0 系列001 -- 入门介绍以及相关概念

    为什么80%的码农都做不了架构师?>>>    SpringBoot 2.0 系列001 -- 入门介绍以及相关概念 什么是SpringBoot? 项目地址:http://proje ...

  2. 提炼游戏引擎系列:开篇介绍

    前言 大家好!本系列记录了从炸弹人游戏中提炼2D游戏引擎YEngine2D雏形的实战过程,您可以通过本系列了解到引擎提炼的思想.引擎的设计以及引擎是如何从游戏中提炼的,学习引擎开发的知识.希望对您能有 ...

  3. asp.net core 系列 19 EFCore介绍

    asp.net core 系列 19 EFCore介绍 原文:asp.net core 系列 19 EFCore介绍 一.概述 目前最新的EF Core版本是3.0,最稳定的EF Core版本是2.2 ...

  4. .NET 4 并行(多核)编程系列之一入门介绍

    .NET 4 并行(多核)编程系列之一入门介绍 本系列文章将会对.NET 4中的并行编程技术(也称之为多核编程技术)以及应用作全面的介绍. 本篇文章的议题如下:   1. 并行编程和多线程编程的区别. ...

  5. TCP重点系列之sack介绍

    原文: TCP重点系列之sack介绍 | 凡是过去 皆为序曲https://allen-kevin.github.io/2017/03/01/TCP%E9%87%8D%E7%82%B9%E7%B3%B ...

  6. GD32系列总结 - systick介绍及使用

    GD32系列总结 - systick介绍及使用 写在前面 SysTick 什么是SysTick SysTick寄存器 CubeMX配置 代码示例 时钟初始化 写在前面 从本文开始,后面的基本都会基于S ...

  7. 元宇宙系列--元宇宙介绍

    元宇宙系列--元宇宙介绍 1 定义 要素 下一个风口? 元宇宙建设支撑 应用领域 行业痛点 优势 2 发展 3 玩家 微软 Roblox Epic NVIDIA MetaApp 代码乾坤 米哈游 Fa ...

  8. SAP-MM-PA精解分析系列之基本介绍(02) -组织架构

    MM基本知识(02)--组织架构讲解        采购业务下的组织架构讲解 在SAP系统中,不同的组织架构代表着企业的不同法律或者组织单位.在每一次项目实施中,确定企业的组织架构是一件非常重要的事情 ...

  9. 基础实验篇 | RflySim底层飞行控制算法开发系列课程总体介绍

    本讲主要介绍多旋翼的特点及选用多旋翼作为实验平台的原因.对于无人系统教育的一些新需求.RflySim平台对于飞控的底层控制算法的开发优势.本期平台课程的设置.以及如何开发自驾仪系统. 相较于固定翼和直 ...

最新文章

  1. 包浆网图分分钟变高清,伪影去除、细节恢复更胜前辈AI,下载可玩|腾讯ARC实验室出品...
  2. 命令行工具cobra的使用
  3. Geotools简介以及quickstsrt加载shp文件并显示
  4. 小孔子文章管理系统V2.0发布测试
  5. python中通过元类(TYPE)简单实现对象关系映射(ORM)
  6. (译)元素浮动的那些事儿
  7. 【安卓开发 】Android初级开发(十)Android中app自动更新版本号比较
  8. CSS揭秘(二)背景与边框
  9. makefile常用讲解(2)
  10. linux搭建spark集群,详解Spark+Zookeeper搭建高可用Spark集群
  11. linux 命令记录
  12. s5pv210 linux内核移植,S5PV210(TQ210)学习笔记——内核移植与文件系统构建之二
  13. 排序——冒泡、选择、插入、希尔、快速、计数
  14. r语言把多个图合并在一张图_R语言绘图 | 折线图画法,如何画出你满意的图?
  15. 日本惠普发表14.1型液晶内藏笔记本PC「dv4」系列2种模式
  16. 苹果笔记本计算机内存不足怎么办,macbook内存不够用怎么加_苹果电脑增加内存的具体方法...
  17. mysql 视图 统计_mysql 视图
  18. c++语言计算圆周率,计算圆周率的C++程序(30000位)
  19. sql 查找一个月内数据
  20. 如何找回u盘被删除的文件

热门文章

  1. MySQL全版本安装步骤
  2. 【能效管理】AcrelEMS-IDC数据中心综合能效管理系统应用分析
  3. Thinking in BigData(五)大数据之统计学与数据挖掘
  4. Node.js安装,npm安装yarn步骤
  5. 使用U盘安装windows系统教程
  6. Unity Asset Store越来越多
  7. oracle_pdb_sid,Oracle12c多租户数据库 - PDB数据库的unplug及plug 1
  8. 记账系统推荐金蝶精斗云_金蝶精斗云和用友T+财务软件哪个好用?实用?各自优缺点是什么...
  9. 基于SpringBoot的ERP系统,自带进销存+财务+生产功能
  10. 《Java SE实战指南》22-04:字节流和字符流