Skip to content

Latest commit

 

History

History
558 lines (425 loc) · 17.7 KB

DISCLOSURE_CHECKLIST.md

File metadata and controls

558 lines (425 loc) · 17.7 KB

UDEO Coordinated Public Disclosure — Every Step

Author: Cody Michael Allison
CVE Status: Pending MITRE assignment (RESERVED)
Embargo duration: 180 days from Day 0
Publication target: IACR Crypto 2027 (submission ~Feb 2027)


BEFORE ANYTHING — Complete These First

A. Your ORCID (if not already done)

  1. Go to https://orcid.org/register
  2. Create profile: name, institution ("Independent Researcher"), email
  3. Make profile public
  4. Note your 16-digit ORCID: XXXX-XXXX-XXXX-XXXX
  5. Verify: curl https://pub.orcid.org/v3.0/0009-0007-7239-6760/record -H "Accept: application/json" → should return your public profile

B. PTorrent Profile

export PTOL_RESEARCHER_ORCID="XXXX-XXXX-XXXX-XXXX"
export PTOL_RESEARCHER_NAME="Cody Michael Allison"
export PTOL_RESEARCHER_EMAIL="the.wandering.god@gmail.com"

Add to ~/.bashrc or ~/.profile.

C. SMTP Setup (for email notifications)

export PTOL_SMTP_HOST="smtp.gmail.com"
export PTOL_SMTP_PORT="587"
export PTOL_SMTP_USER="the.wandering.god@gmail.com"
export PTOL_SMTP_PASS="[Gmail app-specific password]"

Gmail: Settings → Security → 2-Step Verification → App passwords → Mail. Use the 16-character app password, NOT your Gmail password.

D. NIST API Key (raises rate limits)

  1. Go to https://nvd.nist.gov/developers/request-an-api-key
  2. Enter email, request key
  3. Key arrives by email within minutes
export PTOL_NIST_API_KEY="[key from email]"

E. Pre-Disclosure Check

cd /media/rendier/0123-4567/Ainulindale/AddPapers/CryptoVulnerability
python3 -c "
from ptorrent_tools import *   # or adjust path to PTorrent
from skills.disclosure import DisclosureNotifier
notifier = DisclosureNotifier()
result = notifier.pre_check('sedenion zero-divisor ECC elliptic curve')
print(result['note'])
print('Existing CVEs:', result['existing_cves'])
"

If any existing CVEs match: reference them in your filing. Do NOT file a duplicate. Expected: no existing CVEs on sedenion zero-divisor ECC attacks.


DAY −7 TO DAY −1: Prepare All Materials

Step 1: Finalize the Paper Draft

/media/rendier/0123-4567/Ainulindale/AddPapers/CryptoVulnerability/paper.tex

Fill in:

  • Your ORCID in author block
  • [FILE_HASH] in Appendix C — run python3 secp256k1_locus.py --generator-only first
  • [REPORT_HASH] — generated by PTorrent notifier
  • [EMBARGO_DATE] — Day 0 + 180 days
  • [CVE_ID] — fill after MITRE assigns (RESERVED initially)

Compile:

pdflatex paper.tex && bibtex paper && pdflatex paper.tex && pdflatex paper.tex

The PDF is your primary attachment to all agency emails.

Step 2: Classify the Dataset on the PTorrent Chain

cd /media/rendier/0123-4567/PTorrent
python3 - <<'EOF'
import sys, os, time
sys.path.insert(0, 'android/PtolemySeeder/app/src/main/python')
from ptorrent_chain import PTorrentChain

chain = PTorrentChain(store_path='ptorrent_chain.json')

# Hash the secp256k1 locus code
file_hash = PTorrentChain.hash_file(
    '/media/rendier/0123-4567/Ainulindale/AddPapers/CryptoVulnerability/secp256k1_locus.py'
)
print('File hash:', file_hash)

embargo_date = (time.gmtime(time.time() + 180*86400))
embargo_str  = time.strftime('%Y-%m-%d', embargo_date)
print('Embargo date:', embargo_str)

chain.classify(
    file_hash      = file_hash,
    classification = 'dual-use',
    level          = 3,
    embargo_until  = embargo_str,
    contact_orcid  = os.environ['PTOL_RESEARCHER_ORCID'],
    peer_id        = 'ORCID:' + os.environ['PTOL_RESEARCHER_ORCID'],
    disclosure_ref = 'NIST-PRE-DISCLOSURE-2026-UDEO-SECP256K1',
)
chain.commit()
print('CLASSIFY transaction committed')
print('Tip hash:', chain._chain[-1].hash)
EOF

Record the file_hash and embargo_date. You will need them throughout.

Step 3: Build the STIX Bundle

# Run this and SAVE the output — it's your STIX attachment
import sys
sys.path.insert(0, '/media/rendier/0123-4567/PTorrent/android/PtolemySeeder/app/src/main/python')
from skills.disclosure.stix_builder import STIXBuilder
import os, json

builder = STIXBuilder(
    researcher_orcid = os.environ['PTOL_RESEARCHER_ORCID'],
    researcher_name  = os.environ['PTOL_RESEARCHER_NAME'],
    researcher_email = os.environ['PTOL_RESEARCHER_EMAIL'],
)

bundle = builder.build_disclosure_bundle(
    vuln_name   = 'UDEO: Universal Divisor Exploitation Operations — secp256k1 Zero-Divisor Locus',
    vuln_description = '''
The T_n/GF(2) Frobenius Theorem (proved): for any n=2^k, every element x of the
Cayley-Dickson algebra T_n/GF(2) satisfies x^2 in {0, e_0}. Applied to secp256k1:
every element of the field Fp (secp256k1 prime) is either nilpotent (x^2=0) or
involutory (x^2=e_0) in T256/GF(2). The generator point satisfies Gx^2 = Gy^2 = e_0.
The modular reduction (carries mod p) is the sole algebraic barrier.
Attack class UDEO (Universal Divisor Exploitation Operations): inputs crafted to
drive ECC state toward the Cayley-Dickson zero-divisor locus. Demonstrated
retrospectively on SHAttered (SHA-1). ECC threat model for secp256k1 formalized.
Whether polynomial-time implementation exists: open problem.
'''.strip(),
    file_hash     = '[FILE_HASH_FROM_STEP_2]',
    chain_ref     = '[TIP_HASH_FROM_STEP_2]',
    mitigation    = '''
Immediate: Accelerate migration to NIST PQC standards (ML-KEM, ML-DSA, SLH-DSA).
Medium: Audit secp256k1 implementations for ZD-adjacent parameter inputs.
Long: Sedenion-aware security proofs for future ECC curve selection.
CRYSTALS-Kyber, Dilithium, FALCON, SPHINCS+ are not assessed as affected.
'''.strip(),
    embargo_until  = '[EMBARGO_DATE_FROM_STEP_2]',
    cvss_score     = 7.5,
    affected_systems = [
        'secp256k1 (Bitcoin, Ethereum)',
        'OpenSSL ECDSA/ECDH',
        'BoringSSL EC operations',
        'libsodium Ed25519/X25519',
        'NIST P-256, P-384, P-521 (under investigation)',
    ],
)

json_out = builder.to_json(bundle)
with open('stix_bundle_udeo.json', 'w') as f:
    f.write(json_out)

import hashlib
report_hash = hashlib.sha256(json_out.encode()).hexdigest()
print('STIX bundle written to stix_bundle_udeo.json')
print('Report hash:', report_hash)

Record the report_hash. Fill it into paper.tex [REPORT_HASH].


DAY 0: File All Disclosures Simultaneously

All four agencies on the same day. Same hour if possible.

Step 4: Commit NOTIFY Transactions (BEFORE sending email)

import sys, os
sys.path.insert(0, '/media/rendier/0123-4567/PTorrent/android/PtolemySeeder/app/src/main/python')
from ptorrent_chain import PTorrentChain

chain     = PTorrentChain(store_path='/media/rendier/0123-4567/PTorrent/ptorrent_chain.json')
file_hash = '[FILE_HASH_FROM_STEP_2]'
report_hash = '[REPORT_HASH_FROM_STEP_3]'
peer_id   = 'ORCID:' + os.environ['PTOL_RESEARCHER_ORCID']

for agency, method in [
    ('CISA',   'email'),
    ('NIST',   'email'),
    ('MITRE',  'email'),
    ('CERTCC', 'email'),
]:
    chain.notify(
        file_hash   = file_hash,
        agency      = agency,
        report_hash = report_hash,
        method      = method,
        peer_id     = peer_id,
    )
    print(f'NOTIFY/{agency} staged')

chain.commit()
print('All NOTIFY transactions committed')
print('Chain is the authoritative Day 0 timestamp — regardless of email delivery')

The chain timestamp is now your legal Day 0 record. Do not skip this step.

Step 5: Send Email to CISA (Primary)

To: vuln@cisa.dhs.gov
CC: nvd@nist.gov
Subject: [COORDINATED VULNERABILITY DISCLOSURE] UDEO Sedenion ZD Attack on ECC | Embargo [DATE] | Pre-Publication

Attach:

  1. stix_bundle_udeo.json
  2. paper.pdf (compiled LaTeX, marked EMBARGO)
  3. Export of PTorrent chain showing CLASSIFY + NOTIFY transactions

Body: Use the template in wiki/Agency-Interface.md in the PTorrent repo, filling in:

  • Your name and ORCID
  • File hash and report hash
  • Embargo date
  • The technical description from Section 2 of paper.tex (enough for assessment, not a working exploit)

Step 6: Send Email to MITRE (CVE Request)

To: cve@mitre.org
Subject: CVE Request — UDEO Sedenion Zero-Divisor ECC Attack | Pre-Publication | Embargo [DATE]

Body:

Dear MITRE CVE Team,

CVE ASSIGNMENT REQUEST

PRODUCT: secp256k1 ECC implementations (OpenSSL, BoringSSL, libsodium, et al.)
VULNERABILITY TYPE: CWE-327 (Broken Cryptographic Algorithm), CWE-310

CVE DESCRIPTION (for public record):
The T_n/GF(2) Frobenius Theorem establishes that every element of the secp256k1
prime field Fp is either nilpotent or involutory under natural embedding in the
256-dimensional Cayley-Dickson algebra T256/GF(2). The UDEO (Universal Divisor
Exploitation Operations) attack class uses this universal zero-divisor boundary
to attack ECC group law operations via adversarially-crafted field element pairs.
The modular reduction (carries mod p) is the sole algebraic barrier. Whether a
polynomial-time attack exists is an open problem. Discovered by Cody Michael
Allison (ORCID: 0009-0007-7239-6760), 2026. Coordinated disclosure via CISA.

EMBARGO REQUEST:
Please hold in RESERVED state until [DATE] or until I authorize publication.

CISA: Filed simultaneously with CISA (vuln@cisa.dhs.gov).
NIST: Filed simultaneously with NIST (nvd@nist.gov).

REFERENCE: "UDEO: Universal Divisor Exploitation Operations" — IACR Crypto 2027 (target)

Cody Michael Allison
ORCID: https://orcid.org/0009-0007-7239-6760
the.wandering.god@gmail.com

Attach: stix_bundle_udeo.json

Step 7: Send Email to CERT/CC

To: vulnreport@cert.org
Subject: UDEO: Sedenion Zero-Divisor Attack on ECC | Coordinated Disclosure | Embargo [DATE]

Shorter version of the CISA email. Reference the CISA filing. Attach: stix_bundle_udeo.json

Step 8: Notify Key Implementers (via CISA coordination)

CISA will handle vendor notification. But send courtesy heads-up to:

openssl-security@openssl.org     — OpenSSL (secp256k1, EC operations)
security@mozilla.org              — Mozilla NSS
g.co/vulnz                        — Google VRP (BoringSSL / Chrome / Android)
security@signal.org               — Signal Protocol
security@bitcoin.org              — Bitcoin Core
security@ethereum.org             — Ethereum Foundation

Subject: [HEADS UP - COORDINATED DISCLOSURE IN PROGRESS] ECC Algebraic Vulnerability

Body: 2 sentences only. "A coordinated disclosure regarding an algebraic property of ECC implementations has been filed with CISA (ref: [CISA tracking #]). You will receive formal notification through CISA coordination. No further detail before embargo lifts."

Do NOT include technical details. Do NOT attach the STIX bundle or paper. This is a heads-up, not the disclosure itself.


DAY 1–30: Acknowledgments and CVE Assignment

What to expect

Agency Expected response Action if none
CISA Acknowledgment + tracking # within 5 business days Follow up at vuln@cisa.dhs.gov with chain tip hash
NIST Routes to MITRE, may not respond directly None required
MITRE CVE-YYYY-NNNNN assigned (RESERVED) within 2 weeks Follow up at cve@mitre.org
CERT/CC Acknowledgment within 1 week Follow up at vulnreport@cert.org

Step 9: Record CVE Number

When MITRE assigns CVE-YYYY-NNNNN:

  1. Fill [CVE_ID] in paper.tex
  2. Update PTorrent chain:
chain.classify(
    file_hash      = file_hash,
    classification = 'dual-use',
    level          = 3,
    embargo_until  = embargo_date,
    contact_orcid  = your_orcid,
    peer_id        = peer_id,
    disclosure_ref = 'CVE-YYYY-NNNNN',   # fill in real CVE
)
chain.commit()
  1. Note CISA tracking number in your records.

Step 10: Grant Access to Verified Security Researchers

If CISA or NIST refers specific researchers to you for verification:

For each researcher:

  1. Verify their ORCID at orcid.org
  2. Confirm institutional affiliation (NIST, university security lab, major vendor)
  3. Share the paper PDF under embargo terms
  4. Record on chain:
warning_text = "This is pre-disclosure material under 180-day NIST embargo..."
chain.acknowledge(
    file_hash    = file_hash,
    orcid_id     = researcher_orcid,
    warning_text = warning_text,
    peer_id      = peer_id,
)
chain.commit()

DAY 30–150: Vendor Coordination Window

Step 11: Track Patch Development

CISA manages vendor coordination. Your job:

  • Respond to technical questions from CISA or vendors within 48 hours
  • Do NOT share the paper publicly
  • Do NOT post to arxiv, IACR ePrint, or any preprint server
  • Do NOT present at any conference before Day 180
  • Do NOT post on social media about the finding
  • Do NOT discuss with colleagues not formally included in the disclosure

Step 12: Verify Patches Are On Track

Around Day 90, ask CISA:

  • Have major vendors (OpenSSL, BoringSSL, libsodium) been notified?
  • Are patches in development?
  • Is the Day 180 timeline still achievable?

If vendors need more time: you can negotiate an extension (maximum 90 additional days is typical). Any extension goes on the PTorrent chain as a new CLASSIFY transaction with updated embargo_until.

Step 13: Prepare IACR Submission Package

While waiting, prepare:

paper.tex          — final version with CVE number filled in
paper.pdf          — compiled
secp256k1_locus.py — supplement (code)
stix_bundle_udeo.json — supplementary material (disclosure record)

IACR Crypto 2027 submission system: https://submit.iacr.org
Deadline: typically first Tuesday of February (check IACR website for 2027 date)
Format: LNCS, PDF, max 30 pages + appendices


DAY 150–179: Final Coordination

Step 14: Confirm Disclosure Date With CISA

Email CISA 30 days before the planned disclosure date:

  • "We are on track for disclosure on [DATE]. Please confirm patch availability."
  • Get written confirmation that major vendors have patches deployed or scheduled.

Step 15: Prepare Disclosure-Day Materials

Prepare in advance, DO NOT POST until Day 180:

  • Final paper PDF
  • IACR ePrint submission (ready to submit, not submitted)
  • Disclosure blog post (if desired)
  • Social media statement (2 sentences, factual)
  • PTorrent DISCLOSE transaction (staged but not committed)

DAY 180: Public Disclosure Day

Step 16: Commit DISCLOSE Transaction

chain.disclose(
    file_hash          = file_hash,
    prev_classification = 'dual-use',
    new_classification  = 'public',
    peer_id            = peer_id,
    disclosure_ref     = 'CVE-YYYY-NNNNN',
)
chain.commit()
print('Embargo lifted. Classification: public.')

Step 17: Authorize MITRE CVE Publication

Email cve@mitre.org:

Subject: CVE-YYYY-NNNNN — Authorizing Publication

Dear MITRE CVE Team,

Please publish CVE-YYYY-NNNNN. The 180-day embargo period has elapsed.
The coordinated disclosure is complete.

Cody Michael Allison
ORCID: https://orcid.org/0009-0007-7239-6760

Step 18: Submit to IACR ePrint

https://eprint.iacr.org/submit
Upload paper.pdf.
Category: Cryptanalysis or Public-key cryptography

Step 19: Submit to IACR Crypto 2027

https://submit.iacr.org
Submit according to conference requirements.
Reference the ePrint preprint.

Step 20: Post the PTorrent RDOP Note

Update the PTorrent README or wiki with a note: "The UDEO disclosure (CVE-YYYY-NNNNN) was the first use of the RDOP protocol. Chain record: [TIP_HASH]. Paper: [EPRINT_URL]."


POST-DISCLOSURE: Within 30 Days

Step 21: Notify Ainulindale Repo

Update Ainulindale TODO.md and paper status:

  • Mark D15 (white hat paper) as published
  • Add ePrint URL and CVE number
  • Update AddPapers/CryptoVulnerability/README.md with status

Step 22: ORCID Works Entry

Add the paper to your ORCID works:

  1. Login to orcid.org
  2. Add Works → Search & Link
  3. Add the ePrint DOI (IACR ePrint assigns a DOI)

Step 23: PTorrent Pull Request

Open a PR to the PTorrent repo adding:

  • The UDEO case study to wiki/Responsible-Disclosure-Protocol.md
  • The NOTIFY/DISCLOSE transaction chain as an example
  • The STIX bundle as a template (sanitized of personal details)

QUICK REFERENCE: Timeline

Day -7    Finalize paper draft, ORCID ready, SMTP configured
Day -3    Run secp256k1_locus.py, record hashes
Day -1    STIX bundle built, CLASSIFY chain transaction committed
Day  0    NOTIFY chain transactions committed
           Email CISA, NIST, MITRE, CERT/CC — all same day
           Courtesy heads-up to OpenSSL, BoringSSL, Signal, etc.
Day  1-5  CISA acknowledgment expected
Day  7-14 MITRE CVE assignment (RESERVED status)
Day 30    CISA vendor notification complete
Day 30-90 Vendor patch development
Day 90    Status check with CISA
Day 90-150 Patch testing and deployment
Day 150   30-day countdown confirmation with CISA
Day 180   DISCLOSE transaction
           Authorize MITRE CVE publication
           Submit to IACR ePrint
           Submit to IACR Crypto 2027 (if deadline alignment permits)
Day 180+  NVD enriches CVE record
           ORCID works entry
           PTorrent documentation update

ABORT CONDITIONS

If at any point:

  • You discover active exploitation in the wild → contact CISA immediately, negotiate immediate disclosure regardless of embargo
  • A vendor refuses to patch → consult CISA; 90-day limit is standard; after 90 days unresponsive, disclosure can proceed without patch
  • Another researcher independently discovers and discloses → notify CISA, coordinate simultaneous disclosure; the PTorrent chain establishes your Day 0 priority unambiguously

DOCUMENT INTEGRITY

This checklist and the paper.tex, stix_bundle_udeo.json, and secp256k1_locus_results.md are committed to the Ainulindale repo. The PTorrent chain holds the disclosure timeline.

Neither document nor code should be modified after the Day 0 filing without recording the modification on the chain.

White Hat. Responsible Disclosure. Period. Full Stop.