DETAILED ACTION
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
This Office Action is in response to the communication filed on 12/11/2025.
Claims 1, 3-7, 9-10, and 12-16 have been amended.
Claims 2, 8, and 11 have been cancelled.
Claims 1, 3-7, 9-10, and 12-16 are pending for consideration.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Allowable Subject Matter
The indicated allowability of claims 2-6 and 11-15 are withdrawn in view of the newly discovered references to Windle et al. (U.S. 2017/0033927), Zeman et al. (US 7,383,443), Jenson (U.S. 9,665,695), and Goutam Paul et al. (RC4 Stream Cipher and Its Variants, Chapter 2: “Stream Ciphers and RC4”). Rejections based on the newly cited references follow.
Claim Rejections - 35 USC § 112
Regarding the 112 2nd rejection of claims 3, 6, and 12, Applicant has amended these claims. Therefore, the rejection has been withdrawn.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1, 4, 7, 9, 10, 13 and 16 are rejected under 35 U.S.C. 103 as being unpatentable over Mushkatblat et al. (US 2015/0324607)(hereinafter Mushkatblat) in view Zeman et al. (US 7,383,443)(hereinafter Zeman) and in further view of Windle et al. (U.S. 2017/0033927)(hereinafter Windle).
Regarding claims 1, 9, and 10 Mushkatblat teaches selecting, in response to receiving target data, an obfuscation processing rule for performing a data obfuscation processing on the target data (Mushkatblat: see Page 4 paragraph 0041 lines 3-6, " In the example, the data masking tool 720 is configured to receive unmasked data 710 (e.g., source data) and output masked data 770 (e.g., output data)"; Page 4 paragraph 0044 lines 6-8, "At step 820, data masking component 720 determines which discrete transform will be used (e.g., normal distribution or uniform distribution)") and an obfuscation processing parameter table adapted to the obfuscation processing rule (Mushkatblat: see Page 4 paragraph 0044 lines 8-11, "At step 814, the data masking component 720 may select a distribution value from a set B and use the distribution value as the baseline value for mapping in this iterative step"); and
performing the data obfuscation processing on the target data according to the obfuscation processing rule and the obfuscation processing parameter table adapted to the obfuscation processing rule, so as to protect the target data (Mushkatblat: see Page 4 paragraph 0043 lines 1-8, "The data masking tool 720 can also store a plurality of prescribed tables 745 that specify configuration settings for various data masking scenarios, including one or more masking rules 755 per scenario. Based on the prescribed tables 745 and data source 720 the masking scheme generator 740 may generate a data masking scheme and process the unmasked data 710. The unmasked data 710 may be transformed to masked data 770 by the masking scheme generator 740").
However, Mushkatblat does not teach generating, according to a preset rule, an option code comprising rule indication information and parameter table indication information; wherein the rule indication information is used to indicate the obfuscation processing rule, and the parameter table indication information is used to indicate the obfuscation processing parameter table adapted to the obfuscation processing rule; and selecting the obfuscation processing rule indicated by the rule indication information, and selecting the obfuscation processing parameter table adapted to the obfuscation processing rule and indicated by the parameter table indication information.
Nevertheless, Zeman-which is in the same field of endeavor- teaches
the rule indication information and parameter table indication information; wherein the rule indication information is used to indicate the obfuscation processing rule, and the parameter table indication information is used to indicate the obfuscation processing parameter table adapted to the obfuscation processing rule (Zeman: see Col 5 lines 23-31, "Thus, instruction 210 comprises an opcode 211 ("ADD"), and parameters 212 ("R1, R2"). Instruction 210 might mean "add the contents of registers R1 and R2, and put the result in R1." The numeric representation of instruction 210 may be as follows: the numeric opcode 213 for the "ADD" instruction may be the byte Ox 50, and the numeric representation of parameters 214 may be 0x01 and 0x02, representing R1 and R2, respectively"); and
selecting the obfuscation processing rule indicated by the rule indication information, and selecting the obfuscation processing parameter table adapted to the obfuscation processing rule and indicated by the parameter table indication information (Zeman: see Col 5 lines 61-67 - Col 6 lines 1-2, " Instruction 230 is another example of an instruction containing an opcode 231 ("ADD 3") and parameters 232 ("R1, R2, R3"). This example instruction may mean "add the contents of registers R1 and R2, and store the result in register R3. " The numeric representation of this instruction includes an opcode 233 ("FF 01"), and parameters 234 ("01 02 03"). In this example, "FF 01" corresponds to the "ADD3" opcode, and "01 02 03" corresponds to registers R1, R2, and R3, respectively").
Mushkatblat and Zeman are analogous art because they are from the same field of endeavor. Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art to utilize Mushkatblat’s method for masking target data with Zeman’s key/function mapping table. The suggestion/motivation for doing so would be to enable scalable, efficient, and modular function mapping for the system.
Mushkatblat and Zeman do not teach generating, according to a preset rule, an option code including rule indication information and parameter table indication information.
Nevertheless, Windle-which is in the same field of endeavor- teaches generating, according to a preset rule, an option code including rule indication information and parameter table indication information (Windle: see Page 1 paragraph 0019 - Page 2 paragraph 0019, "Referring to FIG. 1, the system 100 is depicted as including a key part determination module 102 that is to generate parts 104 (e.g., designated RP1, RP2, and RP3) that are to be used to form a key 106"; Page 2 paragraph 0029, "The mapping part (e.g., RP3) may map the value of the first operative part (e.g., RP1) that the second operative part (e.g., RP2) is to be XOR'd with (represented as “A”). That is, the first operative part (e.g., RP1) may be XOR'd with a specific value of the second operative part (e.g., RP2) at an index determined by the mapping part (e.g., RP3)").
Mushkatblat, Zeman, and Windle are analogous art because they are from the same field of endeavor. Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art to utilize Mushkatblat and Zeman’s code generation for an operation code with Windle’s preset mapping rule. The suggestion/motivation for doing so would be to improve the security of the system by providing variable and unpredictable generation criteria while allowing efficient decoding of the mapping tables.
Regarding claims 4 and 13, Mushkatblat, Zeman, and Windle teach generating the rule indication information for indicating the obfuscation processing rule according to a first preset rule (Windle: see Page 2 paragraph 0029, "The mapping part (e.g., RP3) may map the value of the first operative part (e.g., RP1) that the second operative part (e.g., RP2) is to be XOR'd with (represented as “A”)"), and generating the parameter table indication information for indicating the obfuscation processing parameter table according to a second preset rule (Windle: Page 2 paragraph 0029, "That is, the first operative part (e.g., RP1) may be XOR'd with a specific value of the second operative part (e.g., RP2) at an index determined by the mapping part (e.g., RP3). In this regard, the value may be set at four bits (nibble), eight bits (byte), or another number of bits specified by the needs of a user"); and combining the rule indication information with the parameter table indication information to generate the option code (Windle: see Page 1 paragraph 0015, "When the key is to be formed, the three parts may be combined as disclosed herein, and a logical operation, such as, for example, an XOR operation may be used"). Motivation to combine Mushkatblat, Zeman, and Windle in the instant claims, is the same as that in claims 1, 9, and 10.
Regarding claims 7 and 16, Mushkatblat, Zeman, and Windle teach the obfuscation processing rule comprises at least one of following rules, comprising: a rule for replacing characters included in a data with other characters; a rule for performing a shift operation on the data; a rule for performing an Exclusive OR on the data; a rule for performing a coding operation on the data; and a rule for assigning 1 to a first bit of data byte in bytes (Mushkatblat: see Page 1 paragraph 0017 lines 1-6, "FIG. 2 illustrates a set of values to a single value mapping scheme. The embodiment illustrated in FIG. 2 may be implemented as unique set of real values 201 to a unique fictional values 202. For example, “John”+“Smith” may always be masked as “David”, while “John”+“Anderson” is always masked as “Jacob”"; Page 2 paragraph 0025 lines 9-18, “Then based upon either the entire set or this auxiliary value(s) the program finds a corresponding masking value in statistically pre-engineered table with distorted statistics, and creates a mapping with the replacement masking singular value 509. An example of such process is masking a full name that consists of more than one value, such as “John”+“Smith” 201 always with a value “David” 202, while masking “John”+“Anderson” 201 always as “Jacob” 202. Statistical distortion in fictional values has better metrics and makes it harder to re-identify a real value”). Motivation to combine Mushkatblat, Zeman, and Windle in the instant claims, is the same as that in claims 1, 9, and 10.
Claims 3 and 12 are rejected under 35 U.S.C. 103 as being unpatentable over Mushkatblat, Zeman, and Windle, as applied to claims 1, 4, 7, 9, 10, 13, and 16 above, and in further view of Jenson (U.S. 9,665,695)(hereinafter Jenson).
Regarding claims 3 and 12, Mushkatblat, Zeman, and Windle teach performing following processing steps, including: performing the data obfuscation processing on the data to be obfuscated using the extracted obfuscation processing rule and an obfuscation processing parameter table adapted to the extracted obfuscation processing rule; determining the obfuscated data as the data to be obfuscated (Zeman: see Col 13 lines 59-63, "At step 808, the bytes selected for change at step 806 are replaced with new bytes. As noted above, these new bytes are preferably taken from the list of one-byte instructions for the platform on which the code will operate. Typically, these bytes will be chosen from the list created at step 804"); determining the target data as data to be obfuscated (Zeman: see Col 13 line 49, "At step 806, the bytes that are to be changed are selected").
However, Mushkatblat, Zeman, and Windle do not teach determining a ranking of each of the plurality of obfuscation processing rules in response to a plurality of selected obfuscation processing rules; and extracting a top-ranked obfuscation processing rule from the plurality of obfuscation processing rules; extracting a top-ranked obfuscation processing rule from unextracted obfuscation processing rules in response to a presence of the unextracted obfuscation processing rules in the plurality of obfuscation processing rules; and performing the processing steps cyclically.
Nevertheless, Jenson – which is in the same field of endeavor- determining a ranking of each of the plurality of obfuscation processing rules in response to a plurality of selected obfuscation processing rules (Jenson: see Col 1 lines 48-51, "A priority order for a set of properties associated with the set of rules can be acquired. The set of rules can be ranked based on the priority order"); and
extracting a top-ranked obfuscation processing rule from the plurality of obfuscation processing rules (Jenson: see Col 2 lines 7-12, "In one embodiment, the ranking of the subset of rules, the storing of the next highest ranked rule into the record, the removing of the next highest ranked rule out of the subset of rules, and the removing of the at least one activity out of the subset of activities can be performed prior to the providing of the record");
extracting a top-ranked obfuscation processing rule from unextracted obfuscation processing rules in response to a presence of the unextracted obfuscation processing rules in the plurality of obfuscation processing rules; and performing the processing steps cyclically (Jenson: see Col 14 lines 12-17, "In some embodiments, the ranking of the subset of rules, the storing of the next highest ranked rule into the record, the removing of the next highest ranked rule out of the subset of rules, and the removing of the at least one activity out of the subset of activities can be performed repeatedly until no rules are left in the subset of rules").
Mushkatblat, Zeman, Windle and Jenson are analogous art because they are from the same field of endeavor. Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art to utilize Mushkatblat, Zeman, and Windle’s method for generation of an operation code and selection of an operation based on the operation code with Jenson’s ranking method for ranking rules and performing activities based on the ranking. The suggestion/motivation for doing so would be to ensure consistent processing of data and promote dynamic operation application based on preset conditions.
Claims 5-6 and 14-15 are rejected under 35 U.S.C. 103 as being unpatentable over Mushkatblat, Zeman, and Windle, as applied to claims 1, 4, 7, 9, 10, 13, and 16 above, and in further view of Goutam Paul et al., (RC4 Stream Cipher and Its Variants, Chapter 2: “Stream Ciphers and RC4”)(hereinafter Paul).
Regarding claims 5 and 14, Mushkatblat, Zeman, and Windle teach the invention detailed above.
However, Mushkatblat, Zeman, and Windle do not teach assigning M different values to a preset array including M bytes, selecting values of first N bytes in the preset array, and determining a combination of the selected values of the first N bytes as the rule indication information; wherein one value in the selected values of the first N bytes is used to indicate one obfuscation processing rule; wherein each of the selected values is an integer ranging from 0 to (M-1), M and N are integers, and 0<N<M.
Nevertheless, Paul-which is in the same field of endeavor- teaches
assigning M different values to a preset array including M bytes, selecting values of first N bytes in the preset array (Paul: see Chapter 2 section 2.4.1, "RC4 data structure consists of an S-Box
S =(S[0],...,S[N −1]) of length N = 2n, where each entry is an n-bit integer. S is initialized as the identity permutation, i.e., S[i] = i for 0≤i ≤N −1 ... An array K =(K[0],...,K[N −1]) is used to hold the secret key, where each entry is again an n-bit integer. The key is repeated in the array K at key length boundaries. For example, if the key size is 40 bits, then K[0],...,K[4] are filled by the key and then this pattern is repeated to fill up the entire array K"), and
determining a combination of the selected values of the first N bytes as the rule indication information (Paul: see Chapter 2 section 2.4.1, "Two indices, i and j, are used in RC4. i is a deterministic index that is incremented by 1 (modulo N) in each step and j serves as a pseudo-random
index that is updated depending on the secret key K and the state S. The KSA initializes both i and j to 0, and S to be the identity permutation. It then steps i across S looping N times, and updates j by adding the i-th entries of S and K. Each iteration ends with a swap of the two bytes in S pointed by the current values of i and j"); wherein one value in the selected values of the first N bytes is used to indicate one obfuscation processing rule (Paul: see Chapter 2 section 2.4.1, "j =(j +S[i]+K[i])"); wherein each of the selected values is an integer ranging from 0 to (M-1), M and N are integers, and 0<N<M ( Paul: see Chapter 2 section 2.4.1, "for i = 0,...,N −1 do"). The use of the calculated value j is known in RC4 KSA to be a randomized array with all unique values; therefore, utilizing an index of the computed output as the rule indication information is a matter of design choice.
Mushkatblat, Zeman, Windle, and Paul are analogous art because they are from the same field of endeavor, cryptographic codes and obfuscation techniques. Before the effective filing date of the claimed invention, it would have been obvious to one of ordinary skill in the art to combine utilize the mapping key structure of Mushkatblat, Zeman, and Windle, with Paul’s use of Key Signature Algorithm (KSA) of the RC4 stream cipher to identify a subset of the mapping key. The suggestion/motivation for doing so would be to efficiently generate random values for the mapping key while providing a structure that corresponds with one to many mapping tables, due to the variable length keys produced by RC4 KSA.
Regarding claims 6 and 15, Mushkatblat, Zeman, Windle, and Paul teach
the rule indication information is a combination of values of the first N bytes in the preset array, and the values of the N bytes are N different integers (Paul: see Chapter 2 Algorithm 2.4.1, “[KSA] Output: Scrambled permutation array S[0...N−1]”);
and said generating, according to the second preset rule, the parameter table indication information for indicating the obfuscation processing parameter table, comprises: randomly generating a random number having a length of N bytes (Paul: see Chapter 2 Algorithm 2.4.2, “Output Keystream Generation Loop: i=i+ 1;j=j+S[i];Swap(S[i],S[j]);t=S[i] +S[j]; Outputz=S[t]”);
and determining the generated random number as the parameter table indication information, wherein one byte of data is used to indicate one obfuscation processing parameter table rule (Zeman: see Col 5 lines 23-31, "The numeric representation of instruction 210 may be as follows: the numeric opcode 213 for the "ADD" instruction may be the byte Ox 50, and the numeric representation of parameters 214 may be 0x01 and 0x02, representing R1 and R2, respectively"); and
wherein said combining the rule indication information with the parameter table indication information to generate the option code comprises:
traversing each byte of data in the random number having the length of N bytes (Paul: see Chapter 2 section 2.4.1, “The PRGA also initializes both I and j to 0. It then loops over four operations in sequence”), and performing, when the current byte of data is accessed, replacement operations including:
selecting an unselected integer from the N integers (Paul: see Chapter 2 section 2.4.1, “The PRGA also initializes both i and j to 0. It then loops over four operations in sequence: it increments
i as a counter, updates j by adding S[i], swaps the two entries of S pointed by the current values of i and j, and, outputs the value of S at index S[i] +S[j] as the value of z”; selecting an unselected integer from the array produced by RC4 is guaranteed because each byte is unique), and replacing a low three-bit data of the current byte of data with a low three-bit data of the selected integer so as to obtain an operational byte data (Paul: see Chapter 2 section 2.4.1, “Then-bit keystream output z is XOR-ed with the next n bits of the message to generate the next n bits of the ciphertext at the sender end. Again, z is bitwise XOR-ed with the ciphertext byte to get back the message at the receiver end”; PRGA inherently replaces the lowest 3 bits because it performs bit-wise XOR operation to all bits);
wherein a high four-bit data of the obtained operational byte data is used for indicating the obfuscation processing parameter table, and the low three-bit data of the selected integer is used for indicating the obfuscation processing rule (Zeman: see Col 5 lines 23-31, "Thus, instruction 210 comprises an opcode 211 ("ADD"), and parameters 212 ("R1, R2"). Instruction 210 might mean "add the contents of registers R1 and R2, and put the result in R1." The numeric representation of instruction 210 may be as follows: the numeric opcode 213 for the "ADD" instruction may be the byte Ox 50, and the numeric representation of parameters 214 may be 0x01 and 0x02, representing R1 and R2, respectively") and
determining a combination of obtained N operated byte data as the option code (Paul: see Chapter 2 section 2.4.1, “Output: Pseudo-random keystream bytes z”). Utilizing the generated pseudo-random keystream bytes z as the option code is an obvious application of the keystream that is random and reproducible. Motivation to combine Mushkatblat, Zeman, Windle, and Paul in the instant claims, is the same as that in claims 5 and 14.
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to KELAH JANAE MCFARLAND-BARNES whose telephone number is (571)272-5953. The examiner can normally be reached Monday through Friday 8:00am until 4:00pm Central Time.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Lynn D Feild can be reached at 571-272-2092. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/KELAH JANAE MCFARLAND-BARNES/Examiner, Art Unit 2431
/MICHAEL R VAUGHAN/Primary Examiner, Art Unit 2431