数字签名标准(DSS)是由NIST公布的联邦信息处理标准。DSS在1991年首次公布,在思考了公钥对安全性的反馈意见后,后来做了广泛的修改。DSS给计算和核实数字签名指定了一个数字签名算法(DSA),DSA为在EIGamal与Schnorr签名方案基础上设计的。
首先把DSS和RSA的签名方式进行比较。RSA算法不仅能进行加密与签名,还可以进行密钥交换。与这个不一样的是,DSS用的算法只可有数字签名功能。
用RSA签名时,把消息输入一个杂凑函数来得出长度确定的安全杂凑值,再拿发送方的密钥对杂凑值进行加密来实现消息的签名。消息及签名被共同发至接收方,接收方得到消息后得出消息的杂凑值,且用发送方的公钥对收到的签名解密。这样接收方则得到了2个杂凑值,若两个值相同,则认为收到的签名是有效的。
DSS签名也用一杂凑函数得到消息的杂凑值,杂凑值与随机数k共同做签名函数的输入,签名函数还要用发送方的密钥SKA与全部用户用的一族参数,称该族参数是全局公钥PKG。签名函数的输出s与r形成了消息的签名(s,r)。接收方收到消息后再得出其杂凑值,把杂凑值与签名输进验证函数,验证函数还要输进全局公钥PKG与发方的公钥PKA。验证函数的结果和收到的签名成分r一样,那么证明了签名有效。