text:
Upgraded firmware for a microcontroller is created and encrypted to construct a file (116) that can be distributed and installed by technicians in the field. The encryption includes character encryption (210) of the data as well as a second level of block encryption (216). Within the encrypted file (116), information about the firmware and the target microcontroller (104) is included. The distributed firmware file (116) is stored on a portable device, such as a PDA, that can communicate with the target microcontroller (104) to effect a firmware transfer from the PDA (112) to the microcontroller (104). The microcontroller (104) includes a programming routine that receives the encrypted data stream from the PDA and decrypts the data before storing the new firmware image. The programming routine also identifies when updating the firmware has left the firmware in an unusable condition and prevents operation of the microcontroller until the firmware is restored. Accordingly, the security of the firmware is maintained throughout the distribution and upgrade process and the integrity of the upgrade process is maintained as well.
1. A method for constructing an encrypted file comprising the steps of:
obtaining a first key and a second key having a same size;
obtaining a third key that is constructed by rearranging and combining the first and second keys, wherein the third key is larger in size than the first and second keys;
obtaining a fourth key that is constructed by selecting a subset of the third key, wherein the fourth key is smaller in size than the first, second and third keys;
encrypting (210) a source file (256) by encrypting a plurality of segments of the source file (256) using the fourth key to generate a first encrypted file (260), the size of each segment being equal in size to the fourth key; and
encrypting (216) the first encrypted file (260) by encrypting a plurality of blocks of the first encrypted file (260) using the third key to generate a second encrypted file (268), the size of each block being equal in size to the third key.
2. The method according to
appending (212) the first key to the first encrypted file (260) before generating the second encrypted file (268).
3. The method according to
calculating (208) a checksum of the source file; and
appending the checksum (258) to the first encrypted file (260) before generating the second encrypted file (268).
4. The method according to
calculating (214) a cyclic redundancy check (266) for the first encrypted file (260); and
appending the cyclic redundancy check (266) to the first encrypted file (260) before generating the second encrypted file (268).
5. The method according to
calculating a cyclic redundancy check (270) of the second encryption file (278); and
appending the cyclic redundancy check (270) to the second encryption file (278).
6. A method for constructing a firmware file for a target microcontroller, comprising the steps of:
obtaining a firmware image file (256) for the target microcontroller (104);
encrypting (210) each byte of the firmware image file (256) using a first key to generate a first encrypted file (260), wherein the value of the first key depends on a device (102) using the target microcontroller (104); and
encrypting (216) each block of the first encrypted file (260) using a second key to generate a second encrypted file (268), wherein the first key is a subset of the second key.
7. The method according to
obtaining a private key that is based on the target microcontroller (104);
obtaining a public key that is associated with the firmware image file (256);
obtaining the second key that is constructed by rearranging and combining the private and public keys, wherein the second key is larger in size than the public and private keys; and
obtaining the first key that is constructed by selecting a subset of the second key, wherein the first key is smaller in size than the second, public and private keys.
8. The method according to
appending (212) the public key to the first encrypted file (260) before generating the second encrypted file (268).
9. The method according to
calculating a checksum (258) of the firmware image file (256) and appending the checksum (258) to the first encrypted file (260) before generating the second encrypted file (268);
calculating a first cyclic redundancy check (266) on the first encrypted file (260) and appending the first cyclic redundancy check (266) to the first encrypted file (260) before generating the second encrypted file (268); and
calculating a second cyclic redundancy check (270) on the second encrypted file (268) and appending the second cyclic redundancy (270) check to the second encrypted file (268).
10. The method according to
appending to the first encrypted file (260) information (240) about at least one of a software version of the firmware image file (256), compatible hardware for the firmware image file (256), and an expiration period of the firmware image file (256).
11. A method for updating firmware in a microcontroller, the method comprising the steps of:
receiving a request (414) to update a current firmware;
in response to the request, initiating (304) a boot-up sequence of instructions;
determining (306) the current firmware's integrity;
if the integrity is verified, then waiting (308) a predetermined period of time for an initiation signal to begin a firmware upgrade process and executing (314) the current firmware if the initiation signal is not received during the predetermined period of time;
if the integrity is not verified, then waiting (310) for the initiation signal; and
in response to the initiation signal, executing (312) a firmware programming routine that receives new firmware and overwrites the current firmware with the new firmware.
12. The method according to
setting an flag (528) to indicate that the firmware may be in a corrupted state when the firmware programming routine is executed; and
clearing the flag (540) if the firmware programming routine indicates that overwriting the current firmware is successful.
13. The method according to
receiving an indication (316) of how successful the firmware programming routine is at overwriting the current firmware;
executing the new firmware (322), if the indication is one of success; and
initiating (318) the boot-up sequence of instructions, if the indication is not one of success.
14. A method for upgrading firmware in a microcontroller-controlled device, the method comprising the steps of:
receiving (506) an encrypted first portion of a new firmware;
verifying (510) that the new firmware is appropriate for a microcontroller, based on the first portion;
receiving the new firmware (516) in encrypted form and a previously calculated first integrity indicator for the new firmware;
generating (518) a decrypted data stream by decrypting the received new firmware based on a first decryption algorithm;
calculating (518) a second integrity indicator of the decrypted data stream and discarding the decrypted data stream;
validating (522) the new firmware's integrity based on the first and second integrity indicators;
if the new firmware's integrity is successfully validated, receiving (530) the new firmware in encrypted form;
decrypting (532) the received new firmware based on the first decryption algorithm to generate a plurality of bytes;
decrypting (532) each of the plurality of bytes based on a second decryption algorithm to generate a firmware image file; and
overwriting (534) a current firmware with the generated firmware image file.
15. The method according to
retrieving (604) from a local memory store a first decryption key whose value depends on the device;
using the first decryption key to extract (608) a second decryption key from the encrypted first portion;
constructing (610) a third encryption key by combining and rearranging the first and second encryption keys; and
wherein the first encryption algorithm relies on the third decryption key and the second encryption algorithm relies on a subset of the third encryption key.
16. A computer readable media bearing instructions for constructing an encrypted file, said instructions being arranged to cause one or more processors upon execution thereof to perform the steps of:
obtaining a first key and a second key having a same size;
obtaining a third key that is constructed by rearranging and combining the first and second keys, wherein the third key is larger in size than the first and second keys;
obtaining a fourth key that is constructed by selecting a subset of the third key, wherein the fourth key is smaller in size than the first, second and third keys;
encrypting the source file by encrypting a plurality of segments of a source file using the fourth key to generate a first encrypted file, the size of each segment being equal in size to the fourth key; and
encrypting the first encrypted file by encrypting a plurality of blocks of the first encrypted file using the third key to generate a second encrypted file, the size of each block being equal in size to the third key.
17. A computer readable media bearing instructions for updating firmware in a microcontroller, said instructions being arranged to cause one or more processors upon execution thereof to perform the steps of:
receiving a request to update a current firmware;
in response to the request, initiating a boot-up sequence of instructions;
determining the current firmware's integrity;
if the integrity is verified, then waiting a predetermined period of time for an initiation signal to begin a firmware upgrade process and executing the current firmware if the initiation signal is not received during the predetermined period of time;
if the integrity is not verified, then waiting for the initiation signal; and
in response to the initiation signal, executing a firmware programming routine that receives new firmware and overwrites the current firmware with the new firmware.
18. A computer readable media bearing instructions for upgrading firmware in a microcontroller-controlled device, said instructions being arranged to cause one or more processors upon execution thereof to perform the steps of:
receiving an encrypted first portion of a new firmware;
verifying that the new firmware is appropriate for a microcontroller, based on the first portion;
receiving the new firmware in encrypted form and a previously calculated first integrity indicator for the new firmware;
generating a decrypted data stream by decrypting the received new firmware based on a first decryption algorithm;
calculating a second integrity indicator of the decrypted data stream and discarding the decrypted data stream;
validating the new firmware's integrity based on the first and second integrity indicators;
if the new firmware's integrity is successfully validated, receiving the new firmware in encrypted form;
decrypting the received new firmware based on the first decryption algorithm to generate a plurality of bytes;
decrypting each of the plurality of bytes based on a second decryption algorithm to generate a firmware image file; and
overwriting a current firmware with the generated firmware image file.
19. A computer readable encrypted firmware distribution file (116) embodied in a carrier wave, comprising:
a first file (260) encrypted according to a first algorithm, said first file comprising a firmware image (256) for a target microcontroller (104);
a header (262) comprising information about one or both of the target microcontroller (104) and the firmware image (256);
a second file (268) encrypted according to a second algorithm; said second file (268) comprising the first file (260), the header (262) and a first integrity indicator (266) calculated from the first file (260) and the header (262); and
a second integrity indicator (270) calculated from the second file (268).
20. The carrier wave according to
21. A method for securely updating microcontroller firmware, the method comprising the steps of:
receiving (308) a request from a remote device (112) to upgrade firmware of a microcontroller (104);
receiving (530) an encrypted file from the remote device (112), the encrypted file comprising an executable application for operating an appliance (102) controlled by the microcontroller (104);
decrypting (532) the received file to construct an unencrypted firmware image based on the executable application; and
storing (534) the unencrypted firmware image in a programmable memory (120) accessible by the microcontroller (104).
22. The method according to
retrieving (604) a first decryption key from a protected memory location accessible by the microcontroller (104), wherein the protected memory location is located local to the microcontroller (104).
23. The method according to
retrieving (504) a second decryption key from a portion of the encrypted file.
24. The method according to
performing (534) the decrypting step using the first and second decryption keys.
25. The method according to
verifying (510) the encrypted file is appropriate for the microcontroller after receiving the encrypted file but before constructing the unencrypted firmware image.
26. The method according to
verifying (522) the integrity of the encrypted file before constructing the unencrypted firmware image.
27. The method according to
This application relates to and claims priority from U.S. application Ser. No. 60/289,825 filed May 10, 2001 entitled FIRMWARE FIELD UPGRADE SECURITY METHOD, the disclosure of which is hereby incorporated in its entirety by reference.
The present invention relates to microcontrollers and, more particularly, to programming such microcontrollers.
Microcontrollers and microprocessors are used to control a variety of equipment and systems. In particular, large appliances such as heaters, air conditioners, thermostats, and refrigerators include programmable microcontrollers that manage and direct their operation. Such microcontrollers typically include, among other features, programmable memory that is programmed during assembly of the appliance to store information about the appliance as well as executable code that permits the microcontroller to perform its intended function.
By storing this appliance-controlling executable code in programmable memory, an appliance's performance and operation can be updated by merely reprogramming the microcontroller's programmable memory region. Such reprogramming can be performed in the field and eliminates the need for technicians to stock and install sensitive electronic devices for a large number of different appliances.
Along with such flexibility, however, comes some dangers. In particular, the easier it becomes to reprogram the microcontroller, the easier it becomes to install the wrong operating application in an appliance. Also the accessibility of the executable code for re-programming reprogrammable devices, can be targets for malicious or unscrupulous appliance owners or vandals. There is also the danger that proprietary information and appliance characteristics within the microcontroller's memory and executable code can be determined and misappropriated by business competitors.
While encryption of information is one option for addressing these concerns, this option typically requires more powerful, and costly, microprocessors than would otherwise be needed to simply control an appliance.
Accordingly, there exists an unmet need for a method and system by which firmware in a product (e.g., appliance) with a microcontroller can be upgraded while maintaining the privacy, security and integrity of the firmware throughout the upgrade process.
The present invention relates to a system and method for distributing firmware for a microcontroller's programmable (e.g., flash) memory that secures the privacy and security of the firmware during the upgrade process. In addition, the authenticity and integrity of the firmware is validated during the process and encryption and decryption algorithms are utilized that can be performed even by microcontrollers with 8/16 bit cores having limited mathematic processing capabilities.
One aspect of the present invention relates to a method and computer software for constructing an encrypted file. According to this aspect of the invention, first and second encryption keys are obtained and used to contract a third encryption key by combining and rearranging the first and second keys. A fourth encryption key is then constructed by selecting a subset of the third encryption key. A source file is first encrypted using the fourth encryption key to generate an intermediate file and the intermediate file is then encrypted using the third encryption key,
Another aspect of the present invention relates to a method and computer software for constructing a firmware file for a target microcontroller. According to this aspect of the invention, an unencrypted firmware image file destined for a target microcontroller is obtained. Each byte of the image file is encrypted using a first key, wherein the first key's value partially depends on the device in which the target microcontroller is embedded. The byte-encrypted file is then block encrypted using a second key, wherein the first key is a selected portion of the second key.
A further aspect of the present invention relates to a method and computer software for updating firmware in a microcontroller. According to this aspect of the present invention, a microcontroller receives a request to update its current firmware and, in response, resets so as to initiate its boot-up sequence of instructions. First, the present integrity of the firmware is checked to determine whether or not to proceed with updating the firmware. If the firmware's integrity is verified, then the boot-up sequence waits for a time period to see if a command is received to begin the updating process. If no such command is received before the time period expires, then the microcontroller continues by executing the current firmware in normal operational mode. If, however, such a command is received, then the microcontroller continues by executing a firmware programming routine. When the firmware's integrity cannot be positively verified, the boot-up sequence continuously waits for the command to begin the updating process and does not enter normal operational mode.
Yet another aspect of the present invention relates to a method and software for upgrading firmware in a microcontroller-controlled device. According to this aspect of the invention, the microcontroller receives an encrypted portion of new firmware and verifies that the new firmware is appropriate for installation based on information in this first portion. The encrypted new firmware is then received along with a first CRC or other integrity value. In response, the new firmware is decrypted on the fly, used to calculate a second CRC (or integrity indicator), and then discarded. The received CRC and the calculated CRC are compared to determine the validity and integrity of the new firmware file before the current firmware is ever modified. Next, the encrypted new firmware is received again. This time, the stream of the encrypted firmware is decrypted using a first algorithm into blocks of intermediate data which, themselves, are decrypted using a second algorithm into an unencrypted firmware image that is written over the current firmware.
An additional aspect of the present invention relates to a firmware distribution file that is embodied on a carrier wave. According to this aspect of the innovation, the firmware distribution file includes: a firmware image that is encrypted using a first algorithm to create a first file; a header that contains information about the microcontroller, the firmware image or both; a combination of (a) the first file, (b) the header, and (c) a integrity indicator calculated from (a) and (b), the combination being encrypted using a second algorithm to create a second file; and an integrity indicator calculated from the second file.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
To aid with the understanding of the present invention, exemplary embodiments are presented within the context of a specific environments. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures, devices, and processes are shown in block diagram form, herein, in order to avoid unnecessarily obscuring the present invention.
According to an embodiment of the present invention, the operating firmware is arranged into an encrypted flash data file 116 that can be used by the microcontroller once decrypted. Preferably, the computer 114 includes software routines that can arrange the operating firmware into a file that is formatted such that the file can be used by the microcontroller without further rearrangement, address linking, or other manipulation.
To get the encrypted file 116 to the appliance 102, a number of different distribution methods can be used. For example, an appliance manufacturer can have a web site from which technicians or other service personnel can download updated and upgraded firmware (for free or for a fee). Alternatively, or conjunctively, the various firmwares could be sent in periodic updates on a number of physical computer media or through e-mail. Regardless of the distribution method, a technician will obtain the file 116, store the file 116 on a portable computing device 112 (e.g., a PDA, laptop, etc.), and will arrive at the appliance 102 to perform a firmware upgrade or update.
The exemplary environment described herein includes a portable computing device 112 carried by a technician and, thus, is locally located with the appliance 102 during the upgrading of the appliance's operating firmware. The physical connection between the device 112 and the appliance 102 can include industry standard communication methods (e.g., RS-232, RS-422), infrared and other wireless communication schemes, or proprietary communications protocols that depend on the specific microcontroller 104 or appliance 102. While it is within the scope of the present invention that the portable computing device 112 can be a non-portable device located remotely from the appliance 102, such an environment is not described herein in detail, so as not to obscure the merits of the present invention, as such an alternative environment differs from the exemplary environment merely by utilizing remote communication capabilities such as network connectivity or modem capabilities rather than local communication methods.
The computing device 112 includes a bootload program for communicating with the appliance 102. This bootload program 118 can be freely distributed to service personnel as it does not contain decrypted keys or any decryption algorithm. Instead, the bootload program executes simple communication steps that initiate and carryout a file transfer operation with the appliance 102.
The appliance 102, as described earlier, includes a microcontroller 104 that controls its functioning and operation. Such a microcontroller 104, as is known in the art, usually has an 8 or 16-bit core that has limited mathematic capability. Even though more complex microcontrollers could be used, their added complexity adds to the cost of design, implementation and support while their additional performance capabilities go mostly unused.
In particular, the microcontroller 104 typically includes a number of memory regions for storing data and information about the appliance 102. A skilled artisan would recognize that many functionally equivalent arrangements and circuitry can be used to store the appliance's operational data and application software. The memory arrangement illustrated in
In operation, one embodiment of the present invention uses the bootload program 118 of the portable computing device 112 to signal to the appliance's microcontroller 104 that a firmware upgrade is to be initiated. In response, the microcontroller 104 executes a software routine that communicates with the portable device 112 to start receiving information from the device 112 and overwriting the application memory 106 with information from the new firmware upgrade file 116. Upon completing the download of the information from the firmware file 116, the microcontroller 104 is reset so that it can operate under the control of the newly acquired firmware now stored in the programmable memory 106.
Embodiments of the present invention utilize encryption to protect a firmware file 116 while it is being distributed. Without the file 116 being encrypted, information regarding the operation and capabilities of the appliance 102 can be readily determined from even a cursory examination of the instructions and data included in the file 116. Accordingly, as described in more detail below, the file 116 is encrypted by the computer 114 before being distributed and remains encrypted until being written to the programmable memory 106.
The encryption methods and protocols used by the different embodiments described herein utilize a number of keys to encrypt and decrypt information. In the exemplary environments, methods and embodiments described herein, these keys are described as having a particular length (e.g. 32 bits). Other key lengths are also contemplated within the scope of the present invention where shorter and longer keys can be used depending on whether more security or faster performance is desired. These keys, for example, can include:
Key A: A key selected at the time the file 116 is being created on the computer 114. This key is embedded in the file 116 and distributed with the file 116. By randomly, or continuously cycling, this key's selection, the encryption scheme can be further strengthened. A 32-bit KeyA has the structure A1H:A1L:A2H:A2L wherein each of the AxH and AxL refer to a byte and H refers to a higher order byte and L refers to the lower order byte.
Key B: A key, the same size as KeyA, that is embedded in the bootblock region 110 during initial programming of the microcontroller 104 and protected using conventional hardware security measures such as fuse bits. All appliances 102 of a particular product family have the same KeyB but this key differs among different product families. A 32-bit KeyB has the structure B1H:B1L:B2H:B2L.
KeyAB: A key derived from KeyA and KeyB by permuting the different bytes. The exemplary method described herein utilizes the particular 64-bit permutation of: A1H:B1L:B2H:A2L:B1H:A1L:A2H:B2L. Other arrangements of the bytes of KeyA and KeyB are contemplated, as well.
SubKeyAB: An 8-bit key derived by taking, for example, every fifth bit of each byte segment in KeyAB. As most characters are represented using an 8-bit code, an 8-bit code is useful for implementing a character encryption routine.
If additional security is warranted, 128-bit key encryption keys can be used. For example, KeyA would be a 64-bit key, KeyB would be a 64-bit key and KeyAB would be a 128-bit key. The same permutation scheme would still apply for KeyAB but each particular byte (e.g., B1L, A2H, etc.) would have a length of 16 bit rather than 8 bits.
In step 206, this standard format file 254 is rearranged to construct a memory image file 256 that can execute without modification on the microcontroller 104 and its memory arrangement 120. For example, an .A90 hex file 254 can be stripped of its native header information and column checksums. Furthermore, the data addresses in the .A90 hex file 254 can be stripped and rearranged to conform to the memory section 120 of the target microcontroller 104 by stuffing empty bytes with $00 to fill the entire memory image. Alternatively, instead of using conventional development tools, proprietary tools can be developed which internally integrate the rearrangement steps 206 described above.
In order to later verify the integrity of the image file 256, a checksum 258 can be calculated (step 208) and stored for later use.
To protect the information that can be explicitly and implicitly discovered from the image file 256, the image file 256 is initially encrypted (step 210) using a character encryption method. In a preferred embodiment, this encryption method substitutes for each character (e.g., 8 bits) in the file 256 with the following algorithm:
In the above equation, CYPHER is the substituted character, SOURCE is the complement of the original character, and LASTCYPHER is the most recent, previously-substituted character. As can be appreciated, this algorithm implements cipher chaining which utilizes an initial value or vector which, in a preferred embodiment, is SubKeyAB or a derivative thereof.
The particular substitution equation identified above is exemplary only and a skilled artisan would recognize that other variations are contemplated. For example, SOURCE does not have to complemented and the modulo dividend of 256 can be changed to suit the character bit length.
In order to implement this encryption routine, the software development environment executing on the computer 114 has at its availability KeyA and KeyB to allow the construction of SubKeyAB from KeyAB. In particular, KeyA can be calculated by the computer 114 using random number generators or obtained from other conventional cryptographic tools used to generate keys. KeyB is obtained from a highly confidential local or remote database that stores the encryption keys corresponding to particular product families. This is the same key that is embedded in an appliance's bootblock 110 when that appliance 102 is manufactured or initially programmed.
A header 262 is then constructed (step 212) using information 240 relating to the intended appliance 102 for the image file 256. The information 240 can include microcontroller and equipment hardware version, software version, checksum 258, software expiration date, product (or appliance) ID, and KeyA. Other information about the software or the target equipment can also be included in this header 262. The inclusion of this information will permit the programming routine of the microcontroller 104 to verify that the image file 256 is the appropriate file for the particular appliance 102 and microcontroller 104 on which it is trying to be installed. Information about products, appliances and software versions can be stored in the computer 114 or automatically determined by evaluating a software developer's responses and choices to menus and prompts during the creation of the image file 256. In a preferred embodiment, KeyA is the first information in the header 262. With KeyA being located in this position, a later decryption routine can extract KeyA after only receiving the first portion of the header 262.
In step 214, a cyclic redundancy check (CRC) is calculated for the header 262 and the encrypted image file 264. This CRC will permit verification of the integrity of the encrypted file and header during a later decrypting step.
If the source file (262, 264 and 266) were distributed as is, the image file 256 would be protected by only one level of encryption and KeyA would be transmitted in the clear, thus limiting the protection of the image file 256. Accordingly, a second encryption routine (step 216) is used to further protect the firmware file that is ultimately distributed.
The length of the header 262 can be adjusted so that the source file (262, 264, and 266) that is encrypted in step 216 has a length in bytes that is evenly divisible by a predetermined integer. For example, if the source file (262, 264, and 266) has a length in bytes evenly divisible by 8 then a 64-bit (i.e., 8 bytes) block cipher can be used to encrypt the source file in step 216.
In a preferred embodiment, each 64 bit segment of the source file (262, 264, and 266) is encrypted (step 216) using byte permutation and the 64-bit key KeyAB. The permutation order is the same for each 64-bit segment and reorders the 8 bytes (B1:B2:B3:B4:B5:B6:B7:B8) to (B2:B8:B1:B7:B3:B6:B4:B5).
The block encryption routine of step 216 substitutes each 64-bit segment with the following algorithm:
where SOURCE is an 8-byte block after it has been permuted.
A CRC 270 is calculated (step 218) for the encrypted file 268 and appended thereto in order to construct the distribution file 116 that is distributed (step 220) for installation by a technician.
Because of the two-level encryption scheme, the firmware upgrade distribution file 116 and KeyA can be distributed via any of a variety of physical and electronic means without fear of revealing protected or sensitive information. Once distributed to technicians or service companies, the firmware upgrade can be loaded or stored in portable diagnostic equipment, PDAs, laptop computers or remotely networked computers 112. From whatever equipment 112 the firmware upgrade file 116 is loaded on, the file can then be uploaded to the microcontroller 104 to be stored in the programmable memory area 106.
Because the file 116 that is stored on the portable device 112, for example a PDA, is encrypted and the image file stored in memory 106 and executed by the microcontroller 104 is unencrypted, the present inventive firmware upgrade methods include routines for decrypting the data that is uploaded from the PDA 112 to the application memory area 106.
If the decryption scheme is constructed such that it occurs at the PDA 112, then any technician with an appropriately programmed PDA would be able to view the image file 256 as cleartext. If the decryption keys and methods were stored in a region of memory 120 that could be read from, then decryption of the distribution file 116 could be accomplished after extracting the necessary information from the memory 120. Accordingly, embodiments of the present invention include a firmware upgrade method that performs, at the microcontroller 104, decryption of a received encrypted data stream using stored executable code and data that are protected by hardware security fuse bits to prevent access to predetermined memory regions from external readers while still allowing access to those same memory regions from executing instructions.
As previously explained, the microcontroller 104 executes main application software which determines and controls the functioning and operation of the appliance 102. This main application, or firmware, typically executes as a continuous loop that is interrupted, intentionally or unintentionally, by external occurrences such as a power reset or an external interrupt signal.
Upon reset, the microcontroller 104 begins execution by jumping to an address known as the reset vector which points to a section of instructions known as a bootblock. Once the sequence of instructions in the bootblock are completed, the control of the microprocessor 104 jumps to the starting location of the main application, or firmware, and begins execution.
In embodiments of the present invention, the bootblock 110 includes instructions to wait for a �Program� code (or command) and also other instructions that implement a firmware updating or programming routine.
In step 302, the microcontroller 104 is reset. This reset can be due to a power interruption, actuation of a reset switch, or a software interrupt, or condition, that results in a self-initiated reset. Upon resetting, the microcontroller 104 enters and begins execution of the bootblock 110, in step 304. The bootblock 110 checks, in step 306, if a �FAILED� flag is set indicating some error in the programming of the firmware. If this flag is not set, then flow continues with step 308. If, however, this flag is set, then the microcontroller 104 is prevented from controlling the appliance 102 and, instead, continuously waits, in step 310, for receipt of a �Program� command.
In step 308, the microcontroller also waits for receipt of a �Program� command from an external source, such as device 112. However, in step 308, the wait only lasts for a predetermined length (e.g. 5 seconds). If no �Program� command is received during this time period, then the microcontroller 104 continues its execution by jumping to the main application software in step 314 and normal operation of the appliance commences.
A microcontroller, as is known in the art, typically includes a number of input ports for receiving and recognizing data in a variety of formats and protocols. The microcontroller 104 polls (in steps 308 and 310) one or more of these input ports for the �Program� command sent by the device 112 being used by a technician.
Regardless of whether the polling occurs during step 308 or step 310, the receipt of the �Program� code results in the sending of an acknowledgment to the portable device 112 in step 311 and the execution of a programming routine in step 312 that receives new firmware from the device 112 and overwrites the existing firmware with this new firmware.
The firmware programming routine of step 312 returns a �success� indicator that is used in step 316 to determine whether the bootblock flow continues with step 320 or step 318. If the programming routine was unsuccessful, then, in step 318, the microcontroller retrieves the RESET vector and jumps there so that the firmware programming can be repeated. If the programming routine was successful, then the �FAILED� flag is cleared in step 320 and program flow continues, in step 322, by jumping to the beginning of the new firmware to begin execution.
The details of the firmware programming routine of step 312 are illustrated by the flowchart of FIG. 5. This routine is executed during the bootloading process of the microcontroller 104 and involves communication with the device 112. While the present invention focuses on the upgrading of firmware of a microcontroller, a software application is necessarily described below, with reference to
In step 402, a technician using the portable device 112 establishes a communication channel with the microcontroller 104 of the appliance 102. In designing the communication software routines, some prior knowledge of the various microcontrollers, their command sequences, and their capabilities is needed.
Next, in step 404, the software application presents to the technician a menu, or similar list, of available firmware upgrade files that are stored on the device 112. In response to the technician's selection of a particular firmware file, that file is retrieved, in step 406, in preparation for uploading to the microcontroller 104.
The firmware upgrade file has associated with it a CRC that was distributed along with the firmware file. In retrieving the file in step 406, the software also calculates a CRC of the file and compares, in step 408, the calculated CRC with the original CRC for agreement. Other data verification methods, such as checksums, can be used instead of a CRC.
If the two CRCs are different, then the software notifies the technician using visible, audible, or other means, in step 410, and ends the firmware upgrade process. If, however, the two CRCs are in agreement, then the firmware upgrade process can continue with step 412, by sending a reset signal to the microcontroller 104. After, the reset signal is sent, the software sends, in step 414, the �Program� command or code to the microcontroller at regular intervals until an acknowledgment is received from the microcontroller, in step 416, indicating that the �Program� command was received and recognized. Step 414 can include a timer that signals the technician that a predetermined time period has passed since the sending of the reset signal without receipt of an acknowledgment from the microcontroller 104. Using this information, the technician can determine if a problem may exist with the established communications channel, the microcontroller 104, or the portable device 112.
Once an acknowledgment is received from the microcontroller 104, the software continues, in step 418, by transmitting the first part of the encrypted header of the firmware upgrade file. The size of the transmitted portion is the same as the key size used to block encrypt the firmware file. This portion of the header includes a permuted and encrypted version of KeyA which the microcontroller uses in conjunction with KeyB to decrypt the firmware file.
The microcontroller 104 receives the transmitted header portion and then begins receiving and decrypting the firmware upgrade file as described below with reference to FIG. 5. In performing the firmware upgrade, the microcontroller 104 periodically requests data to be sent from the device 112 and also transmits various status messages and other information. In response to the communication stream from the microcontroller 104, the software, as in step 420, receives and processes these messages and requests, streams the encrypted firmware upgrade file to the microcontroller 104, and displays an indication of the status of the upgrade process for the benefit of the technician. Upon completion of the upgrade process, the microcontroller 104 transmits an indication of whether the process was successful or not. This indication of the process's success is displayed, in step 422, to the technician.
To reach step 502, the portable device 112 has already sent a reset request to the microcontroller 104 and issued the �Program� command which has been received and acknowledged.
In response to receiving the acknowledgment from the microcontroller 104, the portable device 112 transmits the first portion of the block encrypted header to the microcontroller 104. In step 502, this portion of the header is received by the programming routine. In step 504, KeyA is extracted from the received portion and KeyB is obtained from a known location in the bootblock memory region 110. Using the two keys, the routine constructs KeyAB and SubKeyAB.
Once the decryption keys are constructed the microcontroller 104 signals, in step 506, the portable device 112 to send the entire header which is received in step 508 and decrypted using KeyAB.
The information within the header can be used to ensure that the firmware upgrade is appropriate for the microcontroller 104. For example, the decrypted software version can be compared to the software version stored in the EEPROM memory region 108 to see if a later (or an earlier) version is being installed. A similar comparison can be used to compare compatible Hardware Types and IDs from the header with the information in the EEPROM memory 108. Other tests can involve the firmware expiration date, the appliance identification number and any other information stored in the header. The programming routine 312 can also include sending the extracted information back to the portable device 112 in order to query the technician whether the upgrade should proceed based on the extracted information. After receiving the technician's approval, for example as in step 514, the microcontroller 104 continues with the upgrade process by requesting the receipt of the entire encrypted file.
The file is received, in step 516 and the data is decrypted, in step 518, but is discarded as it is received while a CRC is calculated for the received file on the fly. Accordingly, at no time is an entire decrypted image of the file available on the device 112 or the appliance 102 for misappropriation.
In step 520, the last portion of the encrypted file containing the original, encrypted CRC that was distributed with the file is extracted and retained. The extracted CRC is compared with the CRC calculated in step 518 to determine the validity and integrity of the firmware file.
If the two CRCs do not agree then a failure message is sent to the portable device 112 in step 524 and the upgrade process is aborted. If, however, the two CRCs do agree, then a success message is sent to the portable device 112 in step 526 and the upgrade process continues with the portable device 112 resending the entire encrypted file. In addition, the �FAILED� flag is set (See step 306 of
In step 530, the programming routine receives the entire encrypted file and, in step 532, decrypts by block and by character the firmware file. The decrypted characters from the firmware image file are written, in step 534, to the firmware memory region 106 on the fly. However, as some flash memories require writing of data in page sizes, the decrypted characters may be collected in properly sized segments before being written to the memory 106. Within the header, the checksum for the image file is included and is extracted for later use.
Once the new firmware image file has been written in the memory region 106, a checksum is calculated in step 536. This calculated checksum is compared with the checksum extracted from the header to determine if the firmware programming was successful. If the checksums disagree, then the �FAILED� flag remains set and the portable device 112 is informed of the failure in step 538. Under such conditions (as described in FIG. 3), the microcontroller 104 stays in the programming mode and waits for the portable device 112 to try again to update the firmware. If, however, the checksums agree, then the �FAILED� flag is cleared and the device 112 is informed of the success. Under these latter circumstances, the microcontroller 104 begins operating under control of the new firmware.
During construction of the encrypted file 116, KeyA was permuted across twice its size and encrypted with KeyAB. Thus, the beginning portion of the header in encrypted file 116 that is twice the size of KeyA contains KeyA encoded within.
This portion of the header is received from the device 112 and decrypted to the point of being able to extract KeyA as described earlier in step 504. A flowchart which details the extraction of KeyA from the received encrypted header portion is depicted in FIG. 6. This flowchart continues with the exemplary embodiment previously introduced in which KeyA and KeyB are 32-bit keys used to derive a 64-bit key KeyAB and an 8-bit key SubKeyAB.
In step 602, the received header portion is de-permuted by reordering bytes (B1:B2:B3:B4:B5:B6:B7:B8) to (B3:B1:B5:B7:B8:B6:B4:B2), and KeyB which is stored in bootblock 110 is retrieved, in step 604, in order to begin decryption of the firmware file.
In step 606, KeyAB is constructed from KeyA and KeyB by reordering the bytes from the keys as described earlier. However, at this stage of decryption, KeyA is not yet known and, therefore, $00 is substituted in KeyAB for all the bytes from KeyA. This incomplete version of KeyAB is then used to block decrypt the de-permuted bytes by the following algorithm:
In the above substitution, SOURCE is the cleartext version of the header portion received from the device 112.
The first 32 bits of the resulting cleartext reveals KeyA which can be extracted for later use. It is because of the specific rearrangement of both the bytes that make up KeyAB and the rearrangement of the bytes that are block encrypted and decrypted as well as the nature of the XOR operation that allow the incomplete version of KeyAB to decode the encrypted bytes corresponding to KeyA and, thereby, permits its extraction. The specific, exemplary embodiment described herein is but one way of accomplishing the encryption and decryption of KeyA in this manner. Other permutations and rearrangements of bytes which result in KeyA being extractable by an incomplete KeyAB are also contemplated within the scope of the present invention.
The availability of KeyB and the discovery of KeyA permit the construction of a complete KeyAB and also SubKeyAB, in step 610, for later use. These latter keys are constructed as described earlier.
With the decryption keys available, the firmware programming routine is able to receive, for example, a 64-bit segment and block decode it and then byte decode each byte within the block (see step 534 of FIG. 5).
In step 702, an encrypted block is received. The block size varies according to the size of KeyAB which in the exemplary embodiment is 64 bits in size. The received block is de-permuted, in step 704, by reordering bytes (B1:B2:B3:B4:B5:B6:B7:B8) to (B3:B1:B5:B7:B8:B6:B4:B2). The de-permuted bytes are then block decrypted, in step 706, according to the substitution algorithm:
Each decrypted block includes a plurality of character encrypted bytes. Thus, in step 708, each encrypted byte is decrypted according to the algorithm:
In the above equation, DECIPHERED is the cleartext version of each CIPHERED byte of the firmware image that was encoded and encrypted in the distribution file 116. These deciphered bytes are written to the firmware memory region 106 to update the firmware for the controller 104.
The particular decryption scheme described above provides significant security but is limited to simple integer manipulations that can be easily and quickly performed by less-powerful microcontrollers having only basic mathematic function.
A firmware programming method has been described which can be reinitiated following a programming failure (i.e., re-entrant), prevents future microcontroller execution of the firmware should programming be interrupted or corrupted, validates the authenticity and the integrity of the distributed firmware before the existing firmware is altered, prompts a technician when the firmware appears to be a downgrade, verifies that firmware for different product types cannot be programmed into the wrong product, verifies that the new firmware is compatible with the target hardware, microcontroller and product, mathematically friendly to microcontrollers, and secures the privacy of the firmware since all decryption occurs within.
While this invention has been described in connection with what is presently considered to be the most practical and preferred embodiment, it is to be understood that the invention is not limited to the disclosed embodiment, but on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims. The invention is capable of other and different embodiments and its several details are capable of modifications in various obvious respects, all without departing from the invention. Accordingly, the drawings and description are to be regarded as illustrative in nature, and not as restrictive.
Patent Citations
Referenced by
Legal Events
Original Image


text:
Senior Member
What is better for runes, Magic Pen, or raw AP?
I get AP per level
you get a total of 85 extra ap
Z The Slayer
I'd actually say magic pen. His missiles do an insane amount of damage early on with MP reds and quints, and they help scale into late game, too.
I'm not saying Pain is wrong. But I run 14 magic pen, and there's very little that can compare to that harassment.
It's a tough decision... if you are going with Missiles as your primary damage output (which in my opinion is better) you should go with the magic pen. His turrets right now aren't affected by Mpen but scale with AP.
IMO just go with Mpen, or Mpen and a little flat Ap since the Mpen will be much more effective late game.
AP is going to be more helpful with your early game, but Pen is going to be better long term. Heimer is not a burst you down type champ so the AP is actually less useful than a AP champ like LeBlanc, that relies on burst.
Early game for Heimer is more about farming and lane control with his turrets.
© 2015 Riot Games, Inc. All rights reserved. Riot Games, League of Legends and PvP.net are trademarks, services marks, or registered trademarks of Riot Games, Inc.

subset: commoncrawl


text:
The staff at All About Eyes knows how important fashion, function, and fit are to a pair of eyeglasses. Bloomington, IL, residents who visit our outlet have access to comprehensive eye care, one-on-one service, and an incredibly diverse selection of frames that includes something for everyone. From budget-friendly vision solutions to the latest designer frames, you'll find the perfect match for you when you visit our shop. We're located at:
101 N. Veterans Pkwy, Suite 301
Bloomington, IL 61704
You can find us conveniently located just south of Eastland Mall across the street from the OSF St. Joseph Medical Center. When you stop in to shop for frames or contact lenses, our staff will be happy to discuss your options. You can purchase frames from Armani, Prada, Chrome, D'Amato, and Gucci, and we manufacture all our lenses in a state-of-the-art facility to ensure the quality of your glasses is of the highest level. Please visit us during the following hours:
Monday – Friday: 9 a.m. – 7 p.m.
Saturday: 9 a.m. – 6 p.m.
Sunday: 11 a.m. – 5 p.m.
All About Eyes is your destination for the perfect pair of eyeglasses. Bloomington, IL, residents and those from the surrounding area know we offer unique solutions based on their needs, and our goal is to make our services affordable and accessible to all. Stop by today or give us a call at (309) 663-2700!


text:
Tag » artists
Netflix-Produced Nina Simone Documentary To Open Sundance Film Festival
BY Julia Zdrojewski in TV on Dec 09, 2014
A Comix and Arts Festival Run and Organized by Women
BY Samantha Albala in Arts on Oct 28, 2014
Get Your Feminist Shopping Fix on Redbubble
BY Lex Ellenthal in Arts on Jul 09, 2014
IN REAL LIFE: The Great Lengths We Go to in Order to Live
BY Maddie Maschger in Arts on Jun 16, 2014
Paper-Goods Maven Julie Ann on Growing Your Business from Idea to Urban Outfitters
BY craftacular in DIY on Jun 13, 2014
Stunning Tattooed Porcelain Figurines
BY Claire Filipek in General on May 16, 2014
Announcing the BUST Magazine Craftacular at Basilica Hudson!
BY Adrienne Tooley in DIY on Nov 22, 2013
Artist Nikki McClure Debuts New Works Tonight
BY Katie Fustich in Arts on Nov 08, 2013
Art Show Alert! Dilek Baykara at Superchief This Thursday
BY Amy LaCount in Arts on May 29, 2013
On Newsstands Now: Apr/May 2015
Trending on BUST
Upcoming Events
|Slutist Feminist Festival (NYC)
Sun Mar 29 @ 5:00PM - 11:59PM
|Amber Tamblyn Book release for Dark Sparkler + Yo La Tengo (NYC)
Mon Apr 06 @ 7:00PM - 11:00PM
|PEN DIY with Jennifer Weiner: How to Be Authentic on Social Media (NYC)
Mon Apr 06 @ 7:30PM -
|BUST MAGAZINE READING hosted by Roxane Gay and Amber Tamblyn (Minneapolis, MN)
Fri Apr 10 @ 7:00PM - 11:00PM
|Speed Rack Season 4 (Denver, CO)
Sun Apr 12 @ 3:00PM - 07:00PM


text:
In a game that featured two prolific offenses led by senior quarterbacks, the Arkansas State Red Wolves edged the No.
ARLINGTON, Texas (AP) -- Johnny Manziel stretched out both of his arms and ran off the field as if he
The Oregon Ducks' high-speed offense proved to be too much for the Kansas State Wildcats, as quarterback Marcus Mariota
NEW ORLEANS (AP) -- Terell Floyd returned an interception 38 yards for a touchdown on the first play,
I have simply used common sense and I've come to the conclusion that the NCAA is interested in one thing and one thing alone: Benjamin Franklin.
South Carolina's Jadeveon Clowney made
Jordan Rodgers threw two touchdown passes in Vanderbilt's 38-24 win over NC State; Georgia Tech ran up nearly 300 yards on the ground to stop USC, Tulsa topped Iowa State and Clemson ended the
Rice downed Air Force 33-14 in the Armed Forces Bowl, Syracuse ran all over West Virginia 38-14 to capture the Pinstripe Bowl and Arizona State ran it up on Navy 62-28 in the Fight Hunger Bowl,&nbs
San Jose State and Cincinnati each reached program milestones with their bowl wins on Thursday, San Jose winning 11 games for just the
Central Michigan quarterback Ryan Radcliff threw for 255 yards and three touchdowns to lead Central Michigan over Western Kentucky 24-21 in the Little


text:
Beauty and the Beast 1987 | TV Show Watchlist
Cast & Crew | Episode Guide | Video Clips
A cult fantasy about a lawyer who befriends---and eventually falls for---a kindly man-beast who lives in a subterranean world beneath New York City. Strange, moody and oddly romantic, the series had unusually loyal fans, but, alas, not enough of them and w (more…)
Premiered: September 25, 1987
Rating: TV-PG
Season 2, Episode 10 A Gentle Rain
First Aired: February 17, 1989
Catherine faces an ethical dilemma when a woman recognizes a respected family man from the tunnels as the man who was charged with the death of her son 16 years ago. Linda Hamilton. Kanin: Scott Jaeck. Olivia: Elayne Heilveil.
Guest Cast
Watchlist Sign In
Editors' Picks: On TV
Dancing With the Stars8:00 pm | ABC
Scorpion9:00 pm | CBS
Better Call Saul10:00 pm | AMC
Trending TonightSee all »
Scorpion9:00 pm | CBSI'll Watch1180 Watching
Castle10:01 pm | ABCI'll Watch1033 Watching
Dancing With the Stars8:00 pm | ABCI'll Watch568 Watching
Beauty and the Beast - The Complete Series
By ParamountBuy New: $35.08
Beauty and the Beast Arranged for Harp
By Woods Music and BooksBuy New: $10.95
Disney's Beauty and the Beast: The Broadway Musical
By Hal LeonardBuy New: $14.82
Popular Shows
- 1. The Walking Dead
- 2. Empire
- 3. Grey's Anatomy
- 4. Scandal
- 5. Better Call Saul
- 6. The Blacklist
- 7. House of Cards
Popular Movies
- 1. Birdman
- 2. Boyhood
- 3. American Sniper
- 4. The Theory Of Everything
- 5. Selma
- 6. Grand Budapest Hotel
- 7. The Imitation Game
Popular Celebrities
Popular Videos
- 1. Grey's Anatomy: Arizona & Alex: The First Flight
- 2. Desperate Housewives: Actors Picking up Character Traits
- 3. Mistresses: Toni Seduces Dom While Savi's Away
- 4. Empire: Pilot
- 5. Scandal: Randy, Red, Superfreak and Julia
- 6. The Vampire Diaries: A Bird in a Gilded Cage
- 7. The Blacklist: The Longevity Initiative


text:
Home Theatre Tickets Conferences and Speaking Tours Sally Morgan
Sally Morgan Tickets
Find the Sally Morgan tickets you're looking for on NME ticket exchange, the world's largest ticket marketplace. Select an event to view the range of tickets available or view the calendar to see all the dates available with tickets. You can also sell your spare Sally Morgan tickets on NME ticket exchange, and listing tickets is free. All Sally Morgan tickets are covered by the NME ticket exchange Ticket guarantee!
United Kingdom
Usher Hall
Sally Morgan - Psychic Sally on the Road
|From £28.41
United Kingdom
The Shaw Theatre
Sally Morgan - Psychic Sally on the Road
United Kingdom
Pyramid and Parr Hall
Sally Morgan - Psychic Sally on the Road
More Results...
0 remaining
- Sort By:
- Recommended
- Venue
- Date
- Price
Why viagogo?
Secure Delivery
Safe and Secure Platform
World's Largest Selection of Tickets


text:
Write Review
However... sizing...It's a crap shoot.
Patagonia explained to me that they size with the understanding that babies are growing. Which is great. However, this one is diffe…
- Kevin, 08/05/14
I bought this for my newborn daughter as a fall sweatshirt, and I love it. I bought size 6 months, and although she's only 3 months, it still works. I just roll up the sleev…
- Sara, 10/04/13
Write Review
Write Review
Write Review
My daughter (4) loves these pants like what?!?! They are durable, soft and can be worn 24hrs a day - only drawback is wide waist but it's fine for my girl since she's taller a…
- Sarah, 12/02/14
San Diego, CA
As an adult I only wear my patagonia capilenes. I love that my baby and toddlers can too. These keep baby so warm. They are perfect under a snowsuit for a day out in the snow…
Patagonia does it right with this under layer. They do run a little big so keep that in mind.…
- Marissa, 02/28/15
Material is very soft and warm. The built in mittens and footies are awesome and the snap closure makes it easy to get on a squirmy baby.…
- Lauren, 11/09/14
Write Review
Would you like to compare the products you have selected now?


text:
SAN FRANCISCO (AP) - Tramaine Brock is kicking himself for not having a third interception. He came oh so close.
OAKLAND (AP) - Terrelle Pryor and Charles Woodson turned this rare late-night start into an Oakland Raiders celebration.
DETROIT (AP) - On another team, he might be an ace.
SAN JOSE (AP) - Tomas Hertl found a reason to keep on smiling.
OAKLAND (AP) - For much of the season, Stephen Vogt caught Sonny Gray with Triple-A Sacramento. Neither could have pictured pairing up on such a sensational playoff moment for the Athletics when they were 90 miles away in California's capital.
OAKLAND (AP) - Max Scherzer overpowered Oakland with his dominant fastball, then baffled the Athletics with his off-speed stuff.
ST. LOUIS (AP) - Gerrit Cole and the Pittsburgh Pirates played a game of role reversal, and pulled even with the St. Louis Cardinals.
BOSTON (AP) - One ball fell between two outfielders. Another took a bad hop off the Green Monster standings. One batter reached safely on a dropped third strike and another when the pitcher was slow to cover first.
ATLANTA (AP) - Flashing plenty of fire and some nifty defense, the Atlanta Braves recaptured their Turner Field swagger.
SAN FRANCISCO (AP) - Embattled Texans quarterback Matt Schaub might be better off hitting the road and getting out of Houston for the weekend.
OAKLAND (AP) - Terrelle Pryor promises the San Diego Chargers will see a completely different quarterback than the one who made his first NFL start in last year's season finale.
OAKLAND (AP) - Josh Donaldson mimics Miguel Cabrera whenever he can, and he has no problem copping to it.
SAN JOSE (AP) - Justin Braun scored his first goal in more than 19 months to break a tie late in the second period and the San Jose Sharks went on to beat the Vancouver Canucks 4-1 Thursday night in the season opener for both teams.
The Associated Press
ST. LOUIS (AP) - Clint Hurdle waited patiently for the double-play ball that never materialized.
SAN FRANCISCO (AP) - The San Francisco Giants and shortstop Brandon Crawford have avoided arbitration by agreeing to a one-year contract for $3,175,000.
MELBOURNE, Australia (AP) - Rafael Nadal has joined Roger Federer on the sidelines at the Australian Open, taking their combined 31 Grand Slam singles titles with them.
PHOENIX (AP) - Tom Brady began winning Super Bowls when Russell Wilson was still a teenager, tuning in to see the big game on TV.
ENGLEWOOD, Colo. (AP) - Julius Thomas is about to cash in, one way or another.
PHOENIX (AP) - Patriots owner Robert Kraft's pre-emptive strike the previous night took the issue of air pressure in footballs on Super Bowl media day and, well, deflated it.
PHOENIX (AP) - Rob Gronkowski's ankle is fine. So are his forearm and knee. He's way past those injuries that ruined his last three postseasons.
EL SEGUNDO (AP) - Kobe Bryant will have surgery Wednesday on his torn right rotator cuff, likely ending his 19th season with the Los Angeles Lakers.
CHANDLER, Ariz. (AP) - New England Patriots owner Robert Kraft demanded an apology from the league once the Patriots are found to be not guilty of breaking any rules regarding using under-inflated footballs in the AFC championship game.
ALAMEDA (AP) - The Oakland Raiders signed pending free-agent safety Charles Woodson to a one-year contract extension on Monday, bringing him back for an 18th season in the NFL.
MELBOURNE, Australia (AP) - Maria Sharapova moved closer to another Australian Open title, set to face a fellow Russian in the semifinals who has never beaten her.
COLUMBUS, Ohio (AP) - Alex Ovechkin's familiar gap-toothed grin has returned with the Washington Capitals in the thick of the Eastern Conference playoff hunt.
NEW YORK (AP) - The NBA has postponed home games for both the New York Knicks and Brooklyn Nets because of a snowstorm expected to batter the area.
ALAMEDA (AP) - After watching fellow receivers Cris Carter and Andre Reed get that coveted Pro Football Hall of Fame call the past two years, Tim Brown hopes it's finally time for his number to be called.
PHOENIX (AP) - Malcolm Smith stood out for always being in the right spot.
ENGLEWOOD, Colo. (AP) - As Peyton Manning considers whether to take the gold watch or make one more run at the silver trophy, there are many factors he's weighing: age, desire, vitality, security, relationships.


text:
1. Sprinkle the fish with salt and pepper and simmer in water barely to cover just until the fish flakes easily when tested with a fork. The liquid in which the fish is cooked may be reserved and used in place of part of the milk to make the sauce. Remove the fish to a heatproof dish and keep warm.
2. In a saucepan melt the butter, add the flour and stir with a wire whisk until blended. Meanwhile bring the milk, with the fish broth, if desired, and cream to a boil and add all at once to the butter-flour mixture, stirring vigorously with the whisk until the sauce is thickened and smooth.
3. Remove the sauce from the heat and let cool one minute. Stir in the Gruyere cheese and correct the seasonings.
4. Pour the sauce over the fish and sprinkle with Parmesan cheese. Place under the broiler to glaze.


text:
Climate Impacts, Petrostate Politics
Provincial energy-climate agreement cannot trade climate for tar sands pipelines
Blog Post: Environmental groups across Canada today responded to a new pan-provincial energy agreement cautioning that no climate progress can be made if tar sands pipelines are approved. "A pan-provincial climate deal that greenlights tar sands expansion is a complete non-starter to any serious climate discussion," said Mike Hudema of Greenpeace Canada. "The science is very clear that more than 85% of tar sands reserves need to remain in the ground if we want to stabilize the planet. It's time we listened to the science, said no to the pipelines and yes to the green energy that Canadians want."


text:
- 22 Resorts
- Consistent Snow
- Diverse destinations
- Resorts open before those of many other states
- Home to Vail, Beaver Creek, Copper Mountain
"Good conditions for this time of year. Tough slugging through the heavy snow at times but worth the effort. Enjoy!"
"Had a great day today, most of the hill is in great shape Really some of the best snowboarding I've done all year Snow was slushy of course especially in the afternoon "
"Pouring rain on hwy one but PUKING all morning at LL. Fresh snow line runs nearly all the way down to the lodge! Whitehorn chutes not open yet... Photo paradise 130pm. Tough vis. But still...!!!"
"Back bowls were great the other day "
"Ice and hard pretty much everywhere until the afternoon. Big bare spots in some places. At least there's no rain. Park is in great shape. Fingers crossed for a spring dump."


text:
Psy wins 'Music Bank' K-Chart + Performances from August 17th!
KBS's 'Music Bank' is back with another fun and exciting show that was chock-full of amazing performances! The MCs for tonight's episode were After School's UEE and actor Lee Jang Woo. Aside from the usual stages, Phantom, Skarf, TWO X and E7 performed their debut stages while VIXX, Fresh Boyz and EXID made their comeback! As for the winners, B2ST faced off against Psy for this week's 'K-Chart', but in the end, it was Psy who clinche
Juniel talks about her musical ambitions in 'Elle Girl'
Juniel has captured the hearts of her fans with her whimsical and doll-like looks for 'Elle Girl' magazine. Her unruly hair adds nothing but character to her look when combined with other natural pieces like denim shirts and lace skirts, creating an overall lovely style that definitely looks different from her image on stage. Juniel's received much love since the release of her debut mini-album, 'My First June', and recently participate
Gaon Chart releases chart rankings for August 5th - August 11th
The Gaon Chart is the national chart of South Korea and is intended to be the equivalent of Oricon in Japan and Billboard in the United States. Check out the chart rankings for the week of August 5th to August 11th below! < Gaon Chart National Digital Singles Ranking > 1. PSY - "Gangnam Style" 2. BoA - "Only One" 3. Davichi - "Do Men Cry" 4. B2ST - "Beautiful Night" 5. SISTAR - "Loving U" 6. PSY ft. Sung Si Kyu
EXO-K's Sehun to perform with BoA on Music Bank
BoA has performed her track "Only One" with various SM Entertainment labelmates including TVXQ's Yunho, Super Junior's Eunhyuk, and SHINee's Taemin. These three are known as the main dancers of their respective groups and now she's scheduled to perform with rookie group EXO-K dance specialist Sehun. On EXO-K's official webpage, it was revealed that Sehun will be recording with BoA for KBS's Music Bank on August 17th at 6:10PM KST.
Way Back Wednesday: Girl Power
If you're anything like me, the last two weeks were spent glued to the TV watching the 2012 London Olympics. It was riveting entertainment to watch the best athletes in the world compete on the largest stage in the world. If there was a take away from the London Olympics, it had to be the rise and dominance of female athletes. For the first time in history, every competing nation had a female athlete. For major Olympic countries like the Unit
BoA takes home her first win for "Only One" on 'Show Champion'
BoA has taken home her first trophy win for her "Only One" comeback! On the August 14th episode of MBC Music's 'Show Champion', BoA gained the title of champion song with "Only One" and was honored her first #1 trophy since her comeback. During her award speech, BoA expressed, "I'd like to genuinely thank my fans for their love and support. I'll work to always become an artist that works hard." Her backdancers shared her joy by throwing
D-Unit snaps photos with BoA and Jung Jun Ha backstage at 'Inkigayo'
New group D-Unit snapped photos with BoA and comedian Jung Jun Ha backstage at 'Inkigayo' on August 12 KST. The photos, shared on agency D-Business' official Twitter page, show member U-Jin smiling next to her sunbae BoA, while leader RAM (Wooram) is posing for a friendly photo with Jung Jun Ha. Fans commented, "It's good to see a warm relationship between sunbae and hoobae," and "Jung Jun Ha and Wooram look like father and daughter."
Instiz releases chart rankings for the second week of August
The Instiz chart combines the overwhelming variety of charts that South Korea uses to rank music sales, and it's also what fans use to determine whether their favorite artist has achieved an "All-Kill". Check out the chart rankings for the second week of August (August 6 to August 12) below! === Instiz Chart Singles Ranking 1. PSY - "Gangnam Style" - 45,851 Points 2. BoA - "Only One" - 20,463 Points 3. SISTAR - "Loving
Staff Picks: Favorite Choreography
Get a glimpse of what we're talking about and listening to at the 6Theory office in this fun feature! We'll be offering allkpop readers a personal selection of our favorites from the K-Pop scene. Taeyang's "Wedding Dress": "First, it's choreographed by Shaun Evaristo and Lyle Beniga. Second, it is one of the most classy choreography existing in K-pop. Taeyang rose to the top as one of the best idol dancers in Korea with this choreography
Yesung posts pictures with his dongsaengs on Twitter
Super Junior member Yesung posted a picture of himself with Donghae and BoA on Twitter. On the 10th, he wrote on his SNS, "My cute dongsengs, Ddonghae and Bboa!" along with two pictures with them. When BoA saw this, she replied, "Nice work, oppa! Woohing Woohing!~" and retweeted it on her wall. The trio show their friendship in the KBS 'Music Bank' waiting room, Donghae and Yesung with their arms around each other and BoA in the middle


text:
Create a free account to check out faster, store multiple shipping addresses, view and track your orders in your account, and much more.
Please enter your password to continue.
I've only used this as an eye makeup remover, not on the face. As an eye makeup remover, it's SO great! I hate the stuff that is greasy & irritates the eye. This stuff does not have that irritating "slime" to it & takes off all my eye makeup, no matter how heavy it was that day. Love this stuff!


text:
I've made several batches of apfelwein (and I've drank several batches of apfelwein even faster) and I usually start around 1.060 and it finishes out right around 1.000. I usually use 4.5 gallons of apple juice, and enough dark brown sugar to get it there.
Long story short, I must have not been paying enough attention, and my starting gravity is 1.080! Is there anyone else that makes it that high, and how many months do you let it sit before it loses it's harshness?
"Those who dance are considered insane by those who can't hear the music" --George Carlin


text:
Microsoft Classes In Web Development
fsaforoJanuary 25, 2006
Anyone on here ever taken a class from them on web design. I am looking into brand new course that starts this year and then get my classification once I finish all the required classes.
Do you have a link to it? I haven't taken it, obviously, but am interested in the subject.
Also take a look at http://csszengarden.com/ for some amazing stuff using CSS.


text:
Why not enter some details and get an accurate price?
Ah, how we love Skegness. And Mablethorpe. And Chapel St Leonards, and Ingoldmells…it's a fairly safe bet to say we're rather fond of the Lincolnshire coast as a whole – and we haven't even got to the Lincolnshire Wolds yet.
Quiet pitches near beaches are on many campers' coastal checklists as well as seaside towns: if this is true for you, tick off your requirements at peaceful and pretty Eastview Caravan Park, on the edge of Chapel St Leonards village and within walking distance of the beach. It's a smart and friendly 15-acre park which welcomes families, motorcyclists and the family dog: we suspect you might like the three fishing ponds across the road or the pub next door too.
Eastview has family pitches for tents, tourers and motorhomes with the option of electric hook-up; clean and well-maintained heated shower and loo blocks with free hot showers and disabled access; waste disposal points and service points. There's no shop on site, but Chapel St Leonards is a few minutes' drive away for supermarkets, cafés, pubs and restaurants.
Site type
Tourist board rating
Languages spoken
✓ English
Please note
Our pitches are based on two adults and two children (up to 14 years old), plus one car park space.
You must state your estimated time of arrival in the "other details" on your booking form. Please do not forget.
Check availability at Eastview Caravan Park…
(2 nights)
Party:2 adults
It's now possible to make group bookings on Pitchup.com for up to 30 adults and 30 children.
As long as the 'one unit per pitch' rule is not highlighted on the pitch type information (please check this before completing your booking), you will be able to pitch your tents together on one booking.
If you are not satisfied with the results generated, try breaking your booking down for more options. For example, if you're a group of 10, enter five people for your initial search and book two pitches. Use the 'Special requests' box on the booking page to ask to be sited together when booking multiple pitches or accommodation units: the campsite or park will try to grant your request.
Before booking, please check the listing page for any group restrictions. These normally appear in a section titled 'Please note'. Please also check the restrictions on unit dimensions to ensure your unit - especially for a large party - is suitable for the space you will be provided with.
Electric grass pitch - 2 adults and 2 children
Max. persons: 4x
Dimensions: Max 10.0m x 10.0m (32.8ft x 32.8ft)
Ground type: Grass
Pitches are based on 2 adults and 2 children up to 14 years of age.
Approximately 10m x 10m grass pitch with 16-amp electric hook-up. 1 unit/tent per pitch.
No gazebo or pup tent.
Please state estimated time of arrival in 'other details' box.
Non-electric grass tent pith - 2 adults and 2 children
Max. persons: 4x
Dimensions: 2 to 6 man tent
Ground type: Grass
Prices are based on 2 adults and 2 children up to 14 years of age.
Grass pitch without electric for 2- to 6-man tent. 1 tent per pitch.
No gazebo or pup tent.
Please state estimated time of arrival on the booking details.


text:
Sign up for our emails and be the first to
know about special offers, sales,
the latest arrivals and much more!
Your Bag Is Empty.
$4300 $4300
We have a confession to make; we have fallen completely head over heels in love with the Love You More Peach Shift Dress! In a classic and chic, shift shape, silky soft woven fabric forms a modestly rounded neckline. Cropped sleeves have decorative gold-buttoned tabs with faux pearl centers. Lined. Model is 5'8" and is wearing a size small. 100% Polyester. Hand Wash Cold or Dry Clean. Made with Love in the U.S.A.
NEED HELP CHOOSING A SIZE? See measurements & fit info for this garment in the Size & Fit dropdown!
PRODUCT MEASUREMENTS: Compare these measurements to your own body measurements. We measure each item "relaxed" on a flat surface, not stretched on a person's body. It is helpful to consider the material of the item, as some stretchy materials may give an inch or two.
Because sizing and cut will vary between brands, please use this information as a general guide. Use our Size Chart to help determine your size. If you are between sizes or need help finding the proper size, please Chat with a Stylist.
Overall pretty dress. It was much longer then expected. This dress is very conservative.
The color is more on the pink side, and it was too big in the wrong places. I ordered a size small (i'm 5'3) and it had no shape to it. It was just too boxy and the length was not too flattering. Too bad though, because I love this dress on the model!
This dress was huge, unflattering, and way more pink than peach. Returned it.
I was so excited to get this dress because it is so cute online. When it arrived i was so disappointed. It was super pink then when i put it on it looked like a bed sheet, or a moo moo my grandma would ware to bed. I was not happy at all.
Pleat Street Fair Black Dress
$49Shop Now
LULUS Exclusive Smooth Talker Black Lace Dress
$45Shop Now
LULUS Exclusive Top Notch Black Midi Dress
$42Shop Now
Hot Off the Precious Ivory Dress
$39Shop Now
Sign up for our emails and be the first to
know about special offers, sales,
the latest arrivals and much more!


text:
Your comment is being published.
Thanks for keeping alive the conversation.
Loading ATN... Please Wait
ATN is a satellite television station from Kabul, Afghanistan, providing News and Entertainment shows. Also known as Ariana Television Network, ATN produces and airs newscasts and information shows, entertainment about Afghanistan's traditions and culture with emphasis on education, health, children's programming, and women's and world issues.
Visit the TV station's website
+93 700 111 000
318, Darulaman Street, Carte 3 Kabul, Afghanistan


text:
Neuropathy Four Months Post Infection
Here's a taste of what TheBody.com has to offer on this topic:
Ask the Experts
Co-Infection with HCV and peripheral neuropathy problems - What to treat firstI have recently confirmed after after 2 neg test that I am pos for HIV/HCV in month 4. During this period I developed Trush that will not go away (Ny and chroz) and recently developed NP of my feet. My CD4 is very low at 320 for a newbie with very...
Response from Barbara McGovern, M.D.
Tufts University School of Medicine...If I understand you correctly, your doctor thinks that you recently acquired both HIV and HCV infections. If your HCV infection is acute, then your best chance at cure is with rapid initiation of therapy. However, with that said, Read more »
Dry skin on palms and peripheral neuropathyHi Keith,hope this message finds you well. I'm a 30 yr old male writing from London.I have been on... Read more »
neuropathy questionHi Dr. Conway,Could peripheral neuropathy occur 2 months after HIV infection?I had an HIV test 36... Read more »
Peripheral Neuropathy...PN symptoms can come and go. Serious PN can cause difficulty walking or standing. What Causes PN? PN can be caused by HIV infection of nerve cells, by drugs used to treat HIV or other health problems, or other factors. Risk factors for PN... Read more »
Peripheral Neuropathy and HIV/AIDS..."hot"chemical produced in chili peppers. In a recent study, one treatment with thecapsaicin patch reduced pain for up to three months. A follow up of the studyis continuing to examine the long-term effectiveness of the patch. Amultinational trial... Read more »
Peripheral Neuropathy Still Common Among HIV-Infected Patients on HAART; Risk May Increase With Age...linked randomized trials Protocol A5001 . In: Program and abstracts of the 16th Conference on Retroviruses and Opportunistic Infections; February 8-11, 2009; Montréal, Canada. Abstract 462. View poster: Download PowerPoint Read more »
Osteoporosis...Bones become lighter and more brittle. People with HIV have unusually high rates of osteoporosis. This may be because of HIV infection itself. It may be made worse by some medications used to treat HIV. What Is Osteoporosis? Osteoporosis... Read more »
Connect With Others
100% Sure I am infected
Posted by iknowigotit, 5 Replies...causing alot of serious damage due to my already weaken immune system. I have cried and researched alot about hiv in the past 3 months, I cant say i am ready for the news but who ever is? I just know that hiv is causing all this n i need to get... Read more »
Neuropathy Question.
Posted by Anonymous, 1 Reply...infected forum but I think this is where it should be. I'm very recently diagnosed. Exposed just over 3 months ago. 3 weeks after infection (amongst all the other symptoms) I got tingling in my hands, then an all over hypersensitivity sensation... Read more »
Posted by golfguy, 3 Replies...Hi, I posted before and have really been trying to calm my anxiety....but it's really getting bad. I'm about 6 weeks post exposure and Read more »
Lipodystrophy or Neuropathy?
Posted by Anonymous, 1 Reply...Is it possible to experience lipodystrophy and neuropathy within 2-3 months of HIV exposure, or are these conditions generally symptomatic of long-term HIV status? I have noticed significant swelling under Read more »
Resource Centers
Guides for People With HIV


text:
Elephant Ear WATER question
I planted some EE bulbs in a shaded area of my house. These were the giant EE's from Home Depot.
The directions said they like shade and moisture. After reading a post here Sun was recommended and not to water them untill they sprout? Im confused this is conflicting information.
I have been watering the area heavly since planting them.
I also understand they can grow submerged in water so whats the deal? Can they grow under water but only after they are established?
Should I dig them up and look at them to see if they are rotten. They have been in the ground for 2.5 weeks so far no sprouts.
I think you may have jumped the gun unless things have really warmed up in zone 8. They like heat more than almost anything else, and won't do much in cold soil. They may rot, or at best will just sit there until the soil warms up a bit. I would definitely suggest cutting back on water--they should remain just barely moist until you see them sprouting.
Most elephant ears seem to do best in full sun as long as they get plenty of water. They will take some shade but won't do well in deep shade.
I'm not much on common names, I use and prefer botanical names. Are "Elephant Ears" the common name for Colocasia esculenta? If so, I'm only aware of it called the Taro plant. My sentiments are those expressed by Jonnieb above.
Cheers, Barrie.
What night temperatures are required for Elephant Ear growth? Anything above 50F?
I have had success planting elephant ears for the last few years. I've left them in the ground, except for the couple times I took some in containers into the garage and left them there for winter. I heavily mulched the ones in the ground over winter (about 8 inches of cedar mulch), with no watering in winter. They usually come back bigger the next year, although some have rotted. I'll be uncovering them in the next few days, and I'll "help" slough off some of the decayed tops, if there are some that have decayed. When I do this, they usually sprout new growth shortly thereafter. Some have grown to amazing size: as high as about 8 feet, with a base over 2 feet. Don't give up on the ones you planted, but remember that frost knocks them back, and they have to be mulched in winter. Let's hope you weren't too early.
When they get going, I sprinkle bone meal around the area above the bulb a few times during summer, and it seems to keep them going strong.
Good luck!


text:
Use code PPNYF3 details >* Save $25 on your order of $249+. Use promotion code PPNYF3 during checkout. Discount does not apply to shipping charges, duty charges and cannot be combined with any other offer or used on previous orders. Offer expires on 4/4/15 at 11:59 PM EST.
details >Sign up for our FREE Party Newsletter to help you plan the best event ever! Also by signing up for the Stumps Party Newsletter today you will receive a coupon for 50% Ground Shipping on your next order! We'll help you make your event a night to remember.
details >Orders placed by midnight ET for most personalized and made-to-order items will ship the next business day. Excludes holidays and weekends. Some personalized and made-to-order items require a longer processing time and is noted as such on each product page. Credit card and billing information must be correct at time of order. Please note that shipping transit time still applies, look for the estimated delivery date during checkout. Processing time will apply to any in-stock items that are consolidated with items that are made-to-order. There is never an up charge for adding personalization to our products. In a very few cases, the retail price of a personalized item may be slightly more than that of a similar stock item, due to production processes.
Capture the urban feel of hip hop with metallic balloons in black and silver. Add in a gold balloon for a pop of color in your bouquets.
Help get guests into the hip hop mood from the moment they enter your event under a hip hop arch. Its bright colors and graffiti theme make it great as a photo backdrop, too!