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 ¶
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.
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" )