Apparatus and method for counter-based communications in wireless sensor networks and other networks

A method includes wirelessly receiving a message at a receiving node. The method also includes extracting a partial counter value from the message, where the partial counter value represents a subset of bits from a complete counter value of a transmitting node. The method further includes decrypting and authenticating the message based on the partial counter value. Decrypting and authenticating the message could include examining a bitmap to identify a bit value associated with the partial counter value, decrypting and authenticating the message if the identified bit value has a first value, and discarding the message if the identified bit value has a second value. Decrypting and authenticating the message could also include identifying at least one complete counter value at the receiving node based on the partial counter value and attempting to decrypt and authenticate the message using the at least one complete counter value.

TECHNICAL FIELD

This disclosure relates generally to wireless networks. More specifically, this disclosure relates to an apparatus and method for counter-based communications in wireless sensor networks and other networks.

BACKGROUND

Processing facilities are often managed using process control systems. Example processing facilities include manufacturing plants, chemical plants, crude oil refineries, and ore processing plants. Among other operations, process control systems typically manage the use of motors, valves, and other industrial equipment in the processing facilities. Process control systems routinely include one or more wireless networks containing various wireless devices, such as wireless sensors and wireless actuators.

SUMMARY

This disclosure provides an apparatus and method for counter-based communications in wireless sensor networks and other networks.

In a first embodiment, a method includes wirelessly receiving a message at a receiving node and extracting a partial counter value from the message. The partial counter value represents a subset of bits from a complete counter value of a transmitting node. The method also includes decrypting and authenticating the message based on the partial counter value.

In particular embodiments, decrypting and authenticating the message includes examining a bitmap to identify a bit value associated with the partial counter value. The message is decrypted and authenticated if the identified bit value has a first value. The message is discarded if the identified bit value has a second value.

In other particular embodiments, decrypting and authenticating the message includes identifying a second complete counter value at the receiving node and attempting to decrypt and authenticate the message using the second complete counter value. The second complete counter value is based on the partial counter value and a value of a counter at the receiving node. Decrypting and authenticating the message may further include, if not successful using the second complete counter value, identifying at least one additional complete counter value and attempting to decrypt and authenticate the message using the one or more additional complete counter values. Identifying the second complete counter value could include using a window of counter values at the receiving node, and identifying the at least one additional complete counter value could include shifting the window of counter values and using the shifted window of counter values.

In yet other particular embodiments, the method also includes requesting the complete counter value from the transmitting node if a specified number of messages cannot be decrypted and authenticated.

In still other particular embodiments, the method also includes updating a bitmap and a window based on the partial counter value after successful authentication of the message. The window is associated with a plurality of partial counter values, and the bitmap includes a plurality of bit values associated with the partial counter values. Updating the bitmap and the window could include advancing the window to cover partial counter values starting with the partial counter value associated with a next expected or missing message and shifting the bitmap to start at a bit value associated with the next expected message or a missing message. Updating the bitmap and the window could also include advancing and centering the window on a partial counter value associated with a most recently received authenticated message and centering the bitmap on a bit value associated with the most recently received authenticated message.

In additional particular embodiments, the receiving node includes a wireless sensor and/or a wireless actuator.

In a second embodiment, an apparatus includes a transceiver configured to wirelessly receive a message. The apparatus also includes a controller configured to extract a partial counter value from the message and to decrypt and authenticate the message based on the partial counter value. The partial counter value represents a subset of bits from a complete counter value of a transmitting node.

In a third embodiment, a method includes generating a message to be wirelessly transmitted and identifying a counter value of a counter, where the counter value includes a number of bits. The method also includes inserting a subset of the bits of the counter value into the message, encrypting and authenticating the message using the counter value, and transmitting the message.

DETAILED DESCRIPTION

FIG. 1illustrates an example process control system100according to this disclosure. The embodiment of the process control system100shown inFIG. 1is for illustration only. Other embodiments of the process control system100could be used without departing from the scope of this disclosure.

In this example embodiment, the process control system100includes one or more process elements102. The process elements102represent components in a process system that perform any of a wide variety of functions. For example, the process elements102could represent sensors, actuators, or any other or additional industrial equipment in a processing environment. Each process element102includes any suitable structure for performing one or more functions in a process system. Also, a process system may represent any system or portion thereof configured to process one or more materials in some manner.

A controller104is coupled to the process elements102. The controller104controls the operation of one or more of the process elements102. For example, the controller104could receive information associated with the process system, such as sensor measurements from some of the process elements102. The controller104could use this information to provide control signals to others of the process elements102, thereby adjusting the operation of those process elements102. The controller104includes any hardware, software, firmware, or combination thereof for controlling one or more process elements102. The controller104could, for example, represent a computing device executing a MICROSOFT WINDOWS operating system.

A network106facilitates communication between various components in the system100. For example, the network106may communicate Internet Protocol (IP) packets, frame relay frames, Asynchronous Transfer Mode (ATM) cells, or other suitable information between network addresses. The network106may include one or more local area networks, metropolitan area networks, wide area networks (WANs), all or a portion of a global network, or any other communication system or systems at one or more locations.

InFIG. 1, the process control system100also includes one or more wireless networks for communicating with wireless sensors or other devices. In this example, a wireless network includes infrastructure nodes (“I nodes”)108a-108e, leaf nodes110a-110e, and a gateway infrastructure node112.

The infrastructure nodes108a-108eand the leaf nodes110a-110eengage in wireless communications with each other. For example, the infrastructure nodes108a-108emay receive data transmitted over the network106(via the gateway infrastructure node112) and wirelessly communicate the data to the leaf nodes110a-110e. Similarly, the leaf nodes110a-110emay wirelessly communicate data to the infrastructure nodes108a-108efor forwarding to the network106(via the gateway infrastructure node112). In addition, the infrastructure nodes108a-108emay wirelessly exchange data with one another. In this way, the nodes108a-108eform a wireless network capable of providing wireless coverage to leaf nodes and other devices in a specified area, such as a large industrial complex.

In this example, the nodes108a-108eand110a-110eare divided into infrastructure nodes and leaf nodes. The infrastructure nodes108a-108etypically represent line-powered devices, meaning these nodes receive operating power from an external source. Infrastructure nodes108a-108eare typically not limited in their operations since they need not minimize power consumption to increase the operational life of their internal power supplies. On the other hand, the leaf nodes110a-110etypically represent devices powered by local power supplies, such as nodes that receive operating power from internal batteries or other internal power supplies. Leaf nodes110a-110eare often more limited in their operations in order to help preserve the operational life of their internal power supplies.

The nodes108a-108eand110a-110einclude any suitable structures facilitating wireless communications, such as radio frequency (RF) frequency hopping spread spectrum (FHSS) transceivers. The nodes108a-108eand110a-110ecould also include other functionality, such as functionality for generating or using data communicated over the wireless network. For example, the leaf nodes110a-110ecould represent wireless sensors used to measure various characteristics within an industrial facility. The sensors could collect and communicate sensor readings to the controller104via the gateway infrastructure node112. The leaf nodes110a-110ecould also represent actuators that receive control signals from the controller104and adjust the operation of the industrial facility. In this way, the leaf nodes110a-110emay include or operate in a similar manner as the process elements102physically connected to the controller104. The leaf nodes110a-110ecould further represent handheld user devices (such as INTELATRAC devices from HONEYWELL INTERNATIONAL INC.), mobile stations, programmable logic controllers, or any other or additional devices.

The gateway infrastructure node112communicates wirelessly with, transmits data to, and receives data from one or more infrastructure nodes and possibly one or more leaf nodes. The node112also converts data between protocol(s) used by the network106and protocol(s) used by the nodes108a-108eand110a-110e. For example, the node112could convert Ethernet-formatted data transported over the network106into a wireless protocol format (such as an IEEE 802.11a, 802.11b, 802.11g, 802.11n, 802.15.3, 802.15.4, or 802.16 format) used by the nodes108a-108eand110a-110e. The node112could also convert data received from one or more of the nodes108a-108eand110a-110einto Ethernet-formatted data for transmission over the network106. In addition, the node112could support various functions, such as network creation and security, used to create and maintain a wireless network. The gateway infrastructure node112includes any suitable structure for facilitating communication between components or networks using different protocols.

In particular embodiments, the various nodes in the wireless network ofFIG. 1form a mesh network communicating at 2.4 GHz or 5.8 GHz. Also, in particular embodiments, data can be injected into the wireless mesh network through the infrastructure nodes, thus providing versatile, multifunctional, plant-wide coverage for wireless sensing, asset location tracking, personnel tracking, wireless communications, and any other or additional functionality as desired.

A wireless configuration and OLE for Process Control (OPC) server114can configure and control various aspects of the process control system100. For example, the server114could configure the operation of the nodes108a-108eand112. The server114could also support security in the process control system100, such as by distributing cryptographic keys or other security data to various components in the process control system100(like the nodes108a-108e,110a-110e, and112). The server114includes any hardware, software, firmware, or combination thereof for configuring wireless networks and providing security information.

In one aspect of operation, various nodes in a wireless network may engage in counter-based communications. Counter-based communications refer to communications that involve the use of a counter, such as when at least part of a counter value is included in a transmitted or received message or when a counter value is used to encrypt, decrypt, or authenticate a message. As a particular example, the leaf nodes and infrastructure nodes inFIG. 1could support the EAX mode of encryption defined in the Advanced Encryption Standard (AES) from the National Institute of Standards and Technology (NIST). This standard defines a 128-bit counter that is incremented each time a message is transmitted. In some systems, the entire 128-bit counter value is included in each message that is transmitted by a wireless node. However, this can lead to wasted bandwidth and significant overhead, particularly when the transmitted messages are relatively small.

As described in more detail below, in some embodiments, wireless nodes in a wireless network (such as the leaf nodes and infrastructure nodes) may transmit and receive messages containing a subset of the bits of counter values. For example, the six least significant bits of a counter value can be included in a transmitted message. Moreover, different mechanisms can be used to reduce or eliminate the threat of replay attacks or other attacks on the wireless nodes and to re-synchronize receiving nodes when they lose track of the counter values used by transmitting nodes. In this way, wireless nodes are able to transmit and receive messages with less bandwidth and overhead and in a more secure manner.

AlthoughFIG. 1illustrates one example of a process control system100, various changes may be made toFIG. 1. For example, the process control system100could include any number of process elements, controllers, networks (wired or wireless), infrastructure nodes (gateway or other), leaf nodes, and servers. Also, the functional division shown inFIG. 1is for illustration only. Various components inFIG. 1could be combined, subdivided, or omitted and additional components could be added according to particular needs. In addition,FIG. 1illustrates one example operational environment where counter-based communications could be used and controlled. This functionality could be used with any suitable device or system, whether or not that device or system is used for process control.

FIG. 2illustrates an example wireless node200in a wireless network according to this disclosure. The wireless node200could, for example, represent a leaf node or infrastructure node in the system100ofFIG. 1or other system. The embodiment of the wireless node200shown inFIG. 2is for illustration only. Other embodiments of the wireless node200could be used without departing from the scope of this disclosure.

As shown inFIG. 2, the wireless node200includes a controller202. The controller202controls the overall operation of the wireless node200. For example, the controller202may receive or generate data to be transmitted externally, and the controller202could provide the data to one or more other components in the wireless node200for transmission over a wired or wireless network. The controller202could also receive data over a wired or wireless network and use or pass on the data. As a particular example, the controller202in a sensor leaf node could provide sensor data for transmission, and the controller202in an actuator leaf node could receive and implement control signals (note that a leaf node could represent a combined sensor-actuator device). As another example, the controller202in an infrastructure node could receive data transmitted wirelessly, determine a next hop for the data (if any), and provide the data for transmission to the next hop (if any). As a third example, the controller202in a gateway infrastructure node112could receive data from a wired network and provide the data for wireless transmission (or vice versa). The controller202could perform any other or additional functions to support the operation of the wireless node200. The controller202includes any suitable hardware, software, firmware, or combination thereof for controlling the operation of the wireless node200. As particular examples, the controller202could represent a processor, microprocessor, microcontroller, field programmable gate array (FPGA), or other processing or control device.

A memory204is coupled to the controller202. The memory204stores any of a wide variety of information used, collected, or generated by the wireless node200. For example, the memory204could store information received over one network that is to be transmitted over the same or different network. The memory204includes any suitable volatile and/or non-volatile storage and retrieval device or devices.

The wireless node200also includes a wireless transceiver206coupled to an antenna208. The transceiver206and antenna208can be used by the wireless node200to communicate wirelessly with other devices. For example, in a leaf node, the transceiver206and antenna208can be used to communicate with infrastructure nodes. In an infrastructure node or gateway infrastructure node, the transceiver206and antenna208can be used to communicate with leaf nodes. One or more additional transceivers210could also be used in the wireless node200. For instance, in an infrastructure node or gateway infrastructure node, the additional transceiver(s)210could be used to communicate with WiFi devices (such as wireless controllers or hand-held user devices) and with other infrastructure nodes or gateway infrastructure nodes. The additional transceivers210may be coupled to their own antennas212or share one or more common antennas (such as antenna208). Each transceiver includes any suitable structure for transmitting and/or receiving wireless signals via an antenna. In some embodiments, each transceiver represents a radio frequency (RF) transceiver, and each antenna represents an RF antenna (although any other suitable wireless signals could be used to communicate). Also, each transceiver could include a transmitter and a separate receiver.

If the wireless node200represents a gateway infrastructure node, the wireless node200may further include one or more wired network interfaces212. The wired network interfaces212allow the wireless node200to communicate over one or more wired networks, such as the network106. Each wired network interface212includes any suitable structure for transmitting and/or receiving signals over a wired network, such as an Ethernet interface.

As shown inFIG. 2, the controller202includes a counter214. The counter214represents any suitable hardware, software, firmware, or combination thereof that increments or decrements a value. As a particular example, the counter214could represent a 128-bit counter. The value of the counter214can be used for various purposes, such as to support counter-based communications. As a particular example, the controller202could use the counter value to perform various encryption, decryption, or authentication functions. As another particular example, the controller202could include a subset of the bits from the counter value in messages transmitted by the wireless node200. Additional details regarding these functions are provided below.

AlthoughFIG. 2illustrates one example of a wireless node200in a wireless network, various changes may be made toFIG. 2. For example, various components inFIG. 2could be combined, subdivided, or omitted and additional components could be added according to particular needs. Also, in general, a “wireless node” may represent any device that can transmit and/or receive data wirelessly (even if the “wireless node” has the ability to transmit and/or receive data over a wired connection, as well).

FIG. 3illustrates example counter-based communications300in a wireless network according to this disclosure. The counter-based communications300shown inFIG. 3are for illustration only. Other counter-based communications could also be used without departing from the scope of this disclosure.

InFIG. 3, values302represent the values of the counter214during transmissions of consecutive wireless messages by a transmitting node. These transmissions could, for example, represent the transmissions of data from an infrastructure node to one or more leaf nodes or the transmissions of data from a leaf node to one or more infrastructure nodes. These values302represent the actual values of the counter214. As shown here, the counter214increments its value for each transmission of a message by the transmitting node.

Partial counter values304represent portions of the counter values302that are actually included in the transmitted messages. As noted above, a transmitting node could include only a subset of the bits of the counter values302in its transmitted messages. Here, the transmitting node includes the six least significant bits of the counter values302in its transmitted messages. Because the entire counter values (such as the entire 128-bit values) are not included in the messages, the transmitting node uses less bandwidth and overhead to transmit the messages.

In addition, a window306and a bitmap308can be used by a receiving node that receives the transmitted messages. The window306and the bitmap308are used by the receiving node to track messages received in the past and/or to be received in the future. For example, the window306and the bitmap308could be used to track messages that are or should have been received in the past. This allows the receiving node to determine, for instance, whether it failed to receive a message from the transmitting node. The receiving node could also verify if and when future messages during the window306are received from the transmitting node. The window306could represent a sliding window that is moved forward as messages are received over time. It may be noted that the window306could have any suitable size, such as a size that covers 2nmessages (where n equals the number of bits in the partial counter values304). It may also be noted that the window306could cover any suitable number of past and future messages, such as from between (i) 2n-2 past messages and one future message to (ii) one past message and 2n-2 future messages.

The bitmap308can be used to track when messages containing the partial counter values304have been successfully received. For example, a “1” value may indicate that a message containing the corresponding partial counter value304has been successfully received, while a “0” value may indicate that a message containing the corresponding partial counter value304has not been successfully received. The bitmap308can therefore be used to support various functions. For instance, the receiving node could use the bitmap308to identify when messages were not successfully received. In this example, the bitmap308inFIG. 3indicates that a message containing the “111100” partial counter value has not been received, while a message containing the “111101” partial counter value has been received. This indicates that the message containing the “111100” partial counter value may have been lost, and the receiving node could request re-transmission of that message.

As another example, the receiving node could use the bitmap308to ignore one or more received messages when they contain a partial counter value304with a marked bit (set to “1”) in the bitmap308. For example, the bitmap308inFIG. 3indicates that a message containing the “111011” partial counter value304has been successfully received by the receiving node. If the receiving node receives an additional message containing the “111011” partial counter value304(before the partial counter values304roll back to zero and repeat a 2n-value sequence), the receiving node could ignore the additional message. This may be useful, for instance, in helping to avoid replay attacks, where an intruder repeats a prior message in order to interfere with the operation of the receiving node.

AlthoughFIG. 3illustrates one example of counter-based communications in a wireless network, various changes may be made toFIG. 3. For example, the counter values302, partial counter values304, and bitmap308values are for illustration only. Also, any suitable number of bits could be used to form the partial counter values304, and the window306and bitmap308could each have any suitable size (whether or not those sizes correspond).

FIG. 4illustrates an example method400for counter-based transmissions of messages in a wireless network according to this disclosure. The method400could, for example, be performed by an infrastructure or leaf node that is transmitting messages in the system100ofFIG. 1. The embodiment of the method400shown inFIG. 4is for illustration only. Other embodiments of the method400could be used without departing from the scope of this disclosure.

A message to be transmitted is obtained at step402. This could include, for example, a controller202in a wireless node200generating a message based on data it collects or generates. This could also include the controller202receiving data from an external source, such as data from another wireless node200. A counter value is identified at step404. This could include, for example, the controller202identifying the current value of its counter214. A portion of the counter value is inserted into the message at step406. This could include, for example, the controller202inserting the six least significant bits of the counter value into the message to be transmitted, such as into a header of the message.

The message is encrypted, authenticated, and transmitted at step408. This could include, for example, encrypting a payload portion of the message without encrypting the header portion of the message. The encryption could involve the use of the full counter value. Also, the authentication may be performed to allow the receiving node to detect alterations of the message. The transmitting node's counter is incremented at step410.

A determination is made whether the receiving node requests the transmitting node's counter value at step412. In some embodiments, the receiving node may attempt to maintain synchronization with the transmitting node's counter value based on the messages received by the receiving node. However, if the receiving node loses synchronization and cannot regain synchronization on its own, the receiving node can transmit a request for the transmitting node's counter value. In response, the transmitting node transmits its counter value at step414. This could include, for example, the transmitting node transmitting a message containing just its counter value or a message with the counter value and other contents. The transmitting node then returns to step402to obtain and transmit another message.

AlthoughFIG. 4illustrates one example of a method400for counter-based transmissions of messages in a wireless network, various changes may be made toFIG. 4. For example, the counter could decrement its value rather than increment its value. Also, while shown as a series of steps, various steps inFIG. 4could overlap, occur in parallel, or occur in a different order.

FIGS. 5 and 6illustrate example methods500and600for counter-based receptions of messages in a wireless network according to this disclosure. The methods500and600could, for example, be performed by an infrastructure or leaf node that is receiving messages in the system100ofFIG. 1. The embodiments of the methods500and600shown inFIGS. 5 and 6are for illustration only. Other embodiments of the methods500and600could be used without departing from the scope of this disclosure.

As shown inFIG. 5, a receiving node receives a message at step502. This could include, for example, the controller202in a receiving wireless node200receiving a message through its transceiver206and antenna208. The receiving node identifies the partial counter value contained in the message at step504. This could include, for example, the controller202in the receiving node extracting the partial counter value304from the received message's header.

The receiving node's bitmap is examined to determine if the partial counter value has already been marked at step506. This could include, for example, examining the bit in the bitmap308that corresponds to the partial counter value304extracted from the message. If the bitmap indicates the partial counter value has been marked at step508, the message is discarded and is not further processed. In this case, the message could represent a replay attack or other type of attack against the receiving wireless node.

If the bitmap indicates the partial counter value has not been marked, the receiving node attempts to decrypt and authenticate the message at step510. This may include, for example, the controller202in the receiving node using the value of its own counter and the partial counter value304from the received message to identify or reconstruct a full counter value. As a particular example, the controller202in the receiving node may attempt to decrypt and authenticate the message based in part on its own counter value. For example, with reference toFIG. 3, if the current value of the receiving node's counter is “2109” (decimal) and the partial counter value304from the received message is “111110” (binary), the receiving node could determine that the reconstructed full counter value equals “2110” (decimal). In these embodiments, the receiving node can select the full counter value302within its window306that is associated with the partial counter value304from the message. The decryption and authentication steps here could be performed on the payload of the received message using the full counter value.

If the decryption and authentication are successful at step512, the receiving node's bitmap and window are updated at step514, and the decrypted message is further processed at step516. One example way to update the bitmap and window is shown inFIG. 6.

Otherwise, if decryption and authentication are not successful, this may indicate that the receiving node is out of synchronization. In this case, the receiving node attempts to decrypt and authenticate the received message using larger counter values at step518. This could include, for example, the controller202sliding its window306sixty-four periods into the future and increasing its counter value by sixty-four (if the window306covers 26counter values). This could also include the controller202resetting its bit map308. The controller202could then attempt to decrypt and authenticate the received message using the counter value302in the current window306that corresponds to the partial counter value304in the received message. If successful at step520, the bitmap and window are updated at step514, and the message is processed at step516. Note that steps518-520could be repeated once or multiple times, such as depending on how many times the decryption and authentication steps cam be performed before the message is discarded.

If the message still cannot be decrypted and authenticated, a determination is made whether a threshold has been met at step522. This could include, for example, the controller202determining if it has been unable to decrypt a specified number of received messages (such as three). If not, the method500returns to step502. Otherwise, the receiving node transmits a request for the transmitting node's full counter value at step524and receives a response and adjusts its own counter at step526. In this case, the receiving node has tried and been unable to re-synchronize with the transmitting node, so the receiving node requests information from the transmitting node to enable re-synchronization.

As shown inFIG. 6, a message is successfully received, decrypted, and authenticated at step602. This could occur as shown inFIG. 5. If the receiving node's window was not shifted in order to decrypt and authenticate the message (meaning step518was not performed inFIG. 5) at step604, the receiving node marks the appropriate bit in its bitmap for the partial counter value in the message at step606. This could include, for example, setting the appropriate bit to a value of “1” in the bitmap308. The window used by the receiving node is then advanced at step608, and the bitmap is shifted at step610. This could include, for example, the controller202advancing the window306and shifting the bitmap308so that both begin at the first zero value in the bitmap308. This point represents the partial counter value for the next expected or missing message.

Otherwise, if the window was shifted in order to decrypt and authenticate the message, the receiving node marks the bit in its bitmap for the partial counter value in the message at step612. The window and bitmap are centered on the marked bit of the bitmap at step614. This could include, for example, the controller202shifting the window and bitmap right or left so that the marked bit is located generally in the center of the window306and the bitmap308.

AlthoughFIGS. 5 and 6illustrates examples of methods500and600for counter-based receptions of messages in a wireless network, various changes may be made toFIGS. 5 and 6. For example, the counter could be decremented so that smaller values are used at step518. Also, the movements of the window and bitmap at steps608-610and614are for illustration only. The window and bitmap could be adjusted in any other suitable manner. In addition, while shown as a series of steps in each figure, various steps in each figure could overlap, occur in parallel, or occur in a different order.

It may be advantageous to set forth definitions of certain words and phrases used throughout this patent document. The term “couple” and its derivatives refer to any direct or indirect communication between two or more elements, whether or not those elements are in physical contact with one another. The terms “transmit,” “receive,” and “communicate,” as well as derivatives thereof, encompass both direct and indirect communication. The phrases “transmitting node” and “receiving node” denote different nodes during a single transmission of a message, although a node could be a transmitting node in some instances and a receiving node in the same or other instances. The terms “include” and “comprise,” as well as derivatives thereof, mean inclusion without limitation. The term “or” is inclusive, meaning and/or. The phrases “associated with” and “associated therewith,” as well as derivatives thereof, may mean to include, be included within, interconnect with, contain, be contained within, connect to or with, couple to or with, be communicable with, cooperate with, interleave, juxtapose, be proximate to, be bound to or with, have, have a property of, or the like. The term “controller” means any device, system, or part thereof that controls at least one operation. A controller may be implemented in hardware, firmware, software, or some combination of at least two of the same. The functionality associated with any particular controller may be centralized or distributed, whether locally or remotely.