File Index
Files and directories
Sign in
FILE

digsig.rst

File preview with syntax highlighting.

linux-6.19.14/Documentation/translations/zh_CN/security/digsig.rst RESTRUCTUREDTEXT
  1.. SPDX-License-Identifier: GPL-2.0
  2.. include:: ../disclaimer-zh_CN.rst
  3
  4:Original: Documentation/security/digsig.rst
  5
  6:翻译:
  7 赵硕 Shuo Zhao <zhaoshuo@cqsoftware.com.cn>
  8
  9===============
 10数字签名验证API
 11===============
 12
 13:作者: Dmitry Kasatkin
 14:日期: 2011.06.10
 15
 16
 17.. 内容
 18
 19   1.介绍
 20   2.API
 21   3.用户空间工具
 22
 23
 24介绍
 25====
 26
 27数字签名验证API提供了一种验证数字签名的方法。
 28目前,数字签名被IMA/EVM完整性保护子系统使用。
 29
 30数字签名验证是通过精简的GnuPG多精度整数(MPI)库的内核移植来实现的。
 31该内核版本提供了内存分配错误处理,已根据内核编码风格进行重构,并修复
 32了checkpatch.pl报告的错误和警告。
 33
 34公钥和签名由头部和MPIs组成::
 35
 36	struct pubkey_hdr {
 37		uint8_t		version;	/* 密钥格式版本 */
 38		time_t		timestamp;	/* 密钥时间戳,目前为0 */
 39		uint8_t		algo;
 40		uint8_t		nmpi;
 41		char		mpi[0];
 42	} __packed;
 43
 44	struct signature_hdr {
 45		uint8_t		version;	/* 签名格式版本 */
 46		time_t		timestamp;	/* 签名时间戳 */
 47		uint8_t		algo;
 48		uint8_t		hash;
 49		uint8_t		keyid[8];
 50		uint8_t		nmpi;
 51		char		mpi[0];
 52	} __packed;
 53
 54keyid等同对整个密钥的内容进行SHA1哈希运算后的第12到19字节。
 55签名头部用于生成签名的输入。这种方法确保了密钥或签名头部无法更改。
 56它保护时间戳不被更改,并可以用于回滚保护。
 57
 58API
 59===
 60
 61目前API仅包含一个函数::
 62
 63	digsig_verify() - 使用公钥进行数字签名验证
 64
 65	/**
 66	* digsig_verify() - 使用公钥进行数字签名验证
 67	* @keyring:   查找密钥的密钥环
 68	* @sig:       数字签名
 69	* @sigen:     签名的长度
 70	* @data:      数据
 71	* @datalen:   数据的长度
 72	* @return:    成功时返回0,失败时返回 -EINVAL
 73	*
 74	* 验证数据相对于数字签名的完整性。
 75	* 目前仅支持RSA算法。
 76	* 通常将内容的哈希值作为此函数的数据。
 77	*
 78	*/
 79	int digsig_verify(struct key *keyring, const char *sig, int siglen,
 80				  const char *data, int datalen);
 81
 82用户空间工具
 83============
 84
 85签名和密钥管理实用工具evm-utils提供了生成签名、加载密钥到内核密钥环中的功能。
 86密钥可以是PEM格式,或转换为内核格式。
 87当把密钥添加到内核密钥环时,keyid定义该密钥的名称:下面的示例中为5D2B05FC633EE3E8。
 88
 89以下是keyctl实用工具的示例输出::
 90
 91	$ keyctl show
 92	Session Keyring
 93	-3 --alswrv      0     0  keyring: _ses
 94	603976250 --alswrv      0    -1   \_ keyring: _uid.0
 95	817777377 --alswrv      0     0       \_ user: kmk
 96	891974900 --alswrv      0     0       \_ encrypted: evm-key
 97	170323636 --alswrv      0     0       \_ keyring: _module
 98	548221616 --alswrv      0     0       \_ keyring: _ima
 99	128198054 --alswrv      0     0       \_ keyring: _evm
100
101	$ keyctl list 128198054
102	1 key in keyring:
103	620789745: --alswrv     0     0 user: 5D2B05FC633EE3E8
~/ Read-only file preview.