BACKGROUNDThe present invention relates to digital recordings, and more specifically, to authenticating digital recordings using embedded encrypted data.
With the proliferation of mobile devices, any number of devices may record audio, images, and/or video at a given time. With modern editing techniques, the captured audio, images, and/or video may be manipulated to present an inaccurate depiction of events. For example, an audio recording of a speech may be spliced to order the speech in an inaccurate way, creating the impression that the speaker said something that was not actually stated.
SUMMARYAccording to one embodiment, a method comprises extracting a first element of encrypted data embedded in a digital recording comprising at least one of audio data and image data captured in a recording environment, generating a first decrypted value, the generating performed by execution of a cryptography algorithm based on a private key and the first element of encrypted data, comparing the first decrypted value and a stored value associated with a first element of the digital recording, and authenticating the digital recording based on the first decrypted value substantially matching the stored value.
According to another embodiment, a computer program product comprises a non-transitory computer-readable storage medium having computer-readable program code embodied therewith, the computer-readable program code executable by one or more computer processors to perform an operation comprising extracting a first element of encrypted data embedded in a digital recording comprising at least one of audio data and image data captured in a recording environment, generating a first decrypted value, the generating performed by execution of a cryptography algorithm based on a private key and the first element of encrypted data, comparing the first decrypted value and a stored value associated with a first element of the digital recording, and authenticating the digital recording based on the first decrypted value substantially matching the stored value.
According to another embodiment, a system comprises a processor and a memory containing a program which when executed by the processor performs an operation comprising extracting a first element of encrypted data embedded in a digital recording comprising at least one of audio data and image data captured in a recording environment, generating a first decrypted value, the generating performed by execution of a cryptography algorithm based on a private key and the first element of encrypted data, comparing the first decrypted value and a stored value associated with a first element of the digital recording, and authenticating the digital recording based on the first decrypted value substantially matching the stored value.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGSFIG. 1 illustrates an example system that authenticates digital recordings, according to one embodiment.
FIG. 2 illustrates an example image that includes embedded data used to authenticate digital recordings, according to one embodiment.
FIG. 3 is a flow chart illustrating a method to authenticate digital recordings, according to one embodiment.
FIG. 4 is a flow chart illustrating a method to operate a security device in a recording environment, according to one embodiment.
FIG. 5 is a flow chart illustrating a method to authenticate a received portion of a captured digital recording, according to one embodiment.
FIG. 6 illustrates a system that authenticates digital recordings, according to one embodiment.
DETAILED DESCRIPTIONEmbodiments disclosed herein provide techniques to authenticate digital recordings. More specifically, embodiments disclosed herein configure security devices to emit encrypted data that is captured as part of the digital recording. The encrypted data may then be used to authenticate the digital recording, or a portion thereof. For example, the security device may emit a quick response code (QR Code®) that changes over time. The QR code may be generated based on a cryptographic function applied by a private key and one or more other parameters (e.g., location coordinates, the current date, the current time, etc.). The security device may be worn by a presenter, placed on a podium, or otherwise made visible to image and/or video recording devices. The recording devices may then record image and/or video data which includes the QR codes (e.g., a watermark). Subsequently, the recorded images and/or video may be provided to the entity holding the private key for authentication. Generally, the QR codes included in the recorded images and/or video may be decrypted using the private key. If each QR code is successfully authenticated, the entity holding the private key may authenticate the recording. Otherwise, the entity holding the private key may determine that the digital recording has been altered and return an indication that the digital recording is not authentic.
FIG. 1 illustrates anexample system100 that authenticates digital recordings, according to one embodiment. As shown,FIG. 1 depicts arecording environment150 that includes one ormore recording devices101 and one ormore security devices102. Therecording environment150 may be any environment, including without limitation a public place, lecture hall, conference center, and the like. Therecording devices101 are representative of any device that can capture image and/or audio data to record digital audio, images, and/or video data.Example recording devices101 include smartphones, digital video cameras, digital cameras, digital audio recorders, portable gaming devices, laptop computers, desktop computers, and the like. As shown, therecording devices101 include animage capture device103, anaudio capture device104,other capture devices105, and a data store for recordeddata111. Although depicted as including more than one recording device, therecording device101 may include only one, several or each of theimage capture device103, theaudio capture device104, theother capture devices105. Theimage capture devices103 include image sensors that generate image data, e.g., a camera. Theaudio capture devices104 are representative of any device that can capture audio and store digital audio data, e.g., a microphone. Theother capture devices105 are representative of any other type of device that can record data emitted from theoutput device106 of thesecurity devices102.
Thesecurity devices102 are devices that may generate and output any type of data that can be captured by arecording device101, including, without limitation, audible and/or inaudible audio data, image data, visible and/or invisible light data, and the like. As shown, the security devices include102 include one ormore output devices106, aprivate key107, aninput data108, acryptography algorithm109, and a data store ofencrypted data110. Theoutput devices106 are representative of any type of output device, such as display devices, speakers, e-ink devices, light emitting diodes (LEDs), infrared light emitters, and the like. Theprivate key107 is an alphanumeric string that is provided to thecryptography algorithm109 withinput data108 to generateencrypted data110 that is outputted via theoutput device106. Thecryptography algorithm109 is representative of any symmetric encryption algorithm (also referred to as private key encryption) that generates encrypted data based on theprivate key107 and theinput data108. Examples ofcryptography algorithms109 include, without limitation, the Advanced Encryption Standard (AES), Pretty Good Privacy (PGP), and the Triple Data Encryption Algorithm (TDEA). Thecryptography algorithm109 further decrypts the generated encrypted data using theprivate key107. Theencrypted data110 may be, for example and without limitation, QR codes, barcodes, strings of alphanumeric characters, symbols, visible light patterns and/or colors, infrared light patterns. Theinput data108 is representative of any type of data, such as global positioning system (GPS) coordinates of the location of therecording environment150, the current date and/or time, a name of a current speaker and/or presenter in the recording environment, weather conditions near the recording environment150 (e.g., temperature, wind speed, humidity, etc.), any other attribute of therecording environment150, and the like. For example, based on theprivate key107, the current date and time, and GPS coordinates of therecording environment150, thecryptography algorithm109 may generate a 128-bit string of alphanumeric characters asencrypted data110. This string ofencrypted data110 may be outputted via theoutput devices106, or may be converted to a different format (e.g., a QR code, audio data, LED light patterns, etc.) before being outputted via theoutput devices106. Theencrypted data110 may further be stored with associated data (e.g., the input data108) for future use.
Therecording devices101 may then capture image and/or audio data that includes the encrypteddata110 emitted by theoutput devices106 of thesecurity device102. For example, an audio recording may includeencrypted data110 that is audio data outside of the range of human hearing, or infrared light data that is outside of the range of human vision. The captured data including theencrypted data110 embedded as a watermark may then be stored in the recordeddata111. As theencrypted data110 changes over time (e.g., every second, millisecond, etc.), the recordeddata111 includes a plurality of different instances of theencrypted data110 for a given recording session (e.g., a speech, presentation, etc.).
Subsequently, the recordeddata111 including the encrypteddata110 may be authenticated. For example, a news corporation may transmit one or more segments of the recordeddata111 including theencrypted data110 to an entity holding the private key107 (e.g., a corporation, person, etc.). Each segment of the recordeddata111 may then be authenticated by decrypting theencrypted data110 embedded in the recordeddata111 using theprivate key107. For example, theencrypted data110 of a frame of video may include the 128-bit alphanumeric sequence discussed above that was generated based on the then-current date and time and GPS coordinates of therecording environment150. Thecryptography algorithm109 may then decrypt the 128-bit alphanumeric sequence using theprivate key107. If the output of thecryptography algorithm109 indicates theencrypted data110 is authentic (e.g., matches the GPS coordinates and the then-current date and time), that portion of recordeddata111 is authenticated. However, if the output of thecryptography algorithm109 fails or otherwise indicates theencrypted data110 is not authentic (e.g., does not match the GPS coordinates and/or the then-current date and time), that portion of recordeddata111 is determined to be inauthentic (e.g., because the image and/or audio data of the recordeddata111 was altered via an editing program).
As previously stated, in at least one embodiment, theencrypted data110 is sequential. In such embodiments, thesecurity device102 may generateencrypted data110 that matches a sequential pattern over time. As such, the sequential integrity of theencrypted data110 may be enforced as part of the authentication process. For example, if two sequential frames of video data have encrypteddata110 that are not based on sequential timestamps, the recordeddata111 may be determined to be inauthentic (e.g., although the received two video frames are sequential in the received recordeddata111, the decryption of theencrypted data110 embedded in each frame reflects that the second video frame is associated with a timestamp that is earlier in time than the first video frame). Doing so ensures that otherwise unaltered images or audio clips have not been rearranged.
FIG. 2 illustrates an example image that includes embedded data used to authenticate digital recordings, according to one embodiment. As shown, the image of recordeddata111 depicts aperson201 and a QR code ofencrypted data110. TheQR code110 emitted by theoutput device106 of asecurity device102. As previously stated, theQR code110 may be generated based on theprivate key107 and the input data108 (e.g., date, time, GPS coordinates, and any other type of data attribute) provided to thecryptography algorithm109. To authenticate theimage111, theQR code110 may be analyzed to determine the underlying data that forms the QR code110 (since theQR code110 is an optical representation of the underlying data). The underlying data may then be provided to thecryptography algorithm109 that decrypts the underlying data of theQR code110 using theprivate key107. If the output of thecryptography algorithm109 reflects that theQR code110 is authentic (e.g., matches the input data108), theimage111 is authenticated. Otherwise, theimage111 is determined to be inauthentic.
AlthoughFIG. 2 depicts visibleencrypted data110, in other embodiments, theencrypted data110 is not visible and/or audible by humans. For example, theencrypted data110 may include audio tones that are not audible, image data that is not visible, and the like. Doing so allows theencrypted data110 to be easily recorded by therecording devices101, but not intrusive or distracting to viewers or listeners of the recordeddata111.
FIG. 3 is a flow chart illustrating amethod300 to authenticate digital recordings, according to one embodiment. As shown, themethod300 begins atblock310, where the format of the output device(s)106 of the security device102 (e.g., audio, visual, etc.) and encrypted data110 (e.g., QR code, alphanumeric string, audio tones, etc.) are selected for arecording environment150. Additionally, one or more input parameters108 (e.g., attributes such as GPS coordinates, date and/or time, weather conditions, etc.) and theprivate key107 are selected. Furthermore, any other number and type of operating parameters for thesecurity device102 may be defined (e.g., time intervals for generating and/or outputtingencrypted data110, conversion functions to convert the output of thecryptographic algorithm109 to a format supported by theoutput devices106, etc.). Atblock320, described in greater detail with reference toFIG. 4, thesecurity device102 operates in therecording environment150, generating and outputtingencrypted data110 via the selectedoutput devices106.
Atblock330, one ormore recording devices101 capture digital recordings of the recording environment150 (e.g., capture an audio recording of a speech, capture a video of at least a portion of therecording environment150, etc.), where theencrypted data110 outputted by thesecurity devices102 is captured by therecording devices101. As such, theencrypted data110 is embedded in the recordeddata111 captured and stored by therecording devices101. Atblock340, at least a portion of the digital recording captured atblock330 is received for authentication by the entity holding theprivate key107. Atblock350, described in greater detail with reference toFIG. 5, the received portion of the captured digital recording is authenticated using theencrypted data110 embedded therein. Generally, atblock350, each element ofencrypted data110 is decrypted using theencryption algorithm108 and theprivate key107. The resulting value is then compared to a stored value associated with the encrypted data110 (e.g., theinput data108 that generated theencrypted data110, such as a timestamp and/or GPS coordinate). If the decryption fails, or otherwise returns a value that does not match the associated stored value, the authentication fails. Similarly, if the sequence ofencrypted data110 indicates the order of therecording data111 has been manipulated, the authentication fails. For example, if spoken statements are arranged from their original order to create a statement that was not actually spoken, the authentication fails, even though each statement may pass authentication in isolation. However, in some embodiments, the temporal nature ofencrypted data110 is considered for sequential blocks ofrecording data111. For example, if the first thirty seconds and the last 30 seconds of an audio recording are received atblock340, the temporal nature of theencrypted data110 is only considered vis-à-vis the first thirty second portion and the last thirty second portion, but not across the first and last thirty second portions.
FIG. 4 is a flow chart illustrating amethod400 corresponding to block320 to operate a security device in a recording environment, according to one embodiment. As shown, themethod400 begins atblock410, thesecurity device102 executes a loop including blocks420-450 for each of a plurality of time intervals during the operation of the security device. For example, the time interval may be a millisecond, half second, second, etc. Atblock420, thecryptography algorithm109 generatesencrypted data110 using the current input parameters and theprivate key107. For example, thecryptography algorithm109 may receive a timestamp from a clock for the current time interval, an indication of the name of a speaker, current weather data, and the GPS coordinates of therecording environment150. Thecryptography algorithm109 may then generate theencrypted data110 using theinput data108 and theprivate key107. In at least one embodiment, theencrypted data110 is converted to a different representation, e.g., from a n-bit sequence of alphanumeric characters to a QR code, audio tone, infrared light signal, etc.
Atblock430, theinput data108,encrypted data110, and the timestamp are stored as metadata in the data store ofencrypted data110. Atblock440, one ormore output devices106 output the encrypted data generated atblock420. Therecording devices101 in therecording environment150 may then capture a digital recording which includes theencrypted data110 outputted by theoutput devices106. Atblock450, thesecurity device102 returns to block410 if thesecurity device102 is still operating. Otherwise, themethod400 ends.
FIG. 5 is a flow chart illustrating amethod500 corresponding to block350 to authenticate a received portion of a captured digital recording, according to one embodiment. Generally, any computing system having access to thepublic key107, theencrypted data110, and the associatedinput data108 may execute the steps of themethod500. For the sake of simplicity, the steps of themethod500 will be discussed from the perspective of thesecurity device102. As shown, themethod500 begins atblock510, where the portions of the received digital recording are determined. Generally, thesecurity device102 may receive an indication of the relevant portions from the submitting entity (e.g., which portions of the audio and/or video clip are being submitted, the entire audio and/or video clip, etc.). Atblock520, thesecurity device102 extracts theencrypted data110 from each portion of the received recorded data111 (e.g., each interval of audio and/or video data). Atblock530, thesecurity device102 executes a loop including blocks540-580 for each portion of the received recordeddata111. Atblock540, thecryptography algorithm109 decrypts theencrypted data110 using theprivate key107. Atblock550, a comparison between the output of the decryption performed atblock540 and the stored data associated with the encrypted data110 (e.g., the input data108) is performed. For example, if theinput data108 is the current timestamp, weather data, and the GPS coordinates, the output of thecryptography algorithm109 should include the timestamp, the weather data, and the GPS coordinates. If the output of the decryption performed atblock540 does not match the stored data, the method proceeds to block560. In at least one embodiment, block550 includes a determination as to whether the decrypted value, although matching an element ofencrypted data110, is out of sequence relative to a previous decrypted value. For example, if the current decrypted element ofencrypted data110 is not the next expected value ofencrypted data110, the authentication fails, e.g., because the sequence of audio and/or video has been edited inappropriately.
Atblock560, thesecurity device102 determines that the current portion of the recordeddata111 has been modified and is not authentic, e.g., the authentication fails. Returning to block550, if the output of the decryption performed atblock540 matches the storedinput data108, the method proceeds to block570, where thesecurity device102 determines that the current portion of the recordeddata111 is authentic, and stores an indication of the same. Atblock580, thesecurity device102 determines whether more portions of the recordeddata111 remain. If more portions remain, the method returns to block510. Otherwise, themethod500 ends. Generally, if one or more portions of the recordeddata111 are not authenticated (e.g., the comparison atblock540 fails for any element of recorded data111), the received portions of the digital recording are not authenticated. As previously stated, if one or more received portions are authenticated, but are not in the correct order, the recordeddata111 is not authenticated because the order (e.g., of statements, scenes, etc.) may have been modified.
FIG. 6 illustrates asystem600 that authenticates digital recordings, according to one embodiment. Thenetworked system600 includes arecording device101 and asecurity device102. Thecomputing system101 may also be connected to other computers via anetwork630. In general, thenetwork630 may be a telecommunications network and/or a wide area network (WAN). In a particular embodiment, thenetwork630 is the Internet.
Therecording device101 andsecurity device102 generally include aprocessor604 which obtains instructions and data via abus620 from amemory606 and/or astorage608. Therecording device101 and/orsecurity device102 may also include one or morenetwork interface devices618,input devices622, andoutput devices624 connected to thebus620. Therecording device101 and/orsecurity device102 are generally under the control of an operating system (not shown). Examples of operating systems include the UNIX operating system, versions of the Microsoft Windows operating system, and distributions of the Linux operating system. (UNIX is a registered trademark of The Open Group in the United States and other countries. Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both. Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.) More generally, any operating system supporting the functions disclosed herein may be used. Theprocessor604 is a programmable logic device that performs instruction, logic, and mathematical processing, and may be representative of one or more CPUs. Thenetwork interface device618 may be any type of network communications device allowing therecording device101 and/orsecurity device102 to communicate with other computers via thenetwork630.
Thestorage608 is representative of hard-disk drives, solid state drives, flash memory devices, optical media and the like. Generally, thestorage608 stores application programs and data for use by therecording device101 and/orsecurity device102. In addition, thememory606 and thestorage608 may be considered to include memory physically located elsewhere; for example, on another computer coupled to therecording device101 via thebus620.
Theinput device622 may be any device for providing input to therecording device101 and/orsecurity device102. For example, a keyboard and/or a mouse may be used. Theinput device622 of therecording device101 and/orsecurity device102 represent a wide variety of input devices, including keyboards, mice, controllers, and so on. Furthermore, theinput device622 may include a set of buttons, switches or other physical device mechanisms for controlling thecomputing system101. Theinput device622 of therecording device101 further includes cameras, microphones, theimage capture device103,audio capture device104,other capture devices105, and the like.
Theoutput device624 may include output devices such as monitors, touch screen displays, and so on. Theoutput device624 of thesecurity device102 is further representative of theoutput device106, e.g., LEDs, e-ink displays, speakers, infrared light emitters, and the like.
As shown, thememory606 of the recording device includesrecording logic612, which is configured to generate digital representations of image data captured by theimage capture device103 and audio data captured by theaudio capture device104. The generated data includes theencrypted data110 generated by thesecurity device102, and is stored in thestorage608 of therecording device101. Thememory606 of the security device includes theprivate key107,input data108, and thecryptography algorithm109, each described in greater detail above. Thestorage608 of thesecurity device102 includes theencrypted data110, described in greater detail above. Generally, thesystem600 is configured to implement all systems, methods, and functionality described above with reference toFIGS. 1-5.
The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
In the following, reference is made to embodiments presented in this disclosure. However, the scope of the present disclosure is not limited to specific described embodiments. Instead, any combination of the following features and elements, whether related to different embodiments or not, is contemplated to implement and practice contemplated embodiments. Furthermore, although embodiments disclosed herein may achieve advantages over other possible solutions or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not limiting of the scope of the present disclosure. Thus, the following aspects, features, embodiments and advantages are merely illustrative and are not considered elements or limitations of the appended claims except where explicitly recited in a claim(s). Likewise, reference to “the invention” shall not be construed as a generalization of any inventive subject matter disclosed herein and shall not be considered to be an element or limitation of the appended claims except where explicitly recited in a claim(s).
Aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.”
The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.