嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

工业安全第4部分:关于数字证书、证书颁发机构和椭圆曲线

在第1至第3部分中,我解释了密码学的一些基本概念,例如加密、解密、对称和非对称密钥以及哈希等。第4部分也以这些概念作为基础。因此,如果您还不熟悉这些概念,请先阅读第一第二第三部分 ,然后继续第四部分

信任公钥的来源

当我解释非对称密钥的概念时,我总是说:“皮特可以确定海伦有……”。可是等等!他真的可以确定吗?如果不是海伦发的aKpub,而是苏珊发的,那会怎么样?那么苏珊将拿到对应的aKpriv,而不是海伦拿到。苏珊将变成通信过程中的女王,可以随心所欲伪造任何内容。这种攻击称为“中间人”(在本例中,我们应该称其为“女中间人”)。当海伦和皮特使用互联网等公共传输线时,苏珊在信息从海伦到皮特的途中交换公钥并不困难。交换公钥的奇妙概念依赖于对密钥来源的信心。这都是信任的问题。您能相信消息来源是她自己声称的身份吗?这正是公钥基础结构(PKI)发挥作用的地方。

公钥基础结构 (PKI)

皮特可以去海伦那里,直接获取密钥。那么,我们将不再使用公钥(PK),因为它将是海伦和皮特之间的私钥。PK的概念是海伦与她的所有通信伙伴都使用公钥。皮特不仅与海伦交流,甚至有时也与苏珊交流。那么他将需要苏珊提供的公钥。最终,他需要环游世界以收集他进行交流需要的所有公钥。因此,我们需要一种更好地安全分发公钥的结构。这就是PKI应该做的。

shutterstock_429725896_9282ac1af59226b36e5e547f69b8f874f39bd5e4.jpg

颁发机构 (CA)

设想存在某种权威机构,我们称他为巴克莱爵士。皮特可以通过安全方式获得巴克莱爵士的公钥(可能仅在指定的有限时间内有效)。海伦将她的公钥以及包含公钥的签名、她的名字和其他可识别她身份的数据发送给巴克莱爵士。巴克莱爵士将检查她的身份。他甚至可能会拜访她,以证明发给自己的公钥确实是由海伦生成的,她的名字叫海伦,头发是棕色的,并且住在乐高乐园。所有这些数据都包含在海伦给巴克莱爵士的签名中,另外还有解密该签名需要的公钥。完成所有检查后,巴克莱爵士签发了一份

证书

certificate_CA_d87a16c7bf2bb823cada86c025f7a73d11f87ce3.png

这是一个电子文件(文本文件),其中包含海伦的身份数据和她的公钥。它还包括对这些项目计算得出的签名,并使用巴克莱爵士的私钥签名。当海伦与她的朋友通信时,她发送这份证书而不仅仅是她的公钥。任何接收者(包括皮特)都可以使用巴克莱爵士的公钥(通过安全可靠的方式获得)证明该证书确实由巴克莱爵士签发。如果巴克莱爵士签发证书,他们可以信任证书中包含的公钥由证书中指定的对象签发。业界有一个公钥证书标准,称为X.509,它描述了公钥证书的内容和格式。

TLS 和 SSL

信任签发众多证书的几个颁发机构,这个概念是安全互联网协议的基本原则。如果您使用安全的Http协议(https)打开网页,则浏览器会要求提供证书并与颁发机构的公钥进行核对。常规可处理https的浏览器拥有来自知名颁发机构的内置公钥列表。TLS(传输层安全性)协议对包含证书的完整身份证明(包括公钥的使用)进行了标准化,该协议正式称为SSL(安全套接字层)。 当您访问安全网站时,您的浏览器应在URL前面显示一个挂锁。单击挂锁将显示用于检查公钥的证书。

这是浏览器调用时获得的证书的示例https://revpimod.org:

Subject
RDN	                Value
Common Name (CN)	revpimodio.org

Properties
Property	       Value
Issuer	               CN = Let's Encrypt Authority X3,O = Let's Encrypt,C = US
Subject	               CN = revpimodio.org
Valid From	       12 Feb 2020, 8:31 a.m.
Valid To	       12 May 2020, 8:31 a.m.
Serial Number	       03:59:04:8D:63:88:92:84:1B:AA:4D:A7:2A:0F:90:C2:F0:3C (291628039495863381646042141009153049686076)
CA Cert	               No
Key Size	       2048 bits
Fingerprint (SHA-1)    15:FE:BC:3F:63:B3:BB:9C:17:97:F7:31:2C:EC:4A:77:2B:CF:EC:4A
Fingerprint (MD5)      21:30:F3:99:2E:53:6E:D2:ED:61:6D:E7:11:9E:B3:69
SANS	               revpimodio.org, www.revpimodio.org

Certificate Detailed Information
    Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:59:04:8d:63:88:92:84:1b:aa:4d:a7:2a:0f:90:c2:f0:3c
    Signature Algorithm: sha256WithRSAEncryption
        Issuer:
            commonName                = Let's Encrypt Authority X3
            organizationName          = Let's Encrypt
            countryName               = US
        Validity
            Not Before: Feb 12 08:31:55 2020 GMT
            Not After : May 12 08:31:55 2020 GMT
        Subject:
            commonName                = revpimodio.org
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:cb:35:05:26:79:12:38:62:44:8c:48:7d:7f:65:
                    d4:4f:e9:4c:67:9e:dd:75:8d:45:65:01:6b:a6:04:
                    fd:fa:c4:61:ca:a1:24:2d:84:c7:b0:1e:05:a8:8c:
                    a9:24:0c:2b:7d:87:c6:e9:55:30:fd:86:e4:9b:de:
                    1f:fe:45:ca:df:75:ab:be:78:33:59:52:37:b6:5d:
                    8e:9d:94:1c:17:52:26:49:0e:b5:2f:7f:87:fb:35:
                    8e:55:01:e5:1b:8f:1b:70:bb:a3:69:b3:82:b7:8e:
                    80:b1:09:87:11:fe:99:cb:8b:d7:24:ae:e3:35:db:
                    76:a5:b3:f4:d7:ef:94:98:f1:ab:d4:a3:92:dd:43:
                    63:9a:9a:2f:47:c3:92:9b:e7:87:6f:ea:17:34:a7:
                    e7:1a:9b:57:8d:d8:4f:9b:a6:d6:e4:bb:b0:63:a6:
                    79:5d:a1:fe:91:23:49:68:d5:a6:1a:96:a6:b6:30:
                    c4:c6:9e:32:42:0e:db:2b:0a:3b:52:7c:a9:8c:c2:
                    ae:dd:b6:4c:b9:5d:d6:73:2c:87:ca:03:d1:25:76:
                    24:f4:8f:c3:96:92:ae:dc:c6:4b:d3:ad:92:dd:28:
                    e1:15:7b:f7:86:96:df:fd:10:6c:10:e3:ff:35:ca:
                    80:56:30:99:06:30:ab:79:16:20:22:88:1c:55:71:
                    71:a3
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier:
                37:D0:BA:99:F9:91:2E:6C:0C:1A:51:28:47:10:B9:68:BA:C0:C0:1F
            X509v3 Authority Key Identifier:
                keyid:A8:4A:6A:63:04:7D:DD:BA:E6:D1:39:B7:A6:45:65:EF:F3:A8:EC:A1
            Authority Information Access:
                OCSP - URI:http://ocsp.int-x3.letsencrypt.org
                CA Issuers - URI:http://cert.int-x3.letsencrypt.org/
            X509v3 Subject Alternative Name:
                DNS:revpimodio.org, DNS:www.revpimodio.org
            X509v3 Certificate Policies:
                Policy: 2.23.140.1.2.1
                Policy: 1.3.6.1.4.1.44947.1.1.1
                  CPS: http://cps.letsencrypt.org
            1.3.6.1.4.1.11129.2.4.2:
                ......v......... N.f.+..% gk..p..IS-...^...p8..7.....G0E. ]2..`.....y..e.6.M.}.....P.......!..j=t.B+............Tw?.[..n....v.u.oSv.1.1.....Q..w.......).....7.....p8........F0D. 3.UHb...m..&.=.%....?E...z.a.vi5. ..r.3..r.?..9....J.R..........C.
    Signature Algorithm: sha256WithRSAEncryption
         8f:2b:58:1d:de:da:0a:02:da:bd:cc:f1:de:15:e1:bf:1a:15:
         28:d6:6f:5c:30:bb:04:f2:0b:f9:d9:53:e4:92:bf:52:e2:0f:
         ba:90:27:9c:ea:74:52:fa:62:c7:14:44:14:85:c7:31:1a:21:
         d0:6c:00:8b:70:0b:a4:7f:69:29:f9:73:5d:5d:a0:7a:c9:ef:
         ea:6f:b5:0e:70:e9:4d:1f:f5:03:0d:a1:86:aa:c0:b9:e3:a7:
         4d:c2:5d:0f:c7:0e:ad:35:25:81:c4:5e:17:1f:e0:2a:ec:c9:
         30:96:26:91:95:d1:5f:3d:f3:d5:43:2c:cf:4a:6f:3c:7f:73:
         ba:8c:d3:0f:22:b8:c6:49:6f:89:a9:64:7e:db:7c:ce:78:b3:
         07:55:1b:04:c1:47:f3:61:57:f0:96:84:92:d4:ce:86:8f:0b:
         bb:72:c7:1c:38:df:34:2d:ad:ae:09:1d:b1:f6:4f:40:32:28:
         d5:49:cb:30:74:e9:d3:5a:2b:96:c7:a6:2b:70:6e:86:f9:8d:
         f3:db:62:3e:41:9a:12:68:da:f6:17:e5:0f:75:1d:e4:c0:ba:
         b3:0c:cb:37:0d:4a:a3:98:44:40:88:28:88:80:ac:0f:5a:6b:
         bf:03:f9:a6:21:cc:5f:16:c9:a0:2d:35:eb:a0:6f:20:30:ca:
         c2:f5:bc:92
-----BEGIN CERTIFICATE-----
MIIFZzCCBE+gAwIBAgISA1kEjWOIkoQbqk2nKg+QwvA8MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDAyMTIwODMxNTVaFw0y
MDA1MTIwODMxNTVaMBkxFzAVBgNVBAMTDnJldnBpbW9kaW8ub3JnMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyzUFJnkSOGJEjEh9f2XUT+lMZ57ddY1F
ZQFrpgT9+sRhyqEkLYTHsB4FqIypJAwrfYfG6VUw/Ybkm94f/kXK33WrvngzWVI3
tl2OnZQcF1ImSQ61L3+H+zWOVQHlG48bcLujabOCt46AsQmHEf6Zy4vXJK7jNdt2
pbP01++UmPGr1KOS3UNjmpovR8OSm+eHb+oXNKfnGptXjdhPm6bW5LuwY6Z5XaH+
kSNJaNWmGpamtjDExp4yQg7bKwo7UnypjMKu3bZMuV3WcyyHygPRJXYk9I/DlpKu
3MZL062S3SjhFXv3hpbf/RBsEOP/NcqAVjCZBjCreRYgIogcVXFxowIDAQABo4IC
djCCAnIwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
BQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ30LqZ+ZEubAwaUShHELlousDA
HzAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcBAQRj
MGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlwdC5v
cmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v
cmcvMC0GA1UdEQQmMCSCDnJldnBpbW9kaW8ub3JnghJ3d3cucmV2cGltb2Rpby5v
cmcwTAYDVR0gBEUwQzAIBgZngQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEF
BQcCARYaaHR0cDovL2Nwcy5sZXRzZW5jcnlwdC5vcmcwggEDBgorBgEEAdZ5AgQC
BIH0BIHxAO8AdgCyHgXMi6LNiiBOh2b5K7mKJSBna9r6cOeySVMt74uQXgAAAXA4
vZ43AAAEAwBHMEUCIF0ywddgjquAich5uPpl8jYGTQh9Ewu9qrZQ/v7JweO6AiEA
vmo9dKJCKx/i3fe7Fn+alueSEVR3PwRbxhhup8LfFHYAdQBvU3asMfAxGdiZAKRR
Ff93FRwR2QLBACkGjbIImjfZEwAAAXA4vZ+1AAAEAwBGMEQCIDPJVUhi5fa1bcS6
JrE9oyXB2tQSP0Wys9x6EmEVdmk1AiADnXKVM+0Rcho/37Q5kNOXlEodUucIwYD2
Lhru16JDwjANBgkqhkiG9w0BAQsFAAOCAQEAjytYHd7aCgLavczx3hXhvxoVKNZv
XDC7BPIL+dlT5JK/UuIPupAnnOp0UvpixxREFIXHMRoh0GwAi3ALpH9pKflzXV2g
esnv6m+1DnDpTR/1Aw2hhqrAueOnTcJdD8cOrTUlgcReFx/gKuzJMJYmkZXRXz3z
1UMsz0pvPH9zuozTDyK4xklvialkftt8znizB1UbBMFH82FX8JaEktTOho8Lu3LH
HDjfNC2trgkdsfZPQDIo1UnLMHTp01orlsemK3BuhvmN89tiPkGaEmja9hflD3Ud
5MC6swzLNw1Ko5hEQIgoiICsD1prvwP5piHMXxbJoC0166BvIDDKwvW8kg==
-----END CERTIFICATE-----

不同的浏览器使用不同的格式来显示证书。但是,您始终会看到诸如证书所有者的公钥(有时为模数和指数)、URL、用于生成公钥的算法(通常为RSA)、有效期的开始和结束日期、证书的SHA256哈希值(“指纹”)、证书的签发者、证书ID(由签发者提供以识别此证书)等项目。

您还可检测到经常涉及多个颁发机构的“嵌套”证书。某些浏览器(例如Chrome)将它们显示为证书树(最左侧的标签:

certificate_bbbc6d042d81c495febcdf5cfe72300cf50a84f8.png

我将它与信任金字塔进行比较来进行解释。浏览器知道顶级颁发机构(“根颁发机构”)的公钥,它为自己签发“根证书”(这种证书称为“自签证书”,只有在您有安全途径获取公钥时才能信任)。根颁发机构的私钥是受高度保护的机密。如果被知晓,则所有派生的子证书都不再安全。

chain_of_trust_b0112f010c79395da22b8084b3c113d4015dc00d.png

中间颁发机构需要从根颁发机构获得证书。他们将数据和公钥放入证书中,并交给根颁发机构签名(使用根颁发机构的公钥)。

这种“信任链”可以跨越多个层次,直到与最终实体证书挂钩。所有者将其数据和公钥放入证书中。中间颁发机构会获得此类证书,并使用公钥对其进行签名。

当您的浏览器读取此类所有者的证书时,需要返回到“信任锚”,即根证书。  它从所有者的证书A中获取签发者,然后查看签发者的证书V以查找公钥并验证证书A的签名。如通过,它将从证书V中读取签发者,并查看该签发者的证书Y。它从证书Y中得出公钥并验证证书V。沿金字塔向上进行,直到达到根证书为止(主题与签发者相同。浏览器使用其内置的公钥列表验证此根证书。只有当整个签名链验证通过时,浏览器才会使用底层证书的公钥与服务器进行通信。

混合密码系统

当浏览器确认服务器的真实性并获得其公钥与服务器进行通信后,它会生成对称的唯一会话密钥(仅对此浏览器会话有效)。它将使用公钥加密的数据发送到服务器。只有服务器可以解密此密钥,并在此会话期间将其用于对称加密和进一步通信的解密。这称为混合密码系统,它利用了对称密钥所涉及的计算能力大大降低的优势。

我已经简化了TLS的流程。我的目的不是让您编写TLS软件,而是让您了解密码学的基础知识。

我想以以下内容结束第4部分

椭圆曲线密码学 (ECC)

在本系列的第2部分中,我解释了使用模数算法和指数函数的基本RSA算法,以获得用于非对称密码的单向算法。一种较新的单向算法称为ECC,与传统算法相比,它具有多个优点。由于我不完全了解其背后的数学原理,因此建议您像我一样将ECC算法视为黑箱。我们需要知道的是,它的运行平稳且速度更快,因为您使用较短的密钥即可获得相同级别的安全性。您只需要160位密钥即可达到1024位RCA密钥的安全级别。使用ECC算法时,达到256位RSA安全级别的计算能力大约小64倍。这就是它非常适合资源有限的小型系统(例如智能卡等)的原因。

shutterstock_27217918_633944512a998425b9bb4ac639c37ab0f1ac05a7.jpg

由于ECC的工作方式,它始终需要一个称为“临时密钥”的随机参数,因为它被用作一次性密钥,并且必须保密。因此,使用ECC的系统(应该)始终在板载某种RNG(TRNG是最佳实践)。

DSA签名包含消息的单个加密散列,而其ECC挂坠(ECDSA)则采用该散列、一个临时密钥和私有密钥来计算两个编码部分:  r和s。验证算法使用从原始消息派生的哈希值、公钥以及带有r和s的签名来计算结果。此结果告诉您用于计算r和s的哈希是否与您在验证算法中使用的哈希相同。请记住用于生成ECDSA签名的这两个值r和s,因为稍后我将向您展示出色的小型加密芯片时,我们将再次遇到它们:

DS28E38_729e29ae4c9a19c0c9465e901425c572389cf5c2.png

经许可摘自“DeepCover Secure Authenticator with 1-Wire ECDSA and 1Kb User EEPROM”,https://datasheets.maximintegrated.com/en/ds/DS28E38.pdf© 2017 Maxim Integrated Products,Inc.,保留所有权利。

ECC变体中确实存在所有重要的安全程序,例如DSA(“数字签名算法”),TLS(“安全互联网通信中使用的协议”)和RSA(非对称密钥系统)。在开始相应的程序之前,通信合作伙伴需要就使用的标准达成一致。

我们终于可以将这些知识运用到嵌入式硬件和软件工程中了。您将在第5和6部分中找到相关应用。

Volker de Haas started electronics and computing with a KIM1 and machine language in the 70s. Then FORTRAN, PASCAL, BASIC, C, MUMPS. Developed complex digital circuits and analogue electronics for neuroscience labs (and his MD grade). Later: database engineering, C++, C#, industrial hard- and software developer (transport, automotive, automation). Designed and constructed the open-source PLC / IPC "Revolution Pi". Now offering advanced development and exceptional exhibits.
DesignSpark Electrical Logolinkedin