jho*_*orn 3 cryptography asn.1 certificate x509
我试图了解日常实际使用的密码学世界。我发现很难起步,我想知道是否有人有一些好的资源来解释假设我一无所知的事情。
例如,我有(我相信,由于理解有限)一个带有 X509 证书和“SignatureValue”属性的文件。我认为这些是用 SHA256 编码的。然而,我想确切地了解我正在查看的内容,因为我需要提供一个“时间戳响应文件”,其中包含一个时间戳权威消息的 DER 表示形式。
到目前为止我有所了解的事情:
我想要鸟瞰这个生态系统,这样我就可以对这个难题如何组合在一起有一些概念,然后我可以更好地深入研究事物如何工作的本质。
阅读一大堆书会花费很多时间。恕我直言,更快的方法是浏览维基百科并阅读以下内容:
哈希算法(简而言之,它将长文本/数据转换为固定大小的值,哈希,它(几乎)唯一地表示这个长文本。并且,是的,它是单向的。
签名算法 - 根据哈希值计算某些内容,称为“签名”。主要思想是只有当你拥有密钥时才能计算出正确的签名。并且,这个签名可以用公钥来验证。公钥在人们之间共享,以便他们可以验证您的签名。
因此,有效签名证明文本/数据没有被其他人更改。
证书:这是数据块,它将用户的公钥与有关该密钥的信息绑定:所有者的姓名、电子邮件、地址等。证书通常由权威机构签署(根证书) - 因此,如果您信任权威机构,您应该相信该证书正确地代表了人。
时间戳:这是由人们信任的某些权威机构制作的签名,它将时间标记绑定到在其他文档上制作的签名。因此,这将证明该签名(以及该文档)当时是正确的。这是必要的,因为有时证书可能会被撤销或过时,并且如果没有时间戳,您将不知道这是否是正确的签名,因为您不知道它何时创建。
ASN.1 - 抽象语法表示法,它定义了描述某些数据结构格式的文本规则。它被用于大多数密码学标准。
希望这有助于理解正在发生的事情:)
实际上,市场上有很多密码学库,它们实现了所有这些时间戳/x.509/签名/验证等。