NYC
skills/letta-ai/skills/feal-linear-cryptanalysis

feal-linear-cryptanalysis

SKILL.md

FEAL Linear Cryptanalysis

Overview

This skill provides structured guidance for performing linear cryptanalysis on FEAL (Fast Data Encipherment Algorithm) and similar Feistel-based ciphers. Linear cryptanalysis exploits linear approximations of the cipher's non-linear components to recover key bits with far fewer operations than brute force.

Critical Pre-Implementation Analysis

Before writing any code, complete these analysis steps:

1. Identify the Attack Type from Task Description

When a task explicitly mentions "linear attack" or "linear cryptanalysis":

  • This is a strong hint about the intended solution approach
  • Do NOT ignore this hint in favor of brute-force methods
  • Linear cryptanalysis is likely the only feasible approach

2. Complexity Feasibility Check

Before implementing any approach, calculate its feasibility:

Key Space Operations Time at 10^9 ops/sec Feasible?
2^20 ~1 million < 1 second Yes
2^40 ~1 trillion ~18 minutes Maybe
2^64 ~10^19 ~292 years No
2^80 ~10^24 ~38 million years No

If the combined key space exceeds 2^40, brute force is infeasible. Linear cryptanalysis is required.

3. Analyze the Cipher Structure

Before implementing, thoroughly understand:

  1. Round function (F-function): Identify the non-linear components (S-boxes, G-function)
  2. Key schedule: Understand how round keys derive from the master key
  3. Number of rounds: Fewer rounds = easier linear approximations
  4. Known pairs available: Linear cryptanalysis effectiveness scales with available pairs

Linear Cryptanalysis Approach

Step 1: Study the Non-Linear Components

For FEAL-type ciphers, analyze the G-function:

  • Identify rotation operations
  • Locate addition operations (mod 256)
  • Find the one-byte truncation points

These operations have known linear approximations with varying biases.

Step 2: Find Linear Approximations

Linear approximations relate input bits, output bits, and key bits with a probability ≠ 0.5:

P[input_mask · plaintext ⊕ output_mask · ciphertext ⊕ key_mask · key = 0] = 0.5 + ε

Where ε (bias) determines attack effectiveness. Larger |ε| = fewer pairs needed.

For FEAL specifically:

  • The G-function addition has exploitable linear properties
  • Carry propagation in addition creates predictable bit relationships
  • Common approximation: MSB of (a + b) ≈ MSB(a) ⊕ MSB(b) with bias ~0.25

Step 3: Chain Approximations Across Rounds

Use the piling-up lemma to combine approximations:

  • If individual rounds have biases ε₁, ε₂, ..., εₙ
  • Combined bias: ε_total = 2^(n-1) × ε₁ × ε₂ × ... × εₙ

Step 4: Key Recovery Process

  1. For each candidate key (or key portion):

    • Count how many pairs satisfy the linear approximation
    • The correct key produces a count significantly different from N/2
  2. Use multiple approximations to recover different key bits

  3. Verify recovered key bits against all available pairs

Verification Strategies

Incremental Verification

  1. Verify understanding first: Manually trace the cipher with a known pair
  2. Test approximations: Confirm linear approximations hold with expected bias
  3. Partial key verification: As key bits are recovered, verify against all pairs
  4. Full decryption test: Only after complete key recovery, decrypt all ciphertexts

Statistical Validation

  • With N pairs, expect count deviation of ~N × |ε| for correct key
  • Wrong keys produce counts near N/2
  • Use chi-squared or similar statistical tests for confidence

Common Pitfalls to Avoid

1. Ignoring Explicit Hints

Wrong: Task says "linear attack" but agent implements brute force Right: Follow the explicit methodology hint in the task description

2. Implementing Before Analysis

Wrong: Jump into coding brute-force approaches immediately Right: First analyze cipher structure, calculate complexities, design algorithm

3. Memory-Intensive Meet-in-the-Middle

Wrong: Attempt to store 2^40 entries in memory (requires terabytes) Right: Calculate memory requirements before implementation:

  • 2^20 entries × 16 bytes = ~16 MB (feasible)
  • 2^30 entries × 16 bytes = ~16 GB (problematic)
  • 2^40 entries × 16 bytes = ~16 TB (infeasible)

4. Repeated Failed Approaches

Wrong: Try brute force variant 1, fail, try variant 2, fail, try variant 3... Right: After one approach fails, analyze WHY before trying alternatives

5. Time Mismanagement

Wrong: Spend all available time on infeasible brute-force implementations Right: Allocate time for: analysis (30%), algorithm design (30%), implementation (30%), testing (10%)

6. Not Using All Available Pairs

Wrong: Use pairs only for final verification Right: Linear cryptanalysis uses ALL pairs simultaneously to statistically recover key bits

Implementation Checklist

Before starting implementation:

  • Read and understand the complete cipher implementation
  • Identify the key schedule and total key space
  • Calculate brute-force complexity (is it feasible?)
  • If brute force infeasible, identify linear approximations
  • Estimate required number of pairs vs. available pairs
  • Design the attack algorithm on paper before coding
  • Implement with progress output to monitor execution

During implementation:

  • Test each component independently
  • Verify linear approximations hold on known pairs
  • Include flush statements for output visibility
  • Set reasonable timeouts for each phase

After key recovery:

  • Verify recovered key decrypts all ciphertexts correctly
  • Create the required output file in the correct format
  • Double-check output matches expected format

Debugging Tips

  1. Output buffering: Use explicit flush after print statements
  2. Progress indicators: Print progress every N iterations for long computations
  3. Intermediate verification: Check partial results against known values
  4. Memory monitoring: Watch process memory usage for large operations

Resources

This skill does not require external scripts or assets. The approach relies on understanding and applying linear cryptanalysis principles to the specific cipher implementation provided in each task.

Weekly Installs
19
Repository
letta-ai/skills
First Seen
Jan 24, 2026
Installed on
claude-code14
gemini-cli13
codex13
opencode13
antigravity12
windsurf10