Self-authenticating two-dimensional barcodes
Self-authenticating two-dimensional barcodes encode primary and digital signature messages, using intensity and orientation, allowing existing decoders to verify authenticity with centralized keys, addressing quishing attacks and enhancing security in QR codes and similar formats.
Patent Information
- Application Number
- PCT/US2025/010595
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-07-03
- Filing Date
- 2025-01-07
- Publication Date
- 2026-01-08
AI Technical Summary
Existing two-dimensional barcodes, such as QR codes, are vulnerable to quishing attacks where malicious actors tamper with legitimate codes to deceive users, leading to phishing and malware installation, and current security measures like antivirus software and specialized scanners are inconvenient or limited in compatibility.
Generate self-authenticating two-dimensional barcodes that encode both a primary message and a digital signature, using intensity levels and orientations of data carrying modules, allowing existing barcode decoders to verify authenticity with public keys from a centralized signatory authority without network communication.
Provides a flexible, efficient, and widely compatible solution to authenticate barcodes, ensuring authenticity without additional software installation, and enabling seamless integration with existing applications and workflows.
Smart Images

Figure IMGF000027_0001 
Figure IMGF000028_0001 
Figure 00000052_0000
Abstract
Description
Attorney Docket No.: 096027-1474807 (2-24079-WO) SELF-AUTHENTICATING TWO-DIMENSIONAL BARCODES CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority to and the benefit of U.S. Provisional Application No. 63 / 667,428, filed July 3, 2024, which is hereby incorporated by reference in its entirety and for all purposes. FIELD
[0002] This present disclosure generally relates to encoding and decoding digital messages. More specifically, but not by way of limitation, this disclosure relates to techniques for generating and decoding self-authenticating two-dimensional barcodes that encode primary messages and secondary messages. BACKGROUND
[0003] As quick response (QR) codes become prevalent, users have become accustomed to using QR codes in a variety of applications. QR codes are commonly used to connect to online resources on a user’s smartphone. However, the increase in QR code prevalence has also led to an increase in QR-code-based phishing (referred to herein as quishing). In one example of a quishing ploy, a user provides credentials to a bad actor after being connected, via a QR code, to a fake website masquerading as the user’s bank website. In other examples, bad actors may target email users with quishing attacks because these attacks can circumvent email security systems. Quishing attacks are further performed via physical QR codes. For example, as reported by the Federal Bureau of Investigation (FBI) and the Federal Trade Commission (FTC), bad actors may tamper with legitimate physical QR codes by printing spurious QR codes and using the spurious QR codes to cover the legitimate ones (e.g., QR codes used to collect parking payments). In addition to quishing, bad actors are using QR codes to install malware, as reported by the Better Business Bureau. Additionally, there is concern of bad actors using QR codes to execute SQL or HTML injection attacks. BRIEF SUMMARY
[0004] Techniques are disclosed herein for generating and decoding self-authenticating two- dimension barcodes that encode primary messages and secondary messages.Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0005] Some embodiments include a method comprising: accessing a message associated with an external resource; accessing a digital signature for the message; and generating a two- dimensional barcode that encodes the message and the digital signature, wherein the two- dimensional barcode comprises a plurality of data carrying modules, and wherein generating the two-dimensional barcode comprises: encoding the message based on an intensity level of each data carrying module of the plurality of data carrying modules, wherein the intensity level of each data carrying module of the plurality of data carrying modules is determined based on the message; and encoding the digital signature based on the intensity level of each data carrying module of the plurality of data carrying modules and an orientation direction of each data carrying module of the plurality of data carrying modules.
[0006] In some embodiments, at least one data carrying module of the plurality of data carrying modules comprises an elongated color marker oriented in an orientation selected from among a plurality of orientations.
[0007] In some embodiments, an intensity level of a first subset of data carrying modules of the plurality of data carrying modules is greater than an intensity level of a second subset of data carrying modules of the plurality of data carrying modules, wherein the encoding the digital signature comprises, for each data carrying module of the second subset of data carrying modules selecting, from among a plurality of orientation directions, orientation directions for the second subset of data carrying modules.
[0008] In some embodiments, the two-dimensional barcode comprises at least a first color channel and a second color channel.
[0009] In some embodiments, generating the two-dimensional barcode further comprises: generating a first two-dimensional barcode associated with the first color channel based on the message and the digital signature; generating a second two-dimensional barcode associated with the second color channel based on a second message and a second digital signature; and combining the first two-dimensional barcode and the second two-dimensional barcode to generate the spatio-spectrally layered barcode.
[0010] Some embodiments include a method comprising: accessing a message associated with an external resource; accessing a digital signature for the message; and generating a first two-Attorney Docket No.: 096027-1474807 (2-24079-WO) dimensional barcode that encodes the message and the digital signature, wherein the first two- dimensional barcode is generated by: generating a second two-dimensional barcode associated with a first color channel that encodes the message; generating a third two-dimensional barcode associated with a second color channel that encodes the digital signature; and combining at least the second two-dimensional barcode and the third two-dimensional barcode to generate the first two-dimensional barcode.
[0011] In some embodiments, the digital signature is generated using the message and a private cryptographic key of a signatory authority.
[0012] In some embodiments, accessing the digital signature comprises: providing the message to the signatory authority; and receiving the digital signature from the signatory authority, wherein the signatory authority generates the digital signature using the private cryptographic key of the signatory authority.
[0013] In some embodiments, the providing the message to the signatory authority comprises sending the message to the signatory authority using a secure communication channel.
[0014] In some embodiments, the providing the message to the signatory authority comprises a message provider sending the message to the signatory authority.
[0015] In some embodiments, the message provider is pre-registered with the signatory authority.
[0016] In some embodiments, the message provider is pre-registered with the signatory authority based on an identity of the message provider and a verification of the message provider performed by the signatory authority.
[0017] In some embodiments, the method further comprises: prior to generating the two- dimensional barcode, executing an error correction coding algorithm based on the message and on the digital signature.
[0018] In some embodiments, generating the two-dimensional barcode comprises inserting a symbol in a first spatial region of the two-dimensional barcode and inserting a plurality of data carrying modules in a second spatial region of the two-dimensional barcode.Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0019] In some embodiments, the message comprises binary digit values representative of the external resource, and generating the two-dimensional barcode comprises encoding the binary digit values.
[0020] In some embodiments, the message comprises a uniform resource locator (URL) associated with the external resource.
[0021] In some embodiments, the digital signature comprises a URL fragment, and generating the two-dimensional barcode comprises: appending the URL with the URL fragment to form a modified URL; and encoding the modified URL.
[0022] In some embodiments, the two-dimensional barcode comprises a quick response code, a variant of a quick response code, a data matrix code, an Aztec code, a dual-modulating code, a channel-wise code, or a combination thereof.
[0023] Some embodiments include a method comprising: accessing an image depicting a two- dimensional barcode; decoding the two-dimensional barcode into a primary message based on an intensity level of each data carrying module of a plurality of data carrying modules in the two- dimensional barcode; decoding the two-dimensional barcode into a secondary message based on the decoding of the primary message and on an orientation direction of each data carrying module of the plurality of data carrying modules; determining whether the secondary message comprises a digital signature of the primary message using a cryptographic key; and based on an outcome of the determining whether the secondary message comprises the digital signature of the primary message, taking a policy action.
[0024] In some embodiments, at least one data carrying module of the plurality of data carrying modules comprise an elongated color marker oriented in an orientation selected from among a plurality of orientations.
[0025] In some embodiments, the two-dimensional barcode comprises at least a first color channel and a second color channel.
[0026] In some embodiments, decoding the two-dimensional barcode into the primary message and the secondary message comprises: deriving a first two-dimensional barcode associated with the first color channel and a second two-dimensional barcode associated with the second colorAttorney Docket No.: 096027-1474807 (2-24079-WO) channel; decoding the first two-dimensional barcode into the primary message and the secondary message; and decoding the second two-dimensional barcode into a second primary message and a second secondary message.
[0027] In some embodiments, deriving the first two-dimensional barcode associated with the first color channel and the second two-dimensional barcode associated with the second color channel comprises performing color interference cancelation on the two-dimensional barcode.
[0028] In some embodiments, the method further comprises: determining whether the second secondary message comprises a digital signature of the second primary message; and based on the outcome of the determining whether the secondary message comprises the digital signature of the primary message and based on an outcome of the determining whether the second secondary message comprises the digital signature of the second primary message, taking the policy action.
[0029] Some embodiments include a method comprising: accessing an image depicting a two- dimensional barcode; decoding the two-dimensional barcode into a primary message and a secondary message by: deriving a first two-dimensional barcode associated with a first color channel and a second two-dimensional barcode associated with a second color channel; decoding the first two-dimensional barcode into the primary message; and decoding the second two- dimensional barcode into the secondary message; determining whether the secondary message comprises a digital signature of the primary message using a cryptographic key; and based on an outcome of the determining whether the secondary message comprises the digital signature of the primary message, taking a policy action.
[0029] In some embodiments, deriving the first two-dimensional barcode associated with the first color channel and the second two-dimensional barcode associated with the second color channel comprises performing color interference cancelation on the two-dimensional barcode.
[0030] In some embodiments, the two-dimensional barcode is generated according to the method of any of the foregoing methods.
[0031] In some embodiments, the cryptographic key is a public cryptographic key of a signatory authority.Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0032] In some embodiments, the method further comprises: accessing a plurality of public cryptographic keys of a plurality of signatory authorities, the plurality of public cryptographic keys comprising the public cryptographic key of the signatory authority.
[0033] In some embodiments, the method further comprises: selecting, from the plurality of public cryptographic keys, the public cryptographic key of the signatory authority based on an indication of the signatory authority in the secondary message.
[0034] In some embodiments, the policy action comprises providing, via a user interface of a user device, an indication that the secondary message comprises the digital signature of the primary message.
[0035] In some embodiments, the policy action comprises providing, via a user interface of a user device, an indication that the secondary message does not comprise the digital signature of the primary message.
[0036] In some embodiments, the policy action comprises preventing connection to an external resource when the secondary message does not comprise the digital signature of the primary message.
[0037] In some embodiments, the policy action comprises providing access to an external resource when the secondary message comprises the digital signature of the primary message.
[0038] Some embodiments include a method comprising: accessing a message associated with an external resource; accessing a digital signature for the message, where the digital signature is generated using the message and a private cryptographic key of a signatory authority; and generating a first two-dimensional barcode that encodes the message and the digital signature.
[0039] Some embodiments include a method comprising: decoding a two-dimensional barcode into a primary message and a secondary message; determining whether the secondary message comprises a digital signature corresponding to the primary message using a public key of a signatory authority; and based on an outcome of the determining whether the secondary message comprises the digital signature of the primary message, taking a policy action.Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0040] In some embodiments, the digital signature is generated by the signatory authority after the signatory authority receives the primary message from a message provider that is pre- registered with the signatory authority.
[0041] Some embodiments include a system that comprises: one or more processors; and one or more memories storing instructions that, when executed by the one or more processors, cause the one or more processors to perform part or all of the operations and / or methods disclosed herein.
[0042] Some embodiments include one or more non-transitory computer-readable media storing computer-readable instructions that, when executed by one or more processors, cause a system to perform part or all of the operations and / or methods disclosed herein.
[0043] Some embodiments include an apparatus that comprises means for implementing part or all of the operations and / or methods disclosed herein.
[0044] Some embodiments include a computer program product that comprises computer instructions that, when executed by a processor, implement part or all of the operations and / or methods disclosed herein.
[0045] The techniques described above and below may be implemented in a number of ways and in a number of contexts. Several example implementations and contexts are provided with reference to the following figures, as described below in more detail. However, the following implementations and contexts are but a few of many. BRIEF DESCRIPTION OF THE DRAWINGS
[0046] FIG. 1A is a block diagram of an example of a system for decoding a self- authenticating two-dimensional barcode according to some implementations of the present disclosure.
[0047] FIG.1B is block diagram of an example of a system for generating a self-authenticating two-dimensional barcode according to some implementations of the present disclosure.
[0048] FIG. 2A illustrates an example of a self-authenticating two-dimensional barcode according to some implementations of the present disclosure.Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0049] FIG. 2B illustrates another example of a self-authenticating two-dimensional barcode according to some implementations of the present disclosure.
[0050] FIG. 2C illustrates another example of a self-authenticating two-dimensional barcode according to some implementations of the present disclosure.
[0051] FIG. 3 is a block diagram of an example of a system for generating a secondary message for a self-authenticating two-dimensional barcode according to some implementations of the present disclosure.
[0052] FIG. 4A is a block diagram of another example of a system for generating a self- authenticating two-dimensional barcode according to some implementations of the present disclosure.
[0053] FIG. 4B is a block diagram of an example of a system for decoding a self- authenticating two-dimensional barcode according to some implementations of the present disclosure.
[0054] FIG. 5A is a block diagram of another example of a system for generating a self- authenticating two-dimensional barcode according to some implementations of the present disclosure.
[0055] FIG. 5B is a block diagram of another example of a system for decoding a self- authenticating two-dimensional barcode according to some implementations of the present disclosure.
[0056] FIG. 6A is a block diagram of another example of a system for generating a self- authenticating two-dimensional barcode according to some implementations of the present disclosure.
[0057] FIG. 6B is a block diagram of another example of a system for decoding a self- authenticating two-dimensional barcode according to some implementations of the present disclosure.
[0058] FIG. 7A illustrates an example of a user device scanning a self-authenticating QR code according to some implementations of the present disclosure.Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0059] FIG. 7B illustrates another example of a user device scanning a self-authenticating QR code according to some implementations of the present disclosure.
[0060] FIG. 8 is a flowchart of an example of a method for generating a self-authenticating two-dimensional barcode some implementations of the present disclosure.
[0061] FIG. 9 is a flowchart of an example of a method for decoding a self-authenticating two- dimensional barcode some implementations of the present disclosure.
[0062] FIG. 10 illustrates an example of a computing device according to some implementations of the present disclosure. DETAILED DESCRIPTION
[0063] The present disclosure relates generally to self-authenticating two-dimensional barcodes. The self-authenticating two-dimensional barcodes may encode a primary message, which may be a link to an external resource (e.g., a webpage or other online resource). The self- authenticating two-dimensional barcode may further encode a secondary message, which may be a digital signature provided by a signatory authority. The digital signature may be generated by the signatory authority using a private key to encrypt the primary message. The signatory authority may be a trusted entity responsible for verifying a provider of the external resource (e.g., an entity that operates a website that includes the webpage or that operates the other online resource) and issuing digital signatures to the provider.
[0064] The encoding of a digital signature in a self-authenticating two-dimensional barcode can certify the self-authenticating two-dimensional barcode as authentic. In this way, a mechanism for authenticating a two-dimensional barcode is seamlessly integrated into the barcode itself. For example, a barcode decoder may decode a self-authenticating barcode to derive the primary and secondary message. The barcode decoder may be a software feature or tool built into a software application (e.g., a smartphone camera application or a barcode scanner application) or into image recognition software (e.g., Google lens). The barcode decoder may further determine whether secondary message is a digital signature of the primary message. To do so, the barcode decoder may use a public key of the signatory authority to verify the digital signature. The public key may be provided, in advance, to the barcode decoder via a trusted repository or certificate to enable the barcode decoder to directly access the public key withoutAttorney Docket No.: 096027-1474807 (2-24079-WO) communication with the signatory authority. Consequently, upon decoding the primary and secondary messages, the barcode decoder may automatically go on to determine, locally on a device on which the decoder is executing and without external communication, whether the secondary message is the digital signature of the primary message. If the secondary message is the digital signature of the primary message, the self-authenticating two-dimensional barcode is deemed authentic. Conversely, two-dimensional barcodes that do not have a digital signature from a signatory authority encoded therein can be deemed inauthentic.
[0065] Aspects of the present disclosure provide advantages over current techniques for minimizing or combatting barcode-based attacks (e.g., quishing). One current technique for combatting barcode-based attacks involves using antivirus software equipped with a barcode reader (e.g., Kaspersky) to check whether a link associated with a two-dimensional barcode is secure. This is, however, an inconvenient option as it requires a specific type of software be installed on a device used to scan a barcode. Another current technique for combatting barcode- based attacks involves using secret-function-equipped quick response codes (SQRCs) for secure transmission of private data. However, a SQRC can only be accessed with devices with specialized scanners and with access to the necessary decryption key.
[0066] In contrast to the above-mentioned techniques for minimizing barcode-based attacks, the self-authenticating two-dimensional barcodes provide a flexible solution that is compatible with many devices and software applications. For example, the self-authenticating two- dimensional barcode may be a quick response code, a variant of a quick response code, a data matrix code, an Aztec code, a dual-modulating code, a channel-wise version of a quick response code, a data matrix code, an Aztec code, or a dual-modulating code, or a combination thereof. Thus, the primary and often the secondary messages can be decoded with existing barcode decoders (e.g., a barcode decoder of a smartphone camera application, of a barcode scanner application, or of image recognition software). Additionally, the existing barcode decoders (or the software applications associated with the existing barcode decoders) can access public keys (e.g., by downloading the public key from a trusted repository). Thus, capability to extract a digital signature from the secondary message and verify authenticity of the self-authenticating two-dimensional based on the digital signature can be added to the existing barcode decoders. This, in turn, enables the self-authenticated two-dimensional barcodes to be integrated withAttorney Docket No.: 096027-1474807 (2-24079-WO) existing applications and workflows that utilize quick response codes, variants of quick response codes, dual-modulating codes, data matrix codes, Aztec codes, channel-wise versions of barcodes, other types of barcodes, or combinations thereof.
[0067] Furthermore, using a single centralized signatory authority, or a few centralized signatory authorities to obtain digital signatures for two-dimensional barcodes, enables a barcode decoder to authenticate two-dimensional barcodes utilizing only one public key (or a few public keys). This, in turn, facilitates efficient authentication of a self-authenticating two-dimensional barcode. For example, when a software application with a barcode decoder downloads the public key (or the few public keys), the barcode decoder can determine whether a given self- authenticating two-dimensional barcode is authentic without accessing the internet, and therefore without the delay of communication over a network.
[0068] These illustrative examples are given to introduce the reader to the general subject matter discussed here and are not intended to limit the scope of the disclosed concepts. The following sections describe various additional features and examples with reference to the drawings in which like numerals indicate like elements but, like the illustrative examples, should not be used to limit the present disclosure.
[0069] FIG. 1A is a block diagram of an example of a system 100a for decoding a self- authenticating two-dimensional barcode (e.g., two-dimensional barcode 110 of FIG. 1B) according to some implementations of the present disclosure. In some implementations, as shown in FIG. 1A, the system 100a includes a user device 101 and a barcode decoder 104. The barcode decoder 104 may be a software feature installed on the user device 101 that can translate one or more patterns associated with a two-dimensional barcode into readable data (e.g., a website link, contact data, or other information). The barcode decoder may be a software feature of a software application executing on the user device 101 (e.g., a camera application) or of image recognition software (e.g., Google Lens) accessible via the user device 101.
[0070] Although FIG. 1A shows the barcode decoder 104 as being part of the user device 101, in other examples the barcode decoder 104 may operate separately and be communicatively coupled with the user device 101 via a network (e.g., network 112 shown in FIG. 1B). The network 112 can be any kind of wired or wireless network that can facilitate communications among components (e.g., the user device 101 and the barcode decoder 104) of the system 100a.Attorney Docket No.: 096027-1474807 (2-24079-WO) The network 112 can include one or more public networks, one or more private networks, or any combination thereof. Additionally, the network 112 can be a local area network, a wide area network, the Internet, a Wi-Fi network, a Bluetooth® network, and the like.
[0071] To authenticate the two-dimensional barcode 110, the user device 101 may capture or receive an image 120 of the two-dimensional barcode 110. The barcode decoder 104 may then access the image 120. For example, the barcode decoder 104 may be a software feature of a camera application, a barcode scanner application, or another suitable software application executing on the user device 101 that is used to capture the image 120. Thus, the barcode decoder 104 may automatically obtain access to the image 120 once captured via the associated software application. In other examples, the barcode decoder 104 may be a software feature of image recognition software or another software tool that receives the image (e.g., as a result of a user uploading the image to the image recognition software using the user device 101). Thus, the barcode decoder 104 may automatically obtain access to the image 120 once uploaded to the image recognition software or tool.
[0072] Once the barcode decoder 104 accesses the image 120, the barcode decoder 104 may decode the two-dimensional barcode 110 using the image 120. In doing so, the barcode decoder 104 may obtain a primary message estimate 124 and a secondary message estimate 126. In one example, the self-authenticating two-dimensional barcode may be a dual-modulating QR code (e.g., self-authenticating dual-modulating QR code 202 shown in FIG. 2A). In the example, decoding the two-dimensional barcode 110 into the primary message estimate 124 is based on an intensity level of each data carrying module of the dual-modulating QR code. A data carrying module may be a smallest square element of the two-dimensional barcode 110. The intensity of each data carrying module may depend on a level of brightness. For example, the intensity of each data carrying module may depend on whether the data carrying module includes an elongated color marker (e.g., a black elliptical dot). An intensity level of data carrying modules with the elongated color maker may be lower than an intensity level of data carrying modules without the elongated color marker. By detecting an intensity level of each of the data carrying modules, the barcode decoder 104 may derive the primary message estimate 124 from the two- dimensional barcode 110. For example, the barcode decoder 104 may derive data values (e.g., a sequence of binary digit values) representative of the primary message estimate 124 byAttorney Docket No.: 096027-1474807 (2-24079-WO) translating low intensity level data carrying modules (e.g., data carrying modules with elongated color markers) to a first binary digit value (e.g., 0) and by translating high intensity level data carrying modules (e.g., data carrying modules without elongated color markers) to a second binary digit value (e.g., 1).
[0073] Additionally, in some examples, error correction coding is employed to obtain the primary message estimate 124. The use of error correction coding when encoding the two- dimensional barcode 110 is further described below with respect to FIG. 1B. The error correction coding can enable identifying and fixing of errors within data obtained from a two- dimensional barcode while decoding. Locations of the data carrying modules containing the elongated color markers may therefore be estimated based on the decoded primary message due to the use of error correction coding.
[0074] Furthermore, in the example, decoding the two-dimensional barcode 110 into the secondary message estimate 126 is based on identifying the data carrying modules in which elongated color markers are placed in the two-dimensional barcode 110. Additionally or alternatively, decoding the two-dimensional barcode 110 may include identifying the data carrying modules in which elongated color markers would have been placed by the encoder (e.g., based on the error correction coding). Decoding the two-dimensional barcode 110 into the secondary message may further be based on and on orientation directions of the elongated color markers in the two-dimensional barcode, estimated orientation directions of elongated color markers that would have been placed by the encoder, or a combination thereof.
[0075] In one example, based on the intensity level of each data carrying module, the barcode decoder 104 can detect the data carrying modules with elongated color markers. The orientation direction may then be dependent upon an orientation of the elongated color marker in each of the data carrying modules with elongated color markers. For example, the barcode decoder 104 may derive another sequence of binary digit values representative of the secondary message estimate 126 by translating elongated color markers in a first orientation direction (e.g., 0 degrees with respect to a horizonal axis) to a first binary digit value (e.g., 0) and by translating elongated color markers in a second orientation direction (e.g., 90 degrees with respect to the horizontal axis) to a second binary digit value (e.g., 1).Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0076] In another example, after the barcode decoder 104 decodes the two-dimensional barcode 110 to obtain the primary message estimate 124, the barcode decode 104 may encode the primary message estimate 124 in a similar manner as the primary message is encoded by the barcode encoder 108. This encoding of the primary message is described in further detail below with respect to FIG. 1B. By encoding the primary message estimate 124, the barcode decoder 104 may identify data carrying modules in which elongated markers would have been placed when encoding the primary message in the absence of any errors. Errors may be inadvertent (e.g., by damage to the two-dimensional barcode) deliberately introduced in a beautification process. An example of a beautification process is shown and described below with respect to FIG. 2B. Once the barcode decoder 104 identifies data carrying modules in which elongated markers would have been placed, the barcode decoder 104 may assess a numerical measure indicative of orientation directions for each of the data carrying modules. Then, the numerical measures can be decoded using error-correction to obtain the secondary message estimate 126. This process may use more than two orientation directions for encoding more than a single bit in the orientation of each elongated color marker.
[0077] After the barcode decoder 104 derives both the primary message estimate 124 and the secondary message estimate 126), the barcode decoder 104 may execute a verification algorithm 114 to determine whether the two-dimensional barcode 110 is authentic. In the verification algorithm 114, a public key 116 of a signatory authority may be used check whether the secondary message estimate 126 is a digital signature verifying the primary message estimate 224. A signatory authority may be a trusted entity responsible for verifying message providers and issuing digital signatures to be encoded in self-authenticating two-dimensional barcodes. A message provider may be an online service provider of an external resource (e.g., a webpage, digital document, or other online resource) associated with the two-dimensional barcode 110. Examples of the signatory authority include Apple and Google.
[0078] In executing the verification algorithm 114, the barcode decoder 104 may access the public key 116 and use the public key 116 to verify whether or not the digital signature included in the secondary message estimate 126 establishes the authenticity and integrity of the primary message estimate 224. For example, the secondary message estimate 126 may establish the authenticity and integrity of the primary message estimate 224 as matching the message fromAttorney Docket No.: 096027-1474807 (2-24079-WO) which the digital signature was computed with the corresponding private key 109. In another example, the verification algorithm 114 may include decrypting the digital signature included in the secondary message estimate 126 using the public key 116 and comparing the result of the decryption against a cryptographic hash of the primary message estimate 124. If the verification succeeds (e.g., if it is determined that the secondary message estimate 126 is the digital signature of the primary message estimate 124), the two-dimensional barcode 110 is deemed to be authentic. Otherwise, if it is determined that the secondary message estimate 126 is not the digital signature of the primary message, the two-dimensional barcode is deemed to be inauthentic. It should be understood that while the preceding description focused on the two- dimensional barcode 110 produced by an embodiment of the current invention, other barcodes may be provided as input for the decoding and signature verification processes. In one example, a non self-authenticating barcodes would be deemed non-authentic by the verification algorithm 114.
[0079] In some examples, the barcode decoder 104 may further take a policy action 128 based on an outcome 118 of the verification algorithm. The policy action 128 may include the barcode decoder 104 providing an indication that the secondary message estimate 126 includes the digital signature of the primary message estimate 124. The indication may be provided via a user device. An example user interface displaying an indication that the that a secondary message estimate includes a digital signature of a primary message estimate is shown and described below with respect to FIG. 7A. Additionally, the policy action 128 may include the barcode decoder 104 providing an indication that the secondary message estimate 126 does not include the digital signature of the primary message estimate 124. The indication may also be provided via a user device. An example user interface displaying an indication that the that a secondary message estimate does not include a digital signature of a primary message estimate is shown and described below with respect to FIG.7B.
[0080] Additionally or alternatively, the policy action 128 may include the barcode decoder 104 providing access to an external resource when the secondary message estimate 126 comprises the digital signature of the primary message estimate 124. The external resource may be a link to a webpage, a digital document, or another suitable online resource, and the primary message estimate 124 may be binary data that represents the link. Thus, the barcode decoder 104Attorney Docket No.: 096027-1474807 (2-24079-WO) can generate the link based on the primary message estimate 124. The barcode decoder 104 may then provide access to the external resource by displaying the link on the user device 101. Conversely, the policy action 128 may include preventing connection to the external resource when the secondary message estimate 126 does not comprise the digital signature of the primary message estimate 124. The barcode decoder 104 may prevent connection by not providing a link via the user device 101.
[0081] FIG. 1B is a block diagram of an example of a system 100b for generating a self- authenticating two-dimensional barcode (two-dimensional barcode) 110 according to some implementations of the present disclosure. In some implementations, as shown in FIG. 1B, the system 100b includes a message provider 103, a signatory authority 105, and a barcode encoder 108. The message provider 103, the signatory authority 105, and the barcode encoder 108 can be in communication with each other via a network 112. The network 112 can be any kind of wired or wireless network that can facilitate communications among components (e.g., the message provider 103, the signatory authority 105, and the barcode encoder 108) of the system 100b. The network 112 can include one or more public networks, one or more private networks, or any combination thereof. Additionally, the network 112 can be a local area network, a wide area network, the Internet, a Wi-Fi network, a Bluetooth® network, and the like.
[0082] To generate the two-dimensional barcode 110, the barcode encoder 108 may access a primary message 102. The primary message 102 may be associated with an external resource. The external resource may be any digital or online resource that can be accessed via a two- dimensional barcode. Examples of external resources include electronic documents, web pages, social media profiles, software applications, or the like. The primary message 102 may be a sequence of bits (e.g., binary digit values) representing a link (e.g., a URL) that can connect users to the external resource (e.g., a webpage). In other examples, the sequence of bits may represent a link to a virtual contact card, a software application, a payment portal, digital documents, or other suitable external resources. The barcode encoder 108 may receive the primary message 102 from the message provider 103. The message provider 103 may be an online service provider of the external resource. Examples of the message provider 103 can include an email provider, an E-commerce site, an online banking cite, a social media platform, or the like.Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0083] Additionally, a signatory authority 105 may receive the primary message 102 from the message provider 103. In some examples, public key cryptography infrastructure can be available to the system 100b. Using the public key cryptography infrastructure, the signatory authority 105, may create a private key 109 and a corresponding public key 116. As described above with respect to FIG. 1A, the public key 116 can be used for verifying that the secondary message estimate 126 comprises a signature verifying the primary message. In contrast, the private key 109 can be used to generate a cryptographic digital signature 106 for the primary message 102. That is, the signatory authority 105 can compute the digital signature 106 of the primary message 102 using the private key 109. As a result, the signatory authority 105 can return the cryptographic digital signature 106 of the primary message to the message provider 103 and the cryptographic digital signature 106 of the primary message 102 that can be incorporated by the message provider 103 in the secondary message 107.
[0084] The barcode encoder 108 may consequently access the secondary message 107 in addition to the primary message 102. For example, the barcode encoder 108 may receive the digital signature 106 incorporated in the secondary message 107 from the signatory authority 105 or from the message provider 103. Upon accessing the primary message 102 and the secondary message 107, the barcode encoder 108 may generate the two-dimensional barcode 110 by encoding the primary message 102 and by encoding the secondary message 107. Accordingly, the primary message 102 and the secondary message 107 may be embedded in the two- dimensional barcode 110 by the barcode encoder 108. The two-dimensional barcode 110 may be a quick response code, a variant of a quick response code, a data matrix code, an Aztec code, a dual-modulating code, a channel-wise version of one or more two-dimensional barcodes, or a combination thereof. Examples of the two-dimensional barcode 110 are shown and described below with respect to FIGS. 2A-2C. It is further described with respect to FIGS. 2A-2C how the primary and secondary messages may be encoded to generate each example of the two- dimensional barcode 110.
[0085] For example, FIG. 2A shows an example in which the two-dimensional barcode 110 is a dual-modulating barcode 202. FIG. 2A further shows a zoomed-in region 204 of the dual- modulating barcode 202 to highlight spatial details of the dual-modulating barcode 202. Similar to a traditional QR code, synchronization and alignment patterns as well as underlying geometryAttorney Docket No.: 096027-1474807 (2-24079-WO) of data carrying modules in a dual-modulating barcode may carry data. In contrast to a traditional QR code, in which each module is either entirely a first color (e.g., white or empty) or entirely another color (e.g., black), each module of the dual-modulating barcode 202 is either white (e.g., empty) or carries an elongated color marker of varying orientation.
[0086] The data carrying modules with elongated color markers are darker than those without elongated color markers. For example, data carrying module 206a is darker than adjacent module 206b in the dual-modulating barcode 202. Accordingly, data carrying modules with elongated color markers have a different (e.g., a lower) intensity than those without. The variation in intensity may carry the primary message 102. For example, encoding the primary message 102 in the dual-modulating barcode 202 may include setting an intensity of each data carrying module of the dual-modulating barcode 202. More specifically, the sequence of bits representing the external resource (e.g., a URL or other suitable online resource) may be encoded in the dual- modulating barcode 202 via the intensity of each of the data carrying modules. The encoding of the primary message in the intensity may be compatible with existing monochrome barcode readers and thus an advantage of encoding the primary message in the intensity is that the primary message can be read by legacy readers, providing backward compatibility.
[0087] Additionally, the elongated color markers can be in varying orientations. For example, one data carrying module of the dual-modulating barcode 202 includes a first elongated color marker 208a in a first orientation while another data carrying module includes a second elongated color marker 208b in a second orientation. The variations in orientation of the elongated color markers may carry the secondary message 107. For example, encoding the secondary message 107 in the dual-modulating barcode 202 may include setting an orientation of each elongated color marker of each data carrying module comprising an elongated color marker. More specifically, a sequence of bits representing the secondary message 107 may be encoded in the dual-modulating barcode 202 via the orientations of the elongated color markers.
[0088] Moreover, in some examples, error correction coding may be incorporated by the barcode encoder 108 during the generation of the two-dimensional barcode 110. The error correction coding may be incorporated for both the primary message 102 and secondary message 107. The error correction coding may involve executing an error coding algorithm (e.g., a Reed- Solomon error correction coding algorithm) on the primary message 102, the secondary messageAttorney Docket No.: 096027-1474807 (2-24079-WO) 107, or the combination thereof. The executing of the error correction coding algorithm can add redundant data to the primary message 102, the secondary message 107, or the combination. As such the redundant data can be encoded by the barcode encoder 108 when encoding the primary message 102, when encoding the secondary message 107, or the combination thereof. This, in turn, enables error detection and correction in the case of incorrect or missing data during decoding. That is, a barcode decoder (e.g., the barcode decoder 104 shown in FIG. 1A) may recover the primary and secondary messages of a two-dimensional barcode even if there are one or more errors in some of the data carrying modules. The errors may be caused by various sources such as physical damage to a physical copy of the two-dimensional barcode 110, the barcode decoder 104 receiving a low-quality image of the two-dimensional barcode 110, errors made during the encoding of one or both of the messages, or the like.
[0089] Error may also result from a “beautification process” being performed on the two- dimensional barcode 110. In the beautification process, a symbol can be inserted into a spatial region of the two-dimensional barcode. As such, the spatial region of the two-dimensional barcode 110 may be cannibalized and replaced by the symbol (e.g., a logo or another image). In some examples, the barcode encoder 108 may perform the beautification process after generating the two-dimensional barcode 110. FIG. 2B shows an example of a beautified version 210 of the dual-modulating barcode 202, which includes a symbol 212 in a center of the dual-modulating barcode 202. Despite the cannibalization of the data carrying modules in the relatively small spatial region of the two-dimensional barcode 110, a beautified version (e.g., beautified version 210) can be decoded and authenticated (e.g., by the barcode decoder 104) due to the implementation of error correction coding.
[0090] Additionally, FIG. 2C shows an alternative example in which the two-dimensional barcode 110 is a standard quick response (QR) code 214. In this example, the barcode encoder 108 may embed the primary message 102 and the secondary message 107 in the QR code 214 using a primary message 102 (which in this case is a URL) that is appended with the secondary message 107. To do so, the URL may be modified by adding the secondary message 107 to the URL as a URL fragment. The URL fragment may be by added by concatenating the URL fragment at the end of the URL. Thus, in this example, the barcode encoder 108 may access the primary message 102 and the secondary message 107 by accessing the primary messageAttorney Docket No.: 096027-1474807 (2-24079-WO) appended with the secondary message. The primary message appended with the secondary message may include the sequence of bits representing the URL and may further include a sequence of bits representing the URL fragment at the end of the URL. Due to the primary message 102 and the secondary message 107 being combined into the appended primary message, the barcode encoder 108 can generate the standard QR code 214 that encodes both the primary message 102 and the secondary message 107.
[0091] When the standard QR code 214 is read (e.g., decoded) by the barcode decoder 104, the barcode decoder can use the URL fragment to authenticate the URL. That is, the barcode decoder 104 may estimate a secondary message from sequence of bits corresponding to the URL fragments. Then, the barcode decoder 104 may use the public key 116 to determine whether the estimated secondary message provides a digital signature 106 of the primary message 102. Additionally, when the URL link associated with the standard QR code 214 is selected by a user of a user device, a server hosting the external resource (e.g., a website) pointed to by the URL may ignore the URL fragment at the end. Therefore, the URL fragment is unlikely to interfere with the connection to the external resource via the URL while enabling authentication of the standard QR code 214.
[0092] FIG. 3 is a block diagram of an example of a system 300 for generating the secondary message 107 for a self-authenticating two-dimensional barcode (e.g., two-dimensional barcode 110) according to some implementations of the present disclosure. As shown in FIG. 3, the system 300 includes the message provider 103, the signatory authority 105, and a secure communication channel 308.
[0093] In some examples, the message provider 103 may generate the digital signature 106 to include as the secondary message 107 in the two-dimensional barcode 110. In such examples, the message provider 103 generates the digital signature 106 using an internal private key. The internal private key can be a private key that the message provider 103 itself owns. To enable the barcode decoder 104 to decode the two-dimensional barcode 110 when the digital signature 106 is generated using the internal private key, the message provider 103 may further provide the barcode decoder 104 with access to a public key. The public key may also be owned by the message provider 103. If more than one message provider generates digital signatures for two- dimensional barcodes using internal private keys, the barcode decoder 104 may have to beAttorney Docket No.: 096027-1474807 (2-24079-WO) provided access to each of the corresponding public keys of the message providers. Consequently, to decode one of the two-dimensional barcodes, the barcode decoder 104 may obtain an identity of a signatory authority (which in this case is one of the message providers). The barcode decoder 104 can then use one or more public keys provided by that message provider to verify the digital signature.
[0094] In other examples, an entity separate from the message provider 103 (e.g., signatory authority 105) may generate the digital signature 106. In such examples, the message provider 103 can pre-register, via a pre-registration process, with the signatory authority 105. In the pre- registration process, the message provider 103 may generate the primary message 102 and transmit the primary message 102 to the signatory authority 105 via a secure communication channel 308. The secure communication channel 308 may be any suitable communication channel that enables transmission of data in an encrypted or otherwise protected manner. Examples of the secure communication channel 308 include HTTPS, a VPN, SSH, TLS / SSL encrypted communication, etc.
[0095] As part of the pre-registration process, the signatory authority 105 may further perform message provider verification 312 to verify an identify of the message provider 103. The identify of the message provider 103 may be verified using existing public key cryptography infrastructure, secure communication protocols (e.g., HTTPS), or a combination thereof. For example, a digital certification provided by the signatory authority 105 to the message provider 103 may be used to verify the identity of the message provider 103. In another example, a private key provided by the signatory authority 105 to the message provider 103 may be used to verify the identity of the message provider 103. Other techniques for identity verification are also possible within the scope of the present disclosure. If the message provider verification 312 by the centralized signatory authority is unsuccessful (e.g., if the identity of the message provider 103 is not able to be verified), the pre-registration process may fail and the signatory authority 105 may transmit an indication of pre-registration failure 314 to the message provider 103.
[0096] Alternatively, if the message provider verification 312 by the signatory authority 105 is successful (e.g., if the identity of the message provider 103 is verified), the centralized signatory authority may generate the digital signature 106 using the private key 109 belonging to the signatory authority 105 and the primary message 102. The signatory authority 105 may furtherAttorney Docket No.: 096027-1474807 (2-24079-WO) transmit the digital signature 106 to the message provider 103 via the secure communication channel 308. The digital signature 106 may then be incorporated in the secondary message 107 encoded in the two-dimensional barcode 110. In other examples, the signatory authority 105 may generate the two-dimensional barcode 110 by, after generating the digital signature 106, encoding the primary message 102 and the digital signature 106 in the two-dimensional barcode 110. The signatory authority 105 may then transmit the two-dimensional barcode 110 to the message provider 103 via the secure communication channel 308.
[0097] When the signatory authority 205 providing the digital signature 106 is a separate entity (also referred to herein as a centralized signatory authority), the authenticity of the two- dimensional barcode 110 can be established using a public key (e.g., public key 116) of the signatory authority 105. Thus, the barcode decoder 104 may be provided access to one or more public keys associated with the centralized signatory authority. Consequently, if the signatory authority 105 is used by more than one message provider to obtain digital signatures for two- dimensional barcodes, the barcode decoder 104 may be able to decode and authenticate any of the two-dimensional barcodes using the one or more public keys associated with the signatory authority 105.
[0098] Moreover, in some examples, more than one message provider may use a few different signatory authorities to obtain the digital signatures. In such examples, the barcode decoder 104 can be provided access to public keys for each of the different centralized authorities. As a result, the barcode decoder 104 may declare a two-dimensional barcode to be authentic if a secondary message can be authenticated (e.g., determined to be a digital signature of a corresponding primary message) with any of the public keys available to the barcode decoder 104. Alternatively, a portion of the secondary message (e.g., a few binary digital values) may be used the barcode decoder 104 to identify which of the different centralized signatory authorities provided the digital signature. The barcode decoder 104 may then to proceed to use a public key associated with the identified signatory authority for verification of the digital signature included in the secondary message.
[0099] The use of a centralized signatory authority to obtain digital signatures may be particularly advantageous because Apple and Google are providers of mobile operating systems for a majority of smartphone and tablet devices and are providers of native camera apps withAttorney Docket No.: 096027-1474807 (2-24079-WO) built in barcode readers. Thus, public keys registered to Apple and Google may be easily accessed by the built-in barcode readers of devices provided by Apple and Google, such as the camera apps on iPhones and Android smartphones. Accordingly, with Apple and Google serving as two centralized signatory authorities in examples of the present disclosure, public keys registered to these companies can be used to conveniently authenticate two-dimensional barcodes.
[0100] Turning now to a particular example of a self-authenticating two-dimensional barcode, which was developed and tested in accordance with the present disclosure. In the particular example, the self-authenticating two-dimensional barcode developed and tested was a dual- modulating barcode. The dual-modulating barcode was tested in two scenarios: one in which the dual-modulating barcode was displayed on a screen and another in which the dual-modulating barcode was printed on paper.
[0101] An elliptic-curve-cryptography-based Edwards-curve Digital Signature Algorithm (EdDSA) that is part of the National Institute of Standards and Technology (NIST) Digital Signature Standard (DSS) was used in the particular example to generate a digital signature for the dual-modulating barcode. Additionally, OpenSSL open-source cryptography toolkit was used to generate a private-public key pair for the particular example, in which the private key was used for the digital signature generation and the public key was used for authentication of the dual-modulating barcode.
[0102] The 256-bit private key generated was (in hexadecimal encoding): AF:83:B8:D4:4B:33:5F:ED:B5:DC:04:DD:D6: 38:DE:35:48:D1:06:74:25:9A:1E:74:28:5D: 73:23:15:76:43:C0
[0103] Additionally, the corresponding 256-bit public key generated was: 3C:46:63:44:FA:61:45:FF:EB:1A:21:F8:1A: 5C:B2:EC:91:A0:E4:1E:3F:34:EA:99:EC:E5: 02:EE:71:B6:AD:C8.Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0104] Moreover, in the particular example, a bank URL was used as the primary message and a secondary message (i.e., the digital signature) was obtained using the bank URL, the private key, and the EdDSA. The specific URL was “https: / / secure.bank----.com / login / sign- in / signOnV2Screen.go,”, which in hexadecimal format is: 68:74:74:70:73:3A:2F:2F:73:65:63:75:72: 65:2E:62:61:6E:6B:6F:66:61:6D:65:72:69: 63:61:2E:63:6F:6D:2F:6C:6F:67:69:6E:2F: 73:69:67:6E:2D:69:6E:2F:73:69:67:6E:4F: 6E:56:32:53:63:72:65:65:6E:2E:67:6F.
[0105] The 512-bit digital signature for the primary message computed with the private key using the EdDSA algorithm was: EE:CF:A9:26:75:68:BD:38:A7:48:3A:09:D7: A0:18:1B:2A:59:71:E3:65:5B:98:4F:0E:66: AA:1D:95:D2:C7:8D:9C:A6:70:4A:C5:69:20: D0:B0:34:3B:EA:14:15:80:CF:49:53:20:AA: 51:38:D5:C2:11:D1:15:55:9B:A1:2D:02.
[0106] Additionally, error correction coding was implemented for the primary message. The error correction coding can correct approximately 15% errors. The resulting primary message was: 44:76:06:E2:87:D6:47:96:47:E2:07:F7:33: 36:A2:96:F2:76:F7:E4:36:F6:56:E5:37:63: 57:25:26:36:52:37:E6:26:26:56:16:56:E6: E2:B6:E6:F6:76:66:F0:16:EC:D6:11:57:EC: 26:11:96:EC:36:11:12:EC:E6:11:36:EC:F6: 11:D2:EC:F6:11:C6:EC:F6:11:76:EC:96:11: E2:EC:F7:11:36:EC:96:11:E2:0A:71:38:B1: DB:69:4F:B2:1F:F7:FB:20:6F:58:3C:F7:1E: 80:0B:47:84:D1:3C:31:73:D6:05:A4:76:25:Attorney Docket No.: 096027-1474807 (2-24079-WO) 23:B1:DD:9A:57:D7:6F:7C:21:C8:21:64:A7: AD:01:20:DF.
[0107] Error correction coding was also implemented for the secondary message. The error correction coding implemented for the secondary message had a code rate of 0.42. The resulting secondary message was: EA:35:CD:23:31:15:60:76:6C:89:24:ED:E6: 61:D7:80:48:78:35:04:78:AD:04:2C:31:6E: EF:53:0A:29:DA:19:95:87:2D:57:1E:E9:A8: 34:16:A8:0D:39:69:AB:73:C7:4C:CA:70:91: BF:EF:28:E3:24:32:44:D7:DC:85:18:C7:1D: 99:3C:87:71:D8:82:14:09:E4:1B:36:E6:B3: E2:82:35:37:65:BB:72:28:67:E8:FF:CC:3E: B1:4D:72:14:66:B2:A1:73:C4:C7:29:6A:69: 3F:3C:8A:0D:C2:6F:ED:63:BA:34:0D:49:5A: DA:67:E4:A5:47:00:08:E9:5E:14:78:03:C1: 99:69:6D:4B:1B:C6:00:12:11:11:DA:AA:55: A5:5B:C6:27:FA:18:CA:2B:F9.
[0108] The dual-modulating barcode was then generated by a barcode encoder. The primary and secondary messages with the error correction coding implemented respectively were encoded in the dual-modulating barcode. The resulting dual-modulating barcode was dual- modulating barcode 202 shown in FIG. 2A. The dual-modulating barcode 302 has 1379 data carrying modules, with 610 of the data carrying modules including an elongated color marker (e.g., a black elliptical dot). Additionally, the secondary message was embedded in the dual- modulating barcode 302 using 4-ary orientation modulation and an eccentricity parameter of 0.5.
[0109] In the particular example, to test the dual-modulating barcode 302 in the scenario in which the dual-modulating barcode was displayed on a screen, a Samsung Galaxy J3 smartphone was chosen for its relatively low 294 pixels per inch (PPI) screen spatial resolution. For the scenario in which the dual-modulating barcode was printed, a Brother MFC-J1205W printer wasused to produce three different sizes of the dual-modulating barcode: 1.00 1.00, 0.75 0.75Attorney Docket No.: 096027-1474807 (2-24079-WO) and 0.50 0.50 inches. Moreover, in the particular example, images of both the displayed-on-screen and printed version of the dual-modulating barcode 302 were captured using a Samsung Galaxy S6 camera having a resolution of 3984 2988 pixels. Images of the displayed-on-screen version of the dual-modulating barcode were captured from capture distances of 12 inches (in.), 15 in., and 18 in. Images of the printed version of the dual-modulating barcode was captured from capture distances of 9 in. and 12 in. Each of the image’s captures were stored in JPEG format with a quality factor of 95.
[0110] In the particular example, estimates of the primary and secondary messages, respectively were then obtained using a dual-modulating quick response code decoder. The signature verification function for EdDSA in the OpenSSL toolkit was used with the public key to determine whether the digital signature included in the estimated secondary message verified the authenticity of the estimated primary message for each captured image. Results from the experiments are summarized below in Tables I and II for each of the capture distances for the displayed-on-screen versions and different size printed versions of the dual-modulating barcode, respectively.
[0111] As shown in Table I, in the particular example, the signature verification successfully established the authenticity of the displayed-on-screen version of the dual-modulating barcode for all the capture distances considered. Table I:
[0112] Alternatively, for the printed version of the codes, the results shown below in Table II indicate that for the 1.00 1.00 in. and the 0.75 0.75 in. versions, the signature verificationsuccessfully established the authenticity of the SDMQR codes for the capture distances of 9Attorney Docket No.: 096027-1474807 (2-24079-WO) inches and 12 in. However, signature verification failed for the 0.5 0.5 in. version at thecapture distances of 9 and 12 inches. Upon further examination, it was found that the primary message decoded correctly from the images of the 0.5 0.5 in. versions of the dual-modulatingbarcode whereas the secondary message did not. Because the orientation-modulation of elongated color markers carries the secondary message in this particular example, the secondary message relies on higher spatial resolution. Thus, an additional capture distance of 6 in. was used for the 0.5 0.5 in. version. As shown in Table II, it was found that the signature verificationwas able to establish the authenticity of the 0.5 0.5 in. version at the capture distance of 6inches. Table II:
[0113] It is important to note that the experiments performed in accordance with the particular example used a relatively low-end smartphone display and also a relatively low-end printer, thereby demonstrating that the dual-modulating barcode can be used with current commodity devices. Smartphone display resolutions typically increase with the progression of time and printers with higher resolutions are also readily available. Therefore, the particular example demonstrates that a self-authenticating dual-modulating barcode is well suited for immediate practical deployment in both physical and digital forms.Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0114] Although the above particular example utilized EdDSA, alternative digital signature algorithms could also be used. For example, the more prevalent RSA public-key cryptosystem digital signature algorithm (DSA) may be utilized. In another variation, private-key digital signature algorithms may alternatively be utilized. Current algorithms provide comparable security, with shorter signature lengths for private-key DSAs compared to public-key DSAs. A future public / private DSA with a shorter digital signature length could also be utilized within the scope of the present disclosure.
[0115] FIG. 4A is a block diagram of another example of a system 400a for generating a self- authenticating two-dimensional barcode according to some implementations of the present disclosure. FIG. 4A depicts a self-authenticating spatio-spectrally layered (SSL) two- dimensional barcode 412, specifically a self-authenticating SSL-Aztec (SSSLA) code. A SSL two-dimension barcode may be a color barcode in which dual-modulating two-dimensional barcodes are embedded in each of a set of color channels. SSL two-dimensional barcodes may therefore represent an amalgamation of channel-wise (i.e., per color channel) color barcodes with dual-modulation. In the amalgamation, the color channels constitute the spectral layers; and for each channel, a primary and a secondary message may be embedded via spatial layers (e.g., dual modulation).
[0116] In the particular example shown in FIG. 4A, red, green, and blue color channels are used. As shown, for each color channel, the barcode encoder 408 receives a different digital signature (e.g., one of digital signatures 406a-c), which are computed using a respective one of private keys 404a-c. Moreover, for each color channel, the barcode encoder 408 receives a different primary message (e.g., one of primary messages 402a-c). The barcode encoder 408 then embeds each pair of primary and second message in the respective barcodes 410a-c for each of the color channels.
[0117] The data included in the primary and secondary message and embedded in the barcodes 410a-c may be obtained using error correction coding. The data may be embedded (e.g., encoded) via the presence / absence of an elongated color marker in data carrying modules of each of the barcodes 410a-c and the secondary data may be encoded via the orientation of the elongated color markers in at least some of the data carrying modules of each of the barcodesAttorney Docket No.: 096027-1474807 (2-24079-WO) 410a-c. Once the primary and secondary messages are encoded to generate the barcodes 410a-c, the barcodes may be combined to generate the SSL two-dimensional barcode 412.
[0118] Other color channels or a different number of color channels may be used in other examples. Additionally, different types of two-dimensional barcodes (e.g., QR codes, variants of QR codes, etc.) can be used in one or more of the color channels in other examples. In one particular example, the primary messages 402a-c may be the boarding pass information and the secondary message may be a digital signatures of the primary messages computed using a private key of a signatory authority. The primary message may include other information, such as a URL, in other examples.
[0119] FIG. 4B is a block diagram of another example of a system 400b for decoding a self- authenticating two-dimensional barcode according to some implementations of the present disclosure. FIG. 4B in particular depicts authentication of the SSL two-dimensional barcode 412. In FIG. 4B, color interference cancellation 418 is performed on a captured image 416 of the SSL two-dimensional barcode 412 to enable the barcodes 410a-c for each color channel to be recovered. A barcode decoder 420 can then decode the barcodes 410a-c to derive primary message estimates 422a-c and secondary message estimates 424a-c. Subsequently, the barcode decoder 420 can use public keys 426a-c to determine whether the secondary message estimates 424a-c are digital signatures of the primary message estimates 422a-c. If the secondary message estimates 424a-c are determined by the barcode decoder 420 to be digital signatures of the primary message estimates 422a-c, the SSL two-dimensional barcode in image 416 can be deemed authentic.
[0120] In examples in which the self-authenticating two-dimensional barcodes are SSL two- dimensional barcodes, the barcodes for the individual color channels may be independent of each other. This independence allows for flexibility in the creation of the SSL two-dimensional barcodes as signatory authorities do not need to coordinate their efforts. Instead, signatory authorities may simply contribute individual digital signatures. Moreover, in some examples, data capacity across the color channels can be combined for the primary message, the secondary messages, or the combination thereof. The combination of data capacity across channels can enable encoding of longer messages, which can be particularly useful for digital signature schemes that produce longer signatures, such as those based on the common RSA cryptosystem.Attorney Docket No.: 096027-1474807 (2-24079-WO) The proposed self-authenticating spatio-spectrally layered framework therefore inherits the significant flexibility and advantages of both channel-wise and dual-modulating two-dimensional barcodes.
[0121] FIG. 5A-5B show an additional example in which the self-authenticating two- dimensional barcode is a self-authenticating spatio-spectrally layered data matrix (SSSLDM) barcode 512. As shown in system 500a, the barcode encoder 508 receives a digital signature (e.g., one of digital signatures 506a-b) for each color channel (red and green). The digital signature 506a-b may be computed using a respective one of private keys 504a-b. Moreover, for each color channel, the barcode encoder 508 receives one of primary messages 502a-b. The barcode encoder 508 then embeds each pair of primary and second message in the respective barcodes 510a-b for each of the color channels.
[0122] Additionally, as shown in FIG. 5B, color interference cancellation 518 can be performed on the captured image 516 of the SSSLDM barcode 512 to enable the barcodes 510a- b for each color channel to be recovered. Then, a barcode decoder 520 can decode the barcodes 510a-b to derive primary message estimates 522a-b and secondary message estimates 524a-b. The barcode decoder 520 can further use public keys 526a-b to determine whether the secondary message estimates 524a-b are digital signatures of the primary message estimates 522a-b. If the secondary message estimates 524a-b are determined by the barcode decoder 520 to be digital signatures of the primary message estimates 522a-b, the SSSLDM barcode in image 516 can be deemed authentic.
[0123] FIGS. 6A-6B show an additional example in which the self-authenticating two- dimensional barcode is a self-authenticating channel-wise barcode, specifically a channel-wise color QR code 612. In FIG. 6A, the barcode encoder 608 encodes primary message 602 in the green channel to create a first barcode 610a and encodes a digital signature 606 in the blue channel to generate a second barcode 610b. The first and second barcodes 610a-b may then be combined to generate the channel-wise color barcode 612. In the example of FIG. 6A, the primary message 602 may be a URL and the secondary message may be a digital signature of the primary message 602 computed using the primary message 602 and private key 604.
[0124] Then, in FIG. 6B, color interference cancelation is used to recover the first and second barcodes 610a-b. The barcode decoder 620 may derive a primary message estimate 622 from theAttorney Docket No.: 096027-1474807 (2-24079-WO) first barcode 610a and secondary message estimate from the second barcode 610b. The barcode decoder 620 can further use public key 626 to determine whether the secondary message estimate 624 is a digital signature of the primary message estimate 622. If the secondary message estimate 624 is determined by the barcode decoder 620 to be the digital signature of the primary message estimate 622, the SSSLDM barcode 616 can be deemed authentic. The barcode decoder 620 may be a monochrome QR code reader.
[0125] The channel-wise barcode design of FIGS. 6A-6B may also provide the advantage of backward compatibility with conventional monochrome barcode readers for the primary message. For example, because the green channel strongly modulates the intensity whereas the blue channel contributes only a minor intensity variation, when the channel-wise barcode 612 is presented to a conventional monochrome barcode reader, the primary message can be decoded.
[0126] FIG. 7A illustrates an example of a user device 700a scanning a two-dimensional barcode 703 (e.g., a self-authenticating QR code) according to some implementations of the present disclosure. In FIG. 7A, the two-dimensional barcode 703 is a dual-modulating quick response (DMQR) code. The DMQR code may be intensity-modulated and orientation- modulated. Such dual modulation enables encoding of more than one message (e.g., a primary message and a secondary message) in the two-dimensional barcode 703. In other examples, the two-dimensional barcode 703 may be quick response code, another variant of a quick response code, a data matrix code, an Aztec code, a dual-modulating version of these barcodes, or another suitable type of two-dimensional barcode in which a primary and secondary message may be encoded.
[0127] In the example shown, a primary message encoded by the two-dimensional barcode 703 is a universal resource locator (URL) link 707 to an external resource. The external resource, in this example, is a login webpage. Moreover, in the example of FIG. 7A, a secondary message encoded by the two-dimensional barcode 703 is a digital signature computed using a private key and the primary message.
[0128] The user device 700a is a smartphone. However, any electronic device with a video camera can be used to read a two-dimensional barcode in accordance with the present disclosure (e.g., a laptop, tablet, augmented reality glasses / headset, or the like). The user device 700a is being used to scan (e.g., capture an image) of the two-dimensional barcode 703. MoreAttorney Docket No.: 096027-1474807 (2-24079-WO) specifically, a user interface 708 shown in FIG. 7A is associated with a camera application installed on the user device 700a. Due to the user device 700a being used to scan the two- dimensional barcode 703, decoding software (also referred to herein as a barcode decoder) associated with the camera application can read (e.g., decode) the two-dimensional barcode 703. In other examples, the decoding software may be associated with a barcode scanner application, image recognition software (e.g., Google Lens), or other suitable software applications or features which can be installed on the user device 700a and used for reading and decoding two- dimensional barcodes.
[0129] As a result of the decoding software reading the two-dimensional barcode 703, a primary message and a secondary message can be derived. In this example, a service provider (e.g., a financial institution or other suitable entity) can pre-register URLs (including the URL associated with the URL link 707) or other online resources with a centralized signatory authority. Examples of the centralized signatory authority include Google and Apple. In return, the service provide can obtain digital signatures for use in two-dimensional barcodes corresponding to the pre-registered URLs. A system and process for pre-registering a URL or other online resource and subsequently obtaining a digital signature is shown and described in further detail above with respect to FIG. 3. By pre-registering the URLs or other online resources with the centralized signatory authority, a single or a few (e.g., 10 or less) public keys can be made available to the decoding software for verifying the authenticity of the two-dimensional codes. In other words, by pre-registering the URLs or other online resources with the centralized signatory authority, the decoding software can authenticate a variety of two-dimensional barcodes with access to only the single or few public keys. This, in turn, enables convenient implementation and use of self-authenticating two-dimensional barcodes.
[0130] Accordingly, the decoding software may access a public key for the centralized signatory authority and use the public key to verify whether the digital signature included in the secondary message is a digital signature of the primary message. In response to verifying that the secondary message is the digital signature of the primary message, an indication of successful authentication of the two-dimensional barcode 703 can be displayed on the user interface 708. The indication, in this example, is a check mark 705, which may be shown in a color such as green. In addition, the URL link 707 can be displayed on the user interface 708. The indicationAttorney Docket No.: 096027-1474807 (2-24079-WO) of successful authentication indicates to a user of the user device that the two-dimensional barcode is legitimate and, consequently, that the URL link 707 is secure. The user may then select the URL link 707 to access the login webpage or the action may be performed automatically for the user by the user device 700a.
[0131] FIG. 7B illustrates another example of a user device 700b scanning a self- authenticating QR code according to some implementations of the present disclosure. Similar to FIG. 7A, the user may use the user device 700b to scan a two-dimensional barcode 710. As a result, the decoding software on the user device 700b may read the two-dimensional barcode 710. However, the decoding software may not be able to authenticate the two-dimensional barcode 710. For example, the decoding software may derive a primary message with a URL link 716 from the two-dimensional barcode 710, but the decoding software may not be able to derive a secondary message from the two-dimensional barcode 710. In another example, the decoding software may derive the primary message and a secondary message, but, using the public key it may be determined that the secondary message does not include a digital signature of the primary message.
[0132] Regardless, the authentication of the two-dimensional barcode 710 fails due to there not being a secondary message that includes the digital signature of the primary message in this example. As a result, the decoding software can display the URL link 716 with an indication that the authentication of the two-dimensional barcode 710 failed. The indication that the authentication of the two-dimensional barcode 710 failed may be a cross 718, which may be displayed in a color such as red. Accordingly, via the indication that the authentication of the two-dimensional barcode 710 failed, it is shown to the user that the content of the two- dimensional barcode 710 was not authenticated and, therefore, the URL link 716 associated with the two-dimensional barcode 710 may not be secure (e.g., could be part of a quishing attack). The user device 703b may limit the user from following the URL link or provide further warning and require further confirmation from the user before following the link.
[0133] FIG. 8 is a flowchart of an example of a method 800 for generating a self- authenticating two-dimensional barcode some implementations of the present disclosure. The method 800 can be implemented by a computing device such as the computing device 1000Attorney Docket No.: 096027-1474807 (2-24079-WO) shown in FIG. 10. Additionally, the method 800 can be implemented in software or hardware or any combination thereof.
[0134] At block 802, the method 800 involves accessing a message associated with an external resource. The message may include a sequence of bits (e.g., binary digit values) representative of the external resource or a link to the external resource. Additionally or alternatively, the method may comprise a uniform resource locator (URL) associated with the external resource. The external resource may be any suitable online resource corresponding to a link or other suitable connection that can be encoded into a two-dimensional barcode.
[0135] At block 804, the method 800 involves accessing a digital signature for the message. The digital signature may be generated using the message and a cryptographic key. The cryptographic key may be a private key of a signatory authority. In some examples, accessing the digital signature may include providing the message to the signatory authority and receiving the digital signature from the signatory authority. The signatory authority may generate the digital signature using the private key. Providing the message to the signatory authority may include sending the message to the signatory authority using a secure communication channel. A message provider (e.g., a provider of the external resource) may perform the sending of the message to the signatory authority. To do so, the message provider may be pre-registered with the signatory authority. The message provider may be pre-registered with the signatory authority based on an identity of the message provider and a verification of the message provider performed by the signatory authority.
[0136] At block 806, the method 800 involves generating a two-dimensional barcode usable to access the external resource by encoding the message and the digital signature. The two- dimensional barcode may include a quick response code, a variant of a quick response code, a data matrix code, an Aztec code, a dual-modulating code, a channel-wise version of one or more of these two-dimensional barcodes, or a combination thereof. Additionally, the two-dimensional barcode may include plurality of data carrying modules. The plurality of data carrying modules may include at least one elongated color marker oriented in a first orientation and at least one additional elongated color marker oriented in a second orientation that is different from the first orientation.Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0137] In some examples, the message may be encoded based on an intensity level of each of the data carrying modules with a higher intensity level (e.g., white or empty) encoding one bit value (e.g. 0) and a lower-intensity value encoding the other bit value (e.g. 1). The lower intensity level may either comprise an entirely black data carrying module, or a data carrying module that includes an elongated color marker. Additionally, the digital signature may be encoded based on the intensity level of each data carrying module of the plurality of data carrying modules and an orientation direction of each data carrying module of the plurality of data carrying modules. The orientation direction may be one of two, four, eight, sixteen, or a number therebetween possible orientation directions. In one example, an intensity level of a first subset of the data carrying modules is greater than an intensity level of a second subset of the data carrying modules. In the example, encoding the digital signature can include, for each of the second subset of the data carrying modules, selecting, from among a plurality of orientation directions, orientation directions for the first subset of data carrying modules. The orientation directions can correlate to orientations of the elongated color markers in the first subset of the data carrying modules.
[0138] In some examples, generating the two-dimensional barcode may further include inserting a symbol in a first spatial region of the two-dimensional barcode and inserting a plurality of data carrying modules in a second spatial region of the two-dimensional barcode.
[0139] Moreover, in some examples, the two-dimensional barcode is a spatio-spectrally layered barcode comprising at least a first color channel and a second color channel. In such examples, generating the spatio-spectrally layered barcode may include generating a first two- dimensional barcode associated with the first color channel based on the message and the digital signature. Additionally, generating the spatio-spectrally layered barcode may include generating a second two-dimensional barcode associated with the second color channel based on a second message and a second digital signature. Then, the first two-dimensional barcode and the second two-dimensional barcode can be combined to generate the spatio-spectrally layered barcode. Optionally, generating the spatio-spectrally layered barcode may include generating a third two- dimensional barcode associated with the third color channel based on a third message and a third digital signature and the first two-dimensional barcode, the second two-dimensional barcode, and the third two-dimensional barcode can be combined to generate the spatio-spectrally layered barcode.Attorney Docket No.: 096027-1474807 (2-24079-WO)
[0140] Alternatively, generating the spatio-spectrally layered barcode may include generating a first two-dimensional barcode associated with the first color channel based on the message, generating a second two-dimensional barcode associated with the second color channel based on the digital signature, and combining the first two-dimensional barcode and the second two- dimensional barcode to generate the spatio-spectrally layered barcode.
[0141] FIG. 9 is a flowchart of an example of a method 900 for decoding a self-authenticating two-dimensional barcode some implementations of the present disclosure. The method 900 can be implemented by a computing device such as the computing device 1000 shown in FIG. 10. Additionally, the method 900 can be implemented in software or hardware or any combination thereof.
[0142] At block 902, the method 900 involves accessing an image depicting a two-dimensional barcode. The two-dimensional barcode may be generated using the method 800 described with respect to FIG. 8. The image may be obtained via a camera of a user device which may include software or hardware to automatically detect the two-dimensional barcode in its camera’s field of view and to provide the image of the two-dimensional barcode to the decoder.
[0143] At block 904, the method 900 involves decoding the two-dimensional barcode into a primary message and a secondary message. The two-dimensional barcode may include data carrying modules, where at least one of the data carrying modules include an elongated color marker oriented in an orientation selected from among a plurality of orientations. Consequently, decoding the two-dimensional barcode into the primary message may be based on an intensity level of each of the data carrying modules, where the intensity level of each of the data carrying modules is determined by whether the data carrying module comprises an elongated color marker. Additionally, decoding the two-dimensional barcode into the digital signature may be based on the intensity level of each of the data carrying modules and on an orientation direction of each of the data carrying modules in which the decoder estimates that an elongated color marker was placed.
[0144] In some examples, the two-dimensional barcode may be a spatio-spectrally layered barcode comprising at least a first color channel and a second color channel. In such examples, decoding the two-dimensional barcode into the primary message and the secondary message may include performing color interference cancelation on the spatio-spectrally layered barcode toAttorney Docket No.: 096027-1474807 (2-24079-WO) derive a first two-dimensional barcode associated with the first color channel and a second two- dimensional barcode associated with the second color channel. Additionally, in such examples, decoding the two-dimensional barcode into the primary message and the secondary message can include decoding the first two-dimensional barcode into the primary message and the secondary message. Additionally, the second two-dimensional barcode may be decoded into a second primary message and a second secondary message. Alternatively, in such examples, decoding the two-dimensional barcode into the primary message and the secondary message can include decoding the first two-dimensional barcode into the primary message and decoding the second two-dimensional barcode into the secondary message. A two channel spatio-spectrally layered two-dimensional barcode, may advantageously use the green and blue color channels so that the intensity variation is largely determined by the green channel and common monochrome barcode readers presented with the spatio-spectrally layered barcode can directly decode the barcode in the green channel, providing backward compatibility.
[0145] At block 906, the method 900 involves determining whether the secondary message comprises a digital signature of the primary message. To determine whether the secondary message comprises the digital signature of the primary message, it may be determined whether the digital signature is based on a cryptographic key. The cryptographic key may be a public key of a signatory authority. In some examples, a plurality of public cryptographic keys of a plurality of signatory authorities may be accessed that includes the public cryptographic key of the signatory authority. In such examples, the public cryptographic key of the signatory authority can be selected based on an indication of the signatory authority in the secondary message. Moreover, in some examples, it may be determined whether the secondary message includes a valid digital signature of the primary message.
[0146] At block 906, the method 900 involves taking a policy action based on an outcome of the determination of whether the secondary message provides the digital signature of the primary message. The policy action may include providing an authenticated / not-authenticated indication to a user based on said outcome. The policy action may further comprise preventing connection to an external resource when the secondary message does not comprise the digital signature of the primary message and may comprise providing access to an external resource when the secondary message comprises the digital signature of the primary message. Additionally, in theAttorney Docket No.: 096027-1474807 (2-24079-WO) examples in which the second two-dimensional barcode is decoded into a second primary message and a second secondary message, the method may further include determining whether the second secondary message comprises a digital signature of the second primary message. Then, based on the outcome of the determining whether the secondary message comprises the digital signature of the primary message and based on an outcome of the determining whether the second secondary message comprises the digital signature of the second primary message, taking the policy action.
[0147] In some examples, the policy action may include providing, via a user interface of a user device, an indication that the secondary message comprises the digital signature of the primary message. Conversely, the policy action may include providing, via a user interface of a user device, an indication that the secondary message does not comprise the digital signature of the primary message. Additionally or alternatively, the policy action may include preventing connection to an external resource when the secondary message does not comprise the digital signature of the primary message. Furthermore, the policy action may include providing access to an external resource when the secondary message comprises the digital signature of the primary message.
[0148] FIG. 10 illustrates an example of a computing device 1000 according to some implementations of the present disclosure. For example, the computing device 1000 can serve as the user device 101, the barcode decoder 104, the barcode encoder 108, other components shown in FIGS. 1A-9, or a combination thereof. The computing device 1000 can be implemented in various configurations in order to provide various functionality to a user. For example, the computing device 1000 can be implemented as a communication device (e.g., a smart phone, cellular phone, mobile phone, wireless phone, portable phone, radio telephone, etc.); a wearable device (e.g., a head-mounted device, smart eyeglasses, smart watch, and smart clothing); a home automation controller (e.g., controller for an alarm system, thermostat, lighting system, door lock, motorized doors, etc.); a gaming device (e.g., a gaming system, gaming controller, etc.); a vehicle (e.g., an autonomous vehicle); and / or other computing device (e.g., a tablet computer, phablet computer, notebook computer, laptop computer, etc.). The foregoing implementations are not intended to be limiting and the computing device 1000 can be implemented as any kindAttorney Docket No.: 096027-1474807 (2-24079-WO) of electronic or computing device that can be configured to generate an avatar using a part of or all the methods disclosed herein.
[0149] The computing device 1000 includes processing system 1002 which can be implemented as one or more processors. The one or more processors can read one or more programs from the one or more memories and execute them using RAM. The one or more memories and RAM can be included in the memory system 1004. The one or more processors can be of any type including but not limited to a microprocessor, a microcontroller, a graphical processing unit, a digital signal processor, an ASIC, a FPGA, a PLD, or any combination thereof. In some implementations, the one or more processors can include a plurality of cores, a plurality of arrays, one or more coprocessors, and / or one or more layers of local cache memory. The one or more processors can execute one or more programs stored in the one or more memories to perform the operations and / or methods, including parts thereof, disclosed herein.
[0150] The one or more memories can be non-volatile and can include any type of memory device that retains stored information when powered off. Non-limiting examples of memory include electrically erasable and programmable read-only memory (EEPROM), flash memory, or any other type of non-volatile memory. The one or more memories can include non-transitory computer-readable storage media from which the one or more processors can read instructions. A computer-readable storage medium can include electronic, optical, magnetic, or other storage devices capable of providing the one or more processors with computer-readable instructions or other program code. Non-limiting examples of a computer-readable storage medium include magnetic disks, memory chips, read-only memory (ROM), RAM, an ASIC, a configured processor, optical storage, or any other medium from which a computer processor can read the instructions.
[0151] The computing device 1000 also includes storage system 1006 which can be implemented as one or more storage devices. The one or more storage devices can be configured to store data received by and / or generated by the computing device 1000. The one or more storage devices can be removable storage devices, non-removable storage devices, or a combination thereof. Examples of removable storage and non-removable storage devices include magnetic disk devices such as flexible disk drives and hard disk drives (HDDs), opticalAttorney Docket No.: 096027-1474807 (2-24079-WO) disk drives such as compact disk (CD) drives or digital versatile disk (DVD) drives, solid-state drives (SSDs), and tape drives.
[0152] The computing device 1000 also includes user interface system 1010. User interface system 1010 can include one or more devices configured to display images, video, and other content and receive input from a user of the computing device 1000. Examples of devices included in the user interface system 1010 include a liquid crystal display, a light emitting diode display, an organic light emitting diode display, a projector display, a touchscreen display, and the like.
[0153] The computing device 1000 also includes communication system 1008. Communication system 1008 can include one or more devices configured to enable the computing device 1000 to communicate with various wired or wireless networks and other systems and devices. Examples of devices included in communication system 1008 include wireless communication modules and chips, wired communication modules and chips, chips for communicating over local area networks, wide area networks, cellular networks, satellite networks, fiber optic networks, and the like, systems on chips, and other circuitry that enables the computing device 1000 to send and receive data.
[0154] The computing device 1000 also includes a peripheral system 1012. Peripheral system 1012 can include one or more subsystems configured to provide various functionality to the computing device 1000 and / or a user of the computing device 1000. Examples of subsystems included in peripheral system 1012 include a sensor subsystem, an audio subsystem, a power subsystem, an orientation subsystem, and input / output subsystem.
[0155] The sensor subsystem can include one or more devices configured to transmit and receive various signals (e.g., light, ultrasonic, radar, lidar, and the like) that can be used for sensing an environment surrounding the computing device 1000. Examples of devices included in the sensor subsystem include digital and electronic cameras, light field cameras, 3D cameras, image sensors, imaging arrays, ultrasonic sensors, radar sensors, range sensors, LiDAR sensors, and the like.
[0156] The audio subsystem can include one or more devices configured to record sounds from an environment surrounding the computing device 1000 and output sounds to theAttorney Docket No.: 096027-1474807 (2-24079-WO) environment surrounding the computing device 1000. Examples of devices included in audio subsystem include microphones, speakers, and other audio / sound transducers for receiving and outputting audio signals and other sounds.
[0157] The power subsystem can include one or more components configured to provide power to the computing device 1000. Examples of components included power subsystem include batteries, power supplies, charging circuits, solar panels, and other components that can be configured to receive power from a source external to the computing device 1000 or generate power and power the computing device 1000 with the received or generated power.
[0158] The orientation subsystem can include one or more devices configured to determine an orientation and posture of the computing device 1000 and users of the computing device 700. Examples of devices included orientation subsystem include global positioning system (GPS) receivers, ultra-wideband (UWB) positioning devices, Wi-Fi positioning devices, accelerometers, gyroscopes, motion sensors, tilt sensors, inclinometers, angular velocity sensors, gravity sensors, and inertial measurement units, and the like.
[0159] The computing device 1000 can also include other input / output (I / O) components (not shown). Examples of such input components can include a mouse, a keyboard, a trackball, a touch pad, a touchscreen display, a stylus, data gloves, and the like. Examples of such output components can include holographic displays, 3D displays, projectors, and the like.
[0160] The foregoing configurations of the computing device 1000 are not intended to be limiting and the computing device 1000 can include other devices, systems, and components.
[0161] Although specific examples have been described, various modifications, alterations, alternative constructions, and equivalents are possible. Examples are not restricted to operation within certain specific data processing environments but are free to operate within a plurality of data processing environments. Additionally, although certain examples have been described using a particular series of transactions and steps, it should be apparent to those skilled in the art that this is not intended to be limiting. Although some flowcharts describe operations as a sequential process, many of the operations may be performed in parallel or concurrently. In addition, the order of the operations may be rearranged. AAttorney Docket No.: 096027-1474807 (2-24079-WO) process may have additional steps not included in the figure. Various features and aspects of the above-described examples may be used individually or jointly.
[0162] Further, while certain examples have been described using a particular combination of hardware and software, it should be recognized that other combinations of hardware and software are also possible. Certain examples may be implemented only in hardware, or only in software, or using combinations thereof. The various processes described herein may be implemented on the same processor or different processors in any combination.
[0163] Where devices, systems, components or modules are described as being configured to perform certain operations or functions, such configuration may be accomplished, for example, by designing electronic circuits to perform the operation, by programming programmable electronic circuits (such as microprocessors) to perform the operation such as by executing computer instructions or code, or processors or cores programmed to execute code or instructions stored on a non-transitory memory medium, or any combination thereof. Processes may communicate using a variety of techniques including but not limited to conventional techniques for inter-process communications, and different pairs of processes may use different techniques, or the same pair of processes may use different techniques at different times.
[0164] Specific details are given in this disclosure to provide a thorough understanding of the examples. However, examples may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques have been shown without unnecessary detail in order to avoid obscuring the examples. This description provides example examples only, and is not intended to limit the scope, applicability, or configuration of other examples. Rather, the preceding description of the examples will provide those skilled in the art with an enabling description for implementing various examples. Various changes may be made in the function and arrangement of elements.
[0165] The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that additions, subtractions, deletions, and other modifications and changes may be made thereunto without departingAttorney Docket No.: 096027-1474807 (2-24079-WO) from the broader spirit and scope as set forth in the claims. Thus, although specific examples have been described, these are not intended to be limiting. Various modifications and equivalents are within the scope of the following claims.
[0166] In the foregoing specification, aspects of the disclosure are described with reference to specific examples thereof, but those skilled in the art will recognize that the disclosure is not limited thereto. Various features and aspects of the above-described disclosure may be used individually or jointly. Further, examples may be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. The specification and drawings are, accordingly, to be regarded as illustrative rather than restrictive.
[0167] In the foregoing description, for the purposes of illustration, methods were described in a particular order. It should be appreciated that in alternate examples, the methods may be performed in a different order than that described. It should also be appreciated that the methods described above may be performed by hardware components or may be embodied in sequences of machine-executable instructions, which may be used to cause a machine, such as a general- purpose or special-purpose processor or logic circuits programmed with the instructions to perform the methods. These machine-executable instructions may be stored on one or more machine readable mediums, such as CD-ROMs or other type of optical disks, floppy diskettes, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memory, or other types of machine-readable mediums suitable for storing electronic instructions. Alternatively, the methods may be performed by a combination of hardware and software.
[0168] Where components are described as being configured to perform certain operations, such configuration may be accomplished, for example, by designing electronic circuits or other hardware to perform the operation, by programming programmable electronic circuits (e.g., microprocessors, or other suitable electronic circuits) to perform the operation, or any combination thereof.
[0169] While illustrative examples of the application have been described in detail herein, it is to be understood that the inventive concepts may be otherwise variously embodied andAttorney Docket No.: 096027-1474807 (2-24079-WO) employed, and that the appended claims are intended to be construed to include such variations, except as limited by the prior art.
Claims
Attorney Docket No.: 096027-1474807 (2-24079-WO) CLAIMS WHAT IS CLAIMED IS:
1. A method comprising: accessing a message associated with an external resource; accessing a digital signature for the message; and generating a two-dimensional barcode that encodes the message and the digital signature, wherein the two-dimensional barcode comprises a plurality of data carrying modules, and wherein generating the two-dimensional barcode comprises: encoding the message based on an intensity level of each data carrying module of the plurality of data carrying modules, wherein the intensity level of each data carrying module of the plurality of data carrying modules is determined based on the message; and encoding the digital signature based on the intensity level of each data carrying module of the plurality of data carrying modules and an orientation direction of each data carrying module of the plurality of data carrying modules.
2. The method of claim 1, wherein at least one data carrying module of the plurality of data carrying modules comprises an elongated color marker oriented in an orientation direction selected from among a plurality of orientation directions.
3. The method of claim 1, wherein an intensity level of a first subset of data carrying modules of the plurality of data carrying modules is greater than an intensity level of a second subset of data carrying modules of the plurality of data carrying modules, wherein the encoding the digital signature comprises, for each data carrying module of the second subset of data carrying modules selecting, from among a plurality of orientation directions, orientation directions for the second subset of data carrying modules.
4. The method of claim 1, wherein the two-dimensional barcode further comprises at least a first color channel and a second color channel.
5. The method of claim 4, wherein generating the two-dimensional barcode further comprises:Attorney Docket No.: 096027-1474807 (2-24079-WO) generating a first two-dimensional barcode associated with the first color channel based on the message and the digital signature; generating a second two-dimensional barcode associated with the second color channel based on a second message and a second digital signature; and combining the first two-dimensional barcode and the second two-dimensional barcode to generate the two-dimensional barcode.
6. A method comprising: accessing a message associated with an external resource; accessing a digital signature for the message; and generating a first two-dimensional barcode that encodes the message and the digital signature, wherein the first two-dimensional barcode is generated by: generating a second two-dimensional barcode associated with a first color channel that encodes the message; generating a third two-dimensional barcode associated with a second color channel that encodes the digital signature; and combining at least the second two-dimensional barcode and the third two- dimensional barcode to generate the first two-dimensional barcode.
7. The method of any of claims 1-6, wherein the digital signature is generated using the message and a private cryptographic key of a signatory authority.
8. The method of claim 7, wherein accessing the digital signature comprises: providing the message to the signatory authority; and receiving the digital signature from the signatory authority, wherein the signatory authority generates the digital signature using the private cryptographic key of the signatory authority.
9. The method of claim 8, wherein the providing the message to the signatory authority comprises sending the message to the signatory authority using a secure communication channel.
10. The method of claim 8, wherein the providing the message to the signatory authority comprises a message provider sending the message to the signatory authority.Attorney Docket No.: 096027-1474807 (2-24079-WO) 11. The method of claim 10, wherein the message provider is pre-registered with the signatory authority.
12. The method of claim 11, wherein the message provider is pre-registered with the signatory authority based on an identity of the message provider and a verification of the message provider performed by the signatory authority.
13. The method of any of claims 1-6, further comprising: prior to generating the two-dimensional barcode, executing an error correction coding algorithm based on the message and on the digital signature.
14. The method of any of claims 1-6, wherein generating the two-dimensional barcode further comprises inserting a symbol in a first spatial region of the two-dimensional barcode and inserting a plurality of data carrying modules in a second spatial region of the two-dimensional barcode.
15. The method of any of claims 1-6, wherein the message comprises binary digit values representative of the external resource, and wherein generating the two-dimensional barcode comprises encoding the binary digit values.
16. The method of any of claims 1-6, wherein the message comprises a uniform resource locator (URL) associated with the external resource.
17. The method of claim 16, wherein the digital signature comprises a URL fragment, and wherein generating the two-dimensional barcode comprises: appending the URL with the URL fragment to form a modified URL; and encoding the modified URL.
18. The method of any one of claims 1-17, wherein the two-dimensional barcode comprises a quick response code, a variant of a quick response code, a data matrix code, an Aztec code, a dual-modulating code, a channel-wise code, or a combination thereof.
19. A method comprising: accessing an image depicting a two-dimensional barcode;Attorney Docket No.: 096027-1474807 (2-24079-WO) decoding the two-dimensional barcode into a primary message based on an intensity level of each data carrying module of a plurality of data carrying modules in the two-dimensional barcode; decoding the two-dimensional barcode into a secondary message based on the decoding of the primary message and on an orientation direction of each data carrying module of the plurality of data carrying modules; determining whether the secondary message comprises a digital signature of the primary message using a cryptographic key; and based on an outcome of the determining whether the secondary message comprises the digital signature of the primary message, taking a policy action.
20. The method of claim 19, wherein at least one data carrying module of the plurality of data carrying modules comprises an elongated color marker oriented in an orientation selected from among a plurality of orientations.
21. The method of claim 19, wherein the two-dimensional barcode comprises at least a first color channel and a second color channel.
22. The method of claim 21, wherein decoding the two-dimensional barcode into a primary message and a secondary message further comprises: deriving a first two-dimensional barcode associated with the first color channel and a second two-dimensional barcode associated with the second color channel; decoding the first two-dimensional barcode into the primary message and the secondary message; and decoding the second two-dimensional barcode into a second primary message and a second secondary message.
23. The method of claim 22, wherein deriving the first two-dimensional barcode associated with the first color channel and the second two-dimensional barcode associated with the second color channel comprises performing color interference cancelation on the two-dimensional barcode.
24. The method of claim 22, further comprising:Attorney Docket No.: 096027-1474807 (2-24079-WO) determining whether the second secondary message comprises a digital signature of the second primary message; and based on the outcome of the determining whether the secondary message comprises the digital signature of the primary message and based on an outcome of the determining whether the second secondary message comprises the digital signature of the second primary message, taking the policy action.
25. A method comprising: accessing an image depicting a two-dimensional barcode; decoding the two-dimensional barcode into a primary message and a secondary message by: deriving a first two-dimensional barcode associated with a first color channel and a second two-dimensional barcode associated with a second color channel; decoding the first two-dimensional barcode into the primary message; and decoding the second two-dimensional barcode into the secondary message; determining whether the secondary message comprises a digital signature of the primary message using a cryptographic key; and based on an outcome of the determining whether the secondary message comprises the digital signature of the primary message, taking a policy action.
26. The method of claim 25, wherein deriving the first two-dimensional barcode associated with the first color channel and the second two-dimensional barcode associated with the second color channel comprises performing color interference cancelation on the two-dimensional barcode.
27. The method of any of claims 19-25, wherein the two-dimensional barcode is generated according to the method of any one of claims 1-18.
28. The method of any of claims 19-25, wherein the digital signature is generated based on the primary message using any of the methods of claims 7-12.
29. The method any of claims 19-25, wherein the cryptographic key is a public cryptographic key of a signatory authority.Attorney Docket No.: 096027-1474807 (2-24079-WO) 30. The method of claim 29, further comprising: accessing a plurality of public cryptographic keys of a plurality of signatory authorities, the plurality of public cryptographic keys comprising the public cryptographic key of the signatory authority.
31. The method of claim 30, further comprising: selecting, from the plurality of public cryptographic keys, the public cryptographic key of the signatory authority based on an indication of the signatory authority in the secondary message.
32. The method of any one of claims 19-25, wherein the policy action comprises providing, via a user interface of a user device, an indication that the secondary message comprises the digital signature of the primary message.
33. The method of any one of claims 19-25, wherein the policy action comprises providing, via a user interface of a user device, an indication that the secondary message does not comprise the digital signature of the primary message.
34. The method of any one of claims 19-25, wherein the policy action comprises preventing connection to an external resource when the secondary message does not comprise the digital signature of the primary message.
35. The method of any one of claims 19-25, wherein the policy action comprises providing access to an external resource when the secondary message comprises the digital signature of the primary message.
36. A method comprising: accessing a message associated with an external resource; accessing a digital signature for the message, where the digital signature is generated using the message and a private cryptographic key of a signatory authority; and generating a first two-dimensional barcode that encodes the message and the digital signature.
37. A method comprising:Attorney Docket No.: 096027-1474807 (2-24079-WO) decoding a two-dimensional barcode into a primary message and a secondary message; determining whether the secondary message comprises a digital signature corresponding to the primary message using a public key of a signatory authority; and based on an outcome of the determining whether the secondary message comprises the digital signature of the primary message, taking a policy action.
38. The method of any of claims 36-37, wherein the two-dimensional barcode is generated according to the method of any one of claims 1-18.
39. The method of any of claims 36-37, wherein the digital signature is generated based on the primary message using any of the methods of claims 7-12.
40. The method of any of claims 36-37, wherein the digital signature is generated by the signatory authority after the signatory authority receives the primary message from a message provider that is pre-registered with the signatory authority.
41. A system comprising: one or more processors; and one or more memories storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations according to the method of any one of claims 1-40.
42. One or more non-transitory computer-readable media storing computer-readable instructions that, when executed by one or more processors, cause a system to perform operations according to the method of any one of claims 1-40.
43. An apparatus, comprising: means for implementing the method of any one of claims 1-40.
44. A computer program product comprising computer instructions that, when executed by a processor, implement the method of any one of claims 1-40.
Citation Information
Patent Citations
Two-channel color QR code encoding / decoding method
CN113935448A
Authentic barcodes using digital signatures
US20120308003A1
Color Barcodes for Mobile Applications: A Per Channel Framework
US20130092738A1
Systems and methods for Physical Control Verification and Authentication Event Scan Logging
US20220050983A1