KR20210131444A - 물리적 복제 방지 기능을 사용한 컴퓨팅 디바이스에 대한 신원 생성 - Google Patents
물리적 복제 방지 기능을 사용한 컴퓨팅 디바이스에 대한 신원 생성 Download PDFInfo
- Publication number
- KR20210131444A KR20210131444A KR1020217034176A KR20217034176A KR20210131444A KR 20210131444 A KR20210131444 A KR 20210131444A KR 1020217034176 A KR1020217034176 A KR 1020217034176A KR 20217034176 A KR20217034176 A KR 20217034176A KR 20210131444 A KR20210131444 A KR 20210131444A
- Authority
- KR
- South Korea
- Prior art keywords
- key
- secret
- memory
- computing device
- puf
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 132
- 230000006870 function Effects 0.000 claims abstract description 80
- 238000009795 derivation Methods 0.000 claims abstract description 11
- 238000003860 storage Methods 0.000 claims description 45
- 230000004044 response Effects 0.000 claims description 28
- 238000010586 diagram Methods 0.000 claims description 12
- 238000001514 detection method Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 109
- 238000012545 processing Methods 0.000 description 77
- 239000010410 layer Substances 0.000 description 65
- 238000012795 verification Methods 0.000 description 41
- 230000008569 process Effects 0.000 description 39
- 230000007246 mechanism Effects 0.000 description 28
- 101100453289 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) JSN1 gene Proteins 0.000 description 24
- 238000013459 approach Methods 0.000 description 21
- 101100024116 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) MPT5 gene Proteins 0.000 description 18
- 101100138725 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) PUF2 gene Proteins 0.000 description 18
- 238000004519 manufacturing process Methods 0.000 description 18
- 238000002347 injection Methods 0.000 description 16
- 239000007924 injection Substances 0.000 description 16
- 238000012360 testing method Methods 0.000 description 16
- 101150070699 PUF3 gene Proteins 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 13
- 101100340317 Arabidopsis thaliana IDL1 gene Proteins 0.000 description 12
- 101100138728 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) PUF4 gene Proteins 0.000 description 11
- 239000004065 semiconductor Substances 0.000 description 11
- 230000001010 compromised effect Effects 0.000 description 7
- 238000012937 correction Methods 0.000 description 7
- 239000000243 solution Substances 0.000 description 7
- 101000579425 Homo sapiens Proto-oncogene tyrosine-protein kinase receptor Ret Proteins 0.000 description 6
- 102100028286 Proto-oncogene tyrosine-protein kinase receptor Ret Human genes 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 6
- 241001465754 Metazoa Species 0.000 description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 229910052710 silicon Inorganic materials 0.000 description 4
- 239000010703 silicon Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000032683 aging Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 101100186820 Drosophila melanogaster sicily gene Proteins 0.000 description 2
- 101150102752 MTC2 gene Proteins 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005672 electromagnetic field Effects 0.000 description 2
- 238000005242 forging Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- -1 ... Proteins 0.000 description 1
- 102100034112 Alkyldihydroxyacetonephosphate synthase, peroxisomal Human genes 0.000 description 1
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 101100299648 Caenorhabditis elegans puf-5 gene Proteins 0.000 description 1
- 101710088052 Ditrans,polycis-undecaprenyl-diphosphate synthase ((2E,6E)-farnesyl-diphosphate specific) Proteins 0.000 description 1
- 101000799143 Homo sapiens Alkyldihydroxyacetonephosphate synthase, peroxisomal Proteins 0.000 description 1
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 1
- 241000282376 Panthera tigris Species 0.000 description 1
- 101100203322 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SKS1 gene Proteins 0.000 description 1
- 101710130822 Tritrans,polycis-undecaprenyl-diphosphate synthase (geranylgeranyl-diphosphate specific) Proteins 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000000848 angular dependent Auger electron spectroscopy Methods 0.000 description 1
- 230000003409 anti-rejection Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0866—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0877—Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
- H04L9/3213—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
- H04L9/3228—One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3234—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3268—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3271—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
- H04L9/3278—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response using physically unclonable functions [PUF]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/06—Authentication
- H04W12/069—Authentication using certificates or pre-shared keys
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/80—Wireless
- H04L2209/805—Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/84—Vehicles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0876—Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
- H04L9/3221—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/08—Access security
- H04W12/086—Access security using security domains
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/60—Context-dependent security
- H04W12/69—Identity-dependent
- H04W12/71—Hardware identity
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
방법은: 컴퓨팅 디바이스에 의해, 디바이스 시크릿을 생성하는 단계 - 생성하는 단계는: 적어도 하나의 물리적 복제 방지 기능(PUF)에 의해, 적어도 하나의 값을 제공하는 단계; 및 키 유도 기능(KDF)을 사용하여, 디바이스 시크릿을 생성하는 단계로서, 적어도 하나의 PUF에 의해 제공된 적어도 하나의 값은 KDF에 대한 입력인 것인, 디바이스 시크릿을 생성하는 단계를 포함함 -; 및 생성된 디바이스 시크릿을 컴퓨팅 디바이스의 메모리에 저장하는 단계를 포함한다.
Description
관련 출원들
본 출원은 2019년 3월 25일자로 출원되고, 명칭이 "GENERATING AN IDENTITY FOR A COMPUTING DEVICE USING A PHYSICAL UNCLONABLE FUNCTION"인 미국 특허 출원 제16/363,204호의 우선권을 주장하며, 이의 전체 개시 내용은 이에 의해 본 명세서에서 원용된다.
본 출원은 Pisasale 외에 의해 2018년 5월 3일자로 출원된, 명칭이 "KEY GENERATION AND SECURE STORAGE IN A NOISY ENVIRONMENT"인 미국 가출원 제15/970,660호와 관련되며, 이의 전체 개시 내용은 본 명세서에서 전체가 제시된 바와 같이 원용된다.
본 출원은 Mondello 외에 의해 2017년 12월 22일자로 출원된, 명칭이 "PHYSICAL UNCLONABLE FUNCTION USING MESSAGE AUTHENTICATION CODE"인 미국 가출원 제15/853,498호와 관련되며, 이의 전체 개시 내용은 본 명세서에서 전체가 제시된 바와 같이 원용된다.
본 출원은 Mondello 외에 의해 2018년 4월 27일자로 출원된, 명칭이 "SECURE DISTRIBUTION OF SECRET KEY USING A MONOTONIC COUNTER"인 미국 가출원 제15/965,731호와 관련되며, 이의 전체 개시 내용은 본 명세서에서 전체가 제시된 바와 같이 원용된다.
기술분야
본 명세서에서 개시되는 적어도 일부 실시예들은 일반적으로 컴퓨팅 디바이스들에 대한 신원에 관한 것이고, 보다 구체적으로는, 이에 제한되지 않지만, 물리적 복제 방지 기능을 사용하여 컴퓨팅 디바이스에 대한 신원을 생성하는 것에 관한 것이다.
물리적 복제 방지 기능(physical unclonable function, PUF)은 예를 들어, 마이크로 프로세서와 같은 반도체 디바이스에 대한 고유한 신원으로서 기능할 수 있는 디지털 값을 제공한다. PUF들은 예를 들어, 반도체 제조 동안 자연적으로 발생하고, 그렇지 않으면 동일한 반도체 칩들 간 구별을 가능하게 하는 물리적 변동들에 기초한다.
PUF들은 통상적으로 암호화에서 사용된다. PUF는 예를 들어, 물리적 구조로 구현되는 물리적 엔티티일 수 있다. PUF들은 보통 집적 회로들로 구현되고, 통상적으로 높은 보안 요건들을 갖는 애플리케이션들에서 사용된다. 예를 들어, PUF들은 고유하고 변조 불가능한 디바이스 식별자로서 사용될 수 있다. PUF들은 또한 보안 키 생성을 위해, 그리고 무작위원으로서 사용될 수 있다.
디바이스 식별에 관련된 일 예에서, Microsoft® Azure® IoT 플랫폼은 Microsoft에 의해 제공되는 클라우드 서비스 세트이다. Azure® IoT 플랫폼은 디바이스 신원 구성 엔진(Device Identity Composition Engine, DICE) 및 많은 상이한 유형들의 하드웨어 보안 모듈(Hardware Security Module, HSM)들을 지원한다. DICE는 제조자들이 하드웨어에 기초하여 디바이스 식별을 생성하기 위해 실리콘 게이트들을 사용할 수 있게 하는 디바이스 식별 및 증명을 위한 신뢰 컴퓨팅 그룹(Trusted Computing Group, TCG)에서 곧 나올 표준이다. HSM들은 디바이스 신원들을 보안하고 진보된 기능 이를테면 하드웨어 기반 디바이스 증명 및 제로 터치 프로비저닝을 제공하기 위해 사용된다.
DICE는 인증, 보안 부트, 및 원격 증명과 같은 보안 솔루션들을 구축하는데 사용하기 위한 신뢰를 앵커링하기 위해 HSM 풋프린트를 사용하는 스케일러블 보안 프레임워크를 제공한다. DICE는 IoT 디바이스들을 특성화(characterize)하는 현재 환경의 통제 컴퓨팅의 에 유용하고, 신뢰 컴퓨팅 그룹(TCG)들 및 신뢰 플랫폼 모듈(Trusted Platform Module, TPM)과 같은 보다 전통적인 보안 프레임워크 표준들에 대한 대안을 제공한다. Azure® IoT 플랫폼은 일부 실리콘 벤더들로부터의 HSM들에 DICE에 대한 HSM 지원을 갖는다.
신뢰 서비스들에 관련된 일 예에서, 강력한 사물 인터넷(Robust Internet-of-Things, RIoT)은 신뢰 서비스들을 컴퓨팅 디바이스들에 제공하기 위한 아키텍처이다. 신뢰 서비스들은 디바이스 신원, 증명, 및 데이터 무결성을 포함한다. RIoT 아키텍처는 멀웨어에 의해 침해를 받은 디바이스들에서 신뢰를 원격으로 재확립하기 위해 사용될 수 있다. 또한, RIoT 서비스들은 초소형 디바이스들에서도 저비용으로 제공될 수 있다.
보안 기술들을 개선하는 것은 당해 분야에서 제품들에 대한 보다 빈번한 소프트웨어 업데이트들에 대한 필요성을 야기했다. 그러나, 이러한 업데이트들은 사람의 개입 없이 관리되고 검증되어야 한다. RIoT는 이러한 기술적 문제들을 해결하기 위해 사용될 수 있다.
RIoT는 많은 보안 시나리오들에 대한 암호화 동작들 및 키 관리를 위한 기초를 제공한다. 인증, 무결성 검증, 및 데이터 보호는 암호화 및 복호화하기 위한 암호 키들뿐만 아니라, 데이터를 해싱하고 서명하기 위한 메커니즘들도 필요로 한다. 대부분의 인터넷 접속 디바이스들은 또한 다른 디바이스들과의 통신을 보안하기 위해 암호화를 사용한다.
RIoT에 의해 제공되는 암호화 서비스들은 디바이스 신원, 데이터 보호, 및 증명을 포함한다. 디바이스 신원에 관하여, 디바이스들은 통상적으로 암호 키의 소유를 증명함으로써 자신들을 인증한다. 디바이스와 연관된 키가 추출되고 복제된다면, 디바이스는 위장될 수 있다.
데이터 보호에 관하여, 디바이스들은 통상적으로 로컬 저장된 데이터를 암호화하고 무결성 보호하기 위해 암호화를 사용한다. 암호 키들이 인증된 코드에만 액세스 가능하다면, 인증되지 않은 소프트웨어는 데이터를 복호화하거나 수정할 수 없다.
증명에 관하여, 디바이스들은 때때로 자신들이 실행되고 있는 코드 및 자신들의 보안 구성을 보고할 필요가 있다. 예를 들어, 디바이스가 최신 코드를 실행하고 있음을 증명하기 위해 증명이 사용된다.
키들이 소프트웨어만으로 관리된다면, 소프트웨어 구성요소들에서의 버그들은 키 침해를 초래할 수 있다. 소프트웨어 전용 시스템들에 대해, 키 침해 이후 신뢰를 복원하는 주요 방법은 업데이트된 소프트웨어를 설치하고 디바이스에 새로운 키들을 프로비저닝하는 것이다. 이는 서버 및 모바일 디바이스들에 대해 시간 소모적이고, 디바이스들이 물리적으로 액세스 불가능할 때 가능하지 않다.
원격 리프로비저닝을 보안하기 위한 일부 접근법들은 하드웨어 기반 보안을 사용한다. 소프트웨어 레벨 공격들은 해커들이 하드웨어 보호 키들을 사용할 수 있게 하지만 그것들을 추출할 수 있게 하지는 않을 수 있어서, 하드웨어 보호 키들은 침해 받은 시스템들의 보안 리프로비저닝에 유용한 빌딩 블록이다. 신뢰 플랫폼 모듈, 또는 TPM은 키들에 하드웨어 보호를 제공하는 보안 모듈의 예이고, 또한 디바이스가 자신이 실행하고 있는 소프트웨어도 보고(증명)할 수 있게 한다. 이에 따라, 침해를 받은 TPM 장착 디바이스는 새로운 키들을 안전하게 발행할 수 있고, 증명 보고들을 제공할 수 있다.
TPM들은 (예를 들어, SoC 집적 및 프로세서 모드 격리 펌웨어 TPM들을 사용하는) 컴퓨팅 플랫폼들 상에서 널리 이용가능하다. 그러나, TPM들은 종종 비실용적이다. 예를 들어, 소형 IoT 디바이스는 비용 및 전력 수요의 실질적인 증가 없이 TPM을 지원할 수 없다.
RIoT는 소형 컴퓨팅 디바이스들에 대한 디바이스 보안을 제공하기 위해 사용될 수 있지만, 또한 임의의 프로세서 또는 컴퓨터 시스템에도 적용될 수 있다. RIoT 코어 외부의 소프트웨어 구성요소들들이 침해를 받는다면, RIoT는 보안 패칭 및 리프로비저닝을 제공한다. RIoT는 또한 암호 키 보호를 위해 상이한 접근법도 사용한다. RIoT 프레임워크에 의해 사용되는 가장 많이 보호되는 암호 키들은 부팅하는 동안에만 잠시 이용 가능하다.
실시예들은 비슷한 참조 부호들이 유사한 요소들을 나타내는 첨부 도면들의 도면들에서 제한이 아닌 예로서 도시된다.
도 1은 일 실시예에 따른, 컴퓨팅 디바이스의 신원을 검증하는 호스트 디바이스를 도시한다.
도 2는 일 실시예에 따른, 신원 구성요소 및 검증 구성요소를 갖는 예시적인 컴퓨팅 시스템을 도시한다.
도 3은 일 실시예에 따른, 차량의 예시적인 컴퓨팅 디바이스를 도시한다.
도 4는 일 실시예에 따른, 차량의 예시적인 컴퓨팅 디바이스와 통신하는 예시적인 호스트 디바이스를 도시한다.
도 5a는 일 실시예에 따른, 호스트 디바이스에 대한 식별자, 인증서, 및 키를 생성하는 애플리케이션 보드를 도시한다.
도 5b는 일 실시예에 따른, 계층들을 사용하는 스테이지들에서 부팅되는 예시적인 컴퓨팅 시스템을 도시한다.
도 6은 일 실시예에 따른, 비대칭 생성기들을 사용하여 식별자, 인증서, 및 키를 생성하는 예시적인 컴퓨팅 디바이스를 도시한다. 노트
도 7은 일 실시예에 따른, 복호화 동작들을 사용하여 컴퓨팅 디바이스의 신원을 검증하는 검증 구성요소를 도시한다.
도 8은 일 실시예에 따른, 인증서를 검증하기 위한 예시적인 프로세스의 블록도를 도시한다.
도 9는 일 실시예에 따른, 식별자, 인증서, 및 키를 사용하여 컴퓨팅 디바이스의 신원을 검증하기 위한 방법을 도시한다.
도 10은 일 실시예에 따른, 물리적 복제 방지 기능(PUF) 디바이스로부터 입력을 수신하는 메시지 인증 코드(MAC)의 출력으로부터 고유한 키를 생성하기 위한 시스템을 도시한다.
도 11은 일 실시예에 따른, 선택기 모듈에 의해 선택된 하나 이상의 PUF 디바이스로부터 입력들을 수신하는 MAC의 출력으로부터 고유한 키를 생성하기 위한 시스템을 도시한다.
도 12는 일 실시예에 따른, 하나 이상의 PUF 디바이스로부터의 입력들 및 단조 카운터로부터의 입력(및/또는 NONCE, 타임 스탬프 등과 같은 또 다른 선도 메커니즘으로부터의 입력)을 수신하는 MAC의 출력으로부터 고유한 키를 생성하기 위한 시스템을 도시한다.
도 13은 일 실시예에 따른, 하나 이상의 PUF로부터 제공된 하나 이상의 입력 값들을 사용하는 MAC로부터 출력을 생성하는 방법을 도시한다.
도 14는 일 실시예에 따른, 하나 이상의 PUF 디바이스로부터의 입력들 및 단조 카운터로부터의 입력(및/또는 NONCE, 타임 스탬프 등과 같은 또 다른 선도 메커니즘으로부터의 입력)을 수신하고, 세션 키를 생성하기 위해 추가적인 MAC를 추가하는 MAC의 출력으로부터 루트 키를 생성하기 위한 시스템을 도시한다.
도 15는 일 실시예에 따른, 비휘발성 메모리에 난독화된 키를 저장하기 위한 컴퓨팅 디바이스를 도시한다.
도 16은 일 실시예에 따른, 난독화 프로세스 동안 생성된 중간 키의 예를 도시한다.
도 17은 일 실시예에 따른, 도 16의 난독화 프로세스 동안 생성된 또 다른 중간 키의 예를 도시한다.
도 18은 일 실시예에 따른, 난독화 키를 생성하고 비휘발성 메모리에 저장하기 위한 방법을 도시한다.
도 19는 일 실시예에 따른, 키 투입에 기초하여 초기 키를 생성하고, 초기 키를 난독화하며, 난독화된 키를 비휘발성 메모리에 저장하기 위한 컴퓨팅 디바이스를 도시한다.
도 20은 일 실시예에 따른, 물리적 복제 방지 기능(PUF)을 사용하여 신원을 생성하기 위한 컴퓨팅 디바이스를 도시한다.
도 21은 일 실시예에 따른, 시스템 부당 변경이 발생했는지 여부를 결정하는데 사용하기 위해 시스템의 단조 카운터에 의해 제공된 초기값을 송신하는 시스템을 도시한다.
도 22는 일 실시예에 따른, 물리적 복제 방지 기능(PUF)을 사용하여 컴퓨팅 디바이스에 대한 신원을 생성하기 위한 방법을 도시한다.
도 1은 일 실시예에 따른, 컴퓨팅 디바이스의 신원을 검증하는 호스트 디바이스를 도시한다.
도 2는 일 실시예에 따른, 신원 구성요소 및 검증 구성요소를 갖는 예시적인 컴퓨팅 시스템을 도시한다.
도 3은 일 실시예에 따른, 차량의 예시적인 컴퓨팅 디바이스를 도시한다.
도 4는 일 실시예에 따른, 차량의 예시적인 컴퓨팅 디바이스와 통신하는 예시적인 호스트 디바이스를 도시한다.
도 5a는 일 실시예에 따른, 호스트 디바이스에 대한 식별자, 인증서, 및 키를 생성하는 애플리케이션 보드를 도시한다.
도 5b는 일 실시예에 따른, 계층들을 사용하는 스테이지들에서 부팅되는 예시적인 컴퓨팅 시스템을 도시한다.
도 6은 일 실시예에 따른, 비대칭 생성기들을 사용하여 식별자, 인증서, 및 키를 생성하는 예시적인 컴퓨팅 디바이스를 도시한다. 노트
도 7은 일 실시예에 따른, 복호화 동작들을 사용하여 컴퓨팅 디바이스의 신원을 검증하는 검증 구성요소를 도시한다.
도 8은 일 실시예에 따른, 인증서를 검증하기 위한 예시적인 프로세스의 블록도를 도시한다.
도 9는 일 실시예에 따른, 식별자, 인증서, 및 키를 사용하여 컴퓨팅 디바이스의 신원을 검증하기 위한 방법을 도시한다.
도 10은 일 실시예에 따른, 물리적 복제 방지 기능(PUF) 디바이스로부터 입력을 수신하는 메시지 인증 코드(MAC)의 출력으로부터 고유한 키를 생성하기 위한 시스템을 도시한다.
도 11은 일 실시예에 따른, 선택기 모듈에 의해 선택된 하나 이상의 PUF 디바이스로부터 입력들을 수신하는 MAC의 출력으로부터 고유한 키를 생성하기 위한 시스템을 도시한다.
도 12는 일 실시예에 따른, 하나 이상의 PUF 디바이스로부터의 입력들 및 단조 카운터로부터의 입력(및/또는 NONCE, 타임 스탬프 등과 같은 또 다른 선도 메커니즘으로부터의 입력)을 수신하는 MAC의 출력으로부터 고유한 키를 생성하기 위한 시스템을 도시한다.
도 13은 일 실시예에 따른, 하나 이상의 PUF로부터 제공된 하나 이상의 입력 값들을 사용하는 MAC로부터 출력을 생성하는 방법을 도시한다.
도 14는 일 실시예에 따른, 하나 이상의 PUF 디바이스로부터의 입력들 및 단조 카운터로부터의 입력(및/또는 NONCE, 타임 스탬프 등과 같은 또 다른 선도 메커니즘으로부터의 입력)을 수신하고, 세션 키를 생성하기 위해 추가적인 MAC를 추가하는 MAC의 출력으로부터 루트 키를 생성하기 위한 시스템을 도시한다.
도 15는 일 실시예에 따른, 비휘발성 메모리에 난독화된 키를 저장하기 위한 컴퓨팅 디바이스를 도시한다.
도 16은 일 실시예에 따른, 난독화 프로세스 동안 생성된 중간 키의 예를 도시한다.
도 17은 일 실시예에 따른, 도 16의 난독화 프로세스 동안 생성된 또 다른 중간 키의 예를 도시한다.
도 18은 일 실시예에 따른, 난독화 키를 생성하고 비휘발성 메모리에 저장하기 위한 방법을 도시한다.
도 19는 일 실시예에 따른, 키 투입에 기초하여 초기 키를 생성하고, 초기 키를 난독화하며, 난독화된 키를 비휘발성 메모리에 저장하기 위한 컴퓨팅 디바이스를 도시한다.
도 20은 일 실시예에 따른, 물리적 복제 방지 기능(PUF)을 사용하여 신원을 생성하기 위한 컴퓨팅 디바이스를 도시한다.
도 21은 일 실시예에 따른, 시스템 부당 변경이 발생했는지 여부를 결정하는데 사용하기 위해 시스템의 단조 카운터에 의해 제공된 초기값을 송신하는 시스템을 도시한다.
도 22는 일 실시예에 따른, 물리적 복제 방지 기능(PUF)을 사용하여 컴퓨팅 디바이스에 대한 신원을 생성하기 위한 방법을 도시한다.
본 명세서에서의 적어도 일부 실시예들은 하나 이상의 컴퓨팅 디바이스에 대한 신원의 검증에 관한 것이다. 다양한 실시예들에서, 호스트 디바이스는 컴퓨팅 디바이스에 메시지를 송신함으로써 컴퓨팅 디바이스의 신원을 검증한다. 컴퓨팅 디바이스는 호스트 디바이스로 송신되는 식별자, 인증서, 및 키를 생성하기 위해 메시지를 사용한다. 호스트 디바이스는 컴퓨팅 디바이스의 신원을 검증하기 위해 생성된 식별자, 인증서, 및 키를 사용한다.
물리적 복제 방지 기능(physical unclonable function; PUF)을 사용하여 컴퓨팅 디바이스에 대한 신원을 생성하는 것에 관한 것이다. 후술될 다양한 실시예들에서, 호스트 디바이스가 상술된 바와 같이 신원을 검증하기 전에, 상기한 컴퓨팅 디바이스는 적어도 하나의 PUF를 사용하여 자신의 자기 신원을 생성할 수 있다. 하나 이상의 PUF를 사용하여 신원을 생성하는 것에 관한 다양한 실시예들은 "PUF를 사용한 컴퓨팅 디바이스에 대한 신원 생성"이라는 타이틀의 아래의 섹션에서 설명된다.
신원의 검증에 관련된 일부 예들에서, 컴퓨팅 디바이스는 플래시 메모리 디바이스일 수 있다. 일부 예들에서, 플래시 메모리는 컴퓨팅 시스템(예를 들어, 자율 주행 차량의 애플리케이션 제어기)에서 강한 레벨의 보안 능력을 추가하기 위해 레버리징된다.
플래시 메모리는 다수의 컴퓨터 시스템들에서 사용된다. 오늘날 직렬 NOR, 병렬 NOR, 직렬 NAND, 병렬 NAND, e.MMC, UFS 등을 포함하여, 다양한 유형들의 플래시 메모리가 존재한다. 이러한 소켓들은 다양한 산업들 및 응용 분야들에 걸쳐 대부분의 내장 시스템들에서 사용된다.
예를 들어, 직렬 NOR은 의료 디바이스들, 공장 자동화 보드들, 자동차 ECU들, 스마트 미터들, 및 인터넷 게이트웨이들과 같은 광범위한 적용 분야들에서 사용된다. 이러한 적용 분야들에 걸쳐 사용되는 칩셋 아키텍처들(프로세서들, 제어기들 또는 SoC들), 운영 체제들, 및 공급 체인들의 다양성을 고려해 볼 때, 플래시 메모리는 이러한 시스템들에서 공통 분모 빌딩 블록이다.
오늘날 컴퓨터 시스템 탄력성은 통상적으로 디바이스들에 통합된 신뢰 루트들의 위치에 의해 특성화되고, 이들이 제공하는 보안 기능들에 대한 솔루션에 의해 레버리징된다. 신뢰 루트들에 대한 보다 많은 정보에 대해서는, 특판 800-164에서 NIST(National Institute of Technology)에 의해 만들어진 정의를 참조한다. 기존의 산업은 하드웨어 및 소프트웨어 능력들의 혼합을 사용하여, 시스템 레벨에서 신뢰 루트들의 다양한 구현들을 사용하여, 접근법들의 해체 및 보안 레벨을 혼란시키는 기술적 문제들을 초래한다. 이러한 난해한 옵션 집합들은 또한 필수 코드 및 데이터가 저장되는 비휘발성 메모리를 방어하는 방법의 핵심적인 제한도 겪는다.
기존의 접근법들은 자신들의 시스템들에 필수 보안 서비스들을 제공하기 위해 프로세서 및 하드웨어 보안 모듈(HSM)들과 같은 다른 보안 요소들에 의존한다. 이는 개별 플래시 메모리 구성요소들이 시스템 필수 코드 및 데이터를 저장하는 많은 시스템들에서 최저 레벨들의 부트시 보안 공백을 생성했다. 플래시는 많은 해커들이 보다 높은 레벨들의 코드로부터 자신들을 마스킹하고 제거에 저항할 수 있는 지능형 지속 공격(Advanced Persistent Threats; APT)을 생성하는 목표가 되었다. 많은 이러한 경우들에서, 플래시 메모리는 새로운 악성 코드로 재이미지화되거나 재기입되며, 이는 해당 디바이스의 무결성을 약화시킨다.
신원 검증에 관련된 본 개시의 다양한 실시예들은 상기한 기술적 문제들에 대한 기술적 솔루션을 제공한다. 일부 실시예들에서, 컴퓨팅 디바이스는 하드웨어 기반 신뢰 루트들을 플래시 메모리 디바이스에 통합하여, IoT 디바이스들에 대한 강한 암호 신원 및 상태 관리를 가능하게 한다. 메모리 내의 필수적인 보안 프리미티브들을 이동시킴으로써, 메모리 자체 내에 수용된 코드 및 데이터의 무결성을 보호하는 것이 보다 간단해진다. 이러한 접근법은 구현의 복잡성 및 비용을 최소화하면서 시스템 레벨 보안을 상당히 향상시킬 수 있다.
일 실시예에서, 새로운 IoT 디바이스 관리 능력은 플래시 메모리 및 관련 소프트웨어를 사용하여 Microsoft® Azure® IoT 클라우드에 의한 디바이스 온보딩 및 관리를 가능하게 함으로써 플래시 메모리를 레버리징한다. 일 예에서, 솔루션들은 필수 디바이스 프로비저닝 서비스들(예를 들어, Azure IoT 허브 디바이스 프로비저닝 서비스(Device Provisioning Service, DPS))에 대한 기초가 되는 암호 신원을 제공한다. 일 예에서, 이러한 DPS는 인에이블된 메모리와 함께 정식 IoT 허브뿐만 아니라 다른 서비스들에 대해서도 디바이스들의 제로 터치 프로비저닝을 가능하게 할 수 있다.
일부 실시예들에서, 상기한 능력을 구현하기 위해, 디바이스 신원 구성 엔진(DICE)이 사용된다(DICE는 신뢰 컴퓨팅 그룹(TCG)으로부터 곧 나올 표준이다). 일 예에서, 인에이블 메모리는 신뢰 하드웨어만이 Microsoft Azure IoT 클라우드에 대한 액세스를 얻을 수 있게 한다. 일 예에서, IoT 디바이스의 상태 및 신원은 필수 코드가 통상적으로 저장되는 메모리에서 검증된다. 각 IoT 디바이스의 고유한 신원은 이제 부트 프로세스에서 시작하여, 새로운 레벨에서 종단간 디바이스 무결성을 제공할 수 있다. 이는 하드웨어 기반 디바이스 증명 및 프로비저닝뿐만 아니라 필요하다면 디바이스의 관리적 복구와 같은 추가적인 기능을 가능하게 할 수 있다.
일 실시예에서, 방법은: 컴퓨팅 디바이스(예를 들어, 직렬 NOR 플래시 메모리 디바이스)에 의해, 호스트 디바이스(예를 들어, CPU, GPU, FPGA, 또는 차량의 애플리케이션 제어기)로부터 메시지를 수신하는 단계; 컴퓨팅 디바이스에 의해, 식별자(예를 들어, 공개 식별자(IDL1 공개)), 인증서(예를 들어, IDL1 인증서), 및 키(예를 들어, KL1 공개)를 생성하는 단계 - 식별자는 컴퓨팅 디바이스의 신원과 연관되고, 인증서는 메시지를 사용하여 생성됨; 및 컴퓨팅 디바이스에 의해, 식별자, 인증서, 및 키를 호스트 디바이스에 송신하는 단계 - 호스트 디바이스는 식별자, 인증서, 및 키를 사용하여 컴퓨팅 디바이스의 신원을 검증하도록 구성됨 - 를 포함한다.
일부 실시예들에서, 상기한 컴퓨팅 디바이스(예를 들어, 플래시 메모리 디바이스)는 상술되고 컴퓨팅 디바이스의 신원을 검증하기 위해 호스트 디바이스에 의해 사용되는 식별자, 인증서, 및 키를 생성하기 위해 사용되는 DICE-RIoT 기능을 통합한다. 일 예에서, 컴퓨팅 디바이스는 DICE-RIoT 프로토콜의 계층들 사이의 식별 단계들의 시퀀스의 기초가 되는 프리미티브 키(primitive key) 역할을 하는 디바이스 시크릿을 저장한다. 일 예에서, DICE-RIoT 기능의 계층들 L0 및 L1은 하드웨어 및/또는 소프트웨어를 사용하여 컴퓨팅 디바이스에서 구현된다. 일 예에서, 계층 L0은 하드웨어에서만 구현된다.
도 1은 일 실시예에 따른, 컴퓨팅 디바이스(141)의 신원을 검증하는 호스트 디바이스(151)를 도시한다. 호스트 디바이스(151)는 컴퓨팅 디바이스(141)에 메시지를 송신한다. 일 실시예에서, 호스트 디바이스(151)는 리플레이 공격들을 피하기 위해 컴퓨팅 디바이스(141)에 메시지들을 송신하는데 사용하기 위한 선도를 생성하는 선도 메커니즘(도시되지 않음)을 포함한다. 일 예에서, 컴퓨팅 디바이스(141)에 송신되는 각 메시지는 단조 카운터에 의해 생성되는 선도를 포함한다.
일 예에서, 메시지는 빈 스트링(empty string), 종래의 알려져 있는 스트링(예를 들어, 호스트 디바이스(151)의 제조자 또는 운영자에게 알려져 있는 영숫자 스트링)이거나, 또는 또 다른 값(예를 들어, 컴퓨팅 디바이스에 부여된 신원 값)일 수 있다. 일 예에서, 메시지는 디바이스의 고유한 신원(unique identity of the device, UID)이다.
메시지를 수신하는 것에 응답하여, 컴퓨팅 디바이스(141)는 식별자, 인증서, 및 키를 생성한다. 식별자는 컴퓨팅 디바이스(141)의 신원과 연관된다. 컴퓨팅 디바이스(141)는 신원 구성요소(147)의 동작 및/또는 컴퓨팅 디바이스(141)의 다른 기능들을 제어하는 하나 이상의 프로세서(143)를 포함한다.
식별자, 인증서, 및 키는 신원 구성요소(147)에 의해 생성되고 디바이스 시크릿(149)에 기초한다. 일 예에서, 디바이스 시크릿(149)은 컴퓨팅 디바이스(141)의 메모리에 저장된 고유한 디바이스 시크릿(unique device secret, UDS)이다. 일 예에서, 신원 구성요소(147)는 UDS를 DICE-RIoT 프로토콜의 구현을 위한 프리미티브 키로서 사용한다. 식별자, 인증서, 및 키는 DICE-RIoT 프로토콜의 계층 L1으로부터의 출력들이다(예를 들어, 도 6 참조). 일 실시예에서, 계층 L1의 신원은 컴퓨팅 디바이스(141)자체의 신원, 컴퓨팅 디바이스(141)의 제조자, 구성요소로서 컴퓨팅 디바이스(141)를 포함하는 사물의 제조자, 및/또는 컴퓨팅 디바이스(141)의 메모리에 저장된 애플리케이션 또는 다른 소프트웨어에 대응한다. 일 예에서, 애플리케이션 신원(예를 들어, ID 번호)는 모바일 폰, TV, STB 등에 대한 것이며, 이를 위해 문자들 및 번호들의 고유한 조합이 사물을 식별하기 위해 사용된다.
일 예에서, 계층 L1의 신원은 ASCII 스트링이다. 예를 들어, 신원은 사물 명칭과 연결된 제조자 명칭일 수 있다(예를 들어, LG | TV_model_123_year_2018 등). 일 예에서, 신원은 16진수 형태로 표현될 수 있다(예를 들어, 53 61 6D 73 75 6E 67 20 7C 20 54 56 5F 6D 6F 64 65 6C 5F 31 32 33 5F 79 65 61 72 5F 32 30 31 38).
일 실시예에서, 제조자는 생산되고 있는 물품들의 클래스 또는 세트에 UDS를 사용할 수 있다. 다른 실시예들에서, 각 물품은 그 자신의 고유한 UDS를 가질 수 있다. 예를 들어, TV에 대한 UDS는 UDS = 0x12234...4444일 수 있고, 랩톱에 대한 UDS는 UDS = 0xaabb....00322일 수 있다.
일 실시예에서, 디바이스 시크릿(149)은 컴퓨팅 디바이스(141)에 의해 메모리(145)에 저장된 시크릿 키이다. 신원 구성요소(147)는 유도되는 시크릿을 생성하기 위해 메시지 인증 코드(MAC)에 대한 입력으로서 시크릿 키를 사용한다. 일 예에서, 유도된 시크릿은 DICE-RIoT 프로토콜에서 융합된 유도된 시크릿(fused derived secret, FDS)이다.
일 예에서, 메모리(145)는 컴퓨팅 디바이스(141)를 부팅하기 위한 초기 부트 코드를 저장하는 판독 전용 메모리(read-only memory, ROM)을 포함한다. FDS는 부팅 동작 동안 프로세서(143)에 의해 초기 부트 코드에 제공되는 키이다. 일 예에서, ROM은 DICE-RIoT 프로토콜의 계층 L0에 대응한다.
호스트 디바이스(151)는 컴퓨팅 디바이스(141)의 신원을 검증하는 검증 구성요소(153)에 대한 입력들로서 식별자, 인증서, 및 키를 사용한다. 일 실시예에서, 검증 구성요소(153)는 식별자를 사용하여 적어도 하나의 복호화 동작을 수행하여 결과를 제공한다. 그 결과는 컴퓨터 디바이스(141)의 신원이 유효한지 여부를 결정하기 위해 키와 비교된다. 만약 그렇다면, 호스트 디바이스(151)는 컴퓨팅 디바이스(141)로부터 수신된 키를 사용하여 컴퓨팅 디바이스(141)와의 추가 통신을 수행한다. 예를 들어, 호스트 디바이스(151)가 "트리플(triple)"(식별자, 인증서, 및 키)을 검증하면, 키는 컴퓨팅 디바이스(141)와 호스트 디바이스(151) 사이에서 교환되는 임의의 다른 정보를 증명하기 위해 사용될 수있다.
일 실시예에서, 디지털 식별은 (예를 들어, 사물 인터넷과 같은) 다수의 "사물들"에 부여된다. 일 예에서, 사물은 차량과 같은 물리적 객체 또는 차량 내부에 존재하는 물리적 물품이다. 일 예에서, 사물은 사람 또는 동물이다. 예를 들어, 각 사람 또는 동물은 고유한 디지털 식별자를 부여 받을 수 있다.
일부 경우들에서, 제품들의 제조자들은 각 제품이 진품인 것으로 입증될 수 있는 것을 원한다. 현재, 이 문제는 단지 신뢰할 수 있는 판매자로부터 사물들을 구매하거나, 구매된 사물들이 진품임을 보장하는 일부 유형의 법적 인증서를 갖는 타사들로부터 사물들을 구매함으로써 해결된다. 그러나, 사물의 도난의 경우에, 사물이 전자 신원을 갖지 않는다면, 사물이 부적절하게 사용되지 않도록 사물을 차단하거나 국한하는 것은 어렵다. 일 예에서, 국한은 사물이 공용 인프라스트럭처들과 상호 작용하려고 시도할 때 신원에 기초한다. 일 예에서, 차단은 공용 인프라스트럭처를 사용하기를 원하는 사물의 신원을 증명할 수 없는 것에 기초한다.
일 실시예에서, 컴퓨팅 디바이스(141)는 고유한 서명들을 컴퓨팅 디바이스(141)에 대응하는 신뢰 체인에 연관시키기 위해 신원 구성요소(147)를 사용하여 DICE-RIoT 프로토콜을 구현한다. 컴퓨팅 디바이스(141)는 계층들 L0 및 L1을 확립한다. 신뢰 체인은 계층들 L2, ...을 확립하는 호스트 디바이스(151)에 의해 지속된다. 일 예에서, 고유한 식별자는 임의의 정의된 환경(예를 들어, 지리적 파라미터들에 의해 정의된 신뢰 구역)에서의 모든 객체, 사람 및 동물에 부여될 수 있다.
일 실시예에서, 컴퓨팅 디바이스(141)는 신원을 부여 받고자 하는 사물에서의 구성요소이다. 예를 들어, 사물은 컴퓨팅 디바이스(141)를 포함하는 자율 주행 차량일 수 있다. 예를 들어, 컴퓨팅 디바이스(141)는 차량의 애플리케이션 제어기에 의해 사용되는 플래시 메모리일 수 있다.
컴퓨팅 디바이스(141)가 제조될 때, 제조자는 UDS를 메모리(145)에 투입할 수 있다. 일 예에서, UDS는 컴퓨팅 디바이스(141)를 사용하여 추가적인 제조 동작들을 수행할 고객에 동의되고 고객과 공유될 수 있다. 또 다른 예에서, UDS는 정규 제조자에 의해 무작위로 생성된 다음, 보안 인프라스트럭처를 사용하여(예를 들어, 인터넷과 같은 네트워크를 통해) 고객에게 전달될 수 있다.
일 예에서, 고객은 컴퓨팅 디바이스(141)를 통함하는 차량의 제조자일 수 있다. 많은 경우들에서, 차량 제조자는 컴퓨팅 디바이스(141)의 판매자에게 알려지지 않도록 UDS를 변경하기를 원한다. 이러한 경우들에서, 고객은 호스트 디바이스(151)에 의해 컴퓨팅 디바이스(141)에 제공되는 인증된 대체 커맨드를 사용하여 UDS를 대체할 수 있다.
일부 실시예들에서, 고객은 고객 변경 불가 정보를 컴퓨팅 디바이스(141)의 메모리(145)에 투입할 수 있다. 일 예에서, 변경 불가 정보는 고유한 FDS를 생성하기 위해 사용되고, 구별자로서 단독으로 사용되지 않는다. 고객 변경 불가 정보는 고객에 의해 제조되는 다양한 객체들을 구별하기 위해 사용된다. 예를 들어, 고객 변경 불가 정보는 프리미티브 정보를 정의하기 위한 문자들 및/또는 숫자들의 조합(예를 들어, 날짜, 시간, 로트 위치, 웨이퍼 위치, 웨이퍼에서의 x, y 위치 등의 정보 중 일부 또는 전부의 조합)일 수 있다.
예를 들어, 많은 경우들에서, 변경 불가 정보는 또한 사용자(예를 들어, 제조자로부터 디바이스를 수신하는 고객)에 의해 수행되는 암호화 피처 구성으로부터의 데이터를 포함한다. 이러한 구성 또는 설정은 인증된 커맨드들(실행될 키에 대한 지식을 필요로 하는 커맨드들)을 사용함으로써만 행해질 수 있다. 사용자는 (예를 들어, 제조자로부터 보안 인프라스트럭처를 통해 키가 제공되는 것에 기초하여) 키에 대한 지식을 갖는다. 변경 불가 정보는 컴퓨팅 디바이스의 고유한 ID(UID)와 상이한 컴퓨팅 디바이스의 암호 신원의 형태를 나타낸다. 일 예에서, 정보의 변경 불가 세트에 암호 구성을 포함시키는 것은 사용자에게 변경 불가 정보를 자기 맞춤화하는데 유용한 도구를 제공한다.
일 실시예에서, 컴퓨팅 디바이스(141)는 선도를 생성하는 선도 메커니즘을 포함한다. 선도는 호스트 디바이스(151)로 송신될 때 식별자, 인증서, 및 키와 함께 제공될 수 있다. 선도는 또한 호스트 디바이스(151)와의 다른 통신 메시지들과도 함께 사용될 수 있다.
일 실시예에서, 컴퓨팅 디바이스(141)는 애플리케이션 보드 상의 구성요소이다. 애플리케이션 보드 상의 또 다른 구성요소(도시되지 않음)는 디바이스 시크릿(149)에 대한 지식(예를 들어, 투입된 UDS에 대한 지식)을 사용하여 컴퓨팅 디바이스(141)의 신원을 검증할 수 있다. 구성요소는 컴퓨팅 디바이스(141)가 UDS의 소유를 증명하기 위해 메시지 인증 코드를 사용하여 출력을 생성할 것을 요청한다. 예를 들어, 메시지 인증 코드는 HMAC(UDS, “애플리케이션 보드 메시지 | 선도”)과 같을 수 있다.
또 다른 실시예에서, FDS는 또한 디바이스의 소유를 증명하기 위한 기준들(예를 들어, 시크릿 키(들)에 대한 지식)로서 사용될 수 있다. FDS는 이러한 방식으로 UDS로부터 유도된다: FDS = HMAC-SHA256 [ UDS, SHA256(“L1의 신원”)]. 따라서, 메시지 인증 코드는 HMAC(FDS, “애플리케이션 보드 메시지 | 선도”)과 같을 수 있다.
도 2는 일 실시예에 따른, 신원 구성요소(107) 및 검증 구성요소(109)를 갖는 예시적인 컴퓨팅 시스템을 도시한다. 호스트 시스템(101)은 버스(103)를 통해 메모리 시스템(105)과 통신한다. 메모리 시스템(105)의 프로세싱 디바이스(111)는 비휘발성 메모리(121)의 메모리 영역들(111, 113, ..., 119)에 대한 판독/기입 액세스 권한을 갖는다. 일 예에서, 호스트 시스템(101)은 또한 휘발성 메모리(123)로부터 데이터를 판독하고 이에 데이터를 기입한다. 일 예에서, 신원 구성요소(107)는 DICE-RIoT 프로토콜의 계층들 L0 및 L1을 지원한다. 일 예에서, 비휘발성 메모리(121)는 부트 코드를 저장한다.
검증 구성요소(109)는 메모리 시스템(105)의 신원을 검증하기 위해 사용된다. 검증 구성요소(109)는 예를 들어 상술된 바와 같이, 호스트 시스템(101)으로부터 호스트 메시지를 수신하는 것에 응답하여 식원 구성요소(107)에 의해 생성된 식별자, 인증서, 및 키를 포함하는 트리플을 사용한다.
신원 구성요소(107)는 도 1의 신원 구성요소(147)의 예이다. 검증 구성요소(109)는 도 1의 검증 구성요소(153)의 예이다.
메모리 시스템(105)은 키 저장소(157) 및 키 생성기들(159)을 포함한다. 일 예에서, 키 저장소(157)는 루트 키들, 세션 키들, UDS(DICE-RIoT), 및/또는 메모리 시스템(105)에 의한 암호화 동작들에 사용되는 다른 키들을 저장할 수 있다.
일 예에서, 키 생성기들(159)은 검증 구성요소(109)에 의한 검증에 사용하기 위해 호스트 시스템(101)에 송신되는 공개 키를 생성한다. 공개 키는 상술된 바와 같이, 식별자 및 인증서를 또한 포함하는 트리플의 일부로서 송신된다.
메모리 시스템(105)은 선도 발생기(155)를 포함한다. 일 예에서, 선도 생성기(155)는 인증된 커맨드들에 대해 사용될 수 있다. 일 예에서, 다수의 선도 생성기들(155)이 사용될 수 있다. 일 예에서, 선도 생성기(155)는 호스트 시스템(101)에 의한 사용을 위해 이용 가능하다.
일 예에서, 프로세싱 디바이스(111) 및 메모리 영역들(111, 113, ..., 119)은 동일한 칩 또는 다이 상에 있다. 일부 실시예들에서, 메모리 영역들은 기계 학습 프로세싱 동안 호스트 시스템(101) 및/또는 프로세싱 디바이스(111)에 의해 사용되는 데이터, 또는 호스트 시스템(101) 상에서 또는 프로세싱 디바이스(111) 상에서 실행되는 소프트웨어 프로세스(들)에 의해 생성되는 다른 런타임 데이터를 저장한다.
컴퓨팅 시스템은 호스트 시스템(101)으로부터 새로운 데이터를 기록하기 위한 메모리 영역(111)(예를 들어, 플래시 메모리의 기록 세그먼트)을 선택하는 메모리 시스템(105)에서의 기입 구성요소를 포함할 수 있다. 컴퓨팅 시스템(100)은 적어도 메모리 영역(111)의 선택을 가능하게 하도록 메모리 시스템(105)에서의 기입 구성요소(107)와 조정하는 호스트 시스템(101)에서의 기입 구성요소를 더 포함할 수 있다.
일 예에서, 휘발성 메모리(123)는 호스트 시스템(101)의 프로세싱 디바이스(도시되지 않음)를 위한 시스템 메모리로서 사용된다. 일 실시예에서, 호스트 시스템(101)의 프로세스는 데이터를 기입하기 위한 메모리 영역들을 선택한다. 일 예에서, 호스트 시스템(101)은 자율 주행 차량 상에서 실행되는 센서들 및/또는 소프트웨어 프로세스들로부터의 데이터에 부분적으로 기초하여 메모리 영역을 선택할 수 있다. 일 예에서, 전술한 데이터는 호스트 시스템(101)에 의해 메모리 영역을 선택하는 프로세싱 디바이스(111)에 제공된다.
일부 실시예들에서, 호스트 시스템(101) 또는 프로세싱 디바이스(111)는 신원 구성요소(107) 및/또는 검증 구성요소(109)의 적어도 일부분을 포함한다. 다른 실시예들에서, 또는 조합하여, 프로세싱 디바이스(111) 및/또는 호스트 시스템(101)에서의 프로세싱 디바이스는 신원 구성요소(107) 및/ 또는 검증 구성요소(109)의 적어도 일부분을 포함한다. 예를 들어, 프로세싱 디바이스(111) 및/또는 호스트 시스템(101)의 프로세싱 디바이스는 신원 구성요소(107) 및/또는 검증 구성요소(109)를 구현하는 논리 회로부를 포함할 수 있다. 예를 들어, 호스트 시스템(101)의 제어기 또는 프로세싱 디바이스(예를 들어, CPU, FPGA, 또는 GPU)는 본 명세서에서 설명된 신원 구성요소(107) 및/또는 검증 구성요소(109)의 동작들을 수행하기 위해 메모리에 저장된 명령어들을 실행하도록 구성될 수 있다.
일부 실시예들에서, 신원 구성요소(107)는 메모리 시스템(105)에 배치된 집적 회로 칩에서 구현된다. 다른 실시예들에서, 호스트 시스템(101)에서의 검증 구성요소(109)는 호스트 시스템(101), 디바이스 드라이버, 또는 애플리케이션의 운영 체제의 일부이다.
메모리 시스템(105)의 예는 메모리 버스를 통해 중앙 프로세싱 유닛(CPU)에 연결되는 메모리 모듈이다. 메모리 모듈들의 예들은 듀얼 인라인 메모리 모듈(DIMM), 소형 아웃라인 DIMM(SO-DIMM), 비휘발성 듀얼 인라인 메모리 모듈(NVDIMM) 등을 포함한다. 일부 실시예들에서, 메모리 시스템은 메모리 기능들 및 저장 기능들 양자를 제공하는 하이브리드 메모리/저장 시스템일 수 있다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 영역을 포함하는 메모리 시스템을 이용할 수 있다. 호스트 시스템은 메모리 시스템에 저장될 데이터를 제공할 수 있고 메모리 시스템으로부터 검색될 데이터를 요청할 수 있다. 일 예에서, 호스트는 휘발성 및 비휘발성 메모리를 포함하여, 다양한 유형들의 메모리에 액세스할 수 있다.
호스트 시스템(101)은 차량 내의 제어기, 네트워크 서버, 모바일 디바이스, 셀룰러 전화, 임베디드 시스템(예를 들어, 시스템 온 칩(system-on-chip, SOC) 및 내부 또는 외부 메모리를 갖는 임베디드 시스템), 또는 메모리 및 프로세싱 디바이스를 포함하는 임의의 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스일 수 있다. 호스트 시스템(101)은 호스트 시스템(101)이 메모리 시스템(105)으로부터 데이터를 판독하거나 이에 데이터를 기입할 수 있도록 메모리 시스템(105)을 포함하거나 이에 커플링될 수 있다. 호스트 시스템(101)은 물리적 호스트 인터페이스를 통해 메모리 시스템(105)에 커플링될 수 있다. 본 명세서에서 사용될 때, "~에 커플링된(coupled to)"은 일반적으로 전기적, 광학적, 자기적 등과 같은 연결들을 포함하여, 유선이든 무선이든, 간접 통신 연결 또는 직접 통신 연결(예를 들어, 개재 구성요소 없이)일 수 있는, 구성요소들 사이의 연결을 지칭한다. 물리적 호스트 인터페이스의 예들은 SATA(serial advanced technology attachment) 인터페이스, PCIe(peripheral component Interconnect express) 인터페이스, USB(universal serial bus) 인터페이스, 파이버 채널, 직렬 접속 SCSI(Serial Attached SCSI, SAS), 더블 데이터 레이트(double data rate, DDR) 등을 포함하나, 이에 제한되지는 않는다. 물리적 호스트 인터페이스는 호스트 시스템(101)과 메모리 시스템(105) 사이에서 데이터를 전송하는데 사용될 수 있다. 물리적 호스트 인터페이스는 메모리 시스템(105)과 호스트 시스템(101) 간에 제어, 어드레스, 데이터, 및 기타 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
도 2는 예로서 메모리 시스템(105)을 도시한다. 일반적으로, 호스트 시스템(101)은 동일한 통신 연결, 다수의 별개의 통신 연결들, 및/또는 통신 연결들의 조합을 통해 다수의 메모리 시스템들에 액세스할 수 있다.
호스트 시스템(101)은 프로세싱 디바이스 및 제어기를 포함할 수 있다. 호스트 시스템(101)의 프로세싱 디바이스는 예를 들어, 마이크로 프로세서, 중앙 프로세싱 유닛(CPU), 프로세서의 프로세싱 코어, 실행 유닛 등일 수 있다. 일부 사례들에서, 호스트 시스템의 제어기는 메모리 제어기, 메모리 관리 유닛, 및/또는 개시기로서 지칭될 수 있다. 일 예에서, 제어기는 호스트 시스템(101)과 메모리 시스템(105) 사이의 버스(103)를 통한 통신을 제어한다. 이러한 통신들은 상술된 바와 같이 메모리 시스템(105)의 신원을 검증하기 위한 호스트 메시지의 송신을 포함한다.
호스트 시스템(101)의 제어기는 메모리 시스템(105)의 제어기와 통신하여 비휘발성 메모리(121)의 메모리 영역들에서 데이터를 판독하거나, 데이터를 기입하거나, 또는 데이터를 소거하는 것과 같은 동작들을 수행할 수 있다. 일부 사례들에서, 제어기는 프로세싱 디바이스(111)의 동일한 패키지 내에 통합된다. 다른 사례들에서, 제어기는 프로세싱 디바이스(111)의 패키지와 분리된다. 제어기 및/또는 프로세싱 디바이스는 하나 이상의 집적 회로 및/또는 개별 구성요소, 버퍼 메모리, 캐시 메모리, 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 제어기 및/또는 프로세싱 디바이스는 마이크로 제어기, 특수 목적 논리 회로부(예를 들어, 필드 프로그래머브 게이트 어레이(FPGA), 용도 특정 집적 회로(ASIC) 등), 또는 또 다른 적합한 프로세서일 수 있다.
일 실시예에서, 메모리 영역들(111, 113, ..., 119)은 상이한 유형들의 비휘발성 메모리 구성요소들의 임의의 조합을 포함할 수 있다. 뿐만 아니라, 메모리 영역들의 메모리 셀들은 데이터를 저장하기 위해 사용되는 유닛을 지칭할 수 있는 메모리 페이지들 또는 데이터 블록들로서 그룹화될 수 있다. 일부 실시예들에서, 휘발성 메모리(123)는 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 및 동기식 동적 랜덤 액세스 메모리(SDRAM)일 수 있으나, 이에 제한되지는 않는다.
일 실시예에서, 메모리 시스템(105)의 하나 이상의 제어기는 메모리 영역들(111, 113, ..., 119)과 통신하여 데이터를 판독하거나, 데이터를 기입하거나, 또는 데이터를 소거하는 것과 같은 동작들을 수행할 수 있다. 각 제어기는 하나 이상의 집적 회로 및/또는 개별 구성요소, 버퍼 메모리, 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 각 제어기는 마이크로 제어기, 특수 목적 논리 회로부(예를 들어, 필드 프로그래머블 게이트 어레이(FPGA), 용도 특정 집적 회로(ASIC) 등), 또는 또 다른 적합한 프로세서일 수 있다. 제어기(들)는 로컬 메모리에 저장된 명령어들을 실행하도록 구성된 프로세싱 디바이스(프로세서)를 포함할 수 있다. 일 예에서, 제어기의 로컬 메모리는 메모리 시스템(105)과 호스트 시스템(101) 간 통신을 핸들링하는 것을 포함하여, 메모리 시스템(105)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들, 및 루틴들을 수행하기 위한 명령어들을 저장하도록 구성된 임베디드 메모리를 포함한다. 일부 실시예들에서, 로컬 메모리는 메모리 포인터들, 페칭된 데이터 등을 저장하는 메모리 레지스터들을 포함할 수 있다. 로컬 메모리는 또한 마이크로 코드를 저장하기 위한 판독 전용 메모리(ROM)를 포함할 수 있다.
일반적으로, 메모리 시스템(105)의 제어기(들)는 호스트 시스템(101)/프로세싱 디바이스(111)로부터 커맨드들 또는 동작들을 수신할 수 있고, 커맨드들 또는 동작들을 메모리 영역들에 대한 데이터 기입 카운터들에 기초하여 메모리 영역의 선택을 행하기 위한 명령어들 또는 적절한 커맨드들로 변환할 수 있다. 제어기는 또한 웨어 레벨링, 가비지 수집 동작들, 에러 검출 및 에러 정정 코드(ECC) 동작들, 암호화 동작들, 캐싱 동작들, 및 메모리 영역들과 연관되는 논리적 블록 어드레스와 물리적 블록 어드레스 사이의 어드레스 변환과 같은 다른 동작들도 담당할 수 있다. 제어기는 물리적 호스트 인터페이스를 통해 호스트 시스템(101)과 통신하기 위한 호스트 인터페이스 회로부를 더 포함할 수 있다. 호스트 인터페이스 회로부는 호스트 시스템으로부터 수신된 커맨드들을 메모리 영역들 중 하나 이상에 액세스하기 위한 커맨드 명령어들로 변환할 뿐만 아니라, 메모리 영역들과 연관된 응답들을 호스트 시스템(101)에 대한 정보로 변환할 수도 있다.
메모리 시스템(105)은 또한 도시되지 않은 추가적인 회로부 또는 구성요소들도 포함할 수 있다. 일부 실시예들에서, 메모리 시스템(105)은 메모리 영역들에 액세스하기 위해 하나 이상의 제어기로부터 어드레스를 수신하고 어드레스를 디코딩할 수 있는 캐시 또는 버퍼(예를 들어, DRAM 또는 SRAM) 및 어드레스 회로부(예를 들어, 로우 디코더 및 컬럼 디코더)를 포함할 수 있다.
일부 실시예들에서, 호스트 시스템(101) 또는 메모리 시스템(105), 및/또는 프로세싱 디바이스(111)에서의 제어기는 신원 구성요소(107) 및/또는 검증 구성요소(109)의 적어도 일부분을 포함한다. 예를 들어, 제어기 및/또는 프로세싱 디바이스(111)는 신원 구성요소(107) 및/또는 검증 구성요소(109)를 구현하는 논리 회로부를 포함할 수 있다. 예를 들어, 프로세싱 디바이스(프로세서)는 본 명세서에서 설명된 바와 같이 신원 구성요소(107)에 대한 메모리 영역들에 대한 판독/기입 액세스를 제공하는 동작들을 수행하기 위해 메모리에 저장된 명령어들을 실행하도록 구성될 수 있다. 일부 실시예들에서, 검증 구성요소(109)는 운영 체제, 디바이스 드라이버, 또는 애플리케이션의 일부이다.
도 3은 일 실시예에 따른, 차량(100)의 예시적인 컴퓨팅 디바이스를 도시한다. 예를 들어, 차량(100)은 자율 주행 차량, 비자율 주행 차량, 비상 차량, 서비스 차량 등일 수 있다.
차량(100)은 온보드 컴퓨터와 같은 차량 컴퓨팅 디바이스(110)를 포함한다. 차량 컴퓨팅 디바이스(110)는 도 1의 호스트 디바이스(151)의 예이다. 또 다른 예에서, 차량 컴퓨팅 디바이스(110)는 도 2의 호스트 시스템(101)의 예이고, 메모리(160)는 메모리 시스템(105)의 예이다.
차량 컴퓨팅 디바이스(110)는 판독기, 기입기, 및/또는 후술될 기능들을 수행할 수 있는 다른 컴퓨팅 디바이스와 같은, 안테나(140)에 커플링되는(또는 이를 포함하는) 차량 통신 구성요소(130)에 커플링된 프로세서(120)를 포함한다. 차량 통신 구성요소(130)는 실시예들이 이러한 유형의 메모리 디바이스들에 제한되지는 않지만, 비휘발성 플래시 메모리와 같은 메모리(160)에 커플링된 프로세서(150)를 포함한다.
일 예에서, 메모리(160)는 차량(100)이 후술될 바와 같이, 통신 인터페이스(예를 들어, 소위 DICE-RIoT 프로토콜)를 사용함으로써 검사점에 접근할 때 이러한 정보를 제공할 수 있는 방식으로 차량(예를 들어, 운전자, 탑승자들, 및 운반 상품들)에 관련된 모든 정보를 저장하도록 구성된다.
일 예에서, 차량 정보(이를테면, 차량 ID/번호판 번호 등)는 차량 메모리(160)에 이미 저장되고, 차량(100)은 예를 들어 통신 구성요소(130)를 통해 그리고 알려져 있는 DICE-RIoT 프로토콜 또는 유사한 프로토콜을 사용함으로써, 탑승자들의 전자 ID 및/또는 운반 수하물, 상품 등의 ID들을 식별하고, 이어서 이러한 정보를 메모리(160)에 저장할 수 있다. 일 예에서, 전자 ID들, 운송 수하물 및 상품 컨테이너들은 무선 트랜스폰더들, NFC, 블루투스, RFID, 무접촉 센서들, 자기 바들 등을 갖추고, 통신 구성요소(130)는 이러한 원격 소스들로부터 필요한 정보를 획득하기 위해 판독기들 및/또는 전자기장을 사용할 수 있다.
일 예에서, 모든 탑승자 ID들 및/또는 운반 수하물, 상품들 등의 ID들은 통신 구성요소와 데이터를 교환할 수 있는 전자 디바이스들을 갖춘다. 이러한 전자 디바이스들은 이들이 전력에 의해 공급되기 때문에 활성화될 수 있거나 또는 전기 디바이스가 그 근처에 있을 때에만 요구되는 전기 공급을 제공하는 외부 전기 공급 소스에 의해 활성화되고 전력이 공급될 수 있다는 의미에서 능동 또는 수동 요소들일 수 있다.
렌탈 차량들 또는 자율 주행 차량들은 차량 내부 또는 부근의 정보를 획득하기 위해 판독기들 및/또는 전자기장을 사용할 수 있거나, 또는 대안으로서, 예를 들어, 이전의 예약으로 인해 렌탈 차량의 운전자가 이미 렌탈 시스템에 알려져 있을 때, 원격 소스들로부터도 정보를 수신할 수 있다. 운전자가 차량을 픽업하기 위해 도착할 때 실시간으로 추가 검토가 수행될 수 있다.
유사하게, 차량(100)에 의해 운송되는 운반 수하물 및 상품들에 대한(그리고 또한 탑승자들에 대한)모든 정보는 항상 최신으로 유지될 수 있다. 그렇게 하기 위해, 탑승자들의 전자 ID 및/또는 운반 수하물 및 상품들의 ID들은 탑승자들이 소유하거나 수하물 및 상품과 연관된 무선 트랜스폰더들(미도시)로 인해 실시간으로 업데이트된다.
일 예에서, 차량 통신 구성요소(130)와 부근 소스들(예를 들어, 상품 트랜스폰더들 등) 사이의 통신은 DICE-RIoT 프로토콜을 통해 발생한다.
일 예에서, 차량 컴퓨팅 디바이스(110)는 조향 및 속도와 같은 차량(100)의 가동 파라미터들을 제어할 수 있다. 예를 들어, 제어기(도시되지 않음)는 조향 제어 시스템(170) 및 속도 제어 시스템(180)에 커플링될 수 있다. 나아가, 차량 컴퓨팅 디바이스(110)는 정보 시스템(190)에 커플링될 수 있다. 정보 시스템(190)은 경로 정보 또는 검사점 보안 메시지와 같은 메시지를 디스플레이하도록 구성될 수 있고, 시각적 경고를 디스플레이하고/하거나 청각적 경고를 출력할 수 있다. 통신 구성요소(130)는 외부 컴퓨팅 디바이스(도시되지 않음)와 같은 추가적인 컴퓨팅 디바이스들로부터 정보를 수신할 수 있다.
도 4는 일 실시예에 따른, 차량(300)의 예시적인 컴퓨팅 디바이스와 통신하는 호스트 디바이스(350)를 갖는 예시적인 시스템(390)을 도시한다. 컴퓨팅 디바이스는 단거리 통신 디바이스(예를 들어, NFC 태그)와 같은 수동 통신 구성요소(310)를 포함한다. 통신 구성요소(310)는 차량(300)에 있을 수 있으며, 이는 도 3에서 차량(100)에 대해 도시된 바와 같이 구성될 수 있고, 통신 구성요소(310)에 더하여, 차량 통신 구성요소(130)으로서 구성될 수 있는 차량(100)의 구성요소들을 포함할 수 있다. 통신 구성요소(310)는 차량(300)에 대한 정보(이를테면, 차량 ID, 운전자/탑승자 정보, 운반 상품 정보 등)를 저장하는 비휘발성 저장 구성요소(330)를 갖는 칩(320)(예를 들어, 차량(300)에 대한 CPU 또는 애플리케이션 제어기를 구현함)을 포함한다. 통신 구성요소(310)는 안테나(340)를 포함할 수 있다.
호스트 디바이스(350)는 예를 들어, 통신 구성요소(310)로부터 정보를 수신하고/거나 통신 구성요소로 정보를 전송할 수 있는 능동 통신 디바이스(예를 들어, 파워 서플라이를 포함하는)이다. 일부 예들에서, 호스트 디바이스(350)는 톨 판독기와 같은 판독기(예를 들어, NFC 판독기), 또는 다른 구성요소들을 포함할 수 있다. 호스트 디바이스(350)는 검사점 부근에(예를 들어, 신뢰 구역의 경계에) 또는 일반적으로 제한된 액세스 영역들 부근에 배열된(예를 들어, 임베딩된) 외부 디바이스일 수 있다. 일부 실시예들에서, 호스트 디바이스(350)는 또한 휴대용 디바이스로서 사용하기 위해 경찰에 의해 운반될 수 있다.
호스트 디바이스(350)는 프로세서(360), 비휘발성 메모리와 같은 메모리(370), 및 안테나(380)를 포함할 수 있다. 메모리(370)는 호스트 디바이스(350)가 통신 구성요소(310)와 통신할 수 있게 하는 NFC 프로토콜을 포함할 수 있다. 예를 들어, 호스트 디바이스(350) 및 통신 구성요소(310)는 NFC 프로토콜을 사용하여, 이를테면 예를 들어 약 13.56 메가헤르츠에서 그리고 ISO/IEC 18000 3 국제 표준에 따라 통신할 수 있다. RFID 태그들을 사용하는 다른 접근법들이 사용될 수 있다.
호스트 디바이스(350)는 또한 서버 또는 다른 컴퓨팅 디바이스와 통신할 수 있다(예를 들어, 중앙 운영 센터와 무선 네트워크를 통해 통신함). 예를 들어, 호스트 디바이스(350)는 서버 또는 통신 센터에 무선으로 커플링되거나 하드와이어링될 수 있다. 일부 예들에서, 호스트 디바이스(350)는 와이파이를 통해 또는 인터넷을 통해 운영 센터와 통신할 수 있다. 호스트 디바이스(350)는 차량(300)이 안테나(340)를 안테나(380)의 통신 거리 내로 가져갈 때 통신 구성요소(310)를 활성화할 수 있다. 일부 예들에서, 호스트 디바이스(350)는 운영 센터로부터 실시간 정보를 수신할 수 있고, 그 정보를 차량(300)으로 전송할 수 있다. 일부 실시예들에서, 통신 구성요소(310)는 자체 배터리를 가질 수 있다.
일 실시예에서, 호스트 디바이스(350)는 정보 교환을 가능하게 하도록 구성된 통신 구성요소(310)(예를 들어, 능동 디바이스)를 갖춘 차량(300)으로부터/으로 정보를 판독/송신하도록 구성된다.
다시 도 3을 참조하면, 차량(100)의 차량 통신 구성요소(130)는 (예를 들어, 상기한 도 4에 대해 논의된 대응하는 무선 통신 구성요소를 갖출 때) 탑승자 ID들, 운반 수하물 및/또는 상품들에 관한 적절한 정보를 실시간으로 픽업하기 위해 내부적으로 활성이 될 수 있다. 차량의 컴퓨팅 디바이스는 탑승자들, 수하물 및 상품들에 대응하는 모든 데이터가 획득될 수 있도록, 수 미터(예를 들어, 2-3 미터)의 공간 범위에서 정보를 검출할 수 있다. 일 예에서, 이는 통신이 시작 및/또는 강화될 수 있도록 차량이 특정 근접 범위 내의 외부 통신 구성요소(예를 들어, 호스트 디바이스로서 동작하는 서버 또는 다른 컴퓨팅 디바이스)에 접근할 때 발생한다. 통신 거리는 예를 들어, 2-3 미터이다.
일 실시예에서, 차량 통신 구성요소(130)는 외부 엔티티들 및/또는 내부 엔티티들과 통신할 때 데이터를 암호화할 수 있다. 일부 경우들에서, 운반 수하물, 상품들 또는 탑승자들에 관한 데이터는 기밀일 수 있거나 또는 기밀 정보(예를 들어, 탑승자의 건강 상태 또는 기밀 문서들 또는 위험물)를 포함할 수 있다. 이러한 경우에서, 차량 컴퓨팅 디바이스에 연관된 메모리 부분에 저장된 정보 및 데이터는 암호화된 데이터로서 유지되는 것이 바람직하다.
아래에서 논의될 다양한 실시예들에서, 내부 차량 컴퓨팅 디바이스와 외부 엔티티(예를 들어, 호스트 디바이스로서 역할을 하는 서버) 사이의 암호화 및 복호화된 통신을 위한 방법이 논의된다. 일 예에서, 이러한 방법은 내부 차량 컴퓨팅 디바이스와 차량에 탑승된 탑승자들, 수하물 및 상품들에 연관된 전자 구성요소들 사이에도 적용될 수 있다.
일 예에서, 차량 통신 구성요소(130)는 차량 공개 키를 외부 통신 구성요소(예를 들어, 호스트 디바이스(151)로서 역할을 하는)에 송신하고, 외부 통신 구성요소는 외부 공개 키를 차량 통신 구성요소(130)에 송신한다. 이러한 공개 키들(차량 및 외부의)은 각각의 통신 구성요소에 송신된 데이터를 암호화하고 각각의 신원을 검증하며, 또한 확인 및 다른 정보를 교환하기 위해 사용될 수 있다. 예로서, 아래에서 더 설명될 바와 같이, 차량 통신 구성요소(130)는 수신된 외부 공개 키를 사용하여 데이터를 암호화하고 암호화된 데이터를 외부 통신 구성요소로 송신할 수 있다. 마찬가지로, 외부 통신 구성요소는 수신된 차량 공개 키를 사용하여 데이터를 암호화할 수 있고 암호화된 데이터를 차량 통신 구성요소(130)로 송신할 수 있다. 차량(100)에 의해 송신되는 데이터는 자동차 정보, 탑승자 정보, 상품 정보 등을 포함할 수 있다. 정보는 차량(100)의 신원을 검증하기 위해 디지털 서명과 함께 선택적으로 송신될 수 있다. 또한, 정보는 차량(100)에 제공될 수 있고, 차량(100)의 대시보드 상에 디스플레이되거나, 차량과 연관된 컴퓨팅 디바이스(예를 들어, 차량들을 모니터링하는 중앙 서버 또는 사용자 디바이스)의 이메일에 송신될 수 있다. 차량은 차량 디지털 서명과 함께 차량의 식별, VIN 번호 등에 기초하여 인식될 수 있다.
일 예에서, 차량과 외부 엔티티 사이에서 교환되는 데이터는 다른 것에 의해 사용되는 선도를 가질 수 있다. 예로서, 동일한 명령어들을 표시하기 위해 차량에 의해 외부 엔티티로 송신된 데이터는 특정 시간 프레임 각각에서 또는 송신되는 특정 양의 데이터에 대해 변경될 수 있다. 이는 해커가 이전에 송신된 데이터에 포함된 기밀 정보를 인터셉트하고 동일한 결과를 초래하기 위해 동일한 데이터를 다시 송신하는 것을 방지할 수 있다. 데이터가 약간 변경되었지만, 여전히 동일한 명령어를 표시한다면, 해커는 나중 시점에 동일한 정보를 송신할 수 있고, 변경된 데이터가 동일한 명령어를 수행할 것을 수신자가 예상함으로 인해 동일한 명령어는 수행되지 않을 것이다.
차량(100)과 외부 엔티티(예를 들어, 컴퓨팅 시스템 또는 디바이스)(도시되지 않음)사이에서 교환되는 데이터는 아래에서 설명될 바와 같은 다수의 암호화 및/또는 복호화 방법들을 사용하여 수행될 수 있다. 데이터의 보안은 인증되지 않은 활동이 차량(100) 및 외부 엔티티의 동작과 간섭하는 것이 방지되는 것을 보장할 수 있다.
도 5a는 일 실시예에 따른, 호스트 디바이스로 송신되는 식별자, 인증서, 및 키를 포함하는 트리플을 생성하는 애플리케이션 보드를 도시한다. 호스트 디바이스는 애플리케이션 보드의 신원을 검증하기 위해 트리플을 사용한다. 애플리케이션 보드는 도 1의 컴퓨팅 디바이스(141)의 예이다. 호스트 디바이스는 도 1의 호스트 디바이스(151)의 예이다.
일 실시예에서, 애플리케이션 보드 및 호스트는 디바이스 식별 구성 엔진(DICE) 강력한 사물 인터넷(RIoT) 프로토콜을 사용하여 (예를 들어, 정보 및 데이터에 대해) 통신을 위한 암호화 및/또는 복호화 동작들을 수행하는 통신 구성요소들을 포함한다. 일 예에서, DICE-RIoT 프로토콜은 차량 통신 구성요소와 외부 통신 구성요소 사이의 통신뿐만 아니라, 차량 통신 구성요소와 탑승자 ID들, 수하물, 상품들 등에 연관된 다양한 무선 전자 디바이스들 사이의 차량 환경과 내부적으로 수행되는 통신에 적용된다.
도 5b는 일 실시예에 따른, 계층들을 사용하는 스테이지들에서 부팅되는 예시적인 컴퓨팅 시스템을 도시한다. 시스템은 본 개시의 실시예에 따른 외부 통신 구성요소(430') 및 차량 통신 구성요소들(430")을 포함한다. 차량이 외부 엔티티 근처 또는 그 부근에 올 때, 차량의 관련 차량 통신 구성요소(430')는 예를 들어 센서(예를 들어, 라디오 주파수 식별 센서, 또는 RFID 등)를 사용하여 상술된 바와 같이 외부 엔티티와 데이터를 교환할 수 있다.
다른 실시예들에서, 구성요소(430')는 차량에 위치된 애플리케이션 보드일 수 있고, 구성요소(430'')는 (예를 들어, 상기한 도 1에 대해 논의된 바와 같이) 구성요소(430')의 신원을 검증하기 위해 DICE-RIoT 프로토콜을 사용하는 차량에 또한 위치된 호스트 디바이스일 수 있다.
일 실시예예서, DICE-RIoT 프로토콜은 컴퓨팅 디바이스에 의해 계층들 - 각 계층은 후속 계층을 인증 및 로딩하고 각 계층에서 점점 더 정교해지는 런타임 서비스들을 제공함 - 을 사용하여 스테이지별로 부팅될 수 있다. 이에 따라, 계층은 이전 계층에 의해 서빙되고 후속 계층을 서빙함으로써, 보다 하위 계층들 위에 구축되고 보다 고차의 계층들을 서빙하는 계층들의 상호 연결된 웹을 생성할 수 있다. 대안적으로, 다른 프로토콜들들이 DICE-RIoT 프로토콜 대신에 사용될 수 있다.
통신 프로토콜의 예시적인 일 구현예에서, 통신 프로토콜에 대한 보안은 제조 동안(또는 또한 이후에)설정되는 디바이스 시크릿(예를 들어, UDS)인 시크릿 값에 기초한다. 디바이스 시크릿 UDS는 이것이 프로비저닝된 디바이스 내에 존재한다(예를 들어, 도 1의 디바이스 시크릿(149)으로서 저장됨).
디바이스 시크릿 UDS는 부팅 시 제1 스테이지 ROM 기반 부트 로더에 액세스 가능하다. 그 다음, 시스템은 다음 부트 사이클까지 액세스 불가능한 디바이스 시크릿을 렌더링하는 메커니즘을 제공하고, 부트 로더(예를 들어, 부트 계층)만이 디바이스 시크릿 UDS에 항상 액세스할 수 있다. 이에 따라, 이러한 접근법에서, 부트는 디바이스 시크릿 UDS로 시작하는 특정 아키텍처로 계층화된다.
도 5b에 도시된 바와 같이, 계층 0(L0) 및 계층 1(L1)은 외부 통신 구성요소(430') 내에 있다. 계층 0(L0)는 계층 1(L1)에 퓨즈 유도 시크릿(fuse derived secret, FDS)키를 제공할 수 있다. FDS 키는 계층 1(L1)에서의 코드의 신원 및 다른 보안 관련 데이터에 기초할 수 있다. 특정 프로토콜(이를테면, 강건 사물 인터넷(RIoT) 코어 프로토콜)은 로딩되는 계층 1(L1)의 코드를 검증하기 위해 FDS를 사용할 수 있다. 예에서, 특정 프로토콜은 디바이스 식별 구성 엔진(DICE) 및/또는 RIoT 코어 프로토콜을 포함할 수 있다. 예로서, FDS는 계층 1(L1) 펌웨어 이미지 자체, 인가 계층 1(L1) 펌웨어를 암호로 식별하는 매니페스트, 보안 부팅 구현 컨텍스트에서 서명된 펌웨어의 펌웨어 버전 번호, 및/또는 디바이스에 대한 보안에 중요한 구성 설정을 포함할 수 있다. 디바이스 시크릿 UDS는 FDS를 생성하기 위해 사용될 수 있고, 외부 통신 구성요소의 메모리에 저장된다. 이에 따라, 계층 0(L0)는 실제 디바이스 시크릿 UDS를 결코 드러내지 않고 부트 체인에서의 다음 계층에 유도된 키(예를 들어, FDS 키)를 제공한다.
외부 통신 구성요소(430')는 화살표(410')에 의해 도시된 바와 같이, 데이터를 차량 통신 구성요소(430'')에 전송하도록 구성된다. 전송된 데이터는 도 6과 관련하여 설명될 바와 같이, 공개된 외부 ID, 인증서(예를 들어, 외부 식별 인증서), 및/또는 외부 공개 키를 포함할 수 있다. 차량 통신 구성요소(430'')의 계층 2(L2)는 전송된 데이터를 수신하고, 데이터를 예를 들어, 제1 애플리케이션(앱1) 및 제2 애플리케이션(앱2) 상에서 운영 체제(OS)의 동작들과 실행할 수 있다.
마찬가지로, 차량 통신 구성요소(430'')는 화살표(410')에 의해 도시된 바와 같이, 공개인 차량 식별, 인증서(예를 들어, 차량 식별 인증서), 및/또는 차량 공개 키를 포함하는 데이터를 송신할 수 있다. 예로서, 인증 후에(예를 들어, 인증서를 검증한 후에), 차량 통신 구성요소(430'')는 차량의 추가 인증, 식별, 및/또는 검증을 위해 차량 식별 번호(VIN)를 송신할 수 있다.
도 5b 및 도 6에 도시된 바와 같이, 예시적인 동작에서, 외부 통신 구성요소(430')는 디바이스 시크릿 DS를 판독하고, 계층 1(L1)의 신원을 해싱하며, 다음의 계산을 수행할 수 있다:
FDS = KDF [UDS, 해시 ("변경 불가 정보")]
여기서 KDF는 암호화 단방향 키 유도 기능(예를 들어, HMAC-SHA256)이다. 상기한 계산에서, 해시는 SHA256, MD5, SHA3 등과 같은 임의의 암호화 프리미티브일 수 있다.
적어도 일 예에서, 차량은 익명 로그인 또는 인증 로그인 중 어느 하나를 사용하여 통신할 수 있다. 인증 로그인은 차량이 익명 모드에서 통신할 때 액세스 가능하지 않을 수 있는 추가적인 정보를 획득할 수 있게 할 수 있다. 적어도 일 예에서, 인증은 아래에서 설명될 바와 같이, 차량 식별 번호(VIN) 및/또는 인증 정보, 이를테면 공개 키들의 교환을 제공하는 것을 포함할 수 있다. 익명 모드 및 인증 모드 중 어느 하나에서, 외부 엔티티(예를 들어, 신뢰 구역의 경계에서의 검사점 폴리스)는 차량과 통신하여 외부 엔티티와 연관된 외부 공개 키를 차량에 제공할 수 있다.
도 6은 일 실시예에 따른, 비대칭 생성기들을 사용하여 식별자, 인증서, 및 키를 생성하는 예시적인 컴퓨팅 디바이스를 도시한다. 일 실시예에서, 컴퓨팅 디바이스는 (예를 들어, 외부 디바이스의 계층 L1, 또는 대안적인 실시예들에서 내부 컴퓨팅 디바이스의 계층 L1 내에서) 파라미터들을 결정하기 위한 프로세스를 구현한다.
일 실시예에서, 차량 통신 구성요소의 계층 2(L2)(예를 들어, 도 5b의 참조 부호 430')에 (화살표 510'에 의해 표시된 바와 같이) 송신되는 외부 공개 식별, 외부 인증서, 및 외부 공개 키를 포함하는 파라미터들이 결정된다. 도 6의 화살표들(510' 및 510'')은 각각 도 5b의 화살표(410' 및 410'')에 대응한다. 또한, 도 6의 계층들은 도 5b의 계층들에 대응한다.
또 다른 실시예에서, 호스트 디바이스로부터의 메시지("호스트 메시지")는 암호화를 위해 병합된 데이터를 제공하기 위해 패턴 (데이터) 병합(531)에 의해 외부 공개 키와 병합된다. 병합된 데이터는 암호화기(530)에 대한 입력이다. 일 예에서, 호스트 메시지는 외부 공개 키와 연결된다. 생성된 파라미터들은 호스트 디바이스로 송신되고 컴퓨팅 디바이스의 신원을 검증하기 위해 사용되는 트리플을 포함한다. 예를 들어, 외부 공개 식별, 외부 인증서, 및 외부 공개 키는 신원을 검증하기 위해 호스트 디바이스의 검증 구성요소에 의해 사용된다. 일 예에서, 호스트 디바이스는 도 1의 호스트 디바이스(151)이다.
도 6에 도시된 바와 같이, 계층 0(L0)로부터의 FDS는 계층 1(L1)로 송신되고 비대칭 ID 생성기(520)에 의해 사용되어 공개 식별(IDlk공개) 및 개인 식별(IDlk개인)을 생성한다. 축약된 "IDlk공개"에서, "lk"는 일반 계층 k(이 예에서, 계층 1(L1))를 표시하고, "공개"는 식별이 공개적으로 공유됨을 표시한다. 공개 식별(IDlk공개)는 외부 통신 구성요소의 계층 1(L1)의 오른쪽 및 바깥쪽으로 연장되는 화살표에 의해 공유되는 것으로 도시된다. 생성된 개인 식별(IDlk개인)은 암호화기(530)에 대한 키 입력으로 사용된다. 암호화기(530)는 예를 들어, 데이터를 암호화하기 위해 사용되는 임의의 프로세서, 컴퓨팅 디바이스 등일 수 있다.
외부 구성요소의 계층 1(L1)은 비대칭 키 생성기(540)를 포함할 수 있다. 적어도 일 예에서, 난수 생성기(random number generator, RND)는 선택적으로 비대칭 키 생성기(540)에 난수를 입력할 수 있다. 비대칭 키 생성기(540)는 도 5b의 외부 통신 구성요소(430)와 같은 외부 통신 구성요소와 연관된 공개 키(KLk공개)(외부 공개 키로서 지칭됨) 및 개인 키(kLk개인)(외부 개인 키로서 지칭됨)를 생성할 수 있다.
외부 공개 키(KLk공개)는 암호화기(530)에 대한 입력("데이터"로서)일 수 있다. 상술된 바와 같이, 일부 실시예들에서, 신원 검증 프로세스의 일부로서 호스트 디바이스로부터 이전에 수신된 호스트 메시지는 KLk공개와 병합되어 병합된 데이터를 입력 데이터로서 암호화기(530)에 제공한다.
암호화기(530)는 외부 개인 식별(IDlk개인) 및 외부 공개 키(KLk공개)의 입력들을 사용하여 결과 K'를 생성할 수 있다. 외부 개인 키(KLk개인) 및 결과 K'는 추가적인 암호화기(550)에 입력되어, 출력 K''가 될 수 있다. 출력 K''는 계층 2(L2)에 전송되는(또는 대안적으로 신원을 검증하는 호스트 디바이스에 전송되는) 외부 인증서(IDL1인증서)이다. 외부 인증서(IDL1인증서)는 디바이스로부터 송신되는 데이터의 출처를 검증 및/또는 인증할 수 있는 능력을 제공할 수 있다. 예로서, 외부 통신 구성요소로부터 송신되는 데이터는 도 7과 관련하여 추가로 설명될 바와 같이, 인증서를 검증함으로써 외부 통신 구성요소의 신원과 연관될 수 있다. 나아가, 외부 공개 키(KL1공개 키)는 계층 2(L2)로 전송될 수 있다. 이에 따라, 외부 통신 구성요소의 공개 식별(IDl1공개), 인증서(IDL1인증서), 및 외부 통신 구성요소의 외부 공개 키(KL1공개 키)가 차량 통신 구성요소의 계층 2(L2)에 전송될 수 있다.
도 7은 일 실시예에 따른, 복호화 동작들을 사용하여 컴퓨팅 디바이스의 신원을 검증하는 검증 구성요소를 도시한다. 검증 구성요소는 복호화기들(730, 750)을 포함한다. 검증 구성요소는 본 발명의 실시예에 따라 인증서를 검증하는 프로세스를 구현한다.
도 7의 도시된 예에서는, 외부 통신 구성요소로부터(예를 들어, 도 5b의 외부 통신 구성요소(430')의 계층 1(L1)으로부터) 공개 키(KL1공개), 인증서(IDL1인증서), 및 공개 식별(IDL1공개)가 제공된다.
인증서(IDL1인증서) 및 외부 공개 키(KL1공개)의 데이터는 복호화기(730)에 대한 입력들로서 사용될 수 있다. 복호화기(730)는 데이터를 복호화하기 위해 사용되는 임의의 프로세서, 컴퓨팅 디바이스 등일 수 있다. 인증서(IDL1인증서) 및 외부 공개 키(KL1공개)의 복호화의 결과는 공개 식별(IDL1공개)과 함께 복호화기(750)에 대한 입력으로 사용될 수 있으며, 결과가 출력된다. 외부 공개 키(KL1공개) 및 복호화기(750)로부터의 출력은 블록 760에 도시된 바와 같이, 인증서가 검증되는지 여부를 나타내, 결과로 예 또는 아니오가 출력될 수 있다. 개인 키들은 단일 계층들과 연관되고 특정 인증서는 특정 계층에 의해서만 생성될 수 있다.
인증서가 검증되는 것에 응답하여(예를 들어, 인증 후에), 검증되는 디바이스로부터 수신되는 데이터는 수용, 복호화 및/또는 프로세싱될 수 있다. 인증서가 검증되지 않는 것에 응답하여, 검증되는 디바이스로부터 수신되는 데이터는 폐기, 제거, 및/또는 무시될 수 있다. 이러한 방식으로, 부정한 데이터를 송신하는 비인가 디바이스들이 검출되고 회피될 수 있다. 예로서, 프로세싱될 데이터를 송신하는 해커가 식별되고 해킹 데이터는 프로세싱되지 않을 수 있다.
대안적인 실시예에서는, 공개 키(KL1공개), 인증서(IDL1인증서), 및 공개 식별(IDL1공개)이 도 1의 컴퓨팅 디바이스(141)로부터, 또는 도 2의 메모리 시스템(105)으로부터 제공된다. 이러한 트리플은 호스트 디바이스로부터 호스트 메시지를 수신하는 것에 응답하여 컴퓨팅 디바이스(141)에 의해 생성된다. IDL1인증서를 복호화기(730)에 대한 입력으로서 제공하기 전에, IDL1인증서 및 호스트 디바이스로부터의 메시지("호스트 메시지")는 패턴 (데이터) 병합(731)에 의해 병합된다. 일 예에서, 병합은 데이터의 연결이다. 병합된 데이터는 복호화기(730)에 대한 입력으로서 제공된다. 이어서, 검증 프로세스는 상술된 바와 같이 진행된다.
도 8은 일 실시예에 따른, 인증서를 검증하기 위한 예시적인 프로세스의 블록도를 도시한다. 디바이스가 후속 거절을 피하기 위해 검증될 수 있는 데이터를 송신하고 있는 경우에서, 서명이 생성되고 데이터와 함께 송신될 수 있다. 예로서, 제1 디바이스는 제2 디바이스에 요청을 할 수 있고, 제2 디바이스가 요청을 수행하면, 제1 디바이스는 제1 디바이스가 이러한 요청을 한 적이 없음을 표시할 수 있다. 이를테면 서명을 사용하는 거절 방지 접근법은 제1 디바이스에 의한 거절을 피할 수 있고 제2 디바이스가 후속 어려움 없이 요청된 태스크를 수행할 수 있도록 한다.
차량 컴퓨팅 디바이스(810'')(예를 들어, 도 3의 차량 컴퓨팅 디바이스(110) 또는 도 1의 컴퓨팅 디바이스(141))는 데이터(Dat'')를 외부 컴퓨팅 디바이스(810')에(또는 일반적으로 임의의 다른 컴퓨팅 디바이스에) 송신할 수 있다. 차량 컴퓨팅 디바이스(810'')는 차량 개인 키(KLk개인)를 사용하여 서명(Sk)을 생성할 수 있다. 서명(Sk)은 외부 컴퓨팅 디바이스(810')에 전송될 수 있다. 외부 컴퓨팅 디바이스(810')는 이전에 수신된 데이터(Dat') 및 공개 키(KLk공개)(예를 들어, 차량 공개 키)를 사용하여 검증할 수 있다. 이러한 방식으로, 서명 검증은 서명을 암호화하는 시크릿 키 및 서명을 복호화하는 공개 키를 사용함으로써 동작한다. 이러한 방식으로, 각 디바이스에 대한 고유 서명은 수신 디바이스가 검증을 위해 서명을 복호화할 수 있게 하면서 서명을 송신하는 디바이스에 대해서는 개인용으로 유지될 수 있다. 이는 송신 디바이스에 의해 수신 디바이스의 공개 키를 사용하여 암호화되고 수신 디바이스에 의해 수신자의 개인 키를 사용하여 복호화되는 데이터의 암호화/복호화와 대조적이다. 적어도 일 예에서, 차량은 내부 암호화 프로세스(예를 들어, 타원형 곡선 디지털 서명(Elliptical Curve Digital signature, ECDSA) 또는 유사한 프로세스)를 사용함으로써 디지털 서명을 검증할 수 있다.
인증서들 및 공개 키들의 교환 및 검증으로 인해, 디바이스들은 서로 안전한 방식으로 통신할 수 있다. 차량이 외부 엔티티(예를 들어, 신뢰 구역 경계, 국경 안보 엔티티 또는 일반적으로 전자 제어 호스트 디바이스)에 접근할 때, 각 통신 디바이스들(각 인증서를 검증하는 도 7에서 제시된 능력을 가짐)은 인증서들을 교환하고 서로 통신한다. 이에 따라, 인증 후에(예를 들어, 외부 엔티티로부터 인증서 및 공개 키를 수신/검증한 후에), 차량은 이에 관련되고 이의 메모리에 저장된 모든 필요한 정보, 이를테면 번호판 번호/ID, VIN, 보험 번호, 운전자 정보(예를 들어, ID들, 국경 전환에 대한 최종 허가), 탑승자 정보, 운송 상품 정보 등을 통신할 수 있다. 이어서, 수신된 정보를 검토한 후, 외부 엔티티는 전환 요청의 결과를 차량에 통신하며, 이 정보는 가능하게는 수신자의 공개 키를 사용하여 암호화된다. 교환되는 메시지/정보는 상술된 DICE-RIoT 프로토콜을 사용하여 암호화/복호화될 수 있다. 일부 실시예들에서, 소위 변경 불가 정보(예를 들어, 번호판 번호/ID, VIN, 보험 번호)는 암호화되지 않는 한편, 다른 정보는 암호화된다. 다시 말해, 교환되는 메시지에는, 암호화된 데이터뿐만 아니라 암호화되지 않은 데이터도 있을 수 있으며, 이에 따라 정보는 암호화되거나 암호화되지 않거나, 또는 혼합될 수 있다. 이서어, 메시지의 콘텐츠가 유효한지를 검증하기 위해 인증서/공개 키를 사용함으로써 메시지의 정확성이 보장된다.
도 9는 일 실시예에 따른, 식별자, 인증서, 및 키를 사용하여 컴퓨팅 디바이스의 신원을 검증하는 방법을 도시한다. 예를 들어, 도 9의 방법은 도 1 내지 도 7의 컴퓨팅 시스템에서 구현될 수 있다.
도 9의 방법은 하드웨어(예를 들어, 프로세싱 디바이스, 회로, 전용 로직, 프로그래머블 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시예들에서, 도 9의 방법은 도 1의 신원 구성요소(147) 및 검증 구성요소(153)에 의해 적어도 부분적으로 수행된다.
특정 시퀀스 또는 순서로 도시되었지만, 달리 특정되지 않는 한, 프로세스의 순서는 변경될 수 있다. 이에 따라, 도시된 실시예들은 단지 예들로서 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들이 병렬로 수행될 수 있다. 추가적으로, 다양한 실시예들에서 하나 이상의 프로세스가 생략될 수 있다. 이에 따라, 모든 프로세스들이 모든 실시예에서 요구되는 것은 아니다. 다른 프로세스 흐름들이 가능하다.
블록(921)에서, 호스트 디바이스로부터 메시지가 수신된다. 예를 들어, 컴퓨팅 디바이스(141)는 호스트 디바이스(151)로부터 메시지(예를 들어, "호스트 메시지" 또는 "호스트 메시지 | 선도")를 수신한다.
블록(923)에서, 식별자, 인증서, 및 키(예를 들어, 공개 키(KL1공개))가 생성된다. 식별자는 컴퓨팅 디바이스의 신원과 연관된다. 인증서는 호스트 디바이스로부터의 메시지(예를 들어, "호스트 메시지")를 사용하여 생성된다. 일 실시예에서, 메시지는 암호화 전에 공개 키와 병합된다. 이러한 암호화는 키로서 개인 식별자(IDL1개인)를 사용한다. 개인 식별자(IDL1개인)는 공개 식별자(IDL1공개)(예를 들어, 비대칭 ID 생성기(520)에 의해 생성되는 관련 쌍)와 연관된다.
일 예에서, 신원 구성요소(147)는 식별자, 인증서, 및 키를 생성하여 트리플을 제공한다. 일 예에서, 트리플은 DICE-RIoT 프로토콜에 기초하여 생성된다. 일 예에서, 트리플은 도 6에 도시된 바와 같이 생성된다.
일 예에서, DICE-RIoT 프로토콜을 사용하여, 각 계층(Lk)은 키들 및 인증서들의 세트를 그 다음 계층들(Lk+1)에 제공하고, 수신 계층에 의해 각 인증서가 검증될 수 있다. 퓨즈 유도 시크릿(FDS)은 다음과 같이 계산된다:
FDS = HMAC-SHA256 [ UDS, SHA256(“L1의 신원”) ]
일 예에서, DICE-RIoT 아키텍처에서의 계층 1(L1)은 호스트 디바이스에 의해 송신된 호스트 메시지를 사용하여 인증서를 생성한다. 계층 1은 두 개의 관련 키 쌍들을 다음과 같이 계산한다:
(IDlk 공개 , IDlk 개인) 및 (Klk 공개, Klk 개인)
계층 1은 또한 두 개의 서명들을 다음과 같이 계산한다:
K' = 암호화 (IDlk 개인 , Klk 공개 | 호스트 메시지)
K'' = 암호화 (Klk 개인, K')
상기한 프로세싱으로부터, 계층 1은 트리플을 다음과 같이 제공한다:
보다 일반적으로, 각 층은 트리플을 다음과 같이 제공한다:
KLk = 각 k=1:N에 대해, {키들 및 인증서 세트}
각 트리플을 사용하여, 각 계층은 그 다음 계층에 자신의 신원을 증명할 수 있다.
일 예에서, 계층 2는 애플리케이션 펌웨어에 대응하고, 후속 계층들은 호스트 디바이스의 운영 체제 및/또는 애플리케이션들에 대응한다.
블록(925)에서, 생성된 식별자, 인증서, 및 키가 호스트 디바이스로 송신된다. 호스트 디바이스는 식별자, 인증서, 및 키를 사용하여 컴퓨팅 디바이스의 신원을 검증한다. 일 예에서, 호스트 디바이스(151)는 컴퓨팅 디바이스(141)로부터 식별자, 인증서, 및 키를 수신한다. 호스트 디바이스(151)는 검증 구성요소(153)를 사용하여 컴퓨팅 디바이스의 신원을 검증한다.
일 예에서, 검증 구성요소(153)는 검증 프로세스의 일부로서 복호화 동작들을 수행한다. 복호화는 컴퓨팅 디바이스(141)로부터 수신된 키를 사용하여 복호화 전에 호스트로부터의 메시지를 인증서와 병합하는 것을 포함한다. 일 예에서, 컴퓨팅 디바이스의 신원의 검증은 도 7에 도시된 바와 같이 수행된다.
일 예에서, 복호화 동작은 다음과 같이 수행된다:
KL1 공개를 사용해 (IDL1 인증서) 복호화하여 K'를 제공함
IDL1 공개를 사용해 K'를 복호화하여 결과를 제공함
결과는 KL1 공개와 비교된다. 결과가 KL1 공개와 동일하다면, 신원이 검증된다. 일 예에서, 애플리케이션 보드 신원이 검증된다.
일 실시예에서, 사람 또는 동물의 신원이 증명된다. 사람의 신원의 검증은 상술된 바와 같이 컴퓨팅 디바이스(141)의 신원을 검증하는 것과 유사하게 수행된다. 일 예에서, 컴퓨팅 디바이스(141)는 사람에 대한 여권에 통합된다. 여권을 발행한 국가의 공공 행정 부서는 문서 부류(예를 들어, 운전 면허증, 여권, ID 카드 등)에 대해 특정한 UDS를 사용할 수 있다. 예를 들어, 이탈리아, 시칠리아, 메시나, 여권실의 경우, UDS = 0x12234...4444이다. 독일, 바이에른, 뮌헨, 여권실의 경우, UDS = 0xaabb....00322이다.
여권에 관한 일 예에서, L1의 신원은 다음과 같은 ASCII 스트링이다:
국가 | 문서 유형 | 기타(예를 들어, "이탈리아, 시칠리아, 메시나, 여권실")
부여의 "세분도(granularity)"는 각 국가의 공공 행정에 의해 결정될 수 있다.
도 9의 방법의 다양한 실시예들은 다양한 이점들을 제공한다. 예를 들어, 사물은 제3자 키 인프라스트럭처(예를 들어, PKI = 공개 키 인프라스트럭처)를 사용하지 않고 특정 팩토리에 의해 생산되는 것으로서 식별되고 인증될 수 있다. 악의적인 또는 해커 중간자 공격들은 리플레이 보호로 인해 방지된다. 본 방법은 사물들의 대량 생산에 유용하다.
나아가, 고객 UDS는 하드웨어 레벨에서 보호된다(예를 들어, 구성요소 외부의 계층 0의 액세스 불가능). UDS는 어느 누구에 의해서도 판독될 수 없지만, 대체될 수 있다(예를 들어, 보안 프로토콜을 사용하여 고객만이 이를 행할 수 있다). 보안 프로토콜들의 예들은 인증된, 리플레이 보호된 커맨드들 및/또는 디피 헬만(Diffie Hellman)(예를 들어, ECDH 타원 곡선들 디피 헬만)과 같은 시크릿 공유 알고리즘들에 기초한 보안 프로토콜들을 포함한다. 일 예에서, UDS는 보안 인프라스트럭처를 사용함으로써 고객(최종 사용자가 아님)에게 통신된다. UDS는 고객에 의해 맞춤화될 수 있다.
또한, 구성요소 인식은 인터넷 또는 다른 네트워크 연결 없이 동작할 수 있다. 또한, 본 방법은 신뢰 구역 경계(예를 들어, 국경, 내부 검사점 등)에서 사물들, 동물들 및 사람들의 신원을 용이하게 검사하기 위해 사용될 수 있다.
일 예에서, UDS에 대한 지식은 호스트 디바이스가 UDS를 안전하게 대체할 수 있게 한다. 예를 들어, 호스트가 사물의 신원을 변경하기를 원하는 경우, 또는 호스트가 사물의 신원이 (정규 제조자를 포함하여) 다른 누구에게도 알려지지 않기를 원하는 경우 대체가 행해질 수 있다.
또 다른 예에서, 대체 커맨드는 호스트 디바이스에 의해 사용된다. 예를 들어, 호스트 디바이스가 대체 UDS 커맨드를 컴퓨팅 디바이스에 송신할 수 있다. 대체 커맨드는 컴퓨팅 디바이스에 기인될 기존의 UDS 및 새로운 UDS를 포함한다. 일 예에서, 대체 명령은 다음과 같은 해시 값을 포함하는 필드를 갖는다: 해시(기존의 UDS | 새로운 UDS).
또 다른 예에서, 다음과 같은 필드를 갖는 인증된 리플레이 보호 커맨드가 사용된다: 대체_커맨드 | 선도 | 서명
여기서, 서명 = MAC [시크릿 키, 대체_커맨드 | 선도 | 해시(기존의 UDS | 새로운 UDS)]이다.
시크릿 키는 추가 키이고, 디바이스 상에 존재하는 인증된 커맨드들에 사용되는 키이다. 예를 들어, 시크릿 키는 아래에서 설명될 바와 같은 세션 키일 수 있다(예를 들어, 도 12 참조).
일 실시예에서, 방법은: 컴퓨팅 디바이스(예를 들어, 컴퓨팅 디바이스 141)에 의해 호스트 디바이스(예를 들어, 호스트 디바이스 151)로부터 메시지를 수신하는 단계; 컴퓨팅 디바이스에 의해, 식별자, 인증서, 및 키를 생성하는 단계 - 식별자는 컴퓨팅 디바이스의 신원과 연관되고, 인증서는 메시지를 사용하여 생성됨; 및 컴퓨팅 디바이스에 의해, 식별자, 인증서, 및 키를 호스트 디바이스에 송신하는 단계 - 호스트 디바이스는 식별자, 인증서, 및 키를 사용하여 컴퓨팅 디바이스의 신원을 검증하도록 구성됨 - 를 포함한다.
일 실시예에서, 컴퓨팅 디바이스의 신원을 검증하는 단계는 메시지와 인증서를 연결하여 제1 데이터를 제공하는 단계를 포함한다.
일 실시예에서, 컴퓨팅 디바이스의 신원을 검증하는 단계는 키를 사용하여 제1 데이터를 복호화하여 제2 데이터를 제공하는 단계를 더 포함한다.
일 실시예에서, 컴퓨팅 디바이스의 신원을 검증하는 단계는 식별자를 사용하여 제2 데이터를 복호화하여 결과를 제공하는 단계, 및 결과를 키와 비교하는 단계를 더 포함한다.
일 실시예에서, 식별자는 공개 식별자이고, 컴퓨팅 디바이스는 시크릿 키를 저장하며, 본 방법은: 메시지 인증 코드에 대한 입력으로서 시크릿 키를 사용하여 유도되는 시크릿을 생성하는 단계 - 비대칭 생성기에 대한 입력으로서 유도되는 시크릿을 사용하여 공개 식별자가 생성됨 - 를 더 포함한다.
일 실시예에서, 식별자는 제1 공개 식별자이고, 컴퓨팅 디바이스는 제1 공개 식별자를 생성하기 위해 사용되는 제1 디바이스 시크릿을 저장하며, 본 방법은: 호스트 디바이스로부터 대체 커맨드를 수신하는 단계; 대체 커맨드를 수신하는 것에 응답하여, 제1 디바이스 시크릿을 제2 디바이스 시크릿으로 대체하는 단계; 및 제2 디바이스 시크릿을 사용하여 생성되는 제2 공개 식별자를 호스트 디바이스로 송신하는 단계를 더 포함한다.
일 실시예에서, 키는 공개 키이고, 인증서를 생성하는 단계는 메시지를 공개 키와 연결하여 암호화를 위한 데이터 입력을 제공하는 단계를 포함한다.
일 실시예에서, 식별자는 공개 식별자이고, 제1 비대칭 생성기는 관련 쌍으로서 공개 식별자 및 개인 식별자를 생성하며; 키는 공개 키이고, 제2 비대칭 생성기는 관련 쌍으로서 공개 키 및 개인 키를 생성하며; 인증서를 생성하는 단계는: 메시지를 공개 키와 연결하여 제1 데이터를 제공하는 단계; 개인 식별자를 사용해 제1 데이터를 암호화하여 제2 데이터를 제공하는 단계; 및 개인 키를 사용해 제2 정보를 암호화하여 인증서를 제공하는 단계를 포함한다.
일 실시예에서, 키는 공개 키이며, 본 방법은 비대칭 키 생성기에 대한 입력으로서 난수를 생성하는 단계 - 공개 키 및 관련 개인 키는 비대칭 키 생성기는 사용하여 생성됨 - 를 포함한다.
일 실시예에서, 난수는 물리적 복제 방지 함수(PUF)를 사용하여 생성된다.
일 실시예에서, 시스템은: 적어도 하나의 프로세서; 및 명령어들을 포함하는 메모리를 포함하며, 명령어들은 적어도 하나의 프로세서에: 컴퓨팅 디바이스에 메시지를 송신하는 것; 컴퓨팅 디바이스로부터, 식별자, 인증서, 및 키를 수신하는 것 - 식별자는 컴퓨팅 디바이스의 신원과 연관되고, 인증서는 메시지를 사용하여 컴퓨팅 디바이스에 의해 생성됨; 및 식별자, 인증서, 및 키를 사용하여 컴퓨팅 디바이스의 신원을 검증하는 것을 지시하도록 구성된다.
일 실시예에서, 컴퓨팅 디바이스의 신원을 검증하는 것은: 메시지 및 인증서를 연결하여 제1 데이터를 제공하는 것; 키를 사용해 제1 데이터를 복호화하여 제2 데이터를 제공하는 것; 식별자를 사용해 제2 데이터를 복호화하여 결과를 제공하는 것; 및 결과를 키와 비교하는 것을 포함한다.
일 실시예에서, 식별자는 제1 공개 식별자이고, 컴퓨팅 디바이스는 제1 공개 식별자를 생성하기 위해 사용되는 제1 디바이스 시크릿을 저장하며, 명령어들은 적어도 하나의 프로세서에: 컴퓨팅 디바이스로 대체 커맨드를 송신하는 것 - 대체 커맨드는 컴퓨팅 디바이스로 하여금 제1 디바이스 시크릿을 제2 디바이스 시크릿으로 대체하게 함 -, 및 제2 디바이스 시크릿을 사용하여 생성되는 제2 공개 식별자를 컴퓨팅 디바이스로부터 수신하는 것을 지시하도록 더 구성된다.
일 실시예에서, 컴퓨팅 디바이스는 유도되는 시크릿을 제공하는 메시지 인증 코드에 대한 입력으로서 제2 디바이스 시크릿을 사용하고, 유도되는 시크릿을 사용하여 제2 공개 식별자를 생성하도록 구성된다.
일 실시예에서, 대체 커맨드는 제1 디바이스 시크릿에 기초한 값을 갖는 필드를 포함한다.
일 실시예에서, 시스템은 선도를 생성하도록 구성된 선도 메커니즘을 더 포함하되, 컴퓨팅 디바이스로 송신되는 메시지가 선도를 포함한다.
일 실시예에서, 컴퓨팅 디바이스의 신원은 영숫자(alphanumeric) 스트링을 포함한다.
일 실시예에서, 비일시적인 컴퓨터 판독 가능한 저장 매체는 컴퓨팅 디바이스 상에서 실행될 때, 컴퓨팅 디바이스로 하여금 적어도: 호스트 디바이스로부터 메시지를 수신하게 하고; 식별자, 인증서, 및 키를 생성하게 하며 - 식별자는 컴퓨팅 디바이스의 신원에 대응하고, 인증서는 메시지를 사용하여 생성됨; 그리고 컴퓨팅 디바이스의 신원을 검증하는데 사용하기 위해 식별자, 인증서, 및 키를 호스트 디바이스로 송신하게 하는 명령어들을 저장한다.
일 실시예에서, 식별자는 개인 식별자와 연관된 공개 식별자이고, 키는 개인 키와 연관된 공개 키이며, 인증서를 생성하는 것은: 메시지를 공개 키와 연결하여 제1 데이터를 제공하는 것; 개인 식별자를 사용해 제1 데이터를 암호화하여 제2 데이터를 제공하는 것; 및 개인 키를 사용해 제2 정보를 암호화하여 인증서를 제공하는 것을 포함한다.
일 실시예에서, 컴퓨팅 디바이스의 신원을 검증하는 것은 식별자를 사용하여 복호화 동작을 수행하여 결과를 제공하는 것, 및 결과를 키와 비교하는 것을 포함한다.
물리적 복제 방지 함수(PUF)를 사용한 값들의 생성
아래에서 개시되는 적어도 일부 실시예들은 물리적 복제 방지 함수(PUF)를 사용하여 값들을 생성하기 위한 개선된 아키텍처를 제공한다. 일부 실시예들에서, PUF 값은 그 자체가 디바이스 시크릿으로서 사용되거나, 또는 디바이스 시크릿을 생성하기 위해 사용될 수 있다. 일 예에서, PUF 값은 상술된 바와 같이 DICE-RIoT 프로토콜과 사용하기 위한 고유한 디바이스 시크릿(UDS)로서 사용된다(예를 들어, 도 5a 및 도 5b 참조). 일 예에서, PUF에 의해 생성되는 값은 메시지 인증 코드(MAC)에 대한 입력으로서 사용된다. MAC로부터의 출력은 UDS로서 사용된다.
일부 실시예들에서, PUF 값, 또는 PUF 값으로부터 생성되는 값은 난수(예를 들어, 디바이스 특정 난수)로서 사용될 수 있다. 일 예에서, 난수(예를 들어, RND)는 상술된 비대칭 키 생성기를 통해 관련 공개 키 및 개인 키를 생성할 때 입력으로서 사용된다(예를 들면, 도 6 참조).
일반적으로, 아래의 아키텍처는 하나 이상의 PUF로부터 제공되는 입력들을 메시지 인증 코드(MAC)에 공급함으로써 출력을 생성한다. MAC로부터의 출력은 개선된 PUF(예를 들어, 상기한 UDS)를 제공한다.
일반적으로, 반도체 칩 제조자들은 예를 들어, 반도체 웨이퍼로부터 제공되는 각 칩 또는 다이에 대한 고유한 시크릿 키의 프로그래밍인 키 주입의 문제에 직면한다. 칩들로 주입된 시크릿 키들의 누설 또는 노출을 피하기 위해 보안 환경에서 키 주입이 수행되는 것이 바람직하다. 또한, 칩의 생산 후에 키가 해킹되거나 다시 판독될 수 없도록 보장하는 것이 바람직하다. 일부 경우들에서, 예를 들어, 키 주입 절차들은 제3자 인프라스트럭처에 의해 인증되거나 실행된다.
칩 제조자들은 암호화 능력들을 포함하는 칩들의 생산 비용을 감소시키기를 원한다. 칩 제조자들은 또한 제조된 칩들의 일관된 레벨의 보안 성능을 유지하면서 생산 흐름들을 단순화하기를 원한다. 그러나, 키 주입은 보다 비용이 많이 드는 생산 단계들 중 하나이다.
칩 제조자들은 또한 의사 난수 생성기들로서 사용될 때 PUF들의 균일성을 개선하는 문제에 직면한다. 일부 경우들에서, 이러한 문제는 PUF에 의해 제공되는 시드 값의 기초가 되는 현상으로 인한 다이들 간의 교차 상관을 포함할 수 있다.
PUF는 예를 들어, 각 다이에 대해 고유한 온 칩 기생 효과(on-chip parasitic effect), 온 칩 경로 지연 등과 같은 예측 불가능한 물리적 현상에 기초한다. 이러한 현상들은 예를 들어, 의사 난수 생성기에 대한 시드 값을 제공하기 위해 사용된다.
생산 라인에서 선택된 두 개의 상이한 칩들은 상이한 PUF 값들을 가져야 한다. 각 칩에서 생성되는 PUF 값은 디바이스의 수명 동안 변경되지 않아야 한다. 두 개의 칩들이 유사한 키들을 갖는다면(예를 들어, 이들 간의 해밍 거리가 낮다면), 하나의 칩의 키를 사용하여 또 다른 칩의 키를 추측하는 것이 가능할 수 있다(예를 들면, 역상 해커 공격(preimage hacker attack)).
아래에서 설명될 개선된 PUF 아키텍처를 사용하는 것은 각 칩 또는 다이 상에 PUF의 기능을 제공하기에 적합한 출력 값들을 제공함으로써 상기한 문제들 중 하나 이상에 대한 솔루션을 제공할 수 있다. 아래의 개선된 PUF 아키텍처는 각 칩 또는 다이가 칩 또는 다이의 각 작동 시작 시 고유한 보안 키를 자동으로 생성할 수 있게 하는 PUF를 사용한다. 해킹되거나 달리 침해될 수 있는 보안 키는 비휘발성 메모리에 저장될 필요가 없다.
개선된 PUF 아키텍처는 예를 들어, 반도체 칩에 통합되는 암호화 기능들 또는 프로세스들에 의한 사용을 위해 개선된 PUF 출력(예를 들어, 고유한 키)을 생성하기 위해 또한 MAC를 사용한다. MAC의 사용은, 예를 들어, 상이한 칩들 상에서 생성되는 키들 간의 해밍 거리를 증가시킬 수 있다.
본 명세서에 개시된 적어도 일부 실시예들에서, MAC로부터의 출력을 사용하는 개선된 PUF 아키텍처는 시드 또는 다른 값들을 생성하는 방식으로 제공된다. 따라서, 개선된 PUF 아키텍처는 예를 들어, 제조 비용을 감소시키고, 최종 칩에 대한 PUF 동작의 신뢰도 및/또는 균일성을 개선하는 키 주입을 수행하는 방법을 제공한다.
일 실시예에서, 방법은: 적어도 하나의 PUF에 의해, 적어도 하나의 값을 제공하는 단계; 및 MAC에 기초하여, 제1 출력을 생성하는 단계를 포함하되, MAC는 제1 출력을 생성하기 위한 입력으로서 적어도 하나의 PUF에 의해 제공된 적어도 하나의 값을 사용한다.
일 실시예에서, 시스템은: 적어도 하나의 PUF 디바이스; 적어도 하나의 PUF 디바이스에 의해 제공되는 적어도 하나의 값에 기초하여 제1 입력을 수신하도록 구성된 메시지 인증 코드 MAC 모듈; 적어도 하나의 프로세서; 및 적어도 하나의 프로세서에, 제1 입력에 기초하여 MAC 모듈로부터 제1 출력을 생성할 것을 지시하도록 구성된 명령어들을 포함하는 메모리를 포함한다. 다양한 실시예들에서, MAC 모듈은 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있다.
일 실시예에서, 시스템은 MAC 모듈에 값들을 제공하는데 사용하기 위해 PUF 디바이스들 중 하나 이상을 선택하기 위해 사용되는 선택기 모듈을 더 포함한다. 예를 들어, 몇몇 PUF 디바이스들로부터 제공되는 값들은 연계되고 MAC 모듈에 대한 입력으로서 제공될 수 있다. 다양한 실시예들에서, 선택기 모듈은 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있다.
도 10은 일 실시예에 따른, 물리적 복제 방지 기능(PUF) 디바이스(121)로부터 입력을 수신하는 메시지 인증 코드(MAC)(123)의 출력으로부터 고유한 키(125)를 생성하기 위한 시스템을 도시한다. 시스템은 메시지 인증 코드(MAC) 모듈(123)의 출력으로부터 고유한 키(125)(또는 다른 값)를 생성하기 위해 사용되는 PUF 아키텍처(111)를 제공한다. MAC 모듈(123)은 물리적 복제 방지 기능(PUF) 디바이스(121)로부터 획득되는 입력 값을 수신한다.
도 10의 PUF 디바이스(121)는 예를 들어, 다양한 상이한 알려진 유형들의 PUF들 중 어느 하나일 수 있다. MAC 모듈(123)은 예를 들어 SHA1, SHA2, MD5, CRC, TIGER 등과 같은 일방 함수를 제공한다.
아키텍처(111)는 예를 들어, 칩들 간에 생성되는 PUF 값들 또는 코드들의 해밍 거리를 개선할 수 있다. MAC 함수는 예측 불가능하다(예를 들어, MAC 함수에 제공되는 단일 비트 차이만을 갖는 입력 시퀀스들이 두 개의 완전히 상이한 출력 결과들을 제공한다). 이에 따라, MAC 함수에 대한 입력은 출력에 대한 지식만을 가질 때에는 인식되거나 결정될 수 없다. 아키텍처(111)는 또한 예를 들어, 의사 난수 생성기로서 PUF의 균일성을 개선할 수 있다.
일 예에서, PUF 아키텍처(111)에 의해 생성되는 값(예를 들어, 고유한 키(125) 또는 또 다른 값)은 N 비트를 갖는 수일 수 있으며, 여기서 N은 PUF 아키텍쳐(111)를 포함하는 칩(예를 들어, 메모리 디바이스(103) 또는 또 다른 디바이스) 상에 구현된 암호화 알고리즘에 따른다. 일 예에서, 칩은 HMAC-SHA256을 사용하는 암호화 함수를 구현하며, 이 경우 MAC 모듈(123)로부터의 출력은 256 비트의 크기 N을 갖는다. MAC 모듈(123)로부터의 출력의 사용은 (추가 압축 또는 패딩을 필요로 하지 않고) 키로서 사용하기에 적합한 출력 값에 대한 메시지 길이를 제공한다.
PUF 아키텍처(111)는 도시된 메모리 디바이스(103)와 같은 디바이스에서 구현되거나, 또는 예를 들어, 웨이퍼 제조 생산 라인에 의해 제공되는 다수의 반도체 칩들에서 구현되는 집적 회로들과 같은 다른 유형들의 컴퓨팅 디바이스들에서 구현될 수 있다.
일 실시예에서, MAC 모듈(123)은 예를 들어, 메모리 디바이스(103)에 대한 암호화 함수들을 제공할 수 있는 암호화 모듈(127)과 협력하고/거나 이에 또는 이의 일부로서 통합된다. 예를 들어, MAC 모듈(123)의 출력은 MAC이 다른 암호화들을 위해 메모리 디바이스(103)에 의해 사용됨으로 인해 키로서 사용하기에 적합할 수 있다.
PUF 아키텍처(111), 암호화 모듈(127), 및/또는 메모리 디바이스(103)의 다른 기능들의 동작은 제어기(107)에 의해 제어될 수 있다. 제어기(107)는 예를 들어, 하나 이상의 마이크로 프로세서를 포함할 수 있다.
도 10에서, 호스트(101)는 통신 채널을 통해 메모리 디바이스(103)와 통신할 수 있다. 호스트(101)는 메모리 디바이스(103)와 같은 컴퓨터 주변 디바이스들이 컴퓨터 버스(예를 들어, PCI(Peripheral Component Interconnect), PCI-X(PCI eXtended), PCIe(PCI Express)), 통신 부분, 및/또는 컴퓨터 네트워크와 같은 인터커넥트를 통해 접속될 수 있는 하나 이상의 중앙 프로세싱 유닛(CPU)을 갖는 컴퓨터일 수 있다.
일 실시예에서, 고유한 키(125)는 메모리 디바이스(103)에 대한 신원을 제공하기 위해 UDS로서 사용된다. 제어기(107)는 DICE-RIoT 아키텍처에서 계층 0(L0) 및 계층 1(L1)을 구현한다. 호스트 인터페이스(105)를 통해 호스트(101)로부터 호스트 메시지를 수신하는 것에 응답하여, 암호 모듈(127)은 상술된 바와 같이, 트리플을 생성하기 위한 프로세싱을 수행한다. 호스트(101)는 트리플을 사용하여 메모리 디바이스(103)의 신원을 검증한다. 메모리 디바이스(103)는 컴퓨팅 디바이스(141)의 예이다.
대표적인 예시를 위해, 통상적으로 두 개의 기술적 문제들이 있다는 점에 주목될 수 있다. 첫 번째 문제는 호스트에 보드의 신원을 증명하는 것이다. 문제는 예를 들어, DICE-RIoT에 대해 상술된 바와 같이, 공개 트리플 및 비대칭 암호화의 사용에 의해 핸들링될 수 있다. 이러한 접근법은 안전하고 훌륭하지만, 일부 경우들에서는 회로 보드 자체에 의해 직접 사용되기에는 너무 비용이 많이 들고/시간 소모적일 수 있다. 두 번째 문제는 보드 상의 메모리의 신원을 보드에 증명하는 것이다(예를 들어, 비인가 메모리 교체를 피하기 위해)(이는 예를 들어, 각 작동 시작 후에 수행된다). 두 번째 문제는 상기한 공개 트리플 및 비대칭 암호화를 사용하여 해결될 수 있다. 그러나, 단순히 MAC 함수를 기반으로 하는 보다 가벼운 보안 메카니즘이 종종 두 번째 문제를 핸들링하기에 충분하다.
메모리 디바이스(103)는 예를 들어, 비휘발성 저장 매체(109)에 호스트(101)에 대한 데이터를 저장하기 위해 사용될 수 있다. 메모리 디바이스들의 예는 일반적으로 하드 디스크 드라이브(HDD), 고체 상태 드라이브(SSD), 플래시 메모리, 동적 랜덤 액세스 메모리, 자기 테이프, 네트워크 접속 저장 디바이스 등을 포함한다. 메모리 디바이스(103)는 통신 채널을 사용하여 호스트(101)와의 통신을 구현하는 호스트 인터페이스(105)를 갖는다. 예를 들어, 호스트(101)와 메모리 디바이스(103) 간의 통신 채널은 일 실시예에서 PCI 익스프레스 또는 PCIe(Peripheral Component Interconnect Express) 버스이고; 호스트(101)와 메모리 디바이스(103)는 NVMe 프로토콜(NVMHCI(Non-Volatile Memory Host Controller Interface Specification), NVM Express(NVMe)로서도 알려짐)을 사용하여 서로 통신한다.
일부 구현들에서, 호스트(101)와 메모리 디바이스(103) 사이의 통신 채널은 컴퓨터 네트워크, 이를테면, 로컬 영역 네트워크, 무선 로컬 영역 네트워크, 무선 개인 영역 네트워크, 셀룰러 통신 네트워크, 광대역 고속 올웨이즈 연결 무선 통신 연결(예를 들어, 현재 또는 미래의 세대의 모바일 네트워크 링크)을 포함하고; 호스트(101) 및 메모리 디바이스(103)는 NVMe 프로토콜에서의 것들과 유사한 데이터 저장 관리 및 사용 커맨드들을 사용하여 서로 통신하도록 구성될 수 있다.
제어기(107)는 호스트(101)로부터의 통신에 응답하는 동작들 및/또는 다른 동작들을 수행하는 펌웨어(104)를 실행할 수 있다. 펌웨어는 일반적으로 엔지니어링된 컴퓨팅 디바이스들의 제어, 모니터링 및 데이터 조작을 제공하는 컴퓨터 프로그램의 일 유형이다. 도 10에서, 펌웨어(104)는 아래에서 추가로 논의될 바와 같이, PUF 아키텍처(111)의 동작과 같은, 메모리 디바이스(103)를 작동 시 제어기(107)의 동작들을 제어한다.
메모리 디바이스(103)는 집적 회로 내의 메모리 셀들 및/또는 강성 디스크들 상에 코팅된 자기 물질과 같은 비휘발성 저장 매체(109)를 갖는다. 비휘발성 저장 매체(109)는 비휘발성 저장 매체(109)에 저장된 데이터/정보를 유지하기 위해 어떠한 전원도 요구되지 않으며, 이 데이터/정보는 비휘발성 저장 매체(109)의 전원이 차단된 다음 다시 인가된 후에 검색될 수 있다는다는 점에서 비휘발성이다. 메모리 셀들은 NAND 게이트 기반 플래시 메모리, 상 변화 메모리(PCM), 자기 메모리(MRAM), 저항성 랜덤 액세스 메모리, 및 3D XPoint와 같은 다양한 메모리/저장 기술들을 사용하여 구현될 수 있으며, 따라서 저장 매체(109)가 비휘발성이고 수일, 수개월, 및/또는 수년 동안 전원 없이 저장된 데이터를 유지할 수 있게 된다.
메모리 디바이스(103)는 제어기(107)의 계산 성능을 개선하기 위해 그리고/또는 호스트(101)와 비휘발성 저장 매체(109) 사이에서 전송되는 데이터에 대한 버퍼들을 제공하기 위해 제어기(107)에 의해 사용되는 실행 시간 데이터 및 명령어들의 저장을 위한 휘발성 동적 랜덤 액세스 메모리(DRAM)(106)를 포함한다. DRAM(106)은 내부에 저장된 데이터/정보를 유지하는데 전원을 필요로 하며, 이 데이터/정보는 전원이 중단될 때 즉시 또는 급속히 손실된다는 점에서 휘발성이다.
휘발성 DRAM(106)은 통상적으로 비휘발성 저장 매체(109)보다 적은 레이턴시를 갖지만, 전원이 제거될 때 이의 데이터를 빠르게 손실한다. 이에 따라, 성능을 개선하기 위해 현재의 컴퓨팅 태스크에서 제어기(107)에 사용되는 명령어들 및 데이터를 일시적으로 저장하기 위해 휘발성 DRAM(106)을 사용하는 것이 바람직하다. 일부 사례들에서, 휘발성 DRAM(106)은 일부 애플리케이션들에서 DRAM보다 적은 전력을 사용하는 휘발성 정적 랜덤 액세스 메모리(SRAM)로 대체된다. 비휘발성 저장 매체(109)가 휘발성 DRAM(106)에 필적하는 데이터 액세스 성능(예를 들어, 레이턴시, 판독/기입 속도에서)을 가질 때, 휘발성 DRAM(106)은 제거될 수 있고; 제어기(107)는 휘발성 DRAM(106)에 대해 동작하는 대신에 명령어들 및 데이터에 대해 비휘발성 저장 매체(109)에 대해 동작함으로써 컴퓨팅을 수행할 수 있다.
예를 들어, 교차점 저장소 및 메모리 디바이스들(예를 들어, 3D XPoint 메모리)은 휘발성 DRAM(106)에 필적하는 데이터 액세스 성능을 갖는다. 교차점 메모리 디바이스는 컬럼으로서 함께 적층되는 메모리 셀 및 선택기를 각각 갖는 트랜지스터 없는 메모리 요소들을 사용한다. 메모리 요소 컬럼들은 와이어들의 두 개의 수직 레이들(lays)을 통해 연결되며, 여기서 하나의 레이는 메모리 요소 컴럼들 위에 있고 다른 레이는 메모리 요소 컬럼들 아래에 있다. 각 메모리 요소는 두 개의 계층들 각각에서 하나의 와이어의 교차점에서 개별적으로 선택될 수 있다. 교차점 메모리 디바이스들은 고속이고 비휘발성이며, 프로세싱 및 저장을 위한 통합된 메모리 풀로서 사용될 수 있다.
일부 경우들에서, 제어기(107)는 휘발성 DRAM(106) 및/또는 비휘발성 저장 매체(109)보다 양호한 데이터 액세스 성능을 갖는 프로세서 내 캐시 메모리를 갖는다. 이에 따라, 현재 컴퓨팅 태스크에서 사용되는 명령어들 및 데이터의 부분들은 제어기(107)의 컴퓨팅 동작들 동안 제어기(107)의 프로세서 내 캐시 메모리에 캐싱된다. 일부 사례들에서, 제어기(107)는 자체의 프로세서 내 캐시 메모리를 각각 갖는 다수의 프로세서들을 갖는다.
선택적으로, 제어기(107)는 메모리 디바이스(103)에 편성된 데이터 및/또는 명령어들을 사용하여 데이터 집약적인 메모리 내 프로세싱을 수행한다. 예를 들어, 호스트(101)로부터의 요청에 응답하여, 제어기(107)는 메모리 디바이스(103)에 저장된 데이터 세트의 실시간 분석을 수행하고, 감소된 데이터 세트를 응답으로서 호스트(101)에 통신한다. 예를 들어, 일부 애플리케이션들에서, 메모리 디바이스(103)는 센서 입력들을 저장하기 위해 실시간 센서들에 연결되고; 그리고 제어기(107)의 프로세서들은 센서 입력들에 기초하여 기계 학습 및/또는 패턴 인식을 수행하여 적어도 부분적으로 메모리 디바이스(103) 또는 호스트(101)를 통해 구현되는 인공 지능(AI) 시스템을 지원하도록 구성된다.
일부 구현들에서, 제어기(107)의 프로세서들은 컴퓨터 칩 제조에서 메모리(예를 들어, 106 또는 109)와 통합되어 메모리에서의 프로세싱을 가능하게 하고, 이에 따라 폰 노이만 아키텍처에 따라 개별적으로 구성된 메모리와 프로세서 간의 데이터 이동의 레이턴시에 의해 야기되는 스루풋의 제한의 결과로서 컴퓨팅 성능을 제한하는 폰 노이만 병목 현상을 극복한다. 프로세싱 및 메모리의 통합은 프로세싱 속도 및 메모리 전송 레이트를 증가시키고, 레이턴시 및 전력 사용을 감소시킨다.
메모리 디바이스(103)는 클라우드 컴퓨팅 시스템, 에지 컴퓨팅 시스템(edge computing system), 포그 컴퓨팅 시스템(fog computing system) 및/또는 독립형 컴퓨터와 같은 다양한 컴퓨팅 시스템에서 사용될 수 있다. 클라우드 컴퓨팅 시스템에서, 원격 컴퓨터 서버들은 데이터를 저장, 관리 및 프로세싱하기 위해 네트워크에 연결된다. 에지 컴퓨팅 시스템은 데이터 소스에 가까운 컴퓨터 네트워크의 에지에서 데이터 프로세싱을 수행함으로써 클라우드 컴퓨팅을 최적화하고, 이에 따라 중앙 집중 서버 및/또는 데이터 저장소와의 데이터 통신을 감소시킨다. 포그 컴퓨팅 시스템은 데이터를 저장하기 위해 하나 이상의 최종 사용자 디바이스 또는 근접 사용자 에지 디바이스를 사용하고, 이에 따라 중앙 집중 데이터 웨어하우스에 데이터를 저장할 필요성을 감소시키거나 제거한다.
본 명세서에 개시된 적어도 일부 실시예들은 제어기(107)에 의해 실행되는 컴퓨터 명령어들, 이를테면 펌웨어(104)를 사용하여 구현될 수 있다. 일부 사례들에서, 하드웨어 회로들은 펌웨어(104)의 기능들 중 적어도 일부를 구현하기 위해 사용될 수 있다. 펌웨어(104)는 초기에 비휘발성 저장 매체(109) 또는 또 다른 비휘발성 디바이스에 저장될 수 있고, 제어기(107)에 의한 실행을 위해 휘발성 DRAM(106) 및/또는 프로세서 내 캐시 메모리에 로딩될 수 있다.
예를 들어, 펌웨어(104)는 PUF 아키텍처를 동작시키는데 아래에서 논의될 기술들을 사용하도록 구성될 수 있다. 그러나, 아래에서 논의될 기술들은 도 10의 컴퓨터 시스템 및/또는 위에서 논의된 예들에서 사용되는 것으로 제한되지 않는다.
일부 구현예들에서, MAC 모듈(123)의 출력은 예를 들어, 루트 키 또는 시드 값을 제공하기 위해 사용될 수 있다. 다른 구현예들에서, 출력은 하나 이상의 세션 키를 생성하기 위해 사용될 수 있다.
일 실시예에서, MAC 모듈(123)로부터의 출력은 또 다른 컴퓨팅 디바이스로 전송될 수 있다. 예를 들어, 고유한 키(125)는 호스트 인터페이스(105)를 통해 호스트(101)로 전송될 수 있다.
도 11은 일 실시예에 따른, 선택기 모듈(204)에 의해 선택된 하나 이상의 PUF 디바이스들로부터 입력들을 수신하는 MAC(123)의 출력으로부터 고유한 키(125)를 생성하기 위한 시스템을 도시한다. 시스템은 일 실시예에 따라, 도 10의 아키텍처(111)와 유사하지만 다수의 PUF 디바이스들(202) 및 선택기 모듈(204)을 포함하는 PUF 아키텍처를 사용하여 MAC 모듈(123)의 출력으로부터 고유한 키(125)를 생성한다. MAC 모듈(123)은 선택기 모듈(204)에 의해 선택되는 하나 이상의 PUF 디바이스(202)로부터의 입력들을 수신한다. 일 예에서, PUF 디바이스들(202)은 PUF 디바이스(121)를 포함한다.
PUF 디바이스들(202)은 예를 들어, 동일하거나 상이할 수 있다(예를 들어, 상이한 랜덤 물리적 현상들에 기초함). 일 실시예에서, 선택기 모듈(204)은 입력들로서 MAC 모듈(123)에 제공할 값들을 획득할 PUF 디바이스들(202) 중 하나 이상을 선택하기 위한 지능형 PUF 선택 블록 또는 회로로서 동작한다.
일 실시예에서, 선택기 모듈(204)은 PUF 디바이스들(202)을 테스트하는 것으로부터의 결과들에 적어도 부분적으로 기초하여 PUF 디바이스들(202)의 선택에 기초를 둔다. 예를 들어, 선택기 모듈(204)은 각 PUF 디바이스(202)의 반복 가능성을 테스트할 수 있다. 임의의 PUF 디바이스(202)가 테스트에 실패한다면, 선택기 모듈(204)은 실패 디바이스가 MAC 모듈(123)에 입력 값을 제공하는 것에서 배제시킨다. 일 예에서, 실패 디바이스는 일시적으로 또는 무기한으로 배제될 수 있다.
일부 구현예들에서, 선택기 모듈(204)은 (예를 들어, 각 PUF 디바이스(202)에 의해 제공되는 값의 반복 가능성을 검사함으로써) 생산 동안 및/또는 필드에서의 사용 동안 각 칩의 PUF 기능성을 테스트할 수 있게 한다. 소정의 PUF 디바이스에 의해 제공되는 두 개 이상의 값들이 상이하다면, PUF 디바이스는 실패인 것으로 결정되고, MAC 모듈(123)에 대한 입력으로서의 사용으로부터 배제된다.
일 실시예에서, 선택기 모듈(204)은 MAC 모듈(123)로부터 개선된 PUF 출력을 계산하기 위한 소스들로서 다수의 PUF 디바이스들(202)을 동시에 사용하기 위해 사용된다. 예를 들어, 선택기 모듈(204)은 MAC 모듈(123)에 대한 입력으로서 제공하기 위해 제1 PUF 디바이스로부터의 값을 제2 PUF 디바이스로부터의 값과 연계할 수 있다. 일부 구현예들에서, 이러한 아키텍처는 몇몇 상이한 물리적 현상들에 대한 그것의 의존성으로 인해 강건한 PUF 출력을 획득할 수 있게 한다.
도 12는 일 실시예에 따른, 하나 이상의 PUF 디바이스로부터의 입력들 및 단조 카운터(302)로부터의 입력(및/또는 NONCE, 타임 스탬프 등과 같은 또 다른 선도 메커니즘으로부터의 입력)을 수신하는 MAC의 출력으로부터 고유한 키를 생성하기 위한 시스템을 도시한다. 일 실시예에 따르면, 시스템은 MAC 모듈(123)의 출력으로부터 고유한 키(125)를 생성한다. 도 12에 도시된 PUF 아키텍처는 값들을 선택기 모듈(204)에 제공하기 위해 단조 카운터(302)가 포함된다는 점을 제외하고는, 도 11에 도시된 PUF 아키텍처와 유사하다. 다양한 실시예들에서, 단조 카운터(302)는 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있다.
MAC 모듈(123)은 하나 이상의 PUF 디바이스(202)로부터의 입력들 및 단조 카운터(302)로부터의 입력을 수신한다. 일 예에서, PUF 디바이스들(202) 및 단조 카운터(302)로부터 획득된 값들은 연계되고 그 다음 MAC 모듈(123)에 대한 입력으로서 제공된다. 일부 구현예들에서, 단조 카운터(302)는 요청될 때 그 값을 단지 증분시키는 비휘발성 카운터이다. 일부 실시예들에서, 단조 카운터(302)는 칩의 각 작동 시작 사이클 후에 증분된다.
일부 구현예들에서, 도 12의 PUF 아키텍처는 예를 들어, 공개 키 메커니즘과 같은 애플리케이션에서 반도체 칩과 다른 구성요소들 사이에서 키들을 안전하게 공유하는 방법을 제공하기 위해 사용될 수 있다.
일부 구현예들에서, 단조 카운터(302)는 PUF의 각 계산 전에 증분되며, 이는 MAC 모듈(123)의 입력이 각 사이클에서 상이하고, 이에 따라 제공되는 출력(및/또는 출력의 패턴)이 상이함을 보장한다. 일부 예들에서, 이 접근법은 세션 키를 생성하기 위해 사용될 수 있으며, 여기서 각 세션 키는 상이하다.
일부 실시예들에서, 선택기 모듈(204)은 MAC 모듈(123)에 대한 입력으로서 카운터 값을 제공하는 것으로부터 단조 카운터(302)(또는 NONCE, 타임스탬프와 같은 다른 선도 메커니즘)를 선택적으로 포함시키거나 배제시킬 수 있다.
일부 실시예들에서, 단조 카운터(302)는 또한 암호화 모듈(127)에 의해 사용된다. 일부 실시예들에서, 단조 카운터를 포함하는 PUF 아키텍처는 각 사이클에서 상이한 키를 보장하기 위해 세션 키 생성기로서 사용될 수 있다. 일부 구현예들에서, 생성된 세션 키는 이러한 방식으로 보호된다: 세션 키 = MAC [ 하나 이상의 PUF | MTC 또는 다른 선도]
다른 실시예들에서, 메커니즘은 다음과 같이 사용된다:
세션 키 = MACkey_based [루트_키, MTC 또는 다른 선도 메커니즘]
여기서: 루트_키 = 상기의 MAC 모듈(123)로부터 제공된 출력 값, 또는 칩 상에 존재하는 임의의 다른 유형의 키이다.
상기의 MACkey_based 함수는 예를 들어, 시크릿 키에 기초하는 MAC알고리즘이다. 예를 들어, 암호화에 다음과 같은 두 가지 유형들의 MAC알고리즘이 있을 수 있다:
1.
예를 들어, HMAC 패밀리(HMAC-SHA256은 키 기반임)와 같은, 시크릿 키에 기초한 알고리즘.
2.
예를 들어, SHA256(SHA 독립형은 키 기반이 아님)과 같은, 시크릿 키에 기반하지 않는 알고리즘.
키 기반인 MAC은 키를 알려진 값(예를 들어, 0x000... 0xFFFF 등....)으로 설정함으로써 키 기반이 아닌 MAC에서 변환될 수 있다.
도 13은 일 실시예에 따른, 하나 이상의 PUF로부터 제공된 하나 이상의 입력 값들을 사용하는 MAC로부터 출력을 생성하는 방법을 도시한다. 예를 들어, 도 13의 방법은 도 10의 메모리 디바이스(103)에서 구현될 수 있다.
도 13의 방법은 블록 411에서, 적어도 하나의 PUF에 의해 하나 이상의 값을 제공하는 단계(예를 들어, PUF 디바이스들(202)중 하나 이상으로부터 값들을 제공하는 단계)를 포함한다.
블록 413에서, PUF들 중 하나 이상의 반복 가능성은 예를 들어, 상술되었던 바와 같이, 테스트될 수 있다. 이러한 테스트는 선택적이다.
블록 415에서, 테스트가 블록 413에서 수행되었고 PUF 디바이스가 테스트에 실패하는 것으로 결정되었다면, 실패한 PUF 디바이스는 MAC에 입력을 제공하는 것으로부터 배제된다. 이러한 배제는 예를 들어, 상술되었던 바와 같이, 선택기 모듈(204)에 의해 수행될 수 있다.
블록 417에서, 단조 카운터(예를 들어, 단조 카운터 302)로부터 값이 제공된다. PUF 아키텍처에서 단조 카운터의 사용은 선택적이다.
블록 419에서, MAC에 대한 입력들로서 PUF들에 의해 제공된 하나 이상의 값(및 선택적으로 단조 카운터로부터의 적어도 하나의 값)을 사용하는 MAC로부터 출력이 생성된다.
이제, 컴퓨팅 디바이스에서 구현예되는 방법에 대해 다양한 다른 실시예들이 아래에서 설명되며, 이 방법은: 적어도 하나의 물리적 복제 방지 기능(PUF)에 의해, 적어도 하나의 값을 제공하는 단계; 및 메시지 인증 코드(MAC) - MAC는 적어도 하나의 PUF에 의해 제공되는 적어도 하나의 값을 제1 출력 생성을 위한 입력으로서 사용함 - 에 기초하여, 제1 출력을 생성하는 단계를 포함한다.
일 실시예에서, 컴퓨팅 디바이스는 제1 컴퓨팅 디바이스이고, 본 방법은 제1 출력 - 제1 출력은 제1 컴퓨팅 디바이스의 고유한 식별자임 - 을 제2 컴퓨팅 디바이스로 전송하는 단계를 더 포함한다.
일 실시예에서, 적어도 하나의 값을 제공하는 단계는 제1 PUF로부터 제1 값을 선택하는 단계 및 제2 PUF로부터 제2 값을 선택하는 단계를 포함한다.
일 실시예에서, 본 방법은: 단조 카운터로부터의 값을 제공하는 단계를 더 포함하되, 제1 출력을 생성하는 단계는 단조 카운터로부터의 값을 제1 출력 생성을 위한 MAC에 대한 추가적인 입력으로서 사용하는 단계를 더 포함한다.
일 실시예에서, 본 방법은: 일 실시예에서, 본 방법은: MAC - 단조 카운터가 MAC에 대한 입력들로서 사용되는 값들을 제공함 - 에 의해 제공된 각 출력들에 기초하여 복수의 세션 키들을 생성하는 단계; 및 세션 키들 각각을 생성한 후에 단조 카운터를 증분시키는 단계를 더 포함한다.
일 실시예에서, 본 방법은: 적어도 하나의 PUF 중 제1 PUF의 반복 가능성을 테스트하는 단계; 및 제1 PUF가 테스트에 실패한다고 결정하는 것에 기초하여, 제1 출력을 생성할 때 제1 PUF가 MAC에 임의의 입력을 제공하는 것으로부터 배제하는 단계를 더 포함한다.
일 실시예에서, 테스트하는 단계는 제1 PUF에 의해 제공된 두 개 이상의 값들을 비교하는 단계를 포함한다.
일 실시예에서, 컴퓨팅 디바이스는 메모리 디바이스이고, 메모리 디바이스는 MAC를 사용하여 생성된 출력 값을 저장하도록 구성된 비휘발성 저장 매체를 포함한다.
일 실시예에서, 본 방법은 적어도 하나의 프로세서에 의해, 적어도 하나의 암호 기능을 수행하는 단계를 더 포함하되, 적어도 하나의 암호 기능을 수행하는 단계는 MAC를 사용하여 생성된 출력 값을 사용하는 단계를 더 포함한다.
일 실시예에서, 비일시적 컴퓨터 판독 가능 저장 매체는 메모리 디바이스(예를 들어, 메모리 디바이스(103)) 상에서 실행될 때, 메모리 디바이스로 하여금 방법을 수행하게 하는 명령어들을 저장하며, 본 방법은: 적어도 하나의 물리적 복제 방지 기능(PUF)에 의해, 적어도 하나의 값을 제공하는 단계; 및 메시지 인증 코드(MAC) - MAC는 적어도 하나의 PUF에 의해 제공되는 적어도 하나의 값을 제1 출력 생성을 위한 입력으로서 사용함 - 에 기초하여, 제1 출력을 생성하는 단계를 포함한다.
아래에서 설명될 다양한 다른 실시예들에서, 도 4의 방법은:
적어도 하나의 물리적 복제 방지 기능(PUF) 디바이스; 적어도 하나의 PUF 디바이스에 의해 제공되는 적어도 하나의 값에 기초하여 제1 입력을 수신하도록 구성된 메시지 인증 코드(MAC) 모듈; 적어도 하나의 프로세서; 및 적어도 하나의 프로세서에, 제1 입력에 기초하여, MAC 모듈로부터 제1 출력을 생성하는 것을 지시하도록 구성된 명령어들을 포함하는 메모리를 포함하는 시스템 상에서 수행될 수 있다.
일 실시예에서, MAC 모듈은 회로를 포함한다. 일 실시예에서, MAC 모듈로부터의 제1 출력은 다이를 식별하는 키다. 일 실시예에서, MAC 모듈로부터의 제1 출력은 루트 키이고, 명령어들은 적어도 하나의 프로세서에, MAC 모듈로부터의 출력을 사용하여 세션 키를 생성하는 것을 지시하도록 더 구성된다.
일 실시예에서, 시스템은 반도체 칩(예를 들어, 반도체 웨이퍼로부터 얻어지는 여러 칩들 중 하나의 칩)의 일부이며, MAC 모듈로부터의 제1 출력은 칩을 식별하는 고유한 값이고, 명령어들은 적어도 하나의 프로세서에, 고유한 값을 컴퓨팅 디바이스로 송신하는 것을 지시하도록 더 구성된다.
일 실시예에서, 적어도 하나의 PUF 디바이스는 복수의 PUF 디바이스들(예를 들어, PUF 디바이스들(202))을 포함하고, 시스템은 적어도 하나의 값을 제공하는 적어도 하나의 PUF 디바이스를 선택하도록 구성된 선택기 모듈을 더 포함한다.
일 실시예에서, 선택기 모듈은 제1 PUF 디바이스로부터의 제1 값과 제2 PUF 디바이스로부터 제2 값을 연계함으로써 MAC 모듈에 대한 제1 입력을 생성하도록 더 구성된다.
일 실시예에서, 본 시스템은 카운터 값을 제공하도록 구성된 단조 카운터를 더 포함하고, 명령어들은 적어도 하나의 프로세서에, 카운터 값과 적어도 하나의 PUF 디바이스에 의해 제공된 적어도 하나의 값을 연계함으로써 제1 입력을 생성하는 것을 지시하도록 더 구성된다.
일 실시예에서, 본 시스템은 적어도 하나의 값을 제공하는 적어도 하나의 PUF 디바이스를 선택하도록 구성된 선택기 모듈을 더 포함하되, 카운터 값을 적어도 하나의 PUF 디바이스에 의해 제공된 적어도 하나의 값과 연계하는 것이 선택기 모듈에 의해 수행된다.
일 실시예에서, 단조 카운터는 제1 입력을 생성한 후, 증분된 값을 제공하기 위해 카운터 값을 증분시키도록 더 구성되고; 명령어들은 적어도 하나의 프로세서에, 증분된 값 및 적어도 하나의 PUF 디바이스에 의해 제공되는 적어도 하나의 새로운 값에 기초하여, MAC 모듈로부터 제2 출력을 생성하는 것을 지시도록 더 구성된다.
도 14는 일 실시예에 따른, 하나 이상의 PUF 디바이스로부터의 입력들 및 단조 카운터로부터의 입력(및/또는 NONCE, 타임 스탬프 등과 같은 또 다른 선도 메커니즘으로부터의 입력)을 수신하고, 세션 키를 생성하기 위해 추가적인 MAC를 추가하는 MAC의 출력으로부터 루트 키를 생성하기 위한 시스템을 도시한다.
일 실시예에서, 시스템은 일 실시예에 따라, 하나 이상의 PUF 디바이스(202)로부터의 입력들 및 단조 카운터(302)로부터의 입력(및/또는 NONCE, 타임 스탬프 등과 같은 또 다른 선도 메커니즘으로부터의 입력)을 수신하고, 루트 키 입력을 사용하여 세션 키를 생성하기 위해 추가적인 MAC 모듈(504)을 추가하는 MAC의 출력으로부터 루트 키를 생성한다. 이 실시예에서, MAC 모듈(123)은 MAC 모듈(123)로부터의 출력으로서 루트 키(502)를 제공한다. 루트 키(502)는 MAC 모듈(504)에 대한 입력이며, 이는 상술되었던 세션 키 = MACkey_based [루트_키, MTC 또는 다른 선도 메커니즘]과 같은 MAC 함수를 사용할 수 있다. 이러한 키 기반 함수에서의 루트 키 입력은 도시된 바와 같이, 루트 키(502)일 수 있다.
추가적으로, 일 실시예에서, 단조 카운터(302)는 MAC 모듈(504)에 입력을 제공할 수 있다. 다른 실시예들에서, 단조 카운터(302)를 사용하는 대신에 상이한 단조 카운터 또는 칩으로부터의 다른 값이 MAC 모듈(504)에 대한 입력으로서 제공될 수 있다. 일부 경우들에서, 단조 카운터(302)는 카운터 값을 MAC 모듈(504)에 제공하지만, 선택기 모듈(204)에는 제공하지 않는다. 다른 경우들에서, 카운터 값은 양자의 MAC 모듈들에 제공될 수 있거나, 양자의 모듈들로부터 배제될 수 있다.
키 생성 및 보안 저장
위에서 언급된 바와 같이, PUF들은 보안 키 생성을 위해 사용될 수 있다. 아래에서 논의될 다양한 실시예들은 적어도 하나의 PUF를 사용하여 초기 키를 생성하는 것, 초기 키의 난독화를 증가시키기 위한 프로세싱을 적용하는 것, 및 비휘발성 메모리에 최종 난독화된 키를 저장하는 것에 관한 것이다. 최종 난독화 키 및/또는 최종 난독화된 키를 생성하는데 사용되는 중간 키는 또 다른 컴퓨팅 디바이스와 공유될 수 있고, 다른 컴퓨팅 디바이스와의 보안 통신(예를 들어, 공유 키에 기초한 대칭 암호화를 사용하는 메시징)을 위해 사용될 수 있다. 일부 실시예들에서, 보안 키 생성은 자동차 애플리케이션들(예를 들어, 자율 주행 차량에서의 제어기)에서 사용될 컴퓨팅 디바이스들에 대해 행해진다.
대안적인 실시예들에서, 초기 키는 상기한 적어도 하나의 PUF의 사용을 요구하지 않는 다른 방식들로 생성된다. 일 실시예에서, 초기 키는 주입된 키를 사용함으로써 생성될 수 있다. 예를 들어, 초기 키는 공장 또는 다른 보안 환경에서 주입됨으로 인해 칩에 존재한다. 이러한 경우에서, 초기 키의 난독화를 증가시키는 적용 프로세싱은 주입된 키에 난독화 프로세싱을 적용함으로써 수행된다.
자동차 환경은 키 생성 단계 동안 "잡음"을 도입하는 기술적 문제를 야기한다. 아래의 다양한 실시예들은 비휘발성 메모리 영역 내부에 난독화된 키를 저장함으로써 이러한 유도된 잡음으로 인한 키 변동을 감소시키거나 피하기 위한 방법을 사용함으로써 이러한 문제에 대한 기술적 해결책을 제공한다.
자동차 환경은 다양한 방식들로 키 생성에 영향을 줄 수 있다. 예를 들어, 엔진 시동은 컴퓨팅 디바이스에 대한 인가 전원의 강하를 야기하며, 그 결과 키가 잘못된 방식으로 생성될 수 있다. 온도 극단은 또한 키를 생성하는 회로에 영향을 줄 수 있다. 전선들로부터의 자기장과 같은 다른 소스들은 심볼간 간섭 또는 크로스토크를 야기하여, 호스트가 디바이스를 인식하지 못하게 만들 수 있다.
이에 반해, 키가 안전한 환경에서 생성되고 메모리에 저장된다면, 이는 잡음으로부터 영향을 받지 않을 것이다. 안전한 환경은 예를 들어, 컴퓨팅 디바이스 제품의 최종 사용자들/고객들 간에 키를 전파하기 위해 사용되는 전략에 따라 차, 테스트 환경, 또는 공장(예를 들어, 키를 생성하는 컴퓨팅 디바이스를 제조하는)에서 직접 실장될 수 있다.
일 예에서, 차량들에 사용되는 ADAS 또는 다른 컴퓨팅 시스템들은 파워 서플라이 변동들에 영향을 받는다. 이는 예를 들어, 차량의 턴 온, 제동, 엔진 동력 공급 등의 동안 발생할 수 있다.
아래에서 논의될 바와 같이 키를 생성하고 저장하기 위한 다양한 실시예들은 외부 인자들(예를 들어, 파워 서플라이 변동, 온도 및 다른 외부 잡음 소스들)과 실질적으로 독립적인 이점들을 제공한다. 일부 실시예들에서의 또 다른 이점은 예를 들어, 매 사이클마다 키 벡터의 생성이 동일하다는 점이다.
키를 저장할 때, 일부 실시예들에서 제공되는 또 다른 이점은 키가 (예를 들어, 해커들이 이행할 수 있는) 하드웨어 공격에 실질적으로 영향을 받지 않는다는 점이다. 예를 들어, 하나의 이러한 공격은 키와 연관된 비트들에 전류 변동을 연관시키기 위한 디바이스의 시동 전류의 모니터링이다. 다른 공격들은, 예를 들어, 전압 측정치들(예를 들어, Vdd 공급 전압)을 사용할 수 있다. 일부 공격들은 디바이스의 동작을 방해하기 위해 예를 들어, 온도 변동을 사용할 수 있다.
일부 실시예들에서, 초기 키는 도 10 내지 도 14에 대해 상술된 바와 같은 접근법들 및/또는 아키텍처들을 사용하여 생성될 수 있다. 예를 들어, PUF는 키를 저장하고 있는 컴퓨팅 디바이스의 매 시동 사이클마다 키를 생성하기 위해 사용된다. 대안적인 실시예들에서, 다른 접근법들은 초기 키를 생성하기 위해 사용될 수 있다.
하나의 예시적인 접근법에서, 앞서 상술된 바와 같이, 키 주입은 다른 디바이스들과(예를 들어, 웨이퍼 상에 위치된 인접한 다이와) 상당히 상이한 디바이스에 대한 키를 생성하기 위해 적어도 하나의 PUF 및 MAC 알고리즘(예를 들어, SHA256)을 사용한다. MAC 암호화 알고리즘은 PUF에 의해 생성되는 비트들의 엔트로피를 증가시키는 이점을 제공한다.
일 실시예에서, 생성된 키(예를 들어, PUF 및 그 다음 MAC 알고리즘으로부터 제공되는 바와 같은 초기 키)는 해커 공격들을 감소시키거나 피하기 위해, 그리고 또한 저장된 키의 신뢰성을 개선하기 위해, 사전 프로세싱이 키에 대해 수행된 후에 디바이스의 비휘발성 영역에 저장된다. 일 실시예에서, 키가 저장된 후에, 키를 생성하는 회로는 디스에이블될 수 있다. 사전 프로세싱은 일반적으로 본 명세서에서 난독화 프로세싱으로서 지칭된다. 일 예에서, 회로부 및/또는 다른 로직이 디바이스 상에서 난독화 프로세싱을 구현하기 위해 사용된다. 일 예에서, 저장된 키는 키가 외부 잡음 소스와 독립적이기 때문에 디바이스에 의해 판독될 수 있다. 디바이스의 임의의 데이터를 판독하기 위해 내부 메커니즘이 사용된다.
다양한 실시예들에서, 본 명세서에 설명된 바와 같이 키를 저장하는 것은 잡음에 대한 마진을 증가시킨다. 또한, 이는 해커가 예를 들어, 전력 모니터링 또는 다른 해킹 방법을 사용하여 저장된 키를 판독하는 것을 어렵게 만든다.
본 명세서에서의 적어도 일부 실시예들은 PUF 및 암호화 알고리즘(예를 들어, HMAC-SHA256)을 사용하여 키 생성을 그렇지 않으면 디바이스의 시동마다 키를 상이하게 되게 할 수 있는 온도 또는 전압과 같은 외부 인자들과 독립적으로 만든다. 이것이 발생한다면, 호스트가 디바이스와 메시지들을 교환할 수 있는 것이 문제가 될 수 있다. 다양한 실시예들은 외부 인자들에 의해 영향을 받지 않도록 메모리에 저장된 키를 배치함으로써 키 생성을 보다 강력하게 만든다.
일 실시예에서, 키는 디바이스 상에서 한 번 생성되고 디바이스의 비휘발성 메모리에 저장된다. 일 예에서, 키는 SRAM에 리셋이 적용되기 전에 SRAM의 콘텐츠를 사용하여 생성될 수 있다. PUF의 기능인 키는 PUF로부터 출력된 의사 랜덤 값을 사용하여 생성된다. SRAM의 콘텐츠는 기기 또는 다른 디바이스의 리셋 전에 판독된다. 키는 또한 요구될 수 있는 바와 같이, 명령어 시퀀스를 통해 다른 시간들에 재생성될 수도 있다. 일 예에서, 생성된 키는 상술된 바와 같이, DICE-RIoT 프로토콜에서 UDS로서 사용된다. 일 예에서, 커맨드 시퀀스는 상술된 바와 같이, 이전에 생성된 UDS를 새로운 UDS로 대체하기 위한 대체 커맨드를 사용한다.
일 실시예에서, 키 생성은 디바이스에 의해 구현되는 암호화와 무관하다. 생성된 키는 호스트와 공유된다. 이러한 실시예는 이를테면 예를 들어, 키 사용 동안 디바이스가 흡수하는 전류의 형상을 분석함으로써, 공격자가 키를 추측하고 키를 내부적으로 사용하는 것을 회피하는 방식으로 디바이스에 키를 저장하고/거나 키를 판독한다.
또한, 예를 들어, 비대칭 암호화에서는, 생성된 키가 시스템의 시크릿 키인 가변 패스워드가 된다. 키는 다른 것들과 공유되지 않는다. 공개 키 암호화의 경우, 키는 대응하는 공개 키를 생성하기 위해 사용된다.
다양한 실시예들에서, 초기 키는 (예를 들어, 초기 키 PUF0를 제공하기 위해) 주입된 키를 사용하여 또는 하나 이상의 PUF를 사용하여 생성된다. 그 다음, 초기 키는 아래에서 설명될 바와 같 중간 키들(예를 들어, PUF1, PUF2, ..., PUF5)을 제공하기 위해 난독화 프로세싱의 하나 이상의 단계를 거친다. 이러한 프로세싱으로부터의 출력(예를 들어, PUF5)은 디바이스의 비휘발성 메모리에 저장되는 난독화된 키이다. 주입된 키를 사용할 때, 난독화 프로세싱은 PUF0의 비제한적인 예에 대해 아래에서 설명될 바와 유사하게 주입된 키에 적용된다.
일 실시예에서, 위에서 언급된 바와 같이, 메커니즘은 초기 주입된 키의 경우에 대해 다음과 같이 사용된다:
세션 키 = MACkey_based [루트_키, MTC 또는 다른 선도 메커니즘]
여기서: 루트_키 = 칩 상에 존재하는 임의의 다른 유형의 키이다(예를 들어, 키는 공장 또는 다른 보안 환경에서 칩에 주입된 초기 키일 수 있음).
일 실시예에서, 디바이스의 첫 번째 시동 시에, 특수 시퀀스는 디바이스의 적어도 하나의 회로(예를 들어, 판독 회로)를 깨우고 회로(들)가 적절하게 실행되고 있는지를 검증한다. 그 다음, 디바이스는 위에서 언급된 바와 같이, 초기 키 PUF0를 생성한다. 이러한 키는 아래에서 설명될 바와 같이, 보안 저장을 위해 보다 강건하게 만들기 위해 저장되거나 추가 프로세싱될 수 있다.
중간 키, PUF1은 PUF1을 생성하기 위해 PUF0를 미리 결정된 비트 시퀀스(예를 들어, 다른 것들에 의해 알려진 시퀀스)와 연결함으로써 생성된다. 일 실시예에서, PUF1은 키를 정확하게 판독할 수 있는 디바이스의 능력을 검증하고 파워 서플라이의 파동들과 같은 잡음이 생성된 키에 영향을 미치지 않음을 보장하기 위해 사용된다.
다음의 중간 키, PUF2가 생성된다. PUF1은 PUF2를 생성하기 위해 반전된 비트 패턴(예를 들어, PUF1의 비트들을 반전시킴으로써 형성되고, 때때로 본 명세서에서 PUF1 바로서 지칭됨)과 인터리빙된다.
일 실시예에서, PUF2는 동일한 비트 수의 0과 1을 갖는다. 이는 어느 키(예를 들어, 디바이스 상에 저장된 어느 키)에 대해서든 디바이스의 형상을 실질적으로 동일하게 만든다. 이것은 키가 디바이스에 의해 판독될 때 공격자가 디바이스 전류의 형상을 봄으로써 키 값을 추측할 가능성을 감소시킨다.
다음의 중간 키, PUF3가 생성된다. PUF2의 비트들은 PUF3를 형성하기 위해 의사 랜덤 비트들과 인터리빙된다. 이는 또한 키를 난독화하는 것을 돕는다. 일 실시예에서, 의사 랜덤 비트들은 해시 함수를 사용함으로써 PUF1 또는 PUF2로부터 유도된다. 예를 들어, 이러한 유도된 비트들은 PUF3를 형성하기 위해 PUF2에 추가된다.
다음의 중간 키, PUF4가 생성된다. 에러 정정 코드(ECC)들은 (예를 들어, 프로그래밍 동안) 디바이스의 내부 회로에 의해 생성된다. ECC의 비트들은 PUF4를 생성하기 위해 PUF3에 추가된다. 일 실시예에서, ECC 비트들은 예를 들어, 디바이스 내구 한도들, X선들 및 입자들에 의해 야기될 수 있는 비휘발성 메모리(예를 들어, NVRAM) 노화의 영향이 생기지 않도록 돕는다. 비휘발성 메모리 노화는 또한 예를 들어, 비트들을 플립핑하게 할 수 있는 NV 셀에서의 전자 수의 증가에 의해 야기될 수 있다.
다음의 중간 키, PUF5가 생성된다. PUF5는 PUF4의 여러 카피들의 연결이다. 다수의 PUF4 카피들의 리던던시를 PUF5에 존재하게 하는 것은 나중에 키를 정확하게 판독할 수 있는 가능성을 증가시킴으로써 강력함을 추가로 증가시킨다. 일 실시예에서, PUF5의 여러 카피들은 강력함을 더 증가시키기 위해 비휘발성 메모리 저장소의 다양한 영역들에 저장된다. 예를 들어, PUF5가 영역들 중 하나에서 손상되더라도, PUF5는 영역들 중의 다른 영역으로부터 판독될 수 있고, 이에 따라 정확한 키가 추출될 수 있다.
일 실시예에서, PUF1 또는 PUF3는 대칭 암호화를 위해 호스트와 공유되거나, 비대칭 암호화를 위한 공개 키를 생성하기 위해 사용되는 키이다. 일 실시예에서, PUF4 및 PUF5는 최종 사용자들 또는 호스트와 공유되지 않는다.
상기한 접근법은 PUF2, PUF3, PUF4 및/또는 PUF5가 난독화된 키를 생성하기 위해 요구되지 않는다는 점에서 모듈식이다. 대신에, 다양한 실시예들에서, 전술한 난독화 단계들 중 하나 이상이 초기 키에 적용될 수 있고, 또한 순서가 달라질 수 있다. 예를 들어, 난독화 단계들의 수는 Vdd 파워 서플라이 강하를 갖지 않는 것으로 알려진 시스템에 대해 감소될 수 있다.
일 실시예에서, 난독화 키를 저장할 때, 비트 패턴은 비휘발성 저장 매체들에 (예를 들어, 상이한 로우들 및 워드들로) 물리적으로 분산될 것이다. 예를 들어, 디바이스는 동시에 비트들을 판독하고 다중 비트 에러들을 방지할 수 있다.
도 15는 일 실시예에 따른, 비휘발성 메모리(예를 들어, 비휘발성 저장 매체들(109))에 난독화된 키(635)를 저장하기 위한 컴퓨팅 디바이스(603)를 도시한다. 컴퓨팅 디바이스(603)는 도 1의 컴퓨팅 디바이스(141)의 예이다. 일 예에서, 난독화된 키는 UDS로서 사용된다. (주) 예를 들어, 난독화는 키의 값을 이해하려는 해커에 의한 가능한 시도를 피하기 위해 키의 비트들에 엔트로피를 추가한다. 디바이스는 난독화로서 사용된 추가된 비트들을 제거함으로써 항상 키를 추출할 수 있다. 일 예에서, 통상적인 해커 공격은 일부 특정 시간 프레임에 디바이스에 의해 흡수된 현재 프로파일을 통계적 도구들로 프로세싱함으로써 디바이스 내부에서 생성된/정교하게 고안된 시크릿 키를 추측하는 것으로 이루어진다. 난독화는 이러한 문제를 상당한 노력으로 완화시킨다.
초기 키(625)는 적어도 하나의 물리적 복제 방지 기능 디바이스(121)에 의해 제공되는 값에 기초하여 생성된다. 난독화 키(635)는 초기 키(625)에 기초하여 생성된다. 생성된 후, 난독화 키(635)는 비휘발성 저장 매체(109)에 저장된다.
일 실시예에서, 메시지 인증 코드(MAC)(123)는 PUF 디바이스(121)로부터의 값을 입력으로서 사용하고 초기 키(625)를 출력으로서 제공한다. 일 실시예에서, 난독화 프로세싱 모듈(630)은 예를 들어, 상술되었떤 바와 같이, 난독화된 키(635)(예를 들어, PUF5)를 제공하기 위해 초기 키(625)에 대한 프로세싱을 수행하기 위해 사용된다.
일 실시예에서, 난독화된 키(635)는 Mondello 외에 의해 2018년 4월 27일자로 출원된, 명칭이 "SECURE DISTRIBUTION OF SECRET KEY USING A MONOTONIC COUNTER"인 미국 가출원 제15/965,731호 - 이의 전체 개시 내용은 본 명세서에서 전체가 제시된 바와 같이 원용됨 - 와 관련되어 설명된 바와 같은 또 다른 컴퓨팅 디바이스에 안전하게 분산된다. 다른 실시예들에서, 초기 키(625) 및/또는 본 명세서에서 설명된 난독화 프로세싱으로부터의 중간 키들 중 임의의 하나 이상은 동일하거나 유사한 방식으로 안전하게 분배될 수 있다. 선택적으로, 최종 사용자/고객은 전술한 접근법을 사용하여 초기 키(예를 들어, PUF0), 중간 키, 및/또는 최종 난독화된 키(예를 들어, PUF5)의 값을 판독한다. 예를 들어, 최종 사용자는 디바이스에 의한 키의 내부 생성의 적절한 실행을 검증하고/거나, 키 생성의 통계적 품질을 모니터링할 수 있다.
도 16은 일 실시예에 따른, 난독화 프로세싱 모듈(630)에 의해 난독화 프로세스 동안 생성된 중간 키(PUF2)의 예를 도시한다. 위에서 언급된 바와 같이, PUF1의 비트들은 반전된 비트들(702)을 제공하기 위해 반전된다. 비트들(702)은 도시된 바와 같이 PUF1의 비트들과 인터리빙된다. 예를 들어, 도시된 키에서의 모든 두 번째 비트는 인터리빙된 반전 비트(702)이다.
도 17은 일 실시예에 따른, 도 16의 난독화 프로세스 동안 생성된 또 다른 중간 키(PUF3)의 예(이러한 예에서, PUF3는 PUF2에 기초한다)를 도시한다. 위에서 언급된 바와 같이, PUF2의 비트들은 또한 의사 랜덤 비트들(802)과 인터리빙된다. 도시된 바와 같이, 비트들(802)은
PUF2와 인터리빙된다. 예를 들어, 도시된 키에서의 모든 세 번째 비트는 인터리빙된 의사 랜덤 비트(802)이다.
도 18은 일 실시예에 따른, 난독화된 키(예를 들어, 난독화된 키(635))를 생성하고 비휘발성 메모리(예를 들어, 비휘발성 저장 매체들(109))에 저장하기 위한 방법을 도시한다. 일 예에서, 도 2의 메모리 시스템(105)은 난독화된 키를 비휘발성 메모리(121)에 저장한다.
블록 911에서, 초기 키가 적어도 하나의 물리적 복제 방지 기능(PUF)에 의해 제공되는 값에 기초하여 생성된다.
다른 실시예들에서, 블록 911에서, 초기 키는 키 주입에 의해 생성된다. 예를 들어, 초기 키는 단순히 제조 동안 칩에 주입된 값일 수 있다.
블록 913에서, 난독화된 키가 초기 키에 기초하여 생성된다. 예를 들어, 생성된 난독화된 키는 PUF3 또는 PUF5이다.
블록 915에서, 난독화된 키는 컴퓨팅 디바이스의 비휘발성 메모리에 저장된다. 예를 들어, 난독화된 키는 NAND 플래시 메모리 또는 EEPROM에 저장된다.
일 실시예에서, 방법은: 키 주입을 사용하여 초기 키를 생성하는 단계; 초기 키에 기초하여 난독화된 키를 생성하는 단계; 및 난독화된 키를 비휘발성 메모리에 저장하기 위한 단계를 포함한다. 예를 들어, 초기 키는 제조 시 키 주입 프로세스 동안 주입된 키일 수 있다.
일 실시예에서, 방법은: 키 주입에 의해 또는 적어도 하나의 물리적 복제 방지 기능(PUF)에 의해 제공된 값에 기초하여 제공되는 초기 키를 생성하는 단계; 초기 키에 기초하여 난독화된 키를 생성하는 단계; 및 난독화된 키를 컴퓨팅 디바이스의 비휘발성 메모리에 저장하는 단계를 포함한다.
일 실시예에서, 초기 키를 생성하는 단계는 초기 키를 생성하기 위해 메시지 인증 코드(MAC)에 대한 입력으로서 PUF로부터의 값(또는, 예를 들어, 칩 상의 또 다른 값)을 사용하는 단계를 포함한다.
일 실시예에서, 난독화된 키는 사용자 어드레스 가능 메모리 공간 외부의 비휘발성 메모리에 저장된다.
일 실시예에서, 난독화된 키를 생성하는 단계는 초기 키를 미리 결정된 비트들의 패턴과 연결하는 단계를 포함한다.
일 실시예에서, 초기 키를 미리 결정된 비트들의 패턴과 연결하는 단계는 제1 키(예를 들어, PUF1)를 제공하고; 난독화된 키를 생성하는 단계는 제1 키를 반전된 비트 패턴 - 반전된 비트 패턴은 제1 키의 비트들을 반전시킴으로써 제공됨 - 과 인터리빙하는 단계를 더 포함한다.
일 실시예에서, 제1 키를 반전된 비트 패턴과 인터리빙하는 단계는 제2 키(예를 들어, PUF2)를 제공하고; 난독화된 키를 생성하는 단계는 제2 키를 의사 랜덤 비트들과 인터리빙하는 단계를 더 포함한다.
일 실시예에서, 본 방법은 해시 함수를 사용하여 제1 키 또는 제2 키로부터 의사 랜덤 비트들을 유도하는 단계를 더 포함한다.
일 실시예에서, 제2 키를 의사 랜덤 비트들과 인터리빙하는 단계는 제3 키(예를 들어, PUF3)를 제공하고; 난독화된 키를 생성하는 단계는 제3 키를 에러 정정 코드 비트들과 연결하는 단계를 더 포함한다.
일 실시예에서, 컴퓨팅 디바이스는 제1 컴퓨팅 디바이스이며, 방법은 초기 키, 제1 키, 또는 제3 키 중 적어도 하나를 제2 컴퓨팅 디바이스와 공유하는 단계, 및 초기 키, 제1 키, 또는 제3 키 중 공유된 적어도 하나를 사용하여 암호화된 메시지들을 제2 컴퓨터 디바이스로부터 수신하는 단계를 더 포함한다.
일 실시예에서, 제3 키를 에러 정정 코드 비트들과 연결하는 단계는 제4 키(예를 들어, PUF4)를 제공하고; 난독화된 키를 생성하는 단계는, 제4 키를 제4 키의 하나 이상의 카피와 연결하는 단계를 더 포함한다.
일 실시예에서, 제4 키를 제4 키의 하나 이상의 카피와 연결하는 단계는 제5 키(예를 들어, PUF5)를 제공하고; 난독화된 키를 저장하는 단계는 제5 키의 제2 카피가 저장되는 로우 또는 블록과 상이한 비휘발성 메모리의 로우 또는 블록 중 적어도 하나 상에 제5 키의 제1 카피를 저장하는 단계를 포함한다.
일 실시예에서, 시스템은: 제1 값을 제공하도록 구성된 적어도 하나의 물리적 복제 방지 기능(PUF) 디바이스(예를 들어, PUF 디바이스(121)); 난독화된 키(예를 들어, 키(635))를 저장하도록 구성된 비휘발성 메모리(예를 들어, 비휘발성 저장 매체(109)); 적어도 하나의 프로세서; 및 적어도 한 프로세서에: 적어도 하나의 PUF 디바이스에 의해 제공된 제1 값에 기초하여 초기 키를 생성하는 것; 초기 키에 기초하여 난독화된 키를 생성하는 것; 및 난독화된 키를 비휘발성 메모리에 저장하는 것을 지시하도록 구성된 명령어들을 포함하는 메모리를 포함한다.
일 실시예에서, 시스템은 적어도 하나의 PUF 디바이스에 의해 제공된 값들을 수신하도록 구성된 메시지 인증 코드(MAC) 모듈(예를 들어, MAC (123))을 더 포함하되, 초기 키를 생성하는 것은 초기 키를 생성하기 위해 MAC 모듈에 대한 입력으로서 제1 값을 사용하는 것을 포함한다.
일 실시예에서, 난독화된 키를 생성하는 것은: 키를 미리 결정된 비트들의 패턴과 연결하는 것; 제1 키를 제1 키의 반전된 비트 패턴과 인터리빙하는 것; 키를 의사 랜덤 비트들과 인터리빙 하는 것; 키를 에러 정정 코드 비트들과 연결하는 것; 또는 제2 키를 제2 키의 하나 이상의 카피와 연결하는 것 중 적어도 하나를 포함한다.
일 실시예에서, 저장된 난독화된 키는 동일한 수의 0 비트 및 1 비트를 갖는다.
일 실시예에서, 난독화된 키를 생성하는 것은 초기 키를 제1 비트들의 패턴과 연결하는 것을 포함한다.
일 실시예에서, 초기 키를 제1 비트들의 패턴과 연결하는 것은 제1 키를 제공하고; 난독화된 키를 생성하는 것은 제1 키를 제2 비트들의 패턴과 인터리빙하는 것을 더 포함한다.
일 실시예에서, 난독화된 키를 생성하는 것은 키를 의사 랜덤 비트들과 인터리빙하는 것을 더 포함한다.
일 실시예에서, 난독화된 키를 생성하는 것은 키를 에러 정정 코드 비트들과 연결하는 것을 더 포함한다.
일 실시예에서, 비일시적 컴퓨터 판독 가능 저장 매체는 명령어들을 저장하며, 명령어들은 컴퓨팅 디바이스 상에서 실행될 때, 컴퓨팅 디바이스로 하여금 방법을 수행하게 하며, 본 방법은: 적어도 하나의 물리적 복제 방지 기능(PUF)을 사용하여 초기 키를 생성하는 단계; 초기 키에 기초하여 난독화된 키를 생성하는 단계; 및 난독화된 키를 비휘발성 메모리에 저장하기 위한 단계를 포함한다.
도 19는 일 실시예에 따른, 키 투입(1010)에 기초하여 초기 키(625)를 생성하고, 초기 키를 난독화하며, 난독화된 키를 비휘발성 메모리에 저장하는데 사용되는 컴퓨팅 디바이스(1003)를 도시한다.
일 실시예에서, 초기 키(625)는 주입된 키(1010)를 사용함으로써 생성된다. 예를 들어, 초기 키(625)는 제조, 또는 다른 조립 또는 테스트 동안 공장 또는 다른 보안 환경에서 주입됨으로써 칩에 존재한다. 일 예에서, 초기 키(625)는 컴퓨팅 디바이스(1003)에 대한 초기 UDS로서 사용된다. 난독화는 또한 UDS에도 적용될 수 있다. UDS는 DICE-RIoT가 키들 및 인증서들의 보안 생성을 생성하기 위해 사용하기 시작하는 시크릿이다. 초기 키의 난독화를 증가시키기 위해 적용하는 프로세싱은 주입된 키(예를 들어, 키 주입(1010)으로부터의 값)에 난독화 프로세싱을 적용함으로써(모듈(630)을 통해) 수행된다. 다른 실시예들에서, 난독화 프로세싱은 칩 또는 다이 상에 저장되거나 달리 존재할 수 있는 임의의 다른 값에 적용될 수 있다.
키 생성 및 보안 저장의 변형
이제, 다양한 추가적인 비제한적인 실시예들이 아래에서 설명된다. 일 실시예에서, 시스템 보드의 제1 시동 이후(또는 동안), 암호 엔진(예를 들어, 암호 모듈(127))을 포함하는 디바이스를 턴 온하기 위해 특수 시퀀스가 활성화된다. 시퀀스는 또한 내부 PUF를 깨우고 그것의 기능성을 검증하며, 이어서 PUF가 예를 들어, 상술된 바와 같이, 초기 값(PUF0)을 생성한다. PUF0 값은 온 칩 알고리즘에 의해(예를 들어, 난독화 프로세싱 모듈(630)에 의해) 프로세싱되고, 비휘발성 어레이의 특수 영역(사용자 어드레스 가능 공간의 외부)에 기입된다. 대안적인 실시예들에서, PUF0 값 대신에, 주입된 키가 저장을 위한 난독화된 키를 제공하기 위해 아래에서 설명될 바와 유사하게 온 칩 알고리즘에 의해 프로세싱된다.
일 실시예에서, 난독화 프로세싱은 Vdd(전압) 및/또는 온도 결함 해커 공격들을 방지하기 위해 수행된다. 이러한 프로세싱은 PUF0를 잘 알려진 (예를 들어, 고정된 양의 0/1 비트를 포함하는) 패턴과 연결하는 것을 포함한다. 이러한 비트들은, PUF 값이 내부적으로 판독될 때 디바이스(예를 들어, 칩)의 수명 동안, 판독 회로가 0/1 비트들을 적절히 구별할 수 있는지를 결정하는 것을 가능하게 한다. 예를 들어, PUF1 =PUF0 || 010101...01이다.
다음으로, 상기한 프로세싱의 결과(예를 들어, PUF1)는 또한 (예를 들어, Icc 해커 분석을 피하기 위해) 더미 비트들을 갖게 구현된다. 구체적으로, 예를 들어, PUF1의 비트들은 PUF1의 반전된 버전(즉, PUF1의 각 비트를 반전시킴으로써 형성되는 PUF1 바)과 인터리빙된다. 예를 들어, PUF2 = PUF1 인터리빙된 PUF1 바.
일 실시예에서, 인터리빙의 규칙은 칩/디바이스 상에 존재하는 (예를 들어, NV 비휘발성 어레이의) 컬럼 디코더의 유형에 의존한다. 디바이스는 (비휘발성 어레이로부터의) PUF 값의 각 판독 시, 판독 회로가 PUF1 및 PUF1 바로부터의 동일한 수의 비트를 (단일 샷으로) 프로세싱하도록 한다. 이는 0 및 1의 값들에서의 동일한 수의 비트를 판독하도록 하며, 이는 공급 전류(Idd)에서의 규칙적인 형상을 제공한다.
다음으로, PUF2의 비트들은 또한 의사 랜덤 비트들과 인터리빙된다. 일 예에서, 인터리빙은 비휘발성 어레이 컬럼 디코더 구조에 따른다. 일 실시예에서, 출력은 (예를 들어, PUF2 패턴에 존재할 수 있는 최종 잔류 상관을 난독화하기 위해) 특정 수의 의사 랜덤 비트가 적입(stuffing)된 동일한 수의 PUF2 비트를 갖는다.
일 실시예에서, 의사 랜덤 비트들은 해시 함수를 사용함으로써 PUF1 또는 PUF2로부터 유도될 수 있다. 다른 대안적인 접근법들이 또한 사용될 수도 있다.
일 실시예에서, 선택적으로, 비휘발성 노화로 인한 비트 손실을 감소시키거나 방지하기 위해, PUF3의 비트들이 에러 정정 코드(ECC) 비트들과 연결된다. 일 실시예에서, PUF4의 비트들은 선택적으로 1회 이상 복제된다(이는 또한 ECC 능력들을 확장한다). 예를 들어, 전술한 내용은 NAND 메모리 상에서 구현될 수 있다. 일 예에서, PUF5 =PUF4 || PUF4 || ... || PUF4이다.
일 실시예에서, PUF5의 값은 비휘발성 메모리 어레이의 상이한 로우들 및/또는 블록들 상에 2회 이상 기입될 수 있다.
상기한 난독화 프로세싱의 결과로서, 예를 들어, 최종 PUF 값이 비휘발성 어레이 블록에 기입되면, 그 값은 (예를 들어, 잡음, 또는 전하 손실로 인한) 키 신뢰도에 대한 염려, 또는 Idd 분석에 의해 그 값을 추론하려는 임의의 시도 또는 Vdd 결함 공격에 의해 그 값을 강제로 끌어내는 것을 줄이거나 없이 사용될 수 있다.
일 실시예에서, 난독화 프로세싱이 완료되면, PUF 회로부는 디스에이블될 수 있다. 일 실시예에서, 디스에이블 이후, PUF 디바이스는 다른 목적들을 위해 디바이스 상에서 (예를 들어, 비휘발성 어레이 내부의 표준 판독 동작을 사용하여) 내부적으로 사용되는 값들을 제공할 수 있다.
일 실시예에서, 키 비트들은 PUF3으로부터 키를 추출할 때 랜덤 비트들과 구별된다. 예를 들어, 키를 저장하는 디바이스의 내부 로직은 PUF 5로부터 이전 또는 원래의 PUF(예를 들어, PUF3)로 리턴하는데 요구되는 위치 및 방법을 인식한다.
일 실시예에서, 키 비트들의 비트 위치들은 키를 추출하는 디바이스에 의해 알려진다. 예를 들어, 디바이스의 내부 로직은 설계 선택에 따라, 중간 PUF 또는 최종 키 PUF5 중 하나를 수신할 수 있다. 이어서, 동작(들)을 역순으로 적용하여 원래의 PUF를 획득할 것이다. 예를 들어, PUF1로부터 PUF5로의 프로세싱 단계들은 해커가 콘텐츠(예를 들어, 키 비트들)를 판독하고, 또한 원래의 키를 다시 얻고 결정하기 위해 적용되었던 동작(들)을 알아야 하는 방식으로 난독화된 PUF를 저장하도록 실행된다.
PUF를 사용한 컴퓨팅 디바이스에 대한 신원 생성
이제, 물리적 복제 방지 기능(PUF)을 사용하여 컴퓨팅 디바이스에 대한 신원을 생성하는 것에 관한 다양한 실시예들이 아래에서 설명된다. 다음의 설명의 일반성은 상술된 다양한 실시예들에 의해 제한되지 않는다.
종래의 접근법들에서는, 컴퓨팅 디바이스의 제조자가 컴퓨팅 디바이스에 대한 신원을 확립하기 위해 컴퓨팅 디바이스를 구매하는 고객과 하나 이상의 시크릿 키를 공유하는 것이 필요하다. 그러나, 시크릿 키들의 공유는 키들을 공유하기 위한 고객과의 번거롭고, 복잡하며, 비용이 많이 드는 보안 채널 및 인프라스트럭처에 대한 필요성으로 인해 기술적 문제들을 야기한다. 나아가, 키 공유를 구현하는데 인사 서비스들도 요구된다. 더욱이, 전술한 보안 필요성은 보안 조치들이 해커 또는 다른 비인가자에 의해 침해될 수 있는 위험을 증가시킬 수 있다.
아래에서 논의될 본 개시의 다양한 실시예들은 상기한 기술적 문제들에 대한 기술적 솔루션을 제공한다. 다양한 실시예들에서, 컴퓨팅 디바이스는 하나 이상의 PUF를 사용하여 신원을 생성한다. 일 예에서, 신원은 UDS이다.
일 실시예에서, 컴퓨팅 디바이스에 대한 신원의 생성은 자동 방식으로 부여된다(예를 들어, 컴퓨팅 디바이스가 PUF를 사용하여 UDS를 자체 생성할 스케줄링된 시간 또는 미리 결정된 이벤트의 발생에 기초하여). PUF를 사용하여 신원을 부여함으로써, 신원 부여의 복잡성 및 비용이 감소될 수 있다.
컴퓨팅 디바이스가 신원을 생성한 후, 이는 식별자, 인증서, 및 키의 트리플을 생성하기 위해 사용될 수 있다. 일 실시예에서, 트리플은 호스트 디바이스로부터 메시지를 수신하는 것에 응답하여 생성된다. 호스트 디바이스는 컴퓨팅 디바이스의 신원을 검증하기 위해 생성된 식별자, 인증서, 및 키를 사용할 수 있다. 신원이 검증된 후에, 호스트 디바이스에 의한 컴퓨팅 디바이스와의 추가 보안 통신이 키를 사용하여 수행될 수 있다.
일부 실시예들에서, 컴퓨팅 디바이스는 호스트 디바이스로부터 커맨드를 수신하는 것에 응답하여 신원을 생성한다. 예를 들어, 커맨드는 컴퓨팅 디바이스에 의해 인증되는 보안 대체 커맨드일 수 있다. 신원을 생성한 후, 컴퓨팅 디바이스는 대체 신원이 생성되었음을 확인하기 위해 확인 메시지를 호스트 디바이스에 송신한다. 일 예에서, 대체 신원은 비휘발성 메모리에 저장되고 이전에 저장된 UDS(예를 들어, 컴퓨팅 디바이스의 정규 제조자에 의해 부여된 UDS)를 대체하는 새로운 UDS이다.
일 실시예에서, 신원은 컴퓨팅 디바이스의 메모리에 저장된 디바이스 시크릿(예를 들어, 위에서 논의된 바와 같은 DICE-RIoT 프로토콜에서 사용되는 UDS)이다. 적어도 하나의 값이 컴퓨팅 디바이스의 하나 이상의 PUF에 의해 제공된다. 컴퓨팅 디바이스는 키 유도 기능(KDF)을 사용하여 디바이스 시크릿을 생성한다. 하나 이상의 PUF에 의해 제공된 값(들)은 KDF에 대한 입력(들)이다. KDF의 출력은 디바이스 시크릿을 제공한다. KDF의 출력은 디바이스 시크릿으로서 컴퓨팅 디바이스의 메모리에 저장된다.
일 예에서, KDF는 해시이다. 일 예에서, KDF는 메시지 인증 코드이다.
일 실시예에서, 컴퓨팅 디바이스는 호스트 디바이스와 통신하기 위해 사용되는 시크릿 키를 저장하고, KDF는 메시지 인증 코드(MAC)이다. 하나 이상의 PUF에 의해 제공된 적어도 하나의 값은 MAC에 대한 제1 입력이고, 시크릿 키는 MAC에 대한 제2 입력으로서 사용된다.
일부 예들에서, 컴퓨팅 디바이스는 플래시 메모리 디바이스일 수 있다. 예를 들어, 직렬 NOR이 사용될 수 있다.
도 20은 일 실시예에 따른, 물리적 복제 방지 기능(PUF)(2005)을 사용하여 신원(예를 들어, 컴퓨팅 디바이스(141)에 대한 UDS)을 생성하는데 사용되는 바와 같은 컴퓨팅 디바이스(141)를 도시한다. 보다 구체적으로, 값이 PUF(2005)에 의해 제공된다. 이러한 값은 키 유도 기능(KDF)(2007)에 대한 입력으로서 제공된다. KDF로부터의 출력은 디바이스 시크릿(149)로서 저장된다.
일 실시예에서, 디바이스 시크릿(149)은 DICE-RIoT 프로토콜에서 사용되는 UDS이다. 상술된 바와 유사하게, UDS는 호스트 디바이스(151)로 송신하기 위한 트리플을 생성하기 위한 기초로서 사용될 수 있다. 이 트리플은 컴퓨팅 디바이스(141)와의 보안 통신을 위해 호스트 디바이스(151)에 의해 사용될 수 있는 공개 키를 포함한다.
일 실시예에서, 디바이스 시크릿의 생성은 호스트 인터페이스(2009)를 통해 호스트 디바이스(151)로부터 커맨드를 수신하는 것에 응답하여 수행된다. 일 예에서, 커맨드는 대체 커맨드이다. 일 예에서, 커맨드는 시크릿 키를 사용하여 호스트 디바이스(151)에 의해 서명된 서명을 동반한다. 디바이스 시크릿을 생성한 후, 확인 메시지는 호스트 인터페이스(2009)를 통해 호스트 디바이스(151)로 송신된다.
일 실시예에서, 컴퓨팅 디바이스(141)는 시크릿 키(2013)를 저장한다. 예를 들어, 시크릿 키(2013)는 호스트 디바이스(151)와 공유될 수 있다. 일 예에서, 호스트 디바이스(151)는 대체 커맨드와 함께 송신된 서명을 서명하기 위해 시크릿 키(2013)를 사용한다.
일 실시예에서, KDF(2007)는 메시지 인증 코드이다. 시크릿 키(2013)는 디바이스 시크릿을 생성할 때 KDF(2007)에 대한 키 입력으로서 사용된다. PUF(2005)로부터의 값이 KDF(2007)에 대한 데이터 입력으로서 사용된다.
선도 메커니즘이 단조 카운터(2003)를 사용하여 컴퓨팅 디바이스(141)에서 구현된다. 단조 카운터(2003)는 호스트 디바이스(151)와의 보안 통신에서 선도로서 사용하기 위한 값들을 제공할 수 있다.
고유한 식별자(UID)(2001)는 컴퓨팅 디바이스(141)의 메모리에 저장된다. 예를 들어, UID(2001)는 공장에서 주입된다.
일 실시예에서, 컴퓨팅 디바이스(141)는 잘 알려진 UDS(예를 들어, 자명한 UDS = 0x00000…000 또는 이와 유사한 것)로 고객에게 전달된다. 고객은 호스트 디바이스(151)를 이의 공장에서 사용하여 컴퓨팅 디바이스(141)가 새로운 UDS(예를 들어, UDS_puf)를 자체 생성할 것을 요청한다. 이러한 단계는 인증된 커맨드를 사용함으로써 행해질 수 있다. 시크릿 키(2013)를 알고 있는 고객 또는 호스트 디바이스만이 이러한 동작을 수행할 수 있다(예를 들어, 시크릿 키(2013)는 보다 일반적으로 컴퓨팅 디바이스(141)에 의해 지원되는 인증된 커맨드 세트를 관리하기 위해 사용될 수 있다).
UDS_puf가 생성되면, 이는 원래의 (자명한) UDS를 대체하기 위해 사용된다. 대체는 인증된 커맨드를 사용함으로써 발생한다. 외부 호스트 디바이스(고객)는 UDS_puf를 판독할 수 있다.
생성된 UDS_puf는 DICE-RIoT 프로토콜을 구현하기 위해 사용될 수 있다. 예를 들어, FDS는 신원 구성요소(147) 및 신원 구성요소(107)에 대해 숭살된 바와 유사하게 UDS_puf를 사용하여 계산될 수 있다. 일 예에서, FDS = HMAC-SHA256 [UDS, SHA256(“L1의 신원”)]이다.
또한, 식별자, 인증서, 및 키를 포함하는 트리플(예를 들어, KL1)은 상기한 도 1에 대해 설명된 바와 유사하게, UDS_puf를 사용하여 생성될 수 있다. 호스트 디바이스는 컴퓨팅 디바이스(141)와의 신뢰 통신을 위해 키(예를 들어, KL1공개)를 사용한다.
일 실시예에서, 신원 생성 메커니즘은 애플리케이션 보드의 스케줄링된 또는 (예를 들어, 고객에 의해 스케줄링/결정되고 업데이트 등과 같은 컴퓨팅 디바이스의 구성으로서 메모리(145)에 저장된 바와 같이) 미리 결정된 이벤트가 발생하면 필드에서, 또는 최초 사용 시에 컴퓨팅 디바이스(예를 들어, 프로세서를 포함하는 애플리케이션 보드)에 의해 자동으로 실행될 수 있다.
일 실시예에서, 자체 신원 생성은 다음과 같이 수행된다: 구성자 호스트 디바이스(예를 들어, 소프트웨어를 갖는 랩톱)가 자율 주행 차량 버스에 커플링된 컴퓨팅 디바이스에 (예를 들어, 보안 공중 무선(over-the-air) 인터페이스 등을 사용하여) 연결된다. 호스트 디바이스는 컴퓨팅 디바이스가 UDS(예를 들어, UDSPUF)를 자체 생성할 것을 요청하기 위해 인증된 커맨드들을 사용한다. 인증은 시크릿 키(2013)에 기초한다(예를 들어, 시크릿 키는 제조자에 의해 주입될 수 있고 보안 인프라스트럭처로 고객에게 제공될 수 있다).
인증된 커맨드 실행은 인증된 응답(예를 들어, 도 20에 도시된 바와 같은 "확인")으로 확인된다. UDSPUF 생성의 종료 시, 호스트 디바이스는 보안 프로토콜을 사용함으로써(예를 들어, 단조 카운터(2003)에 의해 제공되는 선도를 사용하여 보안 유선 및/또는 무선 네트워크(들)를 통해 송신함으로써) 생성된 UDSPUF에 대해 통지받는다.
일 실시예에서, 호스트 인터페이스(2009)는 인증되고 리플레이 보호된 커맨드들을 지원하는 커맨드 인터페이스이다. 일 실시예에서, 인증은 시크릿 키(예를 들어, 시크릿 키(2013))에 기초하고 MAC 알고리즘(예를 들면, HMAC)을 사용한다. 일 예에서, 신원 생성 커맨드는 커맨드 연산 부호(opcode), 커맨드 파라미터들, 및 선도에 기초한 서명을 포함하는 호스트 디바이스(151)로부터 수신된다. 일 예에서, 서명 = MAC (연산 부호 | 파라미터들| 선도, 시크릿 키)이다.
일 실시예에서, 컴퓨팅 디바이스(141)는 서명을 포함하는 신원 생성 확인을 제공한다. 일 예에서, 서명 = MAC (커맨드 결과 | 선도, 시크릿 키)이다.
일 실시예에서, 시크릿 키(2013)는 공장에서 주입된다. 일 예에서, 시크릿 키는 대칭일 수 있다(예를 들어, HMAC-SHA256에 기초함). 또 다른 예에서, 시크릿 키는 비대칭 기법(예를 들어, ECDSA)을 사용할 수 있다.
디바이스 시크릿(149)(예를 들어, UDSPUF)은 다양한 옵션들을 사용하여 생성될 수 있다. 예를 들어, 생성 흐름이 활성화되면, 적절한 인증 및 리플레이 보호된 커맨드를 사용함으로써, UDSPUF는 다음과 같이 선택되는 커맨드 옵션에 따라 생성된다:
옵션 #1: PUF 패턴(때때로 "PUF RAW"로서 지칭됨)(또한 때때로 UDSRAW라고도 지칭됨)으로부터의 적어도 하나의 값이 판독되고, KDF 2007(키 유도 기능)(예를 들어, SHA256)에 제공된다. 이러한 프로세스의 결과는 최종 키이다. 따라서: UDSPUF = KDF (UDSRAW)이다.
옵션 #2: PUF RAW 패턴(UDSRAW)이 판독되고, UDSPUF가 다음과 같이 계산된다: UDSPUF = KDF (UDSRAW | UID)이며, 여기서 UID는 모든 디바이스들에 부여되는 고유한 공개 ID이다(일부 경우들에서, UID는 또한 비보안 디바이스들에 부여될 수도 있다). 일 실시예에서, UID(2001)는 KDF에 대한 입력으로서 사용된다.
옵션 #3: PUF RAW 패턴(UDSRAW)이 판독되고, UDSPUF가 다음과 같이 계산된다: UDSPUF = KDF (UDSRAW | UID | 해시 (사용자 패턴) )이며, 여기서 사용자 패턴은 자체 신원 생성을 요청하는 커맨드 페이로드에서 호스트에 의해 제공된다.
옵션 #4: PUF RAW 패턴(UDSRAW)이 판독되고, UDSPUF가 다음과 같이 계산된다: UDSPUF = KDF (UDSRAW | UID | 해시 (사용자 패턴)| 선도 )이며, 여기서 선도는 예를 들어, 커맨드 페이로드에서 제공되는 선도이다.
보다 일반적으로, UDS는 UDSPUF = KDF [(호스트 디바이스에 의해 제공된 정보 | 디바이스에 존재하는 정보)]로서 계산된다. KDF 함수는 간단한 해시 함수(예를 들어, SHA256), 또는 MAC 함수(예를 들어, HMAC-SHA256) - 시크릿 키를 사용함 - 로서 사용될 수 있다.
일 예에서, MAC 함수가 KDF로서 사용될 때, 사용되는 시크릿 키는 인증된 커맨드들을 제공하기 위해 사용되는 동일한 키이다. 디바이스 시크릿(예를 들어, UDS)은 다음과 같은 옵션들 중 하나를 사용하여 생성될 수 있다:
옵션 #5: UDSPUF = MAC [시크릿_키, (UDSRAW)]
옵션 #6: UDSPUF = MAC [시크릿_키, (UDSRAW | UID)]
옵션 #7: UDSPUF = MAC [시크릿_키, (UDSRAW | UID | 해시 (사용자 패턴) )]
옵션 #8: UDSPUF = MAC [시크릿_키, (UDSRAW | UID | 해시 (사용자 패턴)| 선도 )]
보다 일반적으로, UDSPUF = MAC [시크릿_키, (호스트 디바이스에 의해 제공된 정보 | 디바이스에 존재하는 정보)]이다.
전술한 바와 같이, UDSPUF는 생성된 후에 호스트 디바이스(151)에 통신될 수 있다. 일 실시예에서, 호스트 디바이스(151)는 UDSPUF를 직접 판독할 수 있다. UDSPUF는 단지 미리 결정된 횟수(예를 들어, 단지 1회 또는 수 회)만 판독될 수 있다. 일 예에서, 아래의 도 21에 대해 설명될 바와 같은 프로세스가 사용될 수 있다. UDSPUF를 미리 결정된 횟수 판독한 후, 판독 메커니즘은 영구적으로 디스에이블된다. 예를 들어, 이러한 접근법은 보안 환경(예를 들어, 컴퓨팅 디바이스(141)를 사용하여 컴퓨팅 시스템 또는 다른 제품을 조립할 때의 고객의 공장)에서 사용될 수 있다.
일 예에서, UDSPUF는 호스트 디바이스(151)로부터 수신되는 공개 키를 사용하여 컴퓨팅 디바이스(141)에 의해 암호화되고, 그 다음 UDSPUF는 호스트 디바이스(151)에 송신된다. 이러한 절차 이후, UDSPUF 판독 메커니즘은 영구적으로 디스에이블된다.
또 다른 실시예에서, 컴퓨팅 디바이스(141)는 난독화 프로세싱 모듈(2011)을 포함한다. 난독화 프로세싱 모듈(2011)은 도 15의 난독화된 프로세싱 모듈(630), 또는 도 19의 난호화 프로세싱 모듈(630)의 예이다.
일 실시예에서, UDSPUF는 호스트 공개 키로 암호화되고 호스트 디바이스로 통신된다; 호스트 디바이스는 이의 대응하는 시크릿 키를 사용하여 이를 복호화한다. 호스트 공개 키는 특정 통신 셋업 단계 동안 컴퓨팅 디바이스(141)에 통신된다. 일 실시예에서, UDSPUF의 공유는 인증된 커맨드를 사용함으로써 직접 판독 동작에 의해 행해질 수 있고, 미리 결정된 횟수의 판독(예를 들어, 통상적으로 단지 1회) 후에, 이러한 판독 동작은 영구적으로 디스에이블된다. 컴퓨팅 디바이스(141)는 UDS 키를 안티 탬퍼(anti-tamper) 영역에 저장한다. 또한 내부(컴퓨팅 디바이스) 사용을 위한 UDS 키의 각 사용 시, (예를 들어, 이를테면 해커가 전류 또는 전압 파형 프로파일 중 어느 하나를 분석하는 것에 의해, 해커가 저장된 UDS 키를 추측할 어떠한 가능성도 피함으로써) 정보 누설을 피하기 위해 난독화 메커니즘이 사용된다. 예를 들어, 사용되는 난독화 메커니즘은 도 15, 도 18, 도 19에 대해 상술된 바와 같을 수 있다.
일 실시예에서, 컴퓨팅 디바이스(141)는 암호화된 디바이스 시크릿을 호스트 디바이스(151)에 송신하기 전에 디바이스 시크릿을 난독화한다.
도 21은 일 실시예에 따른, 시스템 부당 변경이 발생했는지 여부를 결정하는데 사용하기 위해 시스템의 단조 카운터에 의해 제공된 초기값을 송신하는 시스템을 도시한다. 일 예에서, 시스템은 도 20의 컴퓨팅 디바이스(141)이다.
일부 실시예들에서, 시스템은 다른 디바이스들(예를 들어, 호스트 디바이스(151))과의 보안 통신을 위해 시크릿 키를 사용한다. 시크릿 키는 (예를 들어, 시스템 보드의 초기 조립 후에 공장에서의 키 주입에 의해) 생성되고 시스템 상에 저장된다. 초기 값을 제공하기 위해 시스템의 단조 카운터가 사용된다.
또 다른 실시예에서, 시크릿 키는 DICE-RIoT 프로토콜과 사용되는 UDS이다. 시크릿 키는 호스트 디바이스(예를 들어, 호스트 디바이스 151)로부터의 커맨드에 응답하여 생성된다.
일 실시예에서, 초기 값은 전자 통신에 의해 물리적 시스템의 의도된 수신자에게 송신된다(예를 들어, 수신자는 물리적 시스템이 수신자의 위치로 물리적으로 운송된 후에 물리적 시스템을 수신할 것이다). 시스템을 수신한 후에, 수신자는 단조 카운터로부터 출력 값을 판독한다. (예를 들어, 초기 값을 이전에 수신한 수신자의 컴퓨팅 디바이스 또는 서버를 사용하는) 수신자는 초기 값과 출력 값을 비교하여 시스템에 부당 변경이 발생했는지 여부를 결정한다. 일 예에서, 부당 변경은 시스템의 물리적 운송 동안 이의 시크릿 키에 액세스하기 위한 침입자에 의한 비인가 시도이다.
일 실시예에서, 시크릿 키는 예를 들어, 참 RNG(난수 생성기) 또는 PUF를 사용하여 생성될 수 있거나, 공장과 같은 보안 환경에서 시스템(메모리)에 미리 주입될 수 있다.
일 실시예에서, 생성된 키는 단조 카운터의 초기값과 연관된다. 초기값은 저장된 키에 액세스하려는 비인가 시도가 이루어졌는지를 결정하기 위해 시스템의 수신자에 의해 사용된다. 일 실시예에서, 키 주입 프로세스는 키를 저장하는 컴퓨팅 디바이스의 매 시동 사이클마다 키를 생성하기 위해 물리적 복제 방지 기능(PUF)으로부터의 출력을 사용할 수 있다.
보다 구체적으로, 도 21은 일 실시예에 따른, 시스템(351) 부당 변경이 발생했는지 여부를 결정하는데 사용하기 위해 단조 카운터(355)에 의해 제공된 초기값을 송신하는 시스템(351)을 도시한다. 예를 들어, 시스템(351)의 물리적 운송 동안 저장된 키에 대한 비인가 액세스를 시도하는 해커에 의해 시스템(351)이 탬퍼링되었는지 여부가 결정될 수 있다. 일 예에서, 시스템(351)은 비휘발성 메모리(306), 프로세서(들)(304), 단조 카운터(들)(355), 및 파워 서플라이(318)를 포함하는 시스템 보드이다.
하나 이상의 키(314)가 프로세서(304)의 제어 하에서 생성된다. 비휘발성 메모리(306)는 생성된 키들을 저장하기 위해 사용된다. 비휘발성 메모리(306)는 예를 들어, 비휘발성 메모리 디바이스(예를 들어, 3D 교차점 저장소)이다.
단조 카운터(355)는 초기값을 제공하기 위해 초기화된다. 이 초기값은 저장된 키(314)와 연관된다. 초기값은 프로세서(304)에 의해 외부 인터페이스(312)를 통해 또 다른 컴퓨팅 디바이스로 송신된다. 예를 들어, 초기 값은 시스템(351)이 제조 및 키 주입이 완료된 후에 운송될 수신자의 서버로 송신될 수 있다.
시스템(351)이 수신자에 의해 수신될 때, 수신자의 컴퓨팅 디바이스는 초기 값을 결정한다. 예를 들어, 컴퓨팅 디바이스는 상술된 바와 같이 송신될 때 수신되는 초기 값을 메모리에 저장할 수 있다. 컴퓨팅 디바이스는 단조 카운터(355)로부터 출력 값을 판독한다. 이 출력 값은 시스템(351)의 부당 변경이 있었는지 여부를 결정하기 위해 초기 값과 비교된다.
일 실시예에서, 수신자의 컴퓨팅 디바이스는 단조 카운터(355)가 증분하게 하는 발생한 이벤트들의 수를 결정한다. 예를 들어, 단조 카운터(355)로부터의 출력 값들은 (예를 들어, 파워 서플라이(318)를 모니터링함으로써 검출되는 바에 따라) 시스템(351)의 각 시동 동작 시 증분하도록 구성될 수 있다. 단조 카운터(355)로부터의 출력 값들은 추가적으로 그리고/또는 대안적으로 저장된 키(314)의 판독 액세스를 수행하려는 각 시도 시 증분하도록 구성될 수 있다.
예를 들어, 단조 카운터가 증분하도록 하는 알려진 이벤트들의 수를 추적함으로써, 이러한 알려진 이벤트들 수에 기초하여 송신기로부터 수신된 초기 값이 조정될 수 있다. 이어서, 조정된 초기 값은 단조 카운터(355)로부터 판독된 출력 값과 비교된다. 값들이 일치한다면, 부당 변경이 발생하지 않은 것이다. 값들이 일치하지 않는다면, 컴퓨팅 디바이스는 부당 변경이 검출되었다고 결정한다.
부당 변경이 검출되었다는 결정에 응답하여, 시스템(351)의 하나 이상의 이 디스에이블될 수 있다. 일 실시예에서, 프로세서(304)는 부당 변경이 검출되었다는 표시를 포함하는 통신을 수신자의 컴퓨팅 디바이스로부터 수신한다. 통신을 수신하는 것에 응답하여, 프로세서(304)는 시스템(351)의 적어도 하나의 기능을 디스에이블한다. 일 예에서, 디스에이블되는 기능은 저장된 키(314)에 대한 판독 액세스이다.
일 실시예에서, 시스템(351)은 단조 카운터(355)로부터 출력된 카운터 값이 미리 결정된 최대 값을 초과할 수 없도록 구성될 수 있다. 예를 들어, 각 카운터 값이 단조 카운터(355)로부터 판독될 때, 카운터 값이 미리 결정된 최대 값을 초과하는지의 여부가 결정된다. 카운터 값이 미리 결정된 최대 값을 초과한다면, 저장된 키(314)에 대한 판독 액세스가 (예를 들어, 프로세서(304)의 제어 하에서) 영구적으로 디스에이블될 수 있다.
일 실시예에서, 시스템(351)은 반도체 다이 상에서 구현된다. 또 다른 실시예에서, 시스템(351)은 시스템 보드 상에 형성된다. 애플리케이션은 시스템 메모리(353)에 저장되고 프로세서(304)에 의해 실행된다. 애플리케이션의 실행은 시스템(351)의 시동 후에 발생한다. 예를 들어, 시스템(351)의 수신자는 시스템에 어떠한 부당 변경도 발생하지 않았다고 결정한 후에 애플리케이션을 실행할 수 있다.
일 실시예에서, 키(314)는 하나 이상의 물리적 복제 방지 기능(PUF)으로부터의 출력 값을 사용하여 생성된다.매 예를 들어, 키들은 시스템(351)의 각 시동 사이클마다 생성된다. 또 다른 예에서, 키(314)는 외부 인터페이스(312)를 통해 수신되는 호스트 디바이스로부터의 대체 커맨드에 응답하여 생성되는 UDS이다.
일 실시예에서, 시스템(351)은 키(314)를 저장하는 제어기이다. 외부 인터페이스(312)는 초기 값을 단조 카운터(355)로부터 제어기와 동일한 시스템 보드 상의 외부 비휘발성 메모리 디바이스(도시되지 않음)로 송신하기 위해 사용된다. 외부 비휘발성 메모리 디바이스는 단조 카운터(355)로부터 출력 값을 판독하고 출력 값을 시스템(351)으로부터 수신된 초기 값과 비교함으로써 부당 변경이 발생했는지 여부를 결정한다.
일 실시예에서, 시스템 메모리(353)는 휘발성 메모리(308) 및/또는 비휘발성 메모리(306)를 포함한다. 암호 모듈(316)은 키들(314)(예를 들어, 대칭 키들)을 사용하여 외부 인터페이스(312)를 통한 보안 통신을 위한 암호 동작들을 수행하기 위해 사용된다.
이제, 시크릿 키 공유가 다양한 추가 실시예들에서 설명된다. 보안 통신 채널은 통신에 참여하는 행위자들 간의 키 공유에 의해 셋업된다. 신뢰 플랫폼 모듈 보드에서 사용되는 구성요소들은 보통 예를 들어, 공개 키 암호화와 같은 기법들을 구현하기에 충분한 프로세싱 능력을 갖지 않는다.
일 실시예에서, 하나 이상의 시크릿 키는 디바이스/보드 제조자와 OEM/최종 고객들 사이에서 공유된다. 또한, 키들은 필드에서 동일한 보드에서의 상이한 디바이스들 간에도 필요에 따라 공유될 수 있다. 상술되었던 바와 같이, 하나 이상의 단조 카운터가 보안 디바이스 내부에서 사용된다.
일 예에서, 디바이스가 공장 또는 제조자 테스트 라인을 떠나기 전에, 디바이스 성능 및 사용자 요구에 따라, 하나 이상의 시크릿 키(예를 들어, 시크릿_키k(k=1,..,N)과 같은 하나 이상의 시크릿 키)가 디바이스 내부에 주입된다.
디바이스 성능 및 사용자 요구에 따라, 하나 이상의 단조 카운터가 초기화된다(N(N≥1)개의 상이한 MTC들 → MTCk=0). 단조 카운터들(MTC들)은 시스템/디바이스의 시동이 발생할 때마다 그리고 저장된 시크릿 키가 판독될(시도될) 때마다 출력 값을 증분시키도록 구성된다.
각 MTCk의 값은 공개될 수 있고 고객과 공유될 수 있다(예를 들어, MTCk로서). 디바이스로부터 키를 판독하기 위해 (예를 들어, 시스템 설계자에 의해 임의로 결정된 바와 같은) 커맨드 시퀀스가 사용되고, 커맨드 시퀀스는 공개될 수 있다(예를 들면, 방법의 강도가 판독 프로토콜의 시크릿에 기초하지 않는다).
일 실시예에서, 각 시크릿 키에 대해 전용 MTC를 사용할 필요는 없다. 이는 사용되는 보안 서비스의 유형에 따라 달라질 수 있다. 예를 들어, 일부 키들은 함께 판독될 수 있고, 이것들은 단일 MTC만을 필요로 한다.
일 실시예에서, 수신자(예를 들어, 고객/사용자) 위치에 시스템이 도달한 후에, 여러 동작들이 수행된다. 수신자의 컴퓨팅 디바이스는 먼저 단조 카운터(들)(355)의 초기 값(들)을 결정한다. 예를 들어, MTCk = (MTC0)k의 값들이 검색된다(예를 들어, 초기 값들은 디바이스가 공장을 떠나는 순간에 기입되고 송신된다). MTCk 값들은 각 MTC 또는 관련 키에 대해 상이할 수 있다.
그 다음, 수신자 고객/사용자가 시스템(351)을 시동시킨다. 제1 어드레싱된 동작은 MTCk 값들의 판독이다. 각 MTCk 값이 예상된(수신된) 초기 값[예를 들어, MTCk = (MTC0+1)k]과 일치한다면, 디바이스는 물리적 운송 또는 다른 이동 동안 시동되지 않았던 것으로 결정되고, 시스템(351)은 최종 사용자/고객에 의해 진품인(그리고 부당 변경되지 않은) 것으로 간주된다.
하나 이상의 값이 일치하지 않는다면, 부당 변경이 발생한 것이다. 예를 들어, 비인가자가 디바이스를 시동했고 저장된 키들을 판독하려고 시도했다. 부당 변경이 발생했다면, 디바이스는 폐기되고 부당 변경의 표시가 추가 기술적 보안 문제들을 피하기 위해 송신자(예를 들어, 전달 회사)에게 통신된다.
또 다른 실시예에서, 다수의 판독 동작들이 시스템(351)의 수신자에 의해 수행된다. 예를 들어, 디바이스는 공장을 떠나고 고객/OEM에 도달한다. 고객은 하나 이상의 키를 판독하고 관련 MTCk는 1씩 증분된다. 증분된 MTCj가 실리콘 공장(송신자)에 의해 미리 설정된 값(MTCj MAX)을 초과한다면, 키의 판독(시크릿_키j)은 영구적으로 디스에이블된다.
이러한 예에서, MTCj MAX는 각 MTC에 대해 송신자 및 고객에 의해 합의된 미리 결정된 최대 값이다. 이러한 방법론은 MTC 값의 판독 이후/이전에 키 판독의 한 번 이상의 시도가 검사되거나 수행될 수 있게 한다. 이는 예를 들어, 임의의 비인가 액세스의 발견을 가능하게 하고, 또한 동시에 OEM/고객이 디스에이블 전에 키들의 판독을 수 회 수행해야 하도록 한다.
판독 프로세스 동안, 하나 이상의 MTC가 예상치 못한 값을 갖는다면(예를 들어, 알려진 판독 및 시동 동작들의 수에 대한 조정 후에 초기 값 및 판독 값이 일치하지 않는다면), 디바이스는 폐기된다. 일 실시예에서, 모든 키들이 판독되면, 관련된 MTCk는 소거되고 다른 목적들(예를 들어, 시스템 설계자에 의해 구성되고 요구되는 바와 같은 암호 프로세싱 기능들 등)을 위해 재사용될 수 있다.
또 다른 예에서, 디바이스/보드 사용이 모니터링된다. 이러한 예는 보안 디바이스 상에 이미 존재하는(예를 들어, 암호화 모듈(316)에 의한 사용을 위해 존재하는) 단조 카운터들을 사용한다. 디바이스가 테스트 라인 상에서 실리콘 공장을 떠나기 전에, 다음이 수행된다: M(M≥1)개의 상이한 MTC → MTCk=0 초기화.
이러한 MTC 카운터들은 디바이스의 각 시동 시 증분된다. 각 카운터는 제로(또는 요구된다면, 또 다른 초기값)로 초기화될 수 있다.
수신자 최종 사용자는 수신된 MTCk 값들을 사용하여 시스템(351)에 관한 다양한 정보(예를 들어, 구성요소/보드의 비인가 사용의 검출, 구성요소가 디솔더링(desoldering)되고 이를 해킹하기 위해 보드 외부에서 사용되었는지를 결정하는 것, 고객의 서비스들에 기초하여 요금 메커니즘을 구현하기 위한 전원 사이클 카운트, 디바이스 보드 워런티 정책들, 및 정전과 같은)를 획득할 수 있다.
일 실시예에서, 요금 메커니즘을 구현하는 것은 특정 사용에 값을 연관시키는 것을 수반한다. 애플리케이션은 고객에게 제공될 수 있고, 고객은 특정 사용을 잠금 해제하기 위해 요금을 지불해야 한다.
일 실시예에서, 시크릿 키는 동일한 시스템 보드 상의 상이한 디바이스들 간에서 공유된다(예를 들어, 최종 사용자에 의해 사용될 때 필드에서 공유됨). 키는 동일한 보드 상의 구성요소들 간의(예를 들어, 프로세서들 간의) 교환에 의해 공유된다.
일 실시예에서, 하나 이상의 단조 카운터(MTCk) 각각은 이의 초기 값을 제로로 설정함으로써 초기화된다. 일 예에서, MTCk=0을 설정할 때, MTCk는 숫자 k로 표시되는, 특정 키와 연관된 카운터이다. MTCk= 0은 카운터의 초기 값이 제로임을 표시한다. 각 k는 디바이스에 저장된 내부 키들의 수에 대응하는 카운터 수들 중의 하나를 표시한다. 각 카운터의 값은 디바이스의 비휘발성 메모리 영역에 저장된다.
일 실시예에서, 디바이스의 시동(때때로 작동 시작이라고도 함)이 검출된다. 디바이스는 파워 서플라이의 값을 측정하기 위한 내부 회로부를 포함한다. 파워 서플라이가 특정 임계치를 초과할 때, 회로부는 파워 온 이벤트의 존재(검출)를 표시하기 위해 내부 신호를 트리거한다. 이 신호는 단조 카운터들의 증분을 야기할 수 있다.
일 실시예에서, 시크릿 키를 판독하려는 시도가 검출된다. 카운터(MTCk)는 (위에서 언급된 바와 같이) 전력이 검출될 때마다, 그리고 또한 키를 판독하기 위한 커맨드 시퀀스가 디바이스 인터페이스에 의해 인식될 때마다 증분된다. 초기 MTCk 값들을 아는 것은 디바이스의 운송이 행해질 때, 디바이스의 최종 수신자(예를 들어, 최종 사용자/고객)가 디바이스(및 카운터) 상태를 알 수 있게 한다. 따라서, 수송 동안, 디바이스를 시동 및/또는 판독하려는 시도가 있었다면, 이는 각 MTCk에 저장된 카운터 값에서의 변화를 발생시킨다.
일 실시예에서, 디바이스로부터 키를 판독하기 위한 커맨드 시퀀스가 사용된다.
예를 들어, 디바이스는 다른 컴퓨팅 구성요소들 또는 디바이스들로부터 커맨드들을 수용하는 외부 인터페이스를 갖는다. 키는 최대 카운터 값에 도달할 때까지 판독에 이용 가능하다. 일 예에서, 디바이스는 인터페이스에서 다음과 같은 시퀀스를 갖는다: 커맨드(예를 들어, 0x9b) + 인수(0x34) + 서명. 디바이스는 키가 판독되고 출력에 제공될 것임을 이해한다.
일 실시예에서, (예를 들어, 초기 공장에서) 디바이스의 테스트 후에, 각 키에 대한 MTCk는 초기화로부터 초기값을 가질 것이다. 따라서, 예를 들어, k = 3이라면: MTC0 = 20d, MTC1 = 25d, MTC2 = 10이다. 값들(MTC0, MTC1, MTC2)은 초기 값들의 세트로서, 고객에게 송신/전송된다. 디바이스가 고객에 의해 수신될 때, 고객은 값들을 판독하기 위해, 커맨드 시퀀스를 사용한다. 그 다음, 고객은 (예를 들어, 컴퓨팅 디바이스를 사용하여) 디바이스가 운송 동안 침해되었는지를 결정한다. 일 예에서, 단조 카운터 값들이 상술되었던 커맨드 시퀀스를 사용하여 판독된다.
일 실시예예서, 미리 결정된 최대 카운터 값이 미리 설정된다. 예를 들어, 미리 설정된 최대 값은 고객 절차들에 기초하여 선택될 수 있다. 예를 들어, 고객이 키를 10회 판독하기를 원한다고 가정한다. 또한, MTCk가 전원이 턴 온될 때에만 증분하고 있다고 가정하고, 두 개의 카운터들, 즉 MTC0(시동과만 연관됨) 및 MTC1(키 판독 커맨드 절차와만 연관됨)이 있다고 가정한다. 공장 테스트 후, MTC0 및 MTC1 값들을 모니터링하는 것에 기초하여, 다음이 발견된다: MTC0 = 30, MTC1 = 25. 일 예에서, 내부 임계치는 MTC0에 대해 40으로 설정되고 MTC1에 대해 35로 설정된다.
일 실시예에서, 키와 연관된 MTC는 작동 시작 및 키의 판독 시도에 따라 증분된다. 두 개의 이벤트들 중 하나가 발생할 때마다, MTC는 증분된다.
일 실시예에서, 단조 카운터들은 저장된 키들의 최종 판독 후에 소거된다(그리고 선택적으로 디바이스 상의 다른 프로세싱을 위해 재사용될 수 있다). 시스템 설계자는 이를 요구되는 바에 따라 구성할 수 있다. 최종 판독은 예를 들어, 악의적인 이벤트의 검출기로서 MTC 카운팅의 목적이 더 이상 필요하지 않을 때이다. 이는 다른 목적들을 위해 사용될 수 있는 자원들로서 카운터들을 해제하거나, 카운터들은 카운트하도록 유지될 수 있다.
일 실시예에서, 단조 카운터는 구성요소 디솔더링되는 것, 요금 메커니즘을 구현하는 것, 워런티를 구현하는 것 등과 같은 다양한 유형들의 정보를 얻기 위해 사용될 수 있다. 카운터들은 카운터 값의 증분이 외부적으로 트리거될 수 있기 때문에 상이한 유형들의 사건들을 모니터링하기 위해 사용될 수 있다.
일 실시예에서, 다중 키 판독 옵션이 제공된다. 일 예에서, (키들과 연관된 MTCk에 대한) MTC 값들의 초기화를 위해, 최대 임계치들은 구성요소의 수신자 및/또는 최종 사용자에 의한 각 키의 판독을 가능하게 하도록 설정된다. 다중 판독 옵션은 (각 키에 대해 상이할 수 있는) 특정 키를 판독하려는 시도들의 최대 횟수에 따라 임계치를 변경할 수 있게 한다.
일 실시예에서, 다양한 유형들의 디바이스들이 상기한 방법들을 사용할 수 있다. 예를 들어, CPU 또는 MCU는 통상적으로 외부 액세스에 의해 액세스 가능하지 않은 내부 하드웨어 보안 모듈을 갖는다. 일 예에서, 정확하게 동작하기 위해 디바이스들 또는 구성요소들에 저장된 동일한 키들(예를 들어, 대칭 키 접근법이 사용될 때)을 가질 필요가 있다. 이러한 경우에, CPU/MCU는 인증된 엔티티, 디바이스, 또는 구성요소에 대한 키의 분배/공유로부터 이익을 얻는다. 이러한 공유는 키의 판독을 가능하게 한다(예를 들어, 이러한 공유가 MTCk 임계치에서의 값의 프로그래밍에 대응한다).
일 실시예에서, 상기한 방법들은 고객 펌웨어 주입에 사용된다. 예를 들어, 상기한 방법들은 디바이스(예를 들어, 애플리케이션 펌웨어) 내부에 필수 콘텐츠를 저장하고 (펌웨어/디바이스의 무결성을 손상시키지 않고) 비보안 환경에서 디바이스의 이동을 구현예하는 것을 가능하게 한다. 일 예에서, 펌웨어 주입에 대해, 운송 동안의 MTCk 카운터 값의 예상치 못한 변화가 펌웨어 침해가 발생했음을 표시하는 인덱스로서 사용된다.
도 22는 일 실시예에 따른, 물리적 복제 방지 기능(PUF)을 사용하여 컴퓨팅 디바이스에 대한 신원을 생성하기 위한 방법을 도시한다. 예를 들어, 도 22의 방법은 도 20의 시스템에서 구현될 수 있다.
도 22의 방법은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그래머블 로직, 마이크로 코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운영 또는 실행되는 명령어들), 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시예들에서, 도 22의 방법은 도 20의 프로세서(143)에 의해 적어도 부분적으로 수행된다.
특정 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는 한, 프로세스들의 순서는 수정될 수 있다. 이에 따라, 도시된 실시예들은 예들로서만 이해되어야 하고, 도시된 프로세스들은 상이한 순서로 수행될 수 있으며, 일부 프로세스들은 병렬적으로 수행될 수도 있다. 또한, 다양한 실시예들에서 하나 이상의 프로세스가 생략될 수도 있다. 이에 따라, 모든 프로세스들이 모든 실시예에서 요구되는 것은 아니다. 다른 프로세스 흐름들도 가능하다.
블록 2211에서, 적어도 하나의 값이 적어도 하나의 물리적 복제 방지 기능(PUF)에 의해 제공된다. 예를 들어, PUF(2005)가 출력으로서 값을 제공한다.
블록 2213에서, 디바이스 시크릿이 키 유도 기능(KDF)을 사용하여 생성된다. 적어도 하나의 PUF에 의해 제공되는 적어도 하나의 값은 KDF에 대한 입력으로서 사용된다. 예를 들어, PUF(2005)로부터의 출력이 KDF(2007)에 대한 입력으로서 사용된다.
블록 2215에서, 생성된 디바이스 시크릿이 저장된다. 예를 들어, KDF(2007)는 디바이스 시크릿(149)으로서 저장되는 출력을 생성한다.
일 실시예에서, 방법은: 컴퓨팅 디바이스에 의해, 디바이스 시크릿(예를 들어, 디바이스 시크릿(149)로서 사용되는 UDS)을 생성하는 단계 - 생성하는 단계는: 적어도 하나의 물리적 복제 방지 기능(PUF)에 의해, 적어도 하나의 값을 제공하는 단계; 및 키 유도 기능(예를 들어, KDF(2007))을 사용하여, 디바이스 시크릿을 생성하는 단계로서, 적어도 하나의 PUF에 의해 제공되는 적어도 하나의 값은 KDF에 대한 입력인 것인, 디바이스 시크릿을 생성하는 단계를 포함함 -; 및 생성된 디바이스 시크릿을 컴퓨팅 디바이스의 메모리에 저장하는 단계를 포함한다.
일 실시예에서, 생성된 디바이스 시크릿을 저장하는 단계는 메모리에 이전에 저장된 디바이스 시크릿을 생성된 디바이스 시크릿으로 대체하는 단계를 포함한다.
일 실시예에서, KDF는 해시, 또는 메시지 인증 코드이다.
일 실시예에서, 본 방법은 호스트 디바이스와 통신하는데 사용되는 시크릿 키를 저장하는 단계를 더 포함하며, KDF는 메시지 인증 코드(MAC)이고, 적어도 하나의 PUF에 의해 제공되는 적어도 하나의 값은 MAC에 대한 제1 입력이며, 시크릿 키는 MAC에 대한 제2 입력이다.
일 실시예에서, 디바이스 시크릿은 이벤트에 응답하여 생성되고, 이벤트는 컴퓨팅 디바이스에 의해, 호스트 디바이스로부터 커맨드를 수신한다.
일 실시예에서, 본 방법은 호스트 디바이스로부터 호스트 공개 키를 수신하는 단계, 호스트 공개 키를 사용하여 생성된 디바이스 시크릿을 암호화하는 단계, 및 암호화된 디바이스 시크릿을 호스트 디바이스로 송신하는 단계를 더 포함한다.
일 실시예에서, 본 방법은 암호화된 디바이스 시크릿을 호스트 디바이스로 송신하는 단계 후에, 메모리에서의 디바이스 시크릿에 대한 판독 액세스를 영구적으로 디스에이블하는 단계를 더 포함한다.
일 실시예에서, 본 방법은 암호화된 디바이스 시크릿을 호스트 디바이스로 송신하는 단계 전에, 디바이스 시크릿을 난독화하는 단계를 더 포함한다.
일 실시예에서, 본 방법은 컴퓨팅 디바이스에 의해 메모리에, 시크릿 키(예를 들어, 시크릿 키(2013))를 저장하는 단계를 더 포함하며, 커맨드는 컴퓨팅 디바이스에 의해, 메시지 인증 코드(MAC)를 사용하여 인증되고, 시크릿 키는 MAC에 대한 입력으로서 사용된다.
일 실시예에서, 호스트 디바이스는 커맨드를 인증하기 위한 서명을 송신하고, 서명은 MAC를 사용하여 생성되며, 호스트 디바이스에 의해 생성되는 선도가 MAC에 대한 입력으로서 사용된다.
일 실시예에서, 선도는 KDF에 대한 추가 입력이다.
일 실시예에서, 호스트 디바이스는 커맨드로 사용자 패턴을 제공하고, 사용자 패턴의 해시는 KDF에 대한 추가 입력이다.
일 실시예에서, 본 방법은 컴퓨팅 디바이스에 의해, 디바이스 시크릿을 생성하는 단계 전에 커맨드를 인증하는 단계를 더 포함한다.
일 실시예에서, 본 방법은 컴퓨팅 디바이스의 고유한 식별자를 저장하는 단계를 더 포함하며, 고유한 식별자는 KDF에 대한 추가 입력이다.
일 실시예에서, 디바이스 시크릿은 이벤트에 응답하여 생성되고, 이벤트는 컴퓨팅 디바이스에 의한, 컴퓨팅 시스템의 사용의 검출이다.
일 실시예에서, 사용은 컴퓨팅 시스템에 의한 애플리케이션의 실행이다. 일 실시예에서, 사용은 부트 로딩 프로세스의 개시이다.
일 실시예에서, 제1항에 있어서, 디바이스 시크릿은 이벤트에 응답하여 생성되고, 이벤트는 시간 스케줄링된 이벤트이다.
일 실시예에서, 시스템은: 적어도 하나의 프로세서; 및
명령어들을 포함하는 메모리를 포함하며, 명령어들은 적어도 하나의 프로세서에: 디바이스 시크릿을 생성하는 것 - 생성하는 것은: 적어도 하나의 물리적 복제 방지 기능(PUF)에 의해, 적어도 하나의 값을 제공하는 것; 및 키 유도 기능(KDF)을 사용하여, 디바이스 시크릿을 생성하는 것으로서, 적어도 하나의 PUF에 의해 제공되는 적어도 하나의 값은 KDF에 대한 입력인 것인, 디바이스 시크릿을 생성하는 것을 포함함 -; 및 생성된 디바이스 시크릿을 컴퓨팅 디바이스의 메모리에 저장하는 것을 지시하도록 구성된다.
일 실시예에서, 명령어들은 또한, 적어도 하나의 프로세서에: 호스트 디바이스로부터 대체 커맨드를 수신하는 것; 및 생성된 디바이스 시크릿을 사용하여 생성된 공개 식별자를 호스트 디바이스에 송신하는 것을 지시하도록 구성되며; 디바이스 시크릿은 대체 커맨드를 수신하는 것에 응답하여 생성되고; 생성된 디바이스 시크릿을 저장하는 것은 이전에 저장된 디바이스 시크릿을 생성된 디바이스 시크릿으로 대체하는 것을 포함한다.
일 실시예에서, 비일시적 컴퓨터 판독 가능 저장 매체는 명령어들을 저장하며, 명령어들은 컴퓨팅 디바이스 상에서 실행될 때, 컴퓨팅 디바이스로 하여금 적어도: 적어도 하나의 물리적 복제 방지 기능(PUF)에 의해, 적어도 하나의 값을 제공하고; 키 유도 기능(KDF)을 사용하여, 디바이스 시크릿을 생성하며 - 적어도 하나의 PUF에 의해 제공되는 적어도 하나의 값은 KDF에 대한 입력임 -; 생성된 디바이스 시크릿을 메모리에 저장하게 한다.
끝맺음
비일시적 컴퓨터 저장 매체는 펌웨어(104)의 명령어들을 저장하기 위해, 또는 프로세서(143) 또는 프로세싱 디바이스(111)에 대한 명령어들을 저장하기 위해 사용될 수 있다. 명령어들이, 예를 들어, 메모리 디바이스(103) 또는 컴퓨팅 디바이스(603)의 제어기(107)에 의해 실행될 때, 명령어들로 인해 제어기(107)는 상술된 임의의 방법들을 수행하게 된다.
본 설명에서, 다양한 기능들 및 동작들은 설명을 단순화하기 위해 컴퓨터 명령어들에 의해 수행되거나 야기되는 것으로서 설명될 수 있다. 그러나, 당업자들은 이러한 표현들이 의미하는 것은 함수들이 마이크로 프로세서와 같은 하나 이상의 제어기 또는 프로세서에 의한 컴퓨터 명령어들의 실행으로부터 기인한다는 것을 인식할 것이다. 대안적으로, 또는 조합하여, 기능들 및 동작들은 소프트웨어 명령어들과 함께 또는 소프트웨어 명령어들 없이, 특수 목적 회로부를 사용하여, 이를테면 용도 특정 집적 회로(ASIC) 또는 필드-프로그래머블 게이트 어레이(FPGA)를 사용하여 구현될 수 있다. 실시예들은 소프트웨어 명령어들 없이, 또는 소프트웨어 명령어들과 조합하여 하드와이어드 회로부를 사용하여 구현될 수 있다. 따라서, 본 기술들은 하드웨어 회로부 및 소프트웨어의 임의의 특정 조합에도 제한되지 않고, 데이터 처리 시스템에 의해 실행되는 명령어들에 대한 임의의 특정 소스에도 제한되지 않는다.
일부 실시예들은 완전히 기능하는 컴퓨터들 및 컴퓨터 시스템들에서 구현될 수 있지만, 다양한 실시예들은 다양한 형태들의 컴퓨팅 제품으로서 배포될 수 있고, 실제로 배포에 행하기 위해 사용되는 기계 또는 컴퓨터 판독 가능 매체의 특정 유형에 관계 없이 적용될 수 있다.
개시된 적어도 일부 양태들은 적어도 부분적으로 소프트웨어로 구현될 수 있다. 즉, 본 기술들은 마이크로 프로세서 또는 마이크로 제어기와 같은 이의 프로세서가 ROM, 휘발성 RAM, 비휘발성 메모리, 캐시 또는 원격 저장 디바이스와 같은 메모리에 포함된 명령어들의 시퀀스들을 실행하는 것에 응답하여 컴퓨터 시스템 또는 다른 데이터 프로세싱 시스템에서 수행될 수 있다.
실시예들을 구현하기 위해 실행되는 루틴들은 "컴퓨터 프로그램들"로서 지칭되는 특정 애플리케이션, 구성요소, 프로그램, 객체, 모듈 또는 명령들의 시퀀스의 일부로서 구현될 수 있다. 컴퓨터 프로그램들은 통상적으로 컴퓨터에서의 다양한 메모리 및 저장 디바이스들에서 다양한 시간들에 설정된 하나 이상의 명령어들을 포함하고, 컴퓨터에서의 하나 이상의 프로세서에 의해 판독되고 실행될 때, 컴퓨터가 다양한 양태들을 수반하는 요소들을 실행하는데 필요한 동작들을 수행하게 한다.
유형의 비일시적 컴퓨터 저장 매체는 데이터 처리 시스템에 의해 실행될 때, 시스템이 다양한 방법들을 수행하게 하는 소프트웨어 및 데이터를 저장하기 위해 사용될 수 있다. 실행 가능한 소프트웨어 및 데이터는 예를 들어 ROM, 휘발성 RAM, 비휘발성 메모리 및/또는 캐시를 포함하는 다양한 장소들에 저장될 수 있다. 이러한 소프트웨어 및/또는 데이터의 부분들은 이러한 저장 디바이스들 중 어느 하나에 저장될 수 있다. 나아가, 데이터 및 명령어들은 중앙 집중형 서버들 또는 피어 투 피어 네트워크들로부터 획득될 수 있다. 데이터 및 명령어들의 상이한 부분들은 동일한 통신 세션에서 또는 상이한 통신 세션들에서 그리고 상이한 시간들에서 상이한 중앙 집중형 서버들 및/또는 피어 투 피어 네트워크들로부터 획득될 수 있다. 데이터 및 명령어들은 애플리케이션들의 실행 전에 전체적으로 획득될 수 있다. 대안적으로, 데이터 및 명령어들의 부분들은 실행을 위해 필요할 때 적시에 동적으로 획득될 수 있다. 따라서, 데이터 및 명령어들은 특정 시간 인스턴스에서 전체적으로 기계 판독 가능 매체 상에 있을 필요는 없다.
컴퓨터 판독 가능 저장 매체의 예들은 다른 것들 중에서도, 휘발성 및 비휘발성 메모리 디바이스들, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 플래시 메모리 디바이스들, 플로피 및 다른 착탈식 디스크들, 자기 디스크 저장 매체들, 및 광학 저장 매체들(예를 들어, 컴팩트 디스크 판독 전용 메모리(CD ROM), 디지털 다목적 디스크(DVD)들 등)과 같은 기록 가능 및 기록 불가능한 유형의 매체를 포함하지만, 이에 재한되지는 않는다. 명령어들은 전기적, 광학적, 음향적 또는 다른 형태들의 전파 신호들, 이를테면 반송파들, 적외선 신호들, 디지털 신호들 등과 같은 일시적 매체에서 구현될 수 있다. 일시적 매체는 통상적으로 명령어들을 전송하기 위해 사용되지만, 명령어들을 저장할 수 있는 것으로 간주되지는 않는다.
다양한 실시예들에서, 하드와이어드 회로부는 본 기술들을 구현하기 위해 소프트웨어 명령어들과 조합하여 사용될 수 있다. 따라서, 본 기술들은 하드웨어 회로부 및 소프트웨어의 임의의 특정 조합에도 제한되지 않고, 데이터 처리 시스템에 의해 실행되는 명령어들에 대한 임의의 특정 소스에도 제한되지 않는다.
도면들 중 일부는 특정 순서로 다수의 동작들을 도시하지만, 순서 의존적이 아닌 동작들은 재정렬될 수 있고, 다른 동작들은 결합되거나 분리될 수 있다. 일부 재순서화 또는 다른 그룹화들이 구체적으로 언급되지만, 다른 것들이 당업자들에게 명백할 것이고 따라서 대안예들의 포괄적인 리스트를 제시하지 않는다. 더욱이, 스테이지들은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 임의의 조합으로 구현될 수 있다는 것이 인식되어야 한다.
상기한 설명 및 도면들은 예시적인 것이고, 제한적인 것으로 간주되지 않아야 한다. 많은 구체적인 세부 사항들이 충분한 이해를 제공하기 위해 설명된다. 그러나, 특정 경우들에서, 설명을 모호하게 하는 것을 피하기 위해 잘 알려져 있거나 통상적인 세부 사항들은 설명되지 않는다. 본 개시에서 하나 또는 일 실시예에 대한 언급은 반드시 동일한 실시예를 언급하는 것은 아니고, 이러한 언급은 적어도 하나를 의미한다.
앞에서의 명세에서, 본 개시는 이의 특정 대표적인 실시예들을 참조하여 설명되었다. 다음의 청구항들에 제시된 바와 같이 보다 넓은 사상 및 범위로부터 벗어나지 않고 다양한 수정이 이루어질 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.
Claims (20)
- 방법으로서,
컴퓨팅 디바이스에 의해, 디바이스 시크릿을 생성하는 단계 - 상기 생성하는 단계는:
적어도 하나의 물리적 복제 방지 기능(physical unclonable function, PUF)에 의해, 적어도 하나의 값을 제공하는 단계; 및
키 유도 기능(key derivative function, KDF)을 사용하여, 상기 디바이스 시크릿을 생성하는 단계로서, 상기 적어도 하나의 PUF에 의해 제공된 상기 적어도 하나의 값이 상기 KDF에 대한 입력인 것인, 상기 디바이스 시크릿을 생성하는 단계를 포함함 -; 및
상기 생성된 디바이스 시크릿을 상기 컴퓨팅 디바이스의 메모리에 저장하는 단계를 포함하는, 방법. - 제1항에 있어서, 상기 생성된 디바이스 시크릿을 저장하는 단계는 상기 메모리에 이전에 저장된 디바이스 시크릿을 상기 생성된 디바이스 시크릿으로 대체하는 단계를 포함하는 것인, 방법.
- 제1항에 있어서, 상기 KDF는 해시, 또는 메시지 인증 코드인 것인, 방법.
- 제1항에 있어서, 호스트 디바이스와 통신하기 위해 사용되는 시크릿 키를 저장하는 단계를 더 포함하며, 상기 KDF는 메시지 인증 코드(message authentication code, MAC)이고, 상기 적어도 하나의 PUF에 의해 제공된 상기 적어도 하나의 값은 상기 MAC에 대한 제1 입력이며, 상기 시크릿 키는 상기 MAC에 대한 제2 입력인 것인, 방법.
- 제1항에 있어서, 상기 디바이스 시크릿은 이벤트에 응답하여 생성되고, 상기 이벤트는 상기 컴퓨팅 디바이스에 의해, 호스트 디바이스로부터 커맨드를 수신하는 것인, 방법.
- 제5항에 있어서, 상기 호스트 디바이스로부터 호스트 공개 키를 수신하는 단계, 상기 호스트 공개 키를 사용하여 상기 생성된 디바이스 시크릿을 암호화하는 단계, 및 상기 암호화된 디바이스 시크릿을 상기 호스트 디바이스로 송신하는 단계를 더 포함하는, 방법.
- 제6항에 있어서, 상기 암호화된 디바이스 시크릿을 상기 호스트 디바이스로 송신하는 단계 후에, 상기 메모리에서의 상기 디바이스 시크릿에 대한 판독 액세스를 영구적으로 디스에이블하는 단계를 더 포함하는, 방법.
- 제6항에 있어서, 상기 컴퓨팅 디바이스의 상기 메모리로부터 상기 디바이스 시크릿을 판독할 때 상기 디바이스 시크릿을 난독화하는 단계를 더 포함하는, 방법.
- 제5항에 있어서, 상기 컴퓨팅 디바이스에 의해 메모리에, 시크릿 키를 저장하는 단계를 더 포함하며, 상기 커맨드는 상기 컴퓨팅 디바이스에 의해, 메시지 인증 코드(MAC)를 사용하여 인증되고, 상기 시크릿 키는 상기 MAC에 대한 입력으로서 사용되는 것인, 방법.
- 제9항에 있어서, 상기 호스트 디바이스는 상기 커맨드를 인증하기 위한 서명을 송신하고, 상기 서명은 상기 MAC를 사용하여 생성되며, 상기 호스트 디바이스에 의해 생성되는 선도가 상기 MAC에 대한 입력으로서 사용되는 것인, 방법.
- 제10항에 있어서, 상기 선도는 상기 KDF에 대한 추가적인 입력인 것인, 방법.
- 제5항에 있어서, 상기 호스트 디바이스는 상기 커맨드로 사용자 패턴을 제공하고, 상기 사용자 패턴의 해시는 상기 KDF에 대한 추가적인 입력인 것인, 방법.
- 제5항에 있어서, 상기 디바이스 시크릿을 생성하는 단계 전에 상기 컴퓨팅 디바이스에 의해, 상기 커맨드를 인증하는 단계를 더 포함하는, 방법.
- 제1항에 있어서, 상기 컴퓨팅 디바이스의 고유한 식별자를 저장하는 단계를 더 포함하며, 상기 고유한 식별자는 상기 KDF에 대한 추가 입력인 것인, 방법.
- 제1항에 있어서, 상기 디바이스 시크릿은 이벤트에 응답하여 생성되고, 상기 이벤트는 상기 컴퓨팅 디바이스에 의한, 컴퓨팅 시스템의 사용의 검출인 것인, 방법.
- 제15항에 있어서, 상기 사용은 상기 컴퓨팅 시스템에 의한 애플리케이션의 실행인 것인, 방법.
- 제1항에 있어서, 상기 디바이스 시크릿은 이벤트에 응답하여 생성되고, 상기 이벤트는 시간 스케줄링된 이벤트인 것인, 방법.
- 시스템으로서,
적어도 하나의 프로세서; 및
명령어들을 포함하는 메모리를 포함하며, 상기 명령어들은 상기 적어도 하나의 프로세서에:
디바이스 시크릿을 생성하는 것 - 상기 생성하는 것은:
적어도 하나의 물리적 복제 방지 기능(PUF)에 의해, 적어도 하나의 값을 제공하는 것; 및
키 유도 기능(KDF)을 사용하여, 상기 디바이스 시크릿을 생성하는 것으로서, 상기 적어도 하나의 PUF에 의해 제공된 상기 적어도 하나의 값이 상기 KDF에 대한 입력인 것인, 상기 디바이스 시크릿을 생성하는 것을 포함함 -; 및
상기 생성된 디바이스 시크릿을 상기 컴퓨팅 디바이스의 메모리에 저장하는 것을 지시하도록 구성된 것인, 시스템. - 제18항에 있어서, 상기 명령어들은 상기 적어도 하나의 프로세서에:
호스트 디바이스로부터 대체 커맨드를 수신하는 것; 및
상기 생성된 디바이스 시크릿을 사용하여 생성되는 공개 식별자를 호스트 디바이스로 송신하는 것을 지시하도록 더 구성되며;
상기 디바이스 시크릿은 상기 대체 커맨드를 수신하는 것에 응답하여 생성되고;
상기 생성된 디바이스 시크릿을 저장하는 것은 이전에 저장된 디바이스 시크릿을 상기 생성된 디바이스 시크릿으로 대체하는 것을 포함하는 것인, 시스템. - 명령어들을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체로서, 상기 명령어들은 컴퓨팅 디바이스 상에서 실행될 때, 상기 컴퓨팅 디바이스로 하여금 적어도:
적어도 하나의 물리적 복제 방지 기능(PUF)에 의해, 적어도 하나의 값을 제공하게 하고;
키 유도 기능(KDF)을 사용하여, 디바이스 시크릿을 생성하게 하며 - 상기 적어도 하나의 PUF에 의해 제공된 상기 적어도 하나의 값이 상기 KDF에 대한 입력임 -;
상기 생성된 디바이스 시크릿을 메모리에 저장하게 하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/363,204 | 2019-03-25 | ||
US16/363,204 US11218330B2 (en) | 2019-03-25 | 2019-03-25 | Generating an identity for a computing device using a physical unclonable function |
PCT/US2020/020906 WO2020197722A1 (en) | 2019-03-25 | 2020-03-04 | Generating an identity for a computing device using a physical unclonable function |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210131444A true KR20210131444A (ko) | 2021-11-02 |
Family
ID=72607371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217034176A KR20210131444A (ko) | 2019-03-25 | 2020-03-04 | 물리적 복제 방지 기능을 사용한 컴퓨팅 디바이스에 대한 신원 생성 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11218330B2 (ko) |
EP (1) | EP3949257A4 (ko) |
JP (1) | JP2022527757A (ko) |
KR (1) | KR20210131444A (ko) |
CN (1) | CN113632417A (ko) |
WO (1) | WO2020197722A1 (ko) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11361660B2 (en) | 2019-03-25 | 2022-06-14 | Micron Technology, Inc. | Verifying identity of an emergency vehicle during operation |
US11233650B2 (en) | 2019-03-25 | 2022-01-25 | Micron Technology, Inc. | Verifying identity of a vehicle entering a trust zone |
US11387983B2 (en) * | 2019-03-25 | 2022-07-12 | Micron Technology, Inc. | Secure medical apparatus communication |
US11323275B2 (en) | 2019-03-25 | 2022-05-03 | Micron Technology, Inc. | Verification of identity using a secret key |
US11018861B2 (en) * | 2019-04-17 | 2021-05-25 | Piston Vault Pte. Ltd. | System and method for storage and management of confidential information |
US11218307B1 (en) * | 2019-04-24 | 2022-01-04 | Wells Fargo Bank, N.A. | Systems and methods for generation of the last obfuscated secret using a seed |
US11520709B2 (en) | 2020-01-15 | 2022-12-06 | International Business Machines Corporation | Memory based encryption using an encryption key based on a physical address |
US11763008B2 (en) * | 2020-01-15 | 2023-09-19 | International Business Machines Corporation | Encrypting data using an encryption path and a bypass path |
US11343139B2 (en) * | 2020-03-23 | 2022-05-24 | Microsoft Technology Licensing, Llc | Device provisioning using a supplemental cryptographic identity |
US11444771B2 (en) * | 2020-09-08 | 2022-09-13 | Micron Technology, Inc. | Leveraging a trusted party third-party HSM and database to securely share a key |
EP4012689B1 (en) * | 2020-12-11 | 2023-04-19 | PUFsecurity Corporation | Key management system providing secure management of cryptographic keys, and methods of operating the same |
CN112243011A (zh) * | 2020-12-18 | 2021-01-19 | 东方微电科技(武汉)有限公司 | 一种签名验证方法、系统、电子设备及存储介质 |
US11784827B2 (en) * | 2021-03-09 | 2023-10-10 | Micron Technology, Inc. | In-memory signing of messages with a personal identifier |
US11650914B2 (en) | 2021-08-05 | 2023-05-16 | SK Hynix Inc. | System and method for identification of memory device based on physical unclonable function |
US11741224B2 (en) * | 2021-09-20 | 2023-08-29 | Intel Corporation | Attestation with a quantified trusted computing base |
US20220029838A1 (en) * | 2021-09-22 | 2022-01-27 | Intel Corporation | Method, System and Apparatus for Protection of Multi-Die Structures |
CN116451188B (zh) * | 2023-06-16 | 2023-08-29 | 无锡沐创集成电路设计有限公司 | 一种软件程序运行安全保护方法、系统以及存储介质 |
Family Cites Families (141)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119105A (en) | 1996-06-17 | 2000-09-12 | Verifone, Inc. | System, method and article of manufacture for initiation of software distribution from a point of certificate creation utilizing an extensible, flexible architecture |
AUPP752398A0 (en) * | 1998-12-04 | 1999-01-07 | Collins, Lyal Sidney | Secure multi-point data transfer system |
EP1281124A4 (en) * | 2000-04-11 | 2004-07-14 | Richard M Mathis | METHOD AND DEVICE FOR PROTECTING AND VERIFYING COMPUTER STORAGE |
US20050268099A1 (en) * | 2000-08-22 | 2005-12-01 | Dallas Semiconductor Corporation | Security device and method |
KR100427323B1 (ko) | 2001-08-31 | 2004-04-14 | 현대자동차주식회사 | 차고문 자동 개폐 제어장치 및 방법 |
US20030147534A1 (en) | 2002-02-06 | 2003-08-07 | Ablay Sewim F. | Method and apparatus for in-vehicle device authentication and secure data delivery in a distributed vehicle network |
US7840803B2 (en) | 2002-04-16 | 2010-11-23 | Massachusetts Institute Of Technology | Authentication of integrated circuits |
US7600114B2 (en) | 2002-06-28 | 2009-10-06 | Temic Automotive Of North America, Inc. | Method and system for vehicle authentication of another vehicle |
US6977580B2 (en) | 2002-09-26 | 2005-12-20 | International Business Machines Corporation | Apparatus, system and method of securing perimeters of security zones from suspect vehicles |
US7165181B2 (en) * | 2002-11-27 | 2007-01-16 | Intel Corporation | System and method for establishing trust without revealing identity |
JP4621200B2 (ja) | 2004-04-15 | 2011-01-26 | パナソニック株式会社 | 通信装置、通信システム及び認証方法 |
CN1973480A (zh) * | 2004-04-21 | 2007-05-30 | 松下电器产业株式会社 | 内容提供系统、信息处理设备以及存储卡 |
US7573373B2 (en) | 2004-08-25 | 2009-08-11 | Hap Nguyen | Anti-carjacking apparatus, systems, and methods for hi-speed pursuit avoidance and occupant safety |
US7525435B2 (en) | 2005-08-02 | 2009-04-28 | Performance Partners, Llc | Method, apparatus, and system for securing areas of use of vehicles |
US7613891B2 (en) * | 2006-05-04 | 2009-11-03 | Intel Corporation | Methods and apparatus for providing a read access control system associated with a flash device |
US20100138652A1 (en) | 2006-07-07 | 2010-06-03 | Rotem Sela | Content control method using certificate revocation lists |
US9794247B2 (en) | 2006-08-22 | 2017-10-17 | Stmicroelectronics, Inc. | Method to prevent cloning of electronic components using public key infrastructure secure hardware device |
KR100823738B1 (ko) | 2006-09-29 | 2008-04-21 | 한국전자통신연구원 | 컴퓨팅 플랫폼의 설정 정보를 은닉하면서 무결성 보증을제공하는 방법 |
US7613915B2 (en) * | 2006-11-09 | 2009-11-03 | BroadOn Communications Corp | Method for programming on-chip non-volatile memory in a secure processor, and a device so programmed |
US9830637B2 (en) | 2007-02-23 | 2017-11-28 | Epona Llc | System and method for processing vehicle transactions |
DE602007000729D1 (de) | 2007-06-15 | 2009-04-30 | Ntt Docomo Inc | Verfahren und Vorrichtung zur Authentifizierung |
EP2300954B1 (en) * | 2008-06-24 | 2014-12-03 | NDS Limited | Security within integrated circuits |
US8761390B2 (en) | 2008-06-30 | 2014-06-24 | Gm Global Technology Operations | Production of cryptographic keys for an embedded processing device |
US8484486B2 (en) * | 2008-08-06 | 2013-07-09 | Silver Spring Networks, Inc. | Integrated cryptographic security module for a network node |
EP2359520B1 (en) | 2008-11-17 | 2019-08-14 | Intrinsic ID B.V. | Distributed puf |
JP5390844B2 (ja) * | 2008-12-05 | 2014-01-15 | パナソニック株式会社 | 鍵配布システム、鍵配布方法 |
TWM356972U (en) | 2008-12-17 | 2009-05-11 | Univ Kun Shan | Portable storage device with local and remote identity recognition function |
FR2941343B1 (fr) | 2009-01-20 | 2011-04-08 | Groupe Des Ecoles De Telecommunications Get Ecole Nat Superieure Des Telecommunications Enst | Circuit de cryptographie, protege notamment contre les attaques par observation de fuites d'information par leur chiffrement. |
US8499154B2 (en) | 2009-01-27 | 2013-07-30 | GM Global Technology Operations LLC | System and method for establishing a secure connection with a mobile device |
US8184812B2 (en) | 2009-06-03 | 2012-05-22 | Freescale Semiconductor, Inc. | Secure computing device with monotonic counter and method therefor |
DE102010011022A1 (de) * | 2010-03-11 | 2012-02-16 | Siemens Aktiengesellschaft | Verfahren zur sicheren unidirektionalen Übertragung von Signalen |
JP5612514B2 (ja) * | 2010-03-24 | 2014-10-22 | パナソニック株式会社 | 不揮発性メモリコントローラ及び不揮発性記憶装置 |
US8499155B2 (en) | 2010-03-24 | 2013-07-30 | GM Global Technology Operations LLC | Adaptive certificate distribution mechanism in vehicular networks using variable inter-certificate refresh period |
US8667265B1 (en) | 2010-07-28 | 2014-03-04 | Sandia Corporation | Hardware device binding and mutual authentication |
US20120038489A1 (en) | 2010-08-12 | 2012-02-16 | Goldshmidt Ehud | System and method for spontaneous p2p communication between identified vehicles |
JP2012118805A (ja) * | 2010-12-01 | 2012-06-21 | Sony Corp | 情報処理装置、リムーバブルストレージ装置、情報処理方法、及び情報処理システム |
US8526606B2 (en) | 2010-12-20 | 2013-09-03 | GM Global Technology Operations LLC | On-demand secure key generation in a vehicle-to-vehicle communication network |
US9467293B1 (en) * | 2010-12-22 | 2016-10-11 | Emc Corporation | Generating authentication codes associated with devices |
EP2479731B1 (en) | 2011-01-18 | 2015-09-23 | Alcatel Lucent | User/vehicle-ID associating access rights and privileges |
US20120183135A1 (en) | 2011-01-19 | 2012-07-19 | Verayo, Inc. | Reliable puf value generation by pattern matching |
KR101881167B1 (ko) | 2011-06-13 | 2018-07-23 | 주식회사 케이티 | 차량 제어 시스템 |
JP5770026B2 (ja) * | 2011-06-20 | 2015-08-26 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US8924737B2 (en) | 2011-08-25 | 2014-12-30 | Microsoft Corporation | Digital signing authority dependent platform secret |
US8700916B2 (en) | 2011-12-02 | 2014-04-15 | Cisco Technology, Inc. | Utilizing physically unclonable functions to derive device specific keying material for protection of information |
JP5710460B2 (ja) | 2011-12-16 | 2015-04-30 | 株式会社東芝 | 暗号化鍵生成装置およびプログラム |
TW201345217A (zh) | 2012-01-20 | 2013-11-01 | Interdigital Patent Holdings | 具區域功能性身份管理 |
DE102012201164B4 (de) | 2012-01-26 | 2017-12-07 | Infineon Technologies Ag | Vorrichtung und verfahren zur erzeugung eines nachrichtenauthentifizierungscodes |
US8750502B2 (en) | 2012-03-22 | 2014-06-10 | Purdue Research Foundation | System on chip and method for cryptography using a physically unclonable function |
US9591484B2 (en) | 2012-04-20 | 2017-03-07 | T-Mobile Usa, Inc. | Secure environment for subscriber device |
US20140006777A1 (en) * | 2012-06-29 | 2014-01-02 | Oslsoft, Inc. | Establishing Secure Communication Between Networks |
US10079678B2 (en) | 2012-07-24 | 2018-09-18 | Intel Corporation | Providing access to encrypted data |
US8525169B1 (en) * | 2012-08-10 | 2013-09-03 | International Business Machines Corporation | Reliable physical unclonable function for device authentication |
US9742563B2 (en) | 2012-09-28 | 2017-08-22 | Intel Corporation | Secure provisioning of secret keys during integrated circuit manufacturing |
CN104704768B (zh) | 2012-10-04 | 2018-01-05 | 本质Id有限责任公司 | 用于从用作物理不可克隆功能的存储器中生成密码密钥的系统 |
JP5967822B2 (ja) * | 2012-10-12 | 2016-08-10 | ルネサスエレクトロニクス株式会社 | 車載通信システム及び装置 |
JP5939126B2 (ja) | 2012-10-17 | 2016-06-22 | 株式会社デンソー | 車載装置および車両盗難防止システム |
US8885819B2 (en) | 2012-12-27 | 2014-11-11 | Intel Corporation | Fuse attestation to secure the provisioning of secret keys during integrated circuit manufacturing |
US8938792B2 (en) * | 2012-12-28 | 2015-01-20 | Intel Corporation | Device authentication using a physically unclonable functions based key generation system |
JP2014158105A (ja) | 2013-02-14 | 2014-08-28 | Panasonic Corp | 端末装置 |
US20140245010A1 (en) * | 2013-02-25 | 2014-08-28 | Kabushiki Kaisha Toshiba | Device and authentication method therefor |
DE102013203415B4 (de) * | 2013-02-28 | 2016-02-11 | Siemens Aktiengesellschaft | Erstellen eines abgeleiteten Schlüssels aus einem kryptographischen Schlüssel mittels einer physikalisch nicht klonbaren Funktion |
WO2014138626A1 (en) | 2013-03-08 | 2014-09-12 | Robert Bosch Gmbh | Systems and methods for maintaining integrity and secrecy in untrusted computing platforms |
US9858208B2 (en) | 2013-03-21 | 2018-01-02 | International Business Machines Corporation | System for securing contents of removable memory |
US9906372B2 (en) * | 2013-06-03 | 2018-02-27 | Intel Deutschland Gmbh | Authentication devices, key generator devices, methods for controlling an authentication device, and methods for controlling a key generator |
US9769658B2 (en) | 2013-06-23 | 2017-09-19 | Shlomi Dolev | Certificating vehicle public key with vehicle attributes |
WO2015001600A1 (ja) * | 2013-07-01 | 2015-01-08 | 三菱電機株式会社 | 機器認証システム、メーカ鍵生成装置、機器鍵生成装置、製造機器、連携認証装置、機器再生鍵生成装置、機器認証方法および機器認証プログラム |
KR101521412B1 (ko) | 2013-07-11 | 2015-05-19 | 가톨릭관동대학교산학협력단 | 인증기반 메시지 집계 프로토콜 관리시스템 |
US20150256522A1 (en) | 2013-09-16 | 2015-09-10 | Clutch Authentication Systems, Llc | System and method for communication over color encoded light patterns |
US9992031B2 (en) | 2013-09-27 | 2018-06-05 | Intel Corporation | Dark bits to reduce physically unclonable function error rates |
EP3056394B1 (en) * | 2013-10-08 | 2022-11-30 | ICTK Holdings Co., Ltd. | Vehicle security network device and design method therefor |
US9225530B2 (en) * | 2013-10-21 | 2015-12-29 | Microsoft Technology Licensing, Llc | Secure crypto-processor certification |
FR3013138B1 (fr) | 2013-11-12 | 2015-10-30 | Morpho | Procede et systeme de controle lors de l'acces ou la sortie d'une zone |
DE102013227087A1 (de) * | 2013-12-23 | 2015-06-25 | Siemens Aktiengesellschaft | Gesichertes Bereitstellen eines Schlüssels |
EP4027576B1 (en) * | 2014-01-13 | 2023-11-22 | Visa International Service Association | Efficient methods for protecting identity in authenticated transmissions |
CN104901931B (zh) | 2014-03-05 | 2018-10-12 | 财团法人工业技术研究院 | 证书管理方法与装置 |
US9147075B1 (en) | 2014-03-20 | 2015-09-29 | Juniper Networks, Inc. | Apparatus and method for securely logging boot-tampering actions |
EP3920058A1 (en) | 2014-04-09 | 2021-12-08 | ICTK Holdings Co., Ltd. | Authentication apparatus and method |
CN105337725B (zh) | 2014-08-08 | 2019-04-23 | 中国科学院数据与通信保护研究教育中心 | 一种密钥管理装置及方法 |
GB2530028B8 (en) * | 2014-09-08 | 2021-08-04 | Advanced Risc Mach Ltd | Registry apparatus, agent device, application providing apparatus and corresponding methods |
CN107004380B (zh) * | 2014-10-13 | 2020-11-13 | 本质Id有限责任公司 | 包括物理不可克隆功能的加密设备 |
US9935937B1 (en) | 2014-11-05 | 2018-04-03 | Amazon Technologies, Inc. | Implementing network security policies using TPM-based credentials |
WO2016075869A1 (ja) | 2014-11-13 | 2016-05-19 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 鍵管理方法、車載ネットワークシステム及び鍵管理装置 |
US9584329B1 (en) | 2014-11-25 | 2017-02-28 | Xilinx, Inc. | Physically unclonable function and helper data indicating unstable bits |
US9740863B2 (en) | 2014-11-25 | 2017-08-22 | Intel Corporation | Protecting a secure boot process against side channel attacks |
US9569601B2 (en) | 2015-05-19 | 2017-02-14 | Anvaya Solutions, Inc. | System and method for authenticating and enabling functioning of a manufactured electronic device |
US10057224B2 (en) * | 2015-08-04 | 2018-08-21 | Rubicon Labs, Inc. | System and method for initializing a shared secret system |
US9604651B1 (en) | 2015-08-05 | 2017-03-28 | Sprint Communications Company L.P. | Vehicle telematics unit communication authorization and authentication and communication service provisioning |
EP3332402B1 (en) * | 2015-08-06 | 2020-10-07 | Intrinsic ID B.V. | Cryptographic device having physical unclonable function |
US10402792B2 (en) | 2015-08-13 | 2019-09-03 | The Toronto-Dominion Bank | Systems and method for tracking enterprise events using hybrid public-private blockchain ledgers |
US9917687B2 (en) | 2015-10-12 | 2018-03-13 | Microsoft Technology Licensing, Llc | Migrating secrets using hardware roots of trust for devices |
CN108701276B (zh) | 2015-10-14 | 2022-04-12 | 剑桥区块链有限责任公司 | 用于管理数字身份的系统和方法 |
DE102015220227A1 (de) | 2015-10-16 | 2017-04-20 | Volkswagen Aktiengesellschaft | Verfahren und System für eine asymmetrische Schlüsselherleitung |
DE102015220224A1 (de) | 2015-10-16 | 2017-04-20 | Volkswagen Aktiengesellschaft | Verfahren zur geschützten Kommunikation eines Fahrzeugs |
EP3373508B1 (en) * | 2015-11-05 | 2020-11-04 | Mitsubishi Electric Corporation | Security device and security method |
KR101782483B1 (ko) | 2015-12-03 | 2017-10-23 | 현대오토에버 주식회사 | 차량 애드 혹 네트워크에서의 차량 인증서 생성 방법 및 장치 |
JP5991561B2 (ja) | 2015-12-25 | 2016-09-14 | パナソニックIpマネジメント株式会社 | 無線装置 |
JP6684690B2 (ja) | 2016-01-08 | 2020-04-22 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America | 不正検知方法、監視電子制御ユニット及び車載ネットワークシステム |
CA2955277C (en) | 2016-01-28 | 2020-07-07 | TrustPoint Innovation Technologies, Ltd. | System and method for certificate selection in vehicle-to-vehicle applications to enhance privacy |
DE102016205198A1 (de) * | 2016-03-30 | 2017-10-05 | Siemens Aktiengesellschaft | Nachweisen einer Authentizität eines Gerätes mithilfe eines Berechtigungsnachweises |
WO2017194335A2 (en) | 2016-05-09 | 2017-11-16 | Intrinsic Id B.V. | Programming device arranged to obtain and store a random bit string in a memory device |
WO2017217070A1 (ja) | 2016-06-17 | 2017-12-21 | Kddi株式会社 | システム、認証局、車載コンピュータ、車両、公開鍵証明書発行方法、及びプログラム |
KR102562786B1 (ko) | 2016-07-07 | 2023-08-03 | 엘지이노텍 주식회사 | 차량 운전 보조 장치 및 이를 포함하는 주차 관제 시스템 |
KR102598613B1 (ko) | 2016-07-21 | 2023-11-07 | 삼성전자주식회사 | 개인 인증 및 차량 인증 기반으로 차량 정보를 제공하는 시스템 및 방법 |
US10390221B2 (en) | 2016-07-25 | 2019-08-20 | Ford Global Technologies, Llc | Private vehicle-to-vehicle communication |
US20180060813A1 (en) | 2016-08-23 | 2018-03-01 | Ford Global Technologies, Llc | Autonomous delivery vehicle system |
JP6479724B2 (ja) * | 2016-09-02 | 2019-03-06 | 日本電信電話株式会社 | 秘密鍵同期システム、ユーザ端末及び秘密鍵同期方法 |
US10397215B2 (en) * | 2016-09-27 | 2019-08-27 | Visa International Service Assocation | Secure element installation and provisioning |
US10594702B2 (en) * | 2016-12-16 | 2020-03-17 | ULedger, Inc. | Electronic interaction authentication and verification, and related systems, devices, and methods |
EP3934203A1 (en) | 2016-12-30 | 2022-01-05 | INTEL Corporation | Decentralized data storage and processing for iot devices |
PH12017000044B1 (en) | 2017-02-13 | 2018-08-20 | Samsung Electronics Co Ltd | Vehicle parking area access management system and method |
US12020526B2 (en) | 2017-03-03 | 2024-06-25 | Ford Global Technologies, Llc | Vehicle parking control |
US11341251B2 (en) * | 2017-04-19 | 2022-05-24 | Quintessencelabs Pty Ltd. | Encryption enabling storage systems |
US10984136B2 (en) | 2017-04-21 | 2021-04-20 | Micron Technology, Inc. | Secure memory device with unique identifier for authentication |
US10783600B2 (en) | 2017-05-25 | 2020-09-22 | GM Global Technology Operations LLC | Method and system using a blockchain database for data exchange between vehicles and entities |
JP6754325B2 (ja) | 2017-06-20 | 2020-09-09 | 国立大学法人東海国立大学機構 | 車載認証システム、車載認証装置、コンピュータプログラム及び通信装置の認証方法 |
US20190027044A1 (en) | 2017-07-19 | 2019-01-24 | Aptiv Technologies Limited | Automated secured-area access system for an automated vehicle |
JP6773617B2 (ja) | 2017-08-21 | 2020-10-21 | 株式会社東芝 | 更新制御装置、ソフトウェア更新システムおよび更新制御方法 |
GB2566265B (en) * | 2017-09-01 | 2020-05-13 | Trustonic Ltd | Post-manufacture generation of device certificate and private key for public key infrastructure |
JP6903529B2 (ja) * | 2017-09-11 | 2021-07-14 | 株式会社東芝 | 情報処理装置、情報処理方法およびプログラム |
US11140141B2 (en) | 2017-09-18 | 2021-10-05 | Fiske Software Llc | Multiparty key exchange |
JP6929181B2 (ja) * | 2017-09-27 | 2021-09-01 | キヤノン株式会社 | デバイスと、その制御方法とプログラム |
CA3020431A1 (en) | 2017-10-11 | 2019-04-11 | Marc Chelnik | Vehicle parking authorization assurance system |
US10536279B2 (en) | 2017-10-22 | 2020-01-14 | Lg Electronics, Inc. | Cryptographic methods and systems for managing digital certificates |
US10812257B2 (en) | 2017-11-13 | 2020-10-20 | Volkswagen Ag | Systems and methods for a cryptographically guaranteed vehicle identity |
WO2019124953A1 (en) | 2017-12-20 | 2019-06-27 | Lg Electronics Inc. | Cryptographic methods and systems for authentication in connected vehicle systems and for other uses |
US10867058B2 (en) * | 2017-12-29 | 2020-12-15 | Niall Joseph Duffy | Method and system for protecting secure computer systems from insider threats |
US11011056B2 (en) | 2018-01-29 | 2021-05-18 | Fujitsu Limited | Fragmentation-aware intelligent autonomous intersection management using a space-time resource model |
CN108683491B (zh) * | 2018-03-19 | 2021-02-05 | 中山大学 | 一种基于加密和自然语言生成的信息隐藏方法 |
US10917237B2 (en) * | 2018-04-16 | 2021-02-09 | Microsoft Technology Licensing, Llc | Attestable and destructible device identity |
US10778661B2 (en) | 2018-04-27 | 2020-09-15 | Micron Technology, Inc. | Secure distribution of secret key using a monotonic counter |
US10742406B2 (en) | 2018-05-03 | 2020-08-11 | Micron Technology, Inc. | Key generation and secure storage in a noisy environment |
CN109525396B (zh) * | 2018-09-30 | 2021-02-23 | 华为技术有限公司 | 一种身份秘钥的处理方法、装置和服务器 |
US10326797B1 (en) * | 2018-10-03 | 2019-06-18 | Clover Network, Inc | Provisioning a secure connection using a pre-shared key |
US11482017B2 (en) | 2018-10-12 | 2022-10-25 | Micron Technology, Inc. | Method and apparatus to recognize transported passengers and goods |
US11716194B2 (en) | 2018-10-12 | 2023-08-01 | Micron Technology, Inc. | Vehicle communication for authorized entry |
US10868667B2 (en) | 2018-11-06 | 2020-12-15 | GM Global Technology Operations LLC | Blockchain enhanced V2X communication system and method |
KR20200091689A (ko) | 2019-01-23 | 2020-07-31 | 한국전자통신연구원 | 차량 통신을 위한 보안 관리 시스템, 그것의 동작 방법, 및 그것을 포함하는 차량 통신 서비스 제공 시스템의 메시지 처리 방법 |
US11233650B2 (en) | 2019-03-25 | 2022-01-25 | Micron Technology, Inc. | Verifying identity of a vehicle entering a trust zone |
US11323275B2 (en) | 2019-03-25 | 2022-05-03 | Micron Technology, Inc. | Verification of identity using a secret key |
US11361660B2 (en) | 2019-03-25 | 2022-06-14 | Micron Technology, Inc. | Verifying identity of an emergency vehicle during operation |
US11271755B2 (en) | 2019-03-25 | 2022-03-08 | Micron Technology, Inc. | Verifying vehicular identity |
-
2019
- 2019-03-25 US US16/363,204 patent/US11218330B2/en active Active
-
2020
- 2020-03-04 JP JP2021557290A patent/JP2022527757A/ja active Pending
- 2020-03-04 KR KR1020217034176A patent/KR20210131444A/ko not_active Application Discontinuation
- 2020-03-04 WO PCT/US2020/020906 patent/WO2020197722A1/en unknown
- 2020-03-04 CN CN202080024834.XA patent/CN113632417A/zh active Pending
- 2020-03-04 EP EP20778971.0A patent/EP3949257A4/en not_active Withdrawn
-
2021
- 2021-11-18 US US17/529,587 patent/US20220078035A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20200313911A1 (en) | 2020-10-01 |
EP3949257A4 (en) | 2022-12-21 |
CN113632417A (zh) | 2021-11-09 |
US20220078035A1 (en) | 2022-03-10 |
JP2022527757A (ja) | 2022-06-06 |
WO2020197722A1 (en) | 2020-10-01 |
US11218330B2 (en) | 2022-01-04 |
EP3949257A1 (en) | 2022-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11323275B2 (en) | Verification of identity using a secret key | |
US11218330B2 (en) | Generating an identity for a computing device using a physical unclonable function | |
US11962701B2 (en) | Verifying identity of a vehicle entering a trust zone | |
US11361660B2 (en) | Verifying identity of an emergency vehicle during operation | |
CN112042151B (zh) | 使用单调计数器的机密密钥的安全分发 | |
AU2017201800B2 (en) | Systems and Methods for Secure Processing With Embedded Cryptographic Unit | |
CN107077574B (zh) | 用于客户端设备的信任服务 | |
KR20210132721A (ko) | 네트워크에 액세스 시의 보안 통신 | |
AU2022311741A1 (en) | Measured restart of microcontrollers | |
KR20210134053A (ko) | 오버-디-에어 업데이트 유효성 확인 방법 | |
EP2575068A1 (en) | System and method for providing hardware-based security | |
CN115037492A (zh) | 基于在存储器装置中实施的安全特征的在线安全服务 | |
US12088581B2 (en) | Track activities of components in endpoints having secure memory devices via identity validation | |
CN115037494A (zh) | 无需预先定制端点的云服务登入 | |
CN115021950A (zh) | 用于端点的在线服务商店 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |