cipherinfo

package
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 14, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

Package cipherinfo is a knowledge base of the link-layer encryption algorithms used across the trunking protocols GopherTrunk decodes (P25, TETRA, DMR) and their published cryptographic weaknesses. The assessment harness consults it so it can report an informed verdict even for an algorithm whose keystream function it does not bundle: "this is TETRA TEA1, whose 80-bit key is reduced to 32 bits by design (CVE-2022-24402) and is brute-forceable in minutes" is an actionable finding on its own.

Facts here are drawn from public sources (TIA-102 algorithm IDs, the ETSI TETRA standard, and the TETRA:BURST research by Midnight Blue, 2023). The package contains no cipher implementations — only the metadata an analyst needs to decide which attack to run.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Protocols

func Protocols() []string

Protocols returns the protocol keys the knowledge base covers.

Types

type Info

type Info struct {
	Protocol         string
	AlgID            uint8
	Name             string
	Family           string // RC4, DES, 3DES, AES, TEA, proprietary, clear
	KeyBits          int
	EffectiveKeyBits int // after any documented reduction/backdoor (== KeyBits if none)
	Strength         Strength
	// BruteForceable reports whether EffectiveKeyBits is small enough to search
	// on commodity hardware (≤ ~40 bits).
	BruteForceable bool
	// Bundled reports whether p25crypto can realise this algorithm's keystream,
	// so the active weak-key / brute methods can actually attempt it.
	Bundled   bool
	Weakness  string // one-line summary of the published weakness, "" if none
	Reference string // CVE / paper, "" if none
}

Info describes one (protocol, algorithm-id) pair.

func Lookup

func Lookup(protocol string, algid uint8) (Info, bool)

Lookup returns the Info for a (protocol, algid) pair. protocol is matched case-insensitively; a few common aliases map onto the canonical key.

type Strength

type Strength string

Strength is a coarse, decision-oriented grade.

const (
	// StrengthBroken — a practical full break is published / built in.
	StrengthBroken Strength = "broken"
	// StrengthWeak — a small or reduced keyspace that is feasibly brute-forced.
	StrengthWeak Strength = "weak"
	// StrengthLegacy — aging but not trivially broken (e.g. single DES).
	StrengthLegacy Strength = "legacy"
	// StrengthStrong — no known practical break with a properly managed key.
	StrengthStrong Strength = "strong"
	// StrengthUnknown — clear (unencrypted) or an algorithm we have no data on.
	StrengthUnknown Strength = "unknown"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL