ntp-keygen.c
这个程序产生加密数据文件使用的的密码,遵循Autokey security protocol和NTPv4.文件名被名字和创建时间组成的头部当做前缀,后面跟有一个类型定义的描述符标签和PEM加密的数据结构并且兼容OPENSSL库。
所有的文件名类似"ntpkey_<type>_<hostname>.<filestamp>",此处的<type>代表文件类型,<hostname>即产生文件的主机名并且<filestamp>就是以ntp秒数产生计时的时间。NTP程序期望一个通用的类似"ntpkey_<type>_whimsy.udel.edu"的通过软连接的关系。随后是一系列文件类型,第一行是文件名第二行是链接名。
ntpkey_MD5key_<hostname>.<filestamp>
MD5(128-bit)的密钥用来在对称密钥加密算法中计算消息摘要
ntpkey_RSAhost_<hostname>.<filestamp>
ntpkey_host_<hostname>
RSA private/public host key pair 用在公钥签名中。
ntpkey_RSAsign_<hostname>.<filestamp>
ntpkey_sign_<hostname>
RSA private/public sign key pair用在公钥签名中。
ntpkey_DSAsign_<hostname>.<filestamp>
ntpkey_sign_<hostname>
DSA private/public sign key pair用在公钥签名中。
可用的摘要/签名方案
RSA: RSA-MD2, RSA-MD5, RSA-SHA, RSA-SHA1, RSA-MDC2, EVP-RIPEMD160
DSA: DSA-SHA, DSA-SHA1
ntpkey_XXXcert_<hostname>.<filestamp>
ntpkey_cert_<hostname>
X509v3证书使用RSA或者DSA公钥和签名。XXX是用来识别消息摘要和签名加密算法的码。
识别方案。key type pair被用来做挑战;key type key被用来应答。
ntpkey_IFFkey_<groupname>.<filestamp>
ntpkey_iffkey_<groupname>
Schnorr (IFF) identity parameters and keys
ntpkey_GQkey_<groupname>.<filestamp>,
ntpkey_gqkey_<groupname>
Guillou-Quisquater (GQ) identity parameters and keys
ntpkey_MVkeyX_<groupname>.<filestamp>,
ntpkey_mvkey_<groupname>
Mu-Varadharajan (MV) identity parameters and keys
注意:有时因为有些统计意外这个程序不能产生并且验证加密的数据,可以被返回状态为-1表明。在这种情况下只是再次运行这程序即可。如果程序的确是以返回值0结束,数据即被验证正确。
这些加密例程可以被模数大小分类。默认值是512位,可以在加密长度和计算时间之间达成妥协,这一般应用就够了。这些例程已经被256,512,1024和2048位的大小测试过。并不是所有的消息摘要和签名加密方案都可以在小于512位的大小的情况下工作。大于2048位的计算时间在所有机器上都是不可忍受的,当然最快的处理器除外。ULTRASPARC刀锋1000需要超过9分钟来产生和验证大小是2048的模数。老的SPARC IPC可能需要整整一周。
这一个程序使用的OPenssl库需要一个随机的种子文件。就如OPENSSL文件描述的那样,文件名默认是RANDFILE环境变量在用户的家目录然后.rnd在用户的家目录。