Cryptography Reference
In-Depth Information
the exchanged basis (and excess basis, if any) of the re-
placement MACRS property may be eligible for the ad-
ditional first year depreciation deduction under section
168(k) or 1400L(b), as applicable, subject to the require-
ments of section 168(k) or 1400L(b), as applicable. The
rules provided under 1.168(k)-1T and 1.1400L(b)-1T ap-
ply even if the taxpayer elects not to apply these tempo-
rary regulations.
18.2 Code Rearrangement
In the beginning, everyone was happy if the code just ran. Anyone
who lived with punch cards or paper tape, or any system without
persistent memory, spent too much time loading the software.
Some call it shrouded
code.
Now software is everywhere and it is much easier to analyze code
on a meta-level. Every compiler reads our code and tweaks it to
make it run faster. Most good programming editors and integrated
development environments have meta-tools that make suggestions
for rearranging the code.
These tools are an opportunity for sneaking in hidden messages
ontwodifferentlevels.First,itispossibletotweakthecodetohide
a message that is independent of the code— a message might hold a
watermark with a user's Id or something entirely different. Second,
the code itself can be twisted up in a way that makes it harder to
read or understand. The first is generally called watermarking or
steganography , while the second is often called obfuscation .
The SandMark tool by
Christian Collberg will
embed information
while obfuscating Java
byte code.
The two goals depend on the same basic observation: software
code consists of a number of different steps but not all of the steps
need to be in the same order. If steps
canbedonein
any order, we can hide a message in this order by giving one person
software that does them in order
A, B,
and
C
C, B,
and
A
while giving another a
package that executes the steps as
B,C,
and then
A
.Therearesix
different messages ( 3! = 3
1 ) that can be hidden here.
The process of obfuscation can be helped along by scrambling
the order of the steps if we assume that some of the orders are easier
to comprehend than others. Programmers, of course, will always
argue about the cleanest way to write their software, but even after
accounting for natural differences, there are some orders that are
harder to understand.
Reordering the instructions is just the beginning. Savvy tools can
rewrite the code by replacing one set of instructions with another set
that does exactly the same thing. A loop of code that keeps repeating
as long as some counter is strictly less than, say, 10 can be replaced
×
2
×
Search WWH ::




Custom Search