1461142621-b2e409d1-58d0-438a-a39e-fdbd6ca2ad66

What is claimed is:

1. A method for secured transfer of data from a first memory containing the data element to a second memory through a data bus that is connected between the first memory and the second memory, said method comprising the steps of:
transferring a secret N-byte data element byte-by-byte through the data bus, with each byte transiting at least once on the data bus;
wherein the transferring step includes the sub-steps of:
before each transfer of a byte of the secret data element, randomly choosing a current index ranging from 0 to N1, the current index corresponding to a place value of the byte to be transferred;
at each transfer of a byte of the secret data element with a place value equal to the current index, modifying a corresponding bit of an N-byte loading indicator as a function of a loading mode, the loading mode being an integer ranging from 0 to a first constant; and
ending the transfer of the secret data element when the loading indicator takes a predetermined value.
2. The method as defined in claim 1, wherein the transferring step further includes the sub-step of randomly choosing the loading mode before each transfer of a byte of the secret data element.
3. The method as defined in claim 1,
wherein in the sub-step of modifying a corresponding bit of an N-byte loading indicator, the bit of the loading indicator with a place value equal to the current index takes a first value if the loading mode is equal to a second constant and, if not, takes a second value, and
the second constant is less than or equal to the first constant.
4. The method as defined in claim 3, wherein the first and second constants are chosen randomly during initialization.
5. The method as defined in claim 3, wherein the first and second constants are read from one of the memories.
6. The method as defined in claim 3, wherein the first and second constants are equal.
7. The method as defined in claim 1, wherein the transferring step further includes the sub-steps of:
transferring the byte of the secret data element with a place value equal to the current index if the loading mode is equal to a second constant; and
transferring a byte of a false data element with a place value equal to the current index if the loading mode is not equal to the second constant.
8. The method as defined in claim 7, wherein the first and second constants are chosen randomly during initialization.
9. The method as defined in claim 7, wherein the first and second constants are read from one of the memories.
10. The method as defined in claim 7, wherein the first and second constants are equal.
11. A method for secured transfer of data from a first memory containing the data element to a second memory through a data bus that is connected between the first memory and the second memory, so as to transfer a secret N-byte data element byte-by-byte through the data bus, with each byte transiting at least once on the data bus, said method comprising the steps of:
randomly choosing a current index ranging from 0 to N1;
choosing a loading mode ranging from 0 to a first constant;
loading the byte of the secret data element that has a place value equal to the current index in the second memory, and modifying a bit of a loading indicator that has a place value equal to the current index as a function of the loading mode;
performing a first test to compare the value of the loading indicator with a predetermined value; and
based on the result of the first test, either repeating the previous steps or ending the transfer.
12. The method as defined in claim 11, wherein the loading step includes the sub-steps of:
performing a second test to compare the value of the loading mode with a second constant;
if the second test is positive, performing the following steps:
reading the byte of the secret data element with a place value equal to the current index from the first memory, and storing the byte in a register;
writing the byte in the register to the second memory; and
setting at 1 the bit of the loading indicator with a place value equal to the current index; and

if the second test is negative, performing the following steps:
reading the byte of the secret data element with a place value equal to the current index from the first memory, and storing the byte in a register;
writing the byte in the register to the second memory; and
setting at 0 the bit of the loading indicator with a place value equal to the current index.
13. The method as defined in claim 11, wherein the loading step includes the sub-steps of:
performing a second test to compare the value of the loading mode with a second constant;
if the second test is positive, performing the following steps:
reading the byte of the secret data element with a place value equal to the current index from the first memory, and storing the byte in a register;
writing the byte in the register to the second memory; and
setting at 1 the bit of the loading indicator with a place value equal to the current index; and

if the second test is negative, performing the following steps:
testing the bit of the loading indicator with a place value equal to the current index;
if the bit is equal to a predetermined value, performing the following steps:
reading the byte of the secret data element with a place value equal to the current index from the first memory, and storing the byte in a register;
writing the byte in the register to the second memory; and
setting at 0 the bit of the loading indicator with a place value equal to the current index; and

if the bit is not equal to the predetermined value, ending the loading step.
14. The method as defined in claim 11 wherein the loading step includes the sub-steps of:
performing a second test to compare the value of the loading mode with a second constant;
if the second test is positive, performing the following steps:
reading the byte of the secret data element with a place value equal to the current index from the first memory, and storing the byte in a register;
writing the byte in the register to the second memory; and
setting at 1 the bit of the loading indicator with a place value equal to the current index; and

if the second test is negative, performing the following steps:
reading a byte of a false data element with a place value equal to the current index from the first memory, and storing the byte in a register;
writing the byte in the register to the second memory; and
setting at 0 the bit of the loading indicator with a place value equal to the current index.
15. The method as defined in claim 11, wherein the loading step includes the sub-steps of:
performing a second test to compare the value of the loading mode with a second constant;
if the second test is positive, performing the following steps:
reading the byte of the secret data element with a place value equal to the current index from the first memory, and storing the byte in a register;
writing the byte in the register to the second memory; and
setting at 1 the bit of the loading indicator with a place value equal to the current index; and

if the second test is negative, performing the following steps:
testing the bit of the loading indicator with a place value equal to the current index;
if the bit is equal to a predetermined value, performing the following steps:
reading a byte of a false data element with a place value equal to the current index from the first memory, and storing the byte in a register;
writing the byte in the register to the second memory; and
setting at 0 the bit of the loading indicator with a place value equal to the current index; and

if the bit is not equal to the predetermined value, ending the loading step.
16. A programmable circuit comprising:
a data bus;
a read-only memory containing an N-byte data element to be transferred, the read-only memory being coupled to the data bus;
a writable memory coupled to the data bus;
at least one control unit coupled to the read-only memory and the writable memory; and
a random number generator coupled to the control unit, the random number generator supplying at least one random number to the control unit during a transfer of the N-byte data element,
wherein the control unit controls the data bus such that bytes of the data element transit byte-by-byte through the data bus, with each byte transiting at least once through the data bus,
before each transfer of a byte of the secret data element, the control unit randomly chooses a current index ranging from 0 to N1, the current index corresponding to a place value of the byte to be transferred,
at each transfer of a byte of the secret data element with a place value equal to the current index, the control unit modifies a corresponding bit of an N-byte loading indicator as a function of a loading mode, the loading mode being an integer ranging from 0 to a first constant, and
the control unit ends the transfer of the secret data element when the loading indicator takes a predetermined value.
17. The programmable circuit as defined in claim 16, wherein the control circuit randomly chooses the loading mode before each transfer of a byte of the secret data element.
18. The programmable circuit as defined in claim 16,
wherein the control unit transfers the byte of the secret data element with a place value equal to the current index if the loading mode is equal to a second constant, and
the control unit transfers a byte of a false data element with a place value equal to the current index if the loading mode is not equal to the second constant.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A method for separating at least a portion of solids from a hydrocarbon fluid having solids therein comprising:
adding a demulsifying agent to the hydrocarbon fluid in an effective amount for subsequent separation of at least a portion of the solids from the hydrocarbon fluid; wherein the demulsifying agent water-wets at least a portion of the solids; wherein the demulsifying agent comprises at least one maleic acid derivative.
2. The method of claim 1, wherein the adding the demulsifying agent occurs upstream from a desalter.
3. The method of claim 1, wherein the demulsifying agent further comprises a second component selected from the group consisting of naphthalene sulfonate, alkyl diphenyloxide disulfonate, and combinations thereof.
4. The method of claim 1, wherein an emulsion comprises an oil phase and a water phase; and wherein the oil phase comprises the hydrocarbon fluid; and wherein the adding of the demulsifying agent is added to a phase selected from the group consisting of the oil phase, the water phase, and combinations thereof.
5. The method of claim 4, further comprising separating at least a portion of the water-wet solids from the hydrocarbon fluid.
6. The method of claim 5, further comprising mixing at least a portion of the water-wet solids into the water phase of the emulsion after separating at least a portion of the water-wet solids from the hydrocarbon fluid.
7. The method of claim 1, wherein the at least one maleic acid derivative is a C6-C18 sulfosuccinate,
8. The method of claim 1, wherein the at least one maleic acid derivative is selected from the group consisting of di-lauryl succinate, dioctyl succinate, di-hexyl succinate, octyl phenyl succinate, dodecyl diphenyl succinate, ditridecyl succinate, dioctyl sulfosuccinate, disodium laureth sulfosuccinate, diammonium 1-icosyl 2 sulfosuccinate, ammonium 1,4 didecyl sulfosuccinate, dihexyl sodium sulfosuccinate, sodium dinonyl sulfosuccinate, sodium lauryl sulfoacetate, salts thereof, and combinations thereof.
9. The method of claim 1, wherein the effective amount of the demulsifying agent ranges from about 0.1 ppm to about 200 ppm based on the hydrocarbon fluid.
10. The method of claim 1, wherein the adding the demulsifying agent is added to hydrocarbon fluid at a location selected from the group consisting of a crude storage tank, the suction of a transfer pump for subsequent injection into a crude storage tank, and combinations thereof.
11. The method of claim 1, wherein the solids are inorganic solids selected from the group consisting of metal oxides, metal dioxides, metal sulfides, metal sulfates, metal carbonates, sand, silt, clay, paraffin wax, dolomite, coke fines, zinc compounds and combinations thereof.
12. A method for separating at least a portion of solids from an oil phase of an emulsion, wherein the method comprises:
adding a demulsifying agent to the emulsion in an amount ranging from about 0.1 ppm to about 200 ppm based on the emulsion; wherein the demulsifying agent water-wets a plurality of solids within the emulsion; wherein the demulsifying agent comprises at least one maleic acid derivative; and wherein the demulsifying agent is added to the emulsion at a location upstream from a desalter; and
separating the water-wet solids from the oil phase of the emulsion.
13. The method of claim 12, wherein the demulsifying agent further comprises a second component selected from the group consisting of naphthalene sulfonate, alkyl diphenyloxide disulfonate, and combinations thereof.
14. The method of claim 12, wherein the demulsifying agent is added to the oil phase of the emulsion.
15. The method of claim 12, wherein the hydrocarbon stream is selected from the group consisting of crude oil, asphalt, bitumen, shale condensates, decant oil, and combinations thereof.
16. The method of claim 12, wherein the solids are inorganic solids selected from the group consisting of metal oxides, metal dioxides, metal sulfides, metal sulfates, metal carbonates, sand, silt, clay, paraffin wax, dolomite, coke fines, zinc compounds and combinations thereof.
17. The method of claim 12, wherein the at least one maleic acid derivative is selected from the group comprising di-lauryl succinate, dioctyl succinate, di-hexyl succinate, octyl phenyl succinate, dodecyl diphenyl succinate, ditridecyl succinate, dioctyl sulfosuccinate, disodium laureth sulfosuccinate, diammonium 1-icosyl 2 sulfosuccinate, ammonium 1,4 didecyl sulfosuccinate, dihexyl sodium sulfosuccinate, sodium dinonyl sulfosuccinate, sodium lauryl sulfoacetate, salts thereof, and combinations thereof.
18. A treated hydrocarbon fluid in a crude storage tank comprising:
a demulsifying agent comprising least one maleic acid derivative, wherein the amount of the demulsifying agent ranges from about 0.1 ppm to about 30 ppm based on the hydrocarbon fluid; and
a plurality of water-wet solids within the hydrocarbon fluid, wherein the plurality of solids are more water-wet as compared to a plurality of solids within the hydrocarbon fluid in the absence of the demulsifying agent.
19. The treated hydrocarbon stream of claim 18, wherein the demulsifying agent further comprises a second component selected from the group consisting of naphthalene sulfonate, alkyl diphenyloxide disulfonate, and combinations thereof.
20. The treated hydrocarbon stream of claim 18, wherein the at least one maleic acid derivative is selected from the group comprising di-lauryl succinate, dioctyl succinate, di-hexyl succinate, octyl phenyl succinate, dodecyl diphenyl succinate, ditridecyl succinate, dioctyl sulfosuccinate, disodium laureth sulfosuccinate, diammonium 1-icosyl 2 sulfosuccinate, ammonium 1,4 didecyl sulfosuccinate, dihexyl sodium sulfosuccinate, sodium dinonyl sulfosuccinate, sodium lauryl sulfoacetate, salts thereof, and combinations thereof.