📄 05-02.html
字号:
<option value="">----------- <option value="/reference/whatsnew.html">New Titles <option value="">----------- <option value="/reference/dir.archive1.html">Free Archive </SELECT> </font></td> </tr> </table> </form><!-- LEFT NAV SEARCH END --> </td> <!-- PUB PARTNERS END --><!-- END LEFT NAV --><td rowspan="8" align="right" valign="top"><img src="/images/iswbls.gif" width=1 height=400 alt="" border="0"></td><td><img src="/images/white.gif" width="5" height="1" alt="" border="0"></td><!-- end of ITK left NAV --><!-- begin main content --><td width="100%" valign="top" align="left"><!-- END SUB HEADER -->
<!--Begin Content Column -->
<FONT FACE="Arial,Helvetica" SIZE="-1">
To access the contents, click the chapter and section titles.
</FONT>
<P>
<B>Applied Cryptography, Second Edition: Protocols, Algorthms, and Source Code in C (cloth)</B>
<FONT SIZE="-1">
<BR>
<I>(Publisher: John Wiley & Sons, Inc.)</I>
<BR>
Author(s): Bruce Schneier
<BR>
ISBN: 0471128457
<BR>
Publication Date: 01/01/96
</FONT>
<P>
<form name="Search" method="GET" action="http://search.earthweb.com/search97/search_redir.cgi">
<INPUT TYPE="hidden" NAME="Action" VALUE="Search">
<INPUT TYPE="hidden" NAME="SearchPage" VALUE="http://search.earthweb.com/search97/samples/forms/srchdemo.htm">
<INPUT TYPE="hidden" NAME="Collection" VALUE="ITK">
<INPUT TYPE="hidden" NAME="ResultTemplate" VALUE="itk-full.hts">
<INPUT TYPE="hidden" NAME="ViewTemplate" VALUE="view.hts">
<font face="arial, helvetica" size=2><b>Search this book:</b></font><br>
<INPUT NAME="queryText" size=50 VALUE=""> <input type="submit" name="submitbutton" value="Go!">
<INPUT type=hidden NAME="section_on" VALUE="on">
<INPUT type=hidden NAME="section" VALUE="http://www.itknowledge.com/reference/standard/0471128457/">
</form>
<!-- Empty Reference Subhead -->
<!--ISBN=0471128457//-->
<!--TITLE=APPLIED CRYPTOGRAPHY, SECOND EDITION: Protocols, Algorithms, and Source Code in C//-->
<!--AUTHOR=Bruce Schneier//-->
<!--PUBLISHER=Wiley Computer Publishing//-->
<!--CHAPTER=05//-->
<!--PAGES=104-106//-->
<!--UNASSIGNED1//-->
<!--UNASSIGNED2//-->
<CENTER>
<TABLE BORDER>
<TR>
<TD><A HREF="05-01.html">Previous</A></TD>
<TD><A HREF="../ewtoc.html">Table of Contents</A></TD>
<TD><A HREF="05-03.html">Next</A></TD>
</TR>
</TABLE>
</CENTER>
<P><BR></P>
<P><FONT SIZE="+1"><B><I>Graph Isomorphism</I></B></FONT></P>
<P>An example might go a long way to explain this concept; this one comes from graph theory [619,622]. A graph is a network of lines connecting different points. If two graphs are identical except for the names of the points, they are called <B>isomorphic</B>. For an extremely large graph, finding whether two graphs are isomorphic can take centuries of computer time; it’s one of those <B>NP-complete</B> problems discussed in Section 11.1.</P>
<P>Assume that Peggy knows the isomorphism between the two graphs, <I>G</I><SUB>1</SUB> and <I>G</I><SUB>2</SUB>. The following protocol will convince Victor of Peggy’s knowledge:</P>
<DL>
<DD><B>(1)</B> Peggy randomly permutes <I>G</I><SUB>1</SUB> to produce another graph, <I>H</I>, that is isomorphic to <I>G</I><SUB>1</SUB>. Because Peggy knows the isomorphism between <I>H</I> and <I>G</I><SUB>1</SUB>, she also knows the isomorphism between <I>H</I> and <I>G</I><SUB>2</SUB>. For anyone else, finding an isomorphism between <I>G</I><SUB>1</SUB> and <I>H</I> or between <I>G</I><SUB>2</SUB> and <I>H</I> is just as hard as finding an isomorphism between <I>G</I><SUB>1</SUB> and <I>G</I><SUB>2</SUB>.
<DD><B>(2)</B> Peggy sends <I>H</I> to Victor.
<DD><B>(3)</B> Victor asks Peggy either to:
<DL>
<DD><B>(a)</B> prove that <I>H</I> and <I>G</I><SUB>1</SUB> are isomorphic, or
<DD><B>(b)</B> prove that <I>H</I> and <I>G</I><SUB>2</SUB> are isomorphic.
</DL>
<DD><B>(4)</B> Peggy complies. She either:
<DL>
<DD><B>(a)</B> proves that <I>H</I> and <I>G</I><SUB>1</SUB> are isomorphic, without proving that <I>H</I> and <I>G</I><SUB>2</SUB> are isomorphic, or
<DD><B>(b)</B> proves that <I>H</I> and <I>G</I><SUB>2</SUB> are isomorphic, without proving that <I>H</I> and <I>G</I><SUB>1</SUB> are isomorphic.
</DL>
<DD><B>(5)</B> Peggy and Victor repeat steps (1) through (4) <I>n</I> times.
</DL>
<P>If Peggy does not know an isomorphism between <I>G</I><SUB>1</SUB> and <I>G</I><SUB>2</SUB>, she cannot create graph <I>H</I> which is isomorphic to both. She can create a graph that is either isomorphic to <I>G</I><SUB>1</SUB> or one that is isomorphic to <I>G</I><SUB>2</SUB>. Like the previous example, she has only a 50 percent chance of guessing which proof Victor will ask her to perform in step (3).</P>
<P>This protocol doesn’t give Victor any useful information to aid him in figuring out an isomorphism between <I>G</I><SUB>1</SUB> and <I>G</I><SUB>2</SUB>. Because Peggy generates a new graph <I>H</I> for each round of the protocol, he can get no information no matter how many rounds they go through the protocol. He won’t be able to figure out an isomorphism between <I>G</I><SUB>1</SUB> and <I>G</I><SUB>2</SUB> from Peggy’s answers.</P>
<P>In each round, Victor receives a new random permutation of <I>H</I>, along with an isomorphism between <I>H</I> and either <I>G</I><SUB>1</SUB> or <I>G</I><SUB>2</SUB>. Victor could just as well have generated this by himself. Because Victor can create a simulation of the protocol, it can be proven to be zero-knowledge.</P>
<P><FONT SIZE="+1"><B><I>Hamiltonian Cycles</I></B></FONT></P>
<P>A variant of this example was first presented by Manuel Blum [196]. Peggy knows a circular, continuous path along the lines of a graph that passes through each point exactly once. This is called a <B>Hamiltonian cycle</B>. Finding a Hamiltonian cycle is another hard problem. Peggy has this piece of information—she probably got it by creating the graph with a certain Hamiltonian cycle—and this is what she wants to convince Victor that she knows.</P>
<P>Peggy knows the Hamiltonian cycle of a graph, <I>G</I>. Victor knows <I>G</I>, but not the Hamiltonian cycle. Peggy wants to prove to Victor that she knows this Hamiltonian cycle without revealing it. This is how she does it:</P>
<DL>
<DD><B>(1)</B> Peggy randomly permutes <I>G</I>. She moves the points around and changes their labels to make a new graph, <I>H</I>. Since <I>G</I> and <I>H</I> are topologically isomorphic (i.e., the same graph), if she knows the Hamiltonian cycle of <I>G</I> then she can easily find the Hamiltonian cycle of <I>H</I>. If she didn’t create <I>H</I> herself, determining the isomorphism between two graphs would be another hard problem; it could also take centuries of computer time. She then encrypts <I>H</I> to get <I>H´</I>. (This has to be a probabilistic encryption of each line in <I>H</I>, that is, an encrypted 0 or an encrypted 1 for each line in <I>H</I>.)
<DD><B>(2)</B> Peggy gives Victor a copy of <I>H´</I>.
<DD><B>(3)</B> Victor asks Peggy either to:
<DL>
<DD><B>(a)</B> prove to him that <I>H´</I> is an encryption of an isomorphic copy of <I>G</I>, or
<DD><B>(b)</B> show him a Hamiltonian cycle for <I>H</I>.
</DL>
<DD><B>(4)</B> Peggy complies. She either:
<DL>
<DD><B>(a)</B> proves that <I>H´</I> is an encryption of an isomorphic copy of <I>G</I> by revealing the permutations and decrypting everything, without showing a Hamiltonian cycle for either <I>G</I> or <I>H</I>, or
<DD><B>(b)</B> shows a Hamiltonian cycle for <I>H</I> by decrypting only those lines that constitute a Hamiltonian cycle, without proving that <I>G</I> and <I>H</I> are topologically isomorphic.
</DL>
<DD><B>(5)</B> Peggy and Victor repeat steps (1) through (4) <I>n</I> times.
</DL>
<P>If Peggy is honest, she can provide either proof in step (4) to Victor. However, if she does not know a Hamiltonian cycle for <I>G</I>, she cannot create an encrypted graph <I>H´</I> which can meet both challenges. The best she can do is to create a graph that is either isomorphic to <I>G</I> or one that has the same number of points and lines and a valid Hamiltonian cycle. While she has a 50 percent chance of guessing which proof Victor will ask her to perform in step (3), Victor can repeat the protocol enough times to convince himself that Peggy knows a Hamiltonian cycle for <I>G</I>.</P>
<P><FONT SIZE="+1"><B><I>Parallel Zero-Knowledge Proofs</I></B></FONT></P>
<P>The basic zero-knowledge protocol involves <I>n</I> exchanges between Peggy and Victor. Why not do them all in parallel:</P>
<DL>
<DD><B>(1)</B> Peggy uses her information and <I>n</I> random numbers to transform the hard problem into <I>n</I> different isomorphic problems. She then uses her information and the random numbers to solve the <I>n</I> new hard problems.
<DD><B>(2)</B> Peggy commits to the solution of the <I>n</I> new hard problems.
<DD><B>(3)</B> Peggy reveals to Victor the <I>n</I> new hard problems. Victor cannot use these new problems to get any information about the original problems or its solutions.
<DD><B>(4)</B> For each of the <I>n</I> new hard problems, Victor asks Peggy either to:
<DL>
<DD><B>(a)</B> prove to him that the old and new problems are isomorphic, or
<DD><B>(b)</B> open the solution she committed to in step (2) and prove that it is a solution to the new problem.
</DL>
<DD><B>(5)</B> Peggy complies for each of the <I>n</I> new hard problems.
</DL>
<P>Unfortunately, it’s not that simple. This protocol does not have the same zero-knowledge properties as the previous protocol. In step (4), Victor can choose the challenges as a one-way hash of all the values committed to in the second step, thus making the transcript nonsimulatable. It is still zero-knowledge, but of a different sort. It seems to be secure in practice, but no one knows how to prove it. We do know that in certain circumstances, certain protocols for certain problems can be run in parallel while retaining their zero-knowledge property [247,106,546,616].
</P><P><BR></P>
<CENTER>
<TABLE BORDER>
<TR>
<TD><A HREF="05-01.html">Previous</A></TD>
<TD><A HREF="../ewtoc.html">Table of Contents</A></TD>
<TD><A HREF="05-03.html">Next</A></TD>
</TR>
</TABLE>
</CENTER>
[an error occurred while processing this directive]
<!-- all of the reference materials (books) have the footer and subfoot reveresed --><!-- reference_subfoot = footer --><!-- reference_footer = subfoot --><!-- BEGIN SUB FOOTER --> <br><br> </TD> </TR> </TABLE> <table width="640" border=0 cellpadding=0 cellspacing=0> <tr> <td align="left" width=135><img src="/images/white.gif" width=100 height="1" alt="" border="0"></td> <!-- END SUB FOOTER -->
<!-- all of the books have the footer and subfoot reveresed --><!-- reference_subfoot = footer --><!-- reference_footer = subfoot --><!-- FOOTER --> <td width="515" align="left" bgcolor="#FFFFFF"><font face="arial, helvetica" size="1"><b><a href="/products.html"><font color="#006666">Products</font></a> | <a href="/contactus.html"><font color="#006666">Contact Us</font></a> | <a href="/aboutus.html"><font color="#006666">About Us</font></a> | <a href="http://www.earthweb.com/corporate/privacy.html" target="_blank"><font color="#006666">Privacy</font></a> | <a href="http://www.itmarketer.com/" target="_blank"><font color="#006666">Ad Info</font></a> | <a href="/"><font color="#006666">Home</font></a></b> <br><br> Use of this site is subject to certain <a href="/agreement.html">Terms & Conditions</a>, <a href="/copyright.html">Copyright © 1996-1999 EarthWeb Inc.</a><br> All rights reserved. Reproduction whole or in part in any form or medium without express written permision of EarthWeb is prohibited.</font><p></td> </tr></table></BODY></HTML><!-- END FOOTER -->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -