DSA 数字签名实验原理
来源:西普信息安全实验教学系统
摘 要: 本文主要介绍了 数字签名实验原理
关键词:数字签名;DSA 签名算法;密码学应用
实验原理
签名算法
数字签名标准是由美国国家标准技术研究所于 年正式公布的
联邦信息处理标准 。 目前新增了基于 和 的数字签名算法,但是最初只支持
!"#数字签名算法,该算法是 $# 签名算法的改进,安全性基于计算离散对
数的难度。
算法由美国国家安全局 指导设计,用来提供唯一的数字签名函数;它虽然是一种公钥技术,
但是只能用于数字签名。 中规定了使用安全散列算法%&,将消息生成固定长度的散列值,与一随
机数 ' 一起作为签名函数的输入;签名函数还需使用发送方的密钥 ( 和供所有用户使用的全局公开密钥分
量)*,产生的两个输出+即为消息的签名。接收方收到消息后再产生出消息的散列值,将散列值与收
到签名中的 + 一起输入验证函数;验证函数还需输入全局公开密钥分量)*和发送方的公钥 ,,产生的输
出若与收到的签名中的 相同,则验证了签名是有效的。 的具体算法描述如下:
的参数
全局公开密钥分量)*,可以为一组用户公用:
是一个满足 -
.&
/)/-
.
的大素数,其中 0-1.12- 且 . 是 的倍数;
* 是 )& 的素因子,满足 -
0
/*/-
2
,即 * 的比特长度为 2;
,其中 " 是一个整数,满足 /"/)&,且 。
用户私钥 (
( 是随机或伪随机整数,满足 2/(/*。
用户公钥 ,
用户公钥是由私钥计算而来的,给定 ( 计算 , 容易,但给定 , 计算 ( 是离散对数问题,被认为在计算上
是安全的。
用户为待签名消息选取的秘密数 '
' 为随机或伪随机的整数,要求 2/'/*;每次签名都要重新生成 '。
签名过程
发送方使用随机选取的秘密值 ',计算
其中:%3是使用基于 %& 生成的 3 的散列值;+就是基于散列值对消息 3 的数字签名;'
&
是 '
142
数字签名实验原理