<?xml version="1.0"?>
<rss version="2.0">
    <channel>
        <title>OpenRCE: Blog</title>
        <link>http://www.openrce.org/rss/feeds/blog</link>
        <description>OpenRCE: The Open Reverse Code Engineering Community</description>
                <item>
            <title>JTAG Enumeration (tool)</title>
                            <pubDate>Wed, 03 Feb 2010 07:20:13 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1546/JTAG_Enumeration_(tool)</link>
                                        <author>cyphunk &lt;email-suppressed@example.com&gt;</author>
                                                    <description>JTAGenum is an open source Arduino based hardware platform I built last year with three primary goals: &lt;br /&gt;
1. Given a large set of pins on a device determine which are JTAG lines &lt;br /&gt;
2. Enumerate the Instruction Register to find undocumented functionality 3. be easy to build and apply]&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://deadhacker.com/2010/02/03/jtag-enumeration/&quot;&gt;details&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://github.com/cyphunk/sectk/tree/master/often/JTAG/JTAGenum&quot;&gt;download/code repository&lt;/a&gt;</description>
                    </item>
                <item>
            <title>cyphunk</title>
                            <pubDate>Tue, 06 May 2008 20:11:13 -0500</pubDate>
                                        <link>https://www.openrce.org/blog/view/1147/cyphunk</link>
                                        <author>cyphunk &lt;email-suppressed@example.com&gt;</author>
                                                    <description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;These are tools that let one run a process and, in a sense, selectively debug by telling the tool to perform analysis when conditions are met in the kernel, such as when a certain argument is sent to sendto() one could replace it on the stack with their own value.&amp;nbsp;&amp;nbsp;You could write your own version of functions and hijack them with with LD_PRELOAD but being able to script instead of compile is significantly better for debugging.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;There are several frameworks for such debugging available. &nbsp;&lt;a href=&quot;http://www.mactech.com/articles/mactech/Vol.23/23.11/ExploringLeopardwithDTrace/index.html&quot;&gt;DTrace&lt;/a&gt; with &lt;a href=&quot;http://www.internetnews.com/security/article.php/3729486&quot;&gt;RE:Trace&lt;/a&gt; (osx, sun), &lt;a href=&quot;http://sourceware.org/systemtap/documentation.html&quot;&gt;SystemTap&lt;/a&gt; on linux and &lt;a href=&quot;http://www.kenshoto.com/vtrace/&quot;&gt;vtrace&lt;/a&gt; for win32+linux, all scriptable.&nbsp; My favorate as yet is&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://subterfugue.org/&quot;&gt;Subterfugue&lt;/a&gt; though old its keep-it-simple-stupid methods have kept me coming back.&amp;nbsp;&amp;nbsp;Here is an &lt;a href=&quot;http://subterfugue.org/tutorial.html&quot;&gt;example&lt;/a&gt; that changes the argument passed to a write() into rot13 ascii:&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
&lt;pre&gt;trans = string.maketrans(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM)&lt;br /&gt;
&lt;br /&gt;
class Rot13(Trick):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def callbefore(self, pid, call, args):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m = getMemory(pid)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;address = args[1]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;size = args[2]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data = m.peek(address, size)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m.poke(address, string.translate(data, trans), self)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def callmask(self):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return { write : 1 }&lt;/pre&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;And the output:&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
&lt;pre&gt;bash-2.03$ sf --tri=Rot13 date&lt;br /&gt;
Jrq Sro&amp;nbsp;&amp;nbsp;2 02:55:34 PFG 2000&lt;br /&gt;
bash-2.03$ sf --tri=Rot13 --tri=Rot13 date&lt;br /&gt;
Wed Feb&amp;nbsp;&amp;nbsp;2 02:55:37 CST 200&lt;/pre&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;So because Im too lazy to make a CVS commit, ill explain how you can revive it yourself.&amp;nbsp;&amp;nbsp;Hey! Really this is better.&amp;nbsp;&amp;nbsp;Its future proof: You wont have to worry about the software dieing if I go off to work at some draconian anti-opensource company just like all the other wonderful security engineers out there (Im looking at you &lt;a href=&quot;http://boomerang.sourceforge.net/&quot;&gt;Boomerang Decompiler&lt;/a&gt;).&amp;nbsp;&amp;nbsp;You wont have to worry because&amp;#8230; within the next 5 minutes youll know how to maintain it yourself, kinda.&lt;/p&gt;&lt;br /&gt;
&lt;ol&gt;&lt;br /&gt;
&lt;li&gt;Downgrade python:&lt;br /&gt;&lt;br /&gt;
download and install python 1.5.2.&amp;nbsp;&amp;nbsp;You could try your luck with later versions but the object c methods are different and subterfugue needs these for heavy use of ptrace() hooking.&amp;nbsp;&amp;nbsp;Lets race to see who recodes them first. Anyway, whatever version to try be sure you have the Makefile.pre.in from the python install sources.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Update system call map:&lt;br /&gt;&lt;br /&gt;
grab the &lt;a href=&quot;http://sourceforge.net/projects/strace/&quot;&gt;strace sources&lt;/a&gt;.&amp;nbsp;&amp;nbsp;The system call map that subterfugue is using is dated from 2001 or so and needs to be updated for newer kernels.&amp;nbsp;&amp;nbsp;compare the syscallmap.py in subterfugue to the syscallent.h of strace.&amp;nbsp;&amp;nbsp;From about array index 250+ is where the new entries start.&amp;nbsp;&amp;nbsp;To add them I just cut and paste to a new file, ran a replace routine&amp;nbsp;&amp;nbsp;&lt;em&gt;for line in f.readlines(): print line.translate(string.maketrans(&amp;#8217;{}/*&amp;#8217;,()##&amp;#8217;))&lt;/em&gt;.&amp;nbsp;&amp;nbsp;Also needed to be sure there there was no more than one flag in each array.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;make install and then test with a trick from /usr/lib/subterfugue/tricks/:&amp;nbsp;&amp;nbsp;sf &amp;#8211;tri=Count date&lt;/li&gt;&lt;br /&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;p&gt;If time permits I would like to rewrite the ptrace c shell using python 2+ methods. Until then, this works.&lt;/p&gt;&lt;br /&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/cyphunk.wordpress.com/71/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/cyphunk.wordpress.com/71/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/cyphunk.wordpress.com/71/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/cyphunk.wordpress.com/71/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/cyphunk.wordpress.com/71/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/cyphunk.wordpress.com/71/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/cyphunk.wordpress.com/71/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/cyphunk.wordpress.com/71/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/cyphunk.wordpress.com/71/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/cyphunk.wordpress.com/71/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/cyphunk.wordpress.com/71/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/cyphunk.wordpress.com/71/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=deadhacker.com&amp;blog=31698&amp;post=71&amp;subd=cyphunk&amp;ref=&amp;feed=1&quot; /&gt;</description>
                    </item>
                <item>
            <title>cyphunk</title>
                            <pubDate>Tue, 28 Feb 2006 22:42:08 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1148/cyphunk</link>
                                        <author>cyphunk &lt;email-suppressed@example.com&gt;</author>
                                                    <description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;Update: added seperate feeds for updated and new-only articles&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;One of the resources I use to monitor for current cryptography papers is the &lt;a title=&quot;ePrint ArchiveCryptology ePrint Archive&quot; href=&quot;http://eprint.iacr.org/&quot; target=&quot;_blank&quot;&gt;Cryptology ePrint Archive&lt;/a&gt;, a routinely updated repository of all cryptography papers. Recently the Archive setup their own RSS feeds. Their feed provides a link to the article summaries. For me this isn&amp;#8217;t enough and for a while I&amp;#8217;ve had my own bot building an RSS feed listing the latest additions to the archive including their full summary inside the feed itself, not just a link to it. It was too buggy to link publicly so last night I fixed what should be the last of the problems to providing a stable feed.&amp;nbsp;&amp;nbsp;I have a feed for just &lt;a title=&quot;Cryptology ePrint Archive RSS feed&quot; href=&quot;http://admin.cypherpoet.com/feeds/crypteprint_new.xml&quot;&gt;newly published articles&lt;/a&gt; and another for &lt;a title=&quot;Cryptology ePrint Archive RSS feed&quot; href=&quot;http://admin.cypherpoet.com/feeds/crypteprint_all.xml&quot;&gt;all articles new or updated&lt;/a&gt;.&nbsp;&lt;/p&gt;&lt;br /&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/cyphunk.wordpress.com/22/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/cyphunk.wordpress.com/22/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/cyphunk.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/cyphunk.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/cyphunk.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/cyphunk.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/cyphunk.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/cyphunk.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/cyphunk.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/cyphunk.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/cyphunk.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/cyphunk.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=deadhacker.com&amp;blog=31698&amp;post=22&amp;subd=cyphunk&amp;ref=&amp;feed=1&quot; /&gt;</description>
                    </item>
                <item>
            <title>Creative Commons License</title>
                            <pubDate>Tue, 21 Feb 2006 14:29:56 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1149/Creative_Commons_License</link>
                                        <author>cyphunk &lt;email-suppressed@example.com&gt;</author>
                                                    <description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/publicdomain/&quot;&gt; &lt;/a&gt;By Nathan Fain&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;Incomplete: must create detailed diagram for compression functions.&lt;br /&gt;&lt;br /&gt;
&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;The following simplifies the specification of SHA-1 in an easy to digest form. First we will cover the general structure of the algorithm. Detail of the expansion and compression routines are covered separately.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;img align=&quot;right&quot; alt=&quot;message&quot; src=&quot;http://cyphunk.files.wordpress.com/2006/02/message.png&quot; /&gt;First we start with a message. The message is padded and the length of the message is added to the end. It is then split into blocks of 512 bits (Figure 2).&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;img alt=&quot;message blocks&quot; src=&quot;http://cyphunk.files.wordpress.com/2006/02/message_blocks.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;
(Figure 2)&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;The blocks are then processed one at a time.&amp;nbsp;&amp;nbsp;Each block must be expanded and compressed.&amp;nbsp;&amp;nbsp;The value after each compression is added to a 160bit buffer called the current &lt;em&gt;hash state&lt;/em&gt;.&amp;nbsp;&amp;nbsp;After the last block is processed the current hash state is returned as the final hash.&amp;nbsp;&amp;nbsp;A overview of this procedure can be seen in Figure 3.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;img alt=&quot;sha-1 general process overview&quot; src=&quot;http://cyphunk.files.wordpress.com/2006/02/overview.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;
(Figure 3)&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Let&amp;#8217;s look more closely at the expansion and compression functions.&amp;nbsp;&amp;nbsp;For expansion each 512 bit message block is separated into chunks of 32 bits. As you can see in Figure 3 these 16 chunks are then used to create 64 more chunks for a total of 80. Details of how this is done are described later.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;img alt=&quot;expand block to 80 32 bit chunks&quot; src=&quot;http://cyphunk.files.wordpress.com/2006/02/block_expland.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;
(Figure 4)&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Now all 80 of these chunks are compressed into a 160 bit value which is &lt;strong&gt;added&lt;/strong&gt; to the &lt;em&gt;current hash state&lt;/em&gt; (Figure 5):&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;img alt=&quot;compress block into hash state&quot; src=&quot;http://cyphunk.files.wordpress.com/2006/02/compress_chunks.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;
(Figure 5)&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Figure 5 shows one block being processed.&amp;nbsp;&amp;nbsp;The expansion and compression functions are repeated for each block with the return constantly being added to the &lt;em&gt;current hash state&lt;/em&gt; buffer.&amp;nbsp;&amp;nbsp; &lt;img align=&quot;right&quot; alt=&quot;return hash state as hash&quot; src=&quot;http://cyphunk.files.wordpress.com/2006/02/return_hash.png&quot; /&gt; Once all blocks have been processed it is this value that is returned as the hash of the message.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;3 tasks were generalized above: How the message is prepared before processing, how exactly the block is expanded to 80 chunks (Figure 4) and how those chunks are compressed (Figure 5).&amp;nbsp;&amp;nbsp;It is not essential to understand them in detail but should you desire, here are the details.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Message Preparation&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;The message is prepared in 4 steps:&lt;/p&gt;&lt;br /&gt;
&lt;ol&gt;&lt;br /&gt;
&lt;li&gt;Append a single binary 1 bit to the message&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Split into blocks of 512 bits each (Figure 2 above)&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;The last block must be equal to 448 so that we can append the message length (next step).&amp;nbsp;&amp;nbsp;If it is under pad with binary 0 bits until equal to 448.&amp;nbsp;&amp;nbsp;If over, pad until it is 512 bits and create an additional block of 448 binary 0 bits.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Append the length of the original message to the last block.&amp;nbsp;&amp;nbsp;Represent this length as a 64 bit integer (making the last block equal to 512 bits).&lt;/li&gt;&lt;br /&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;p&gt;I should also mention that before we process any blocks we must initiate the &lt;em&gt;hash state&lt;/em&gt; buffer.&amp;nbsp;&amp;nbsp;The buffer is actually 5 separate 32 bit integers:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;tt&gt;h0 = 67452301&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;tt&gt;h1 = EFCDAB89&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;tt&gt;h2 = 98BADCFE&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;tt&gt;h3 = 10325476&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;tt&gt;h4 = C3D2E1F0&lt;/tt&gt;&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Block expansion&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;
&lt;img align=&quot;right&quot; alt=&quot;Animation of block expansion&quot; src=&quot;http://cyphunk.files.wordpress.com/2006/02/expand_anim.gif&quot; /&gt;Each 512 bit block is split further into 32 bit chunks (&amp;#8221;&lt;em&gt;words&lt;/em&gt;&amp;#8220;) as seen in Figure 4.&amp;nbsp;&amp;nbsp;These 16 chunks are then expanded to a total of 80.&amp;nbsp;&amp;nbsp;The processes of expansion is a simple XOR of 4 values.&amp;nbsp;&amp;nbsp;For instance, the next chunk, chunk 17, is created by XOR&amp;#8217;ing together chunk 17-3,&amp;nbsp;&amp;nbsp;17-8, 17-14 and 17-16.&amp;nbsp;&amp;nbsp;For chunk 18 run the same processes but subtracting from 18 instead of 17.&amp;nbsp;&amp;nbsp;This continues until all 80 have been created.&amp;nbsp;&amp;nbsp;This can clearly be seen in the animation to the right. (If the animation is not playing reload the page.)&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Block compression&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;!--Creative Commons License--&gt; &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/publicdomain/&quot;&gt; &lt;img border=&quot;0&quot; align=&quot;left&quot; alt=&quot;Creative Commons License&quot; src=&quot;http://cyphunk.files.wordpress.com/2006/02/norights.gif&quot; /&gt;&lt;/a&gt;This work is licensed under a &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/publicdomain/&quot;&gt;Creative Commons Public Domain License&lt;/a&gt; and may be used however you wish.&nbsp; For sources to Dia based diagrams, contact me.&lt;!--/Creative Commons License--&gt;&lt;/p&gt;&lt;br /&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/cyphunk.wordpress.com/50/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/cyphunk.wordpress.com/50/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/cyphunk.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/cyphunk.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/cyphunk.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/cyphunk.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/cyphunk.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/cyphunk.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/cyphunk.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/cyphunk.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/cyphunk.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/cyphunk.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=deadhacker.com&amp;blog=31698&amp;post=50&amp;subd=cyphunk&amp;ref=&amp;feed=1&quot; /&gt;</description>
                    </item>
                <item>
            <title>cyphunk</title>
                            <pubDate>Mon, 06 Feb 2006 20:39:59 -0600</pubDate>
                                        <link>https://www.openrce.org/blog/view/1150/cyphunk</link>
                                        <author>cyphunk &lt;email-suppressed@example.com&gt;</author>
                                                    <description>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://cyphunk.files.wordpress.com/2006/02/An%20Illustrated%20Guide%20to%20Cryptographic%20Hashes.pdf&quot;&gt;An Illustrated Guide to Cryptographic Hashes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
by Steve Friedl&lt;br /&gt;&lt;br /&gt;
15 pages of text&lt;/p&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;Update 2006.02.11: clearer explanation of CTFP preimage resistance.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;p&gt;This is a very good introduction to what a hash algorithm is, what it is for and what collisions are all about. It does not cover specific details, only the general understanding. It&amp;#8217;s a quick read so I&amp;#8217;ll forgo summarizing the contents.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;The article explains the common terms used in most papers that discuss collisions. These terms are used to classify the type of collision attacks possible and are necessary to understand when reading other papers:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;strong&gt;Collision resistance&lt;/strong&gt; measures how difficult it is to create two inputs which produce any hash value which is the same for both inputs. In this scenario the attacker can control both inputs.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;strong&gt;Preimage resistance&lt;/strong&gt; measures how difficult it is to create one input which matches the hash value of an unknown input. Here the attacker does not know the other input and is restricted by needing to create a specific hash value.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;strong&gt;Second preimage resistance&lt;/strong&gt; measures how difficult it is to create one input which matches the hash value of a known input. Here the attacker can see both inputs but only controls one. Attacker is still restricted by having to create an input which matches the specific hash value of the other. However, knowing the input that produced the hash might be of assistance.&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;Both preimage and second preimage are similar in that the objective is to get one input to match a predefined hash which is not controlled by the attacker. Also, in the &lt;a title=&quot;Herding Hash Functions&quot; href=&quot;http://deadhacker.com/2006/02/01/herding-hash-functions/&quot;&gt;Herding Hash Functions&lt;/a&gt; by John Kelsey and Tadayoshi Kohno they that there is a 4rth resistance value:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;strong&gt;Chosen Target Forced Prefix preimage resistance&lt;/strong&gt; measures how difficult it is to create a collision when the first input is known while the second input is not know yet.&amp;nbsp;&amp;nbsp; This is similar to preimage resistance except that here the attacker controls the first input and not the second.&amp;nbsp;&amp;nbsp;Well, almost.&amp;nbsp;&amp;nbsp;The attacker is permitted to append data to the second input.&amp;nbsp;&amp;nbsp;The attacker must determine the hash first using the first input and then &amp;#8220;herd&amp;#8221; the second input to the same hash.&amp;nbsp;&amp;nbsp;Herding is done by adding data to the second input to make it collide.&amp;nbsp;&amp;nbsp;Is a process that involves carefully predetermining the first input and using internal states from its hash generation in the appended data to the second.&lt;/li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/cyphunk.wordpress.com/34/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/cyphunk.wordpress.com/34/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/cyphunk.wordpress.com/34/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/cyphunk.wordpress.com/34/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/cyphunk.wordpress.com/34/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/cyphunk.wordpress.com/34/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/cyphunk.wordpress.com/34/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/cyphunk.wordpress.com/34/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/cyphunk.wordpress.com/34/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/cyphunk.wordpress.com/34/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/cyphunk.wordpress.com/34/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/cyphunk.wordpress.com/34/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=deadhacker.com&amp;blog=31698&amp;post=34&amp;subd=cyphunk&amp;ref=&amp;feed=1&quot; /&gt;</description>
                    </item>
            </channel>
</rss>
