Collision-Free Hashing via Polynomial Division for Near-Match Inputs

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing hash functions are prone to collisions for near-match inputs, which can compromise cryptographic algorithms, as they do not effectively prevent collisions for inputs differing by a trivial number of bit locations, making it easier to find colliding inputs.

Innovation Solution

A device and method that utilize an adder, checker, factorization block, and division blocks to generate a collision-free hash by selecting a user-definable minimum number of bit positions that must differ between inputs, factoring polynomials, and dividing inputs by these polynomials to produce distinct hash portions, ensuring that collisions occur only for significant differences.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Length of moving object

If a hash function maps data of certain length to data of shorter length, then the output is compressed into a fixed bit length, but collisions occur for inputs that are near matches

Engineering Contradiction:
Improveoutput lengthVSAvoidcollision resistance
Core Design Contradiction:
Length of moving objectVSReliability

Solution Approach 1:

The input data is divided into segments, and the hash function processes each segment separately through polynomial division. This segmentation allows the system to detect and prevent collisions for near-match inputs by examining local differences in each segment, while still producing a compressed fixed-length output. The segmentation principle resolves the contradiction by enabling fine-grained comparison to prevent collisions without increasing the overall output length.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent changes the parameter of polynomial degree and modifies the division process to create a hash function that specifically resists near-match collisions. By adjusting the polynomial degree parameter and using division by specific polynomials, the system maintains compressed output length while improving collision resistance for inputs that differ by only a few bit locations.

Inventive Principle:
Principle #35Parameter changes

2Reliability

If one makes it more time consuming to find collisions by ensuring collisions occur only for inputs that differ by more than a trivial number of bit locations, then collision resistance improves, but the hash function becomes more complex

Engineering Contradiction:
Improvecollision resistanceVSAvoidhash function complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent replaces complex collision-detection mechanisms with a simpler polynomial division approach. Instead of using complicated algorithms to detect near-match collisions, the system uses straightforward polynomial division operations with specific polynomials to achieve the same effect. This substitution maintains collision resistance while reducing the apparent complexity of the hash function implementation.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The patent introduces an intermediary polynomial division step that mediates between the input data and the final hash output. This intermediary process naturally filters out near-match collisions through the mathematical properties of polynomial division, providing collision resistance without requiring additional complex verification steps. The intermediary polynomial division acts as a built-in protection mechanism that simplifies the overall system.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS8363825B1Device for and method of collision-free hashing for near-match inputs
Publication Date: 2013.01.29 NATIONAL SECURITY AGENCY
  • US8363825B1 patent drawing
  • US8363825B1 patent drawing
  • US8363825B1 patent drawing

AI summary

A device and method of collision-free hashing of near-match inputs that includes the following components. An adder for receiving an input i, a check value cv, and outputs n, which is greater than or equal to the sum of i and cv. A checker for receiving a value n, a value d, a first polynomial, and an output at which the first polynomial appears if the checker determines that the first polynomial is of degree proportional to d and divides xn+1. A factorization block for factoring the first polynomial into a second polynomial and a third polynomial. A first division block for dividing an input of bit length i by the second polynomial to generate a first portion of the hash of the input. A second division block for dividing the input by the third polynomial to generate a second portion of the hash of the input.