|
About Andrew Choi
MIDI Programs
MIDI File Player (External Device)
MIDI Destination Pop-Up Button
MIDI File Player (Internal Synth)
MusicSequence Sample Code
MIDI File Writer
MIDI Name Document Parser
NameConfigSetup
Fish Creek MIDI Framework
MidnamUtility
SysExSenderX
Other Programs
FCBlogEditor
FCBlog and Patch
Chinese Checkers Program
jyut6 ping3 Cantonese Input Method
Cocoa Sample Programs
Syntax Coloring Using Flex
NSTextField and Undo
NSToolbar
Implementing File Import
Launch Application and Open URL
Saving Uncommitted Text Field Edits
Algorithms
Jazz Chord Analysis as Optimization
Optimal Line Breaking for Music
Optimal Chord Spacing
|
|
|
|
A blog where I will write mostly about programming in Cocoa and CoreMIDI, and experiences from my ports of Emacs and XEmacs to the Mac OS.
|
Software Protection Literature
|
Friday December 10, 2004
Ive almost finished adding software protection to my shareware program. Because the security of techniques Ive used depends on obscurity to a great extent, I cannot really write about specific details. I can however share some of the references to the literature from which I got the ideas to develop them.
I wrote a series of blog entries back in January (from Jan. 9 to Jan. 24) with my commentaries on a number of papers on software protection. I also wrote about the use of public key encryption using elliptic curve cryptography to implement license keys during the week of Nov. 7. I wrote an entry on anti-debugging on Nov. 24.
Last week, I found a web page with references to recent articles on software protection. The problem with academic papers on software protection is that they make many assumptions that arent realistic (hey, I know all about making such assumptions :-)). Claims that a certain method is secure because its based on the undecidability of alias analysis, for example, are really quite meaningless because they assume a particular method of attack (static analysis). NP-hardness results on code obfuscation also have similar problems because they assume that it is the objective of the cracker to understand an entire program or algorithm. Of course in practice protection of a program may rest on a small section of code that checks the license key, for example. And dont get me started on code obfuscation: really just a collection of arbitrary and ad hoc tricks, many of which can be defeated by dynamic data-flow analysis tools.
Articles written by crackers (this collection and this other collection, for example) are usually anecdotal: i.e., this is how I cracked program X. I also dont believe the best crackers will give away their most useful techniques. These articles are not always interesting to read because many of them trace through the steps used to crack a program. Most of these articles can be summarized in a few sentences: the programmer has forgotten to do ....
I believe the conclusion one must arrive at after studying the (practical, and not academic) problem of software protection is that the more effort one puts into adding good protection measures into ones program, the more effort crackers must take to crack it. Thats really the best a program developer can do. And thats why it has taken me such a long time to work on this part of my program, which I cant write about...
|
| December 2004 |
| Sun |
Mon |
Tue |
Wed |
Thu |
Fri |
Sat |
|
1 |
2 |
3 |
4 |
• |
| 5 |
6 |
7 |
8 |
9 |
10 |
11 |
← |
| 12 |
13 |
14 |
15 |
16 |
17 |
18 |
| 19 |
20 |
21 |
22 |
23 |
24 |
25 |
• |
| 26 |
27 |
28 |
29 |
30 |
31 |
|
Search this blog with
Lists
Less-Known Facts About Emacs
Emacs Rants
Chinese Restaurants in Calgary
Calgary/Banff Tourist Attractions
C++ Reading List
Science Fiction Series
Top-10 Reason I Stopped Working on Emacs
Top-10 Types of Questions I Get About Emacs
10 Defining Moments as Programmer
Misc
Carbon XEmacs
Emacs for
Mac OS X
|