| < draft-eastlake-fnv-04.txt | draft-eastlake-fnv-05.txt > | |||
|---|---|---|---|---|
| Network Working Group Glenn Fowler | Network Working Group Glenn Fowler | |||
| INTERNET-DRAFT AT&T Labs Research | INTERNET-DRAFT AT&T Labs Research | |||
| Intended Status: Informational Landon Curt Noll | Intended Status: Informational Landon Curt Noll | |||
| Cisco Systems | Cisco Systems | |||
| Kiem-Phong Vo | Kiem-Phong Vo | |||
| AT&T Labs Research | AT&T Labs Research | |||
| Donald Eastlake | Donald Eastlake | |||
| Huawei Technologies | Huawei Technologies | |||
| Expires: March 23, 2013 September 24, 2012 | Expires: October 5, 2013 April 6, 2013 | |||
| The FNV Non-Cryptographic Hash Algorithm | The FNV Non-Cryptographic Hash Algorithm | |||
| <draft-eastlake-fnv-04.txt> | <draft-eastlake-fnv-05.txt> | |||
| Abstract | Abstract | |||
| FNV (Fowler/Noll/Vo) is a fast, non-cryptographic hash algorithm with | FNV (Fowler/Noll/Vo) is a fast, non-cryptographic hash algorithm with | |||
| good dispersion. The purpose of this document is to make information | good dispersion. The purpose of this document is to make information | |||
| on FNV and open source code performing FNV conveniently available to | on FNV and open source code performing FNV conveniently available to | |||
| the Internet community. | the Internet community. | |||
| Status of This Memo | Status of This Memo | |||
| skipping to change at page 2, line 37 ¶ | skipping to change at page 2, line 37 ¶ | |||
| 7. IANA Considerations....................................11 | 7. IANA Considerations....................................11 | |||
| 8. Acknowledgements.......................................11 | 8. Acknowledgements.......................................11 | |||
| 9. References.............................................12 | 9. References.............................................12 | |||
| 9.1 Normative References..................................12 | 9.1 Normative References..................................12 | |||
| 9.2 Informative References................................12 | 9.2 Informative References................................12 | |||
| Appendix A: Work Comparison with SHA-1....................13 | Appendix A: Work Comparison with SHA-1....................13 | |||
| Appendix B: Previous IETF Reference to FNV................14 | Appendix B: Previous IETF Reference to FNV................14 | |||
| Appendix C: A Few Test Vectors............................15 | Appendix C: A Few Test Vectors............................15 | |||
| Appendix Z: Change Summary................................16 | Appendix Z: Change Summary................................16 | |||
| Author's Address..........................................18 | ||||
| INTERNET-DRAFT FNV | INTERNET-DRAFT FNV | |||
| 1. Introduction | 1. Introduction | |||
| The FNV hash algorithm is based on an idea sent as reviewer comments | The FNV hash algorithm is based on an idea sent as reviewer comments | |||
| to the [IEEE] POSIX P1003.2 committee by Glenn Fowler and Phong Vo in | to the [IEEE] POSIX P1003.2 committee by Glenn Fowler and Phong Vo in | |||
| 1991. In a subsequent ballot round Landon Curt Noll suggested an | 1991. In a subsequent ballot round Landon Curt Noll suggested an | |||
| improvement on their algorithm. Some people tried this hash and found | improvement on their algorithm. Some people tried this hash and found | |||
| that it worked rather well. In an EMail message to Landon, they named | that it worked rather well. In an EMail message to Landon, they named | |||
| it the "Fowler/Noll/Vo" or FNV hash. [FNV] | it the "Fowler/Noll/Vo" or FNV hash. [FNV] | |||
| FNV hashes are designed to be fast while maintaining a low collision | FNV hashes are designed to be fast while maintaining a low collision | |||
| rate. The high dispersion of the FNV hashes makes them well suited | rate. The high dispersion of the FNV hashes makes them well suited | |||
| for hashing nearly identical strings such as URLs, hostnames, | for hashing nearly identical strings such as URLs, hostnames, | |||
| filenames, text, IP addresses, etc. Their speed allows one to quickly | filenames, text, IP addresses, etc. Their speed allows one to quickly | |||
| hash lots of data while maintaining a reasonably low collision rate. | hash lots of data while maintaining a reasonably low collision rate. | |||
| However, they are generally not suitable for cryptographic use. (See | However, they are generally not suitable for cryptographic use. (See | |||
| Section 6.1.) | Section 6.1.) | |||
| The FNV hash is widely used, for example in DNS servers, database | The FNV hash is widely used, for example in DNS servers, the Twitter | |||
| indexing hashes, major web search / indexing engines, netnews history | service, database indexing hashes, major web search / indexing | |||
| file Message-ID lookup functions, anti-spam filters, a spellchecker | engines, netnews history file Message-ID lookup functions, anti-spam | |||
| programmed in Ada 95, flatassembler's open source x86 assembler - | filters, a spellchecker programmed in Ada 95, flatassembler's open | |||
| user-defined symbol hashtree, non-cryptographic file fingerprints, | source x86 assembler - user-defined symbol hashtree, non- | |||
| computing Unique IDs in DASM (DTN Applications for Symbian Mobile- | cryptographic file fingerprints, computing Unique IDs in DASM (DTN | |||
| phones), Microsoft's hash_map implementation for VC++ 2005, the | Applications for Symbian Mobile-phones), Microsoft's hash_map | |||
| realpath cache in PHP 5.x (php-5.2.3/TSRM/tsrm_virtual_cwd.c), and | implementation for VC++ 2005, the realpath cache in PHP 5.x | |||
| many other uses. | (php-5.2.3/TSRM/tsrm_virtual_cwd.c), and many other uses. | |||
| A study has recommended FNV in connetion with the IPv6 Flow Label | ||||
| field [IPv6flow]. | ||||
| FNV hash algorithms and source code have been released into the | FNV hash algorithms and source code have been released into the | |||
| public domain. The authors of the FNV algorithm took deliberate steps | public domain. The authors of the FNV algorithm took deliberate steps | |||
| to disclose the algorithm in a public forum soon after it was | to disclose the algorithm in a public forum soon after it was | |||
| invented. More than a year passed after this public disclosure and | invented. More than a year passed after this public disclosure and | |||
| the authors deliberately took no steps to patent the FNV algorithm. | the authors deliberately took no steps to patent the FNV algorithm. | |||
| Therefore, it is safe to say that the FNV authors have no patent | Therefore, it is safe to say that the FNV authors have no patent | |||
| claims on the FNV algorithm as published. | claims on the FNV algorithm as published. | |||
| If you use an FNV function in an application, you are kindly | If you use an FNV function in an application, you are kindly | |||
| skipping to change at page 12, line 26 ¶ | skipping to change at page 12, line 26 ¶ | |||
| has been replaced by newer versions with slight modifications, | has been replaced by newer versions with slight modifications, | |||
| but the 1968 version remains definitive for the Internet. | but the 1968 version remains definitive for the Internet. | |||
| 9.2 Informative References | 9.2 Informative References | |||
| [FNV] - FNV web site: | [FNV] - FNV web site: | |||
| http://www.isthe.com/chongo/tech/comp/fnv/index.html | http://www.isthe.com/chongo/tech/comp/fnv/index.html | |||
| [IEEE] - http://www.ieee.org | [IEEE] - http://www.ieee.org | |||
| [IPv6flow] - https://researchspace.auckland.ac.nz/bitstream/handle/ | ||||
| 2292/13240/flowhashRep.pdf | ||||
| [RFC3174] - Eastlake 3rd, D. and P. Jones, "US Secure Hash Algorithm | [RFC3174] - Eastlake 3rd, D. and P. Jones, "US Secure Hash Algorithm | |||
| 1 (SHA1)", RFC 3174, September 2001. | 1 (SHA1)", RFC 3174, September 2001. | |||
| [RFC6194] - Polk, T., Chen, L., Turner, S., and P. Hoffman, "Security | [RFC6194] - Polk, T., Chen, L., Turner, S., and P. Hoffman, "Security | |||
| Considerations for the SHA-0 and SHA-1 Message-Digest | Considerations for the SHA-0 and SHA-1 Message-Digest | |||
| Algorithms", RFC 6194, March 2011. | Algorithms", RFC 6194, March 2011. | |||
| [RFC6234] - Eastlake 3rd, D. and T. Hansen, "US Secure Hash | [RFC6234] - Eastlake 3rd, D. and T. Hansen, "US Secure Hash | |||
| Algorithms (SHA and SHA-based HMAC and HKDF)", RFC 6234, May | Algorithms (SHA and SHA-based HMAC and HKDF)", RFC 6234, May | |||
| 2011. | 2011. | |||
| skipping to change at page 18, line 5 ¶ | skipping to change at page 17, line 11 ¶ | |||
| ASCII standard. | ASCII standard. | |||
| 2. Minor addition to Section 6, point 3. | 2. Minor addition to Section 6, point 3. | |||
| INTERNET-DRAFT FNV | INTERNET-DRAFT FNV | |||
| 3. Update dates and version number. | 3. Update dates and version number. | |||
| 4. Minor editing changes. | 4. Minor editing changes. | |||
| From -04 to -05 | ||||
| 1. Add Twitter as a use example and IPv6 flow hash study reference. | ||||
| 2. Update dates and version number. | ||||
| INTERNET-DRAFT FNV | INTERNET-DRAFT FNV | |||
| Author's Address | Author's Address | |||
| Glenn Fowler | Glenn Fowler | |||
| AT&T Labs Research | AT&T Labs Research | |||
| 180 Park Avenue | 180 Park Avenue | |||
| Florham Park, NJ 07932 USA | Florham Park, NJ 07932 USA | |||
| Email: gsf@research.att.com | Email: gsf@research.att.com | |||
| skipping to change at page 19, line 9 ¶ | skipping to change at page 19, line 9 ¶ | |||
| 155 Beaver Street | 155 Beaver Street | |||
| Milford, MA 01757 USA | Milford, MA 01757 USA | |||
| Telephone: +1-508-333-2270 | Telephone: +1-508-333-2270 | |||
| EMail: d3e3e3@gmail.com | EMail: d3e3e3@gmail.com | |||
| INTERNET-DRAFT FNV | INTERNET-DRAFT FNV | |||
| Copyright, Disclaimer, and Additional IPR Provisions | Copyright, Disclaimer, and Additional IPR Provisions | |||
| Copyright (c) 2012 IETF Trust and the persons identified as the | Copyright (c) 2013 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| End of changes. 8 change blocks. | ||||
| 12 lines changed or deleted | 27 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||