--- /dev/null
+ ----
+ Definitions
+ ----
+ Haruaki Tamada
+ ----
+ 2007-06-11
+ ----
+
+Definitions
+
+*Birthmark
+
+ Let <p>, <q> be programs and <f(p)> be a set of characteristics
+extracted from <p> by a certain method <f>. Then <f(p)> is called a
+<birthmark> of <p> iff both of the following conditions are satisfied.
+
+*Conditions of Birthmark
+
+ First condition means that the birthmark is not extra information and
+is required for <p> to run. Hence, extracting a birthmark does not
+require extra code as watermarking does. Second condition states that
+the same birthmark has to be obtained from copied programs. By
+contraposition, if birthmarks <f(p)> and <f(q)> are different, then
+<p> is different from <q> holds. That is, we can guarantee that <q> is
+not a copy of <p>.
+
+ [[1]]<f(p)> is obtained from <p> itself without any extra information.
+
+ [[2]]If <q> is copied from <p>, then <f(p)=f(q)>
+
+*Properties of Birthmark
+
+ Hopefully, a birthmark will satisfy the following properties. These
+properties strengthen Condition 2 of birthmark definition. First
+property specifies <preservation property> of the birthmark against
+program transformation. Preservation property specifies that the same
+birthmark must be obtained from <p> and converted to <p'>. However,
+there exist many ways to transform a program into an equivalent
+one. Hence, in reality, it is difficult to extract strong enough
+birthmarks to perfectly satisfy preservation property.
+
+ Second property specifies the <distinction property> of the
+birthmark, stating that: even though the specification of <p> and <q>
+is the same, if implemented separately, different birthmarks should be
+extracted. In general, the detail of two independent programs is
+almost never completely the same. However, in the case that <p> and
+<q> are both <tiny> programs, extracted birthmarks could become the
+same, even if <p> and <q> are written independently. Those properties
+should be tuned within an allowable range at the user's discretion.
+
+**Preservation
+
+ For <p'> obtained from <p> by any program transformation, <f(p) =
+f(p')> holds.
+
+**Distinction
+
+ For <p> and <q> such that same specification, if <p> and <q> are
+written independently, then <f(p)!=f(q)>.
\r
You can brouse the source code from following link.\r
\r
- {{{http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/?root=stigmata}http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/?root=stigmata}}\r
+ {{http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/?root=stigmata}}\r
\r
--- /dev/null
+ ----
+ DTD
+ ----
+ Haruaki Tamada
+ ----
+ 2006-12-12
+ ----
+
+Overview
+
+ Stigmata supports two types of xml file. One is
+ {{{#Stigmata setting xml}configuration settings}} of Stigmata. Another is
+ {{{#Birthmarking result xml}result of birthmarking}}.
+
+{Stigmata setting xml}
+
+ This dtd is defined for configuration settings of Stigmata. A xml
+file formatted in this dtd can be specified <<<--config-file>>> option
+of Stigmata.
+
+*DTD
+
+----
+<?xml version="1.0" encoding="euc-jp"?>
+
+<!--
+ $Id: stigmata-4.0.dtd 124 2007-06-11 04:22:36Z tama3 $
+-->
+
+<!ELEMENT classpath (#PCDATA)>
+
+<!ELEMENT type (#PCDATA)>
+<!ELEMENT display-name (#PCDATA)>
+<!ELEMENT description (#PCDATA)>
+<!ELEMENT extractor (#PCDATA)>
+<!ELEMENT comparator (#PCDATA)>
+
+<!ELEMENT suffix (#PCDATA)>
+<!ELEMENT prefix (#PCDATA)>
+<!ELEMENT match (#PCDATA)>
+
+<!ELEMENT name (#PCDATA)>
+<!ELEMENT value (#PCDATA)>
+
+<!ELEMENT criterion (#PCDATA)>
+<!ELEMENT filter-type (#PCDATA)>
+
+<!ELEMENT exclude (suffix|prefix|match)>
+<!ELEMENT package (suffix|prefix|match)>
+<!ELEMENT class-name (suffix|prefix|match)>
+<!ELEMENT fully-name (suffix|prefix|match)>
+
+<!ELEMENT wellknown-classes ((exclude|package|class-name|fully-name)*)>
+
+<!ELEMENT property (name,value)>
+<!ELEMENT properties (property*)>
+
+<!ELEMENT birthmark-service (type,display-name,description,extractor,comparator)>
+<!ELEMENT birthmark-services (birthmark-service*)>
+
+<!ELEMENT classpath-list (classpath*)>
+
+<!ELEMENT attribute (name,value)>
+<!ELEMENT attributes (attribute*)>
+<!ELEMENT filter (filter-type,criterion,attributes)>
+<!ELEMENT filter-list (filter*)>
+<!ELEMENT filterset (name,match,filter-list)>
+<!ELEMENT filterset-list (filterset*)>
+
+<!ELEMENT stigmata (birthmark-services,wellknown-classes?,classpath-list?,properties?,filterset-list?) >
+----
+
+{Birthmarking result xml}
+
+ This dtd is defined for a result of Stigmata. The result of Stigmata
+is birthmark service list, list of extracted birthmarks, and
+similarities between all combinations of class files. Those
+information is shown as xml file formatted in this DTD.
+
+*DTD
+
+----
+<!--
+ $Id: birthmark-1.0.dtd 124 2007-06-11 04:22:36Z tama3 $
+-->
+
+<!ATTLIST birthmark
+ type NAME #REQUIRED
+ count CDATA #REQUIRED
+>
+
+<!ATTLIST birthmark-similarity
+ type NAME #REQUIRED
+ comparison-count CDATA #REQUIRED
+>
+
+<!ELEMENT type (#PCDATA)>
+<!ELEMENT display-type (#PCDATA)>
+<!ELEMENT description (#PCDATA)>
+<!ELEMENT class-name (#PCDATA)>
+<!ELEMENT location (#PCDATA)>
+<!ELEMENT element (#PCDATA)>
+<!ELEMENT birthmark-similarity (#PCDATA)>
+<!ELEMENT similarity (#PCDATA)>
+
+<!ELEMENT birthmark-service (type,display-type,description,class-name)>
+<!ELEMENT birthmark-services (birthmark-service*)>
+
+<!ELEMENT birthmark (element*)>
+<!ELEMENT extracted-birthmark (class-name,location,birthmark)>
+<!ELEMENT extracted-birthmarks (extracted-birthmark*)>
+
+<!ELEMENT target1 (class-name,location)>
+<!ELEMENT target2 (class-name,location)>
+<!ELEMENT birthmark-similarities (birthmark-similarity*)>
+<!ELEMENT comparison-result (target1,target2,birthmark-similarities,similarity)>
+<!ELEMENT comparison-result-set (comparison-result*)>
+
+<!ELEMENT birthmark (birthmark-services?,extracted-birthmarks?,comparison-result-set?)>
+----
\ No newline at end of file
--- /dev/null
+ ----
+ FAQ
+ ----
+ Haruaki Tamada
+ ----
+ 2007-06-11
+ ----
+
+{FAQ}
+
+ *{{{#What is stigmata}What is stigmata}}
+
+ *{{{#What is birthmark}What is birthmark}}
+
+ *{{{#Why did I name it stigmata}Why did I name it stigmata}}
+
+ *{{{#What kind of features does stigmata have}What kind of features does stigmata have}}
+
+*{What is stigmata}
+
+ Stigmata is a toolkit for birthmarking Java class files. Extracting
+birthmarks from Java class files directly and comparing them. And
+analyzing birthmarks in multi-dimensional scaling.
+
+*{What is birthmark}
+
+ A birthmark is a unique and native characteristics of a program. The
+birthmark provides a way to detect stolen software without embedding
+any additional information before distribution.
+
+ For more defails, see {{{definition.html}Definitions}}.
+
+*{Why did I name it stigmata}
+
+ Birthmark is marks that appear on a person's body in the same places
+ as those made on Jesus Christ's body when he was nailed to a cross.
+
+ {{http://dictionary.cambridge.org/define.asp?key=78150&dict=CALD}}
+
+ We liken birthmarks to holy sign of programs.
+
+*{What kind of features does stigmata have}
+
+ Stigmata have general mode and expert mode. In general mode, we can
+extract certain birthmarks from jar file directly, and compare
+extracted birthmarks. Additionally, analyzing extracted birthmarks
+with MDS (multi-dimensional scaling).
+
+ In expert mode, it added to general mode, we can define the new
+birthmark, and a new filter (filtering the result of comparing).
+
+ Moreover, a part of extracting/comparing birthmarks is provided as
+plugins, you can define original birthmark plugin and easily install
+it to Stigmata.
+
Overview\r
\r
Stigmata is rewrite almost every source code based on <<<jbirth>>>\r
-which available at http://se.naist.jp/jbirth. Stigmata aims to detect\r
-the theft of programs, too. This tool can extract birthmarks from\r
-Java class files, and compare them. Differences from <<<jbirth>>> are\r
+which available at {{http://se.naist.jp/jbirth}}. Stigmata aims to\r
+detect the theft of programs, too. This tool can extract birthmarks\r
+from Java class files, and compare them. Differences from\r
+<<<jbirth>>> are\r
\r
* using spi (service provider interface) architecture for birthmark implementation\r
\r
\r
*{{{http://www.e-t.com/jshrink.html}JShrink}}\r
\r
- *{{{http://www.drjava.de/obfuscator/}Marvin Obfuscator }}\r
+ *{{{http://www.drjava.de/obfuscator/}Marvin Obfuscator}}\r
\r
*{{{http://proguard.sourceforge.net/}ProGuard}}\r
\r
<menu name="Stigmata">
<item name="Introduction" href="index.html"/>
<item name="Download" href="download.html" />
+ <item name="Definition" href="definition.html" />
+ <item name="DTD" href="dtd.html" />
+ <item name="FAQ" href="faq.html"/>
<item name="License" href="license.html"/>
<item name="Project Page" href="http://sourceforge.jp/projects/stigmata/"/>
</menu>