<?xml version="1.0" encoding="utf-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3"
     docName="draft-ezema-lookalike-sender-detection-00"
     ipr="trust200902" category="info" submissionType="independent"
    >
  <front>
    <title abbrev="Look-Alike Sender Detection">
      Considerations for Detecting Look-Alike Sender Identities in Platform Messaging
    </title>
    <author initials="S." surname="Ezema" fullname="Sochima Ezema">
      <organization>Independent</organization>
      <address><email>sochimaezema00@gmail.com</email></address>
    </author>
    <date year="2026" month="October" day="27"/>
    <area>Security</area>
    <keyword>phishing</keyword>
    <keyword>impersonation</keyword>
    <keyword>IDNA</keyword>
    <keyword>confusables</keyword>
    <abstract>
      <t>Users of consumer platforms -- job boards, marketplaces, education and
      early-career services -- receive messages from other parties inside the
      platform, where no enterprise mail gateway inspects them. Attackers
      impersonate the platform's own brand and support staff, and pose as
      recruiters or counterparties, using look-alike domains and display names.
      This document describes considerations for detecting look-alike sender
      identities at the level of the individual message and its sender, rather
      than at the domain-registration level. It records two concrete pitfalls
      observed in deployed libraries: Unicode confusable "skeleton" equality
      alone does not catch all mixed-script look-alikes, and several input
      validators accept host names containing invisible format characters. This
      document is informational and specifies no protocol.</t>
    </abstract>
  </front>
  <middle>
    <section><name>Introduction</name>
      <t>Enterprise anti-phishing controls assume a mail gateway positioned
      between the sender and the recipient. A large and growing share of
      impersonation and employment fraud reaches people who are contacted
      <em>inside</em> a consumer platform -- in in-app messages, notifications,
      and platform-relayed email -- where that assumption does not hold
      <xref target="IC3"/>. The exposed population skews toward students and
      early-career users.</t>
      <t>This document is a set of engineering considerations, not a protocol.
      It describes signals a platform can compute about a single message and its
      sender, and two specific correctness pitfalls that defeat naive
      implementations. Terminology: a "protected identity" is a brand name,
      domain, or support handle the platform wishes to defend; a "look-alike" is
      a sender identity visually or structurally confusable with a protected
      identity.</t>
    </section>

    <section><name>Terminology</name>
      <t>The key words "MUST", "SHOULD", and "MAY" in this document are to be
      interpreted as described in BCP 14 <xref target="RFC2119"/>
      <xref target="RFC8174"/> when, and only when, they appear in all
      capitals. This document uses them sparingly, as it is informational.</t>
    </section>

    <section><name>Signals at the message and sender level</name>
      <t>A detector operating without a mail gateway can still compute:</t>
      <ol>
        <li>Deterministic look-alike checks on the sender domain and on any
        domain embedded in a link host: Unicode confusable skeleton comparison
        <xref target="UTS39"/>, mixed-script detection, bounded edit distance to
        a protected domain, and detection of a protected or foreign domain
        placed inside an attacker-controlled host.</li>
        <li>Sender-reputation features over the display name and address: a
        protected brand token appearing in the local part of a non-protected
        address, a brand display name on an unrelated domain, affix and
        subdomain patterns, and "lure" tokens.</li>
        <li>Message-intent signals: a request to verify credentials, a
        redirect away from the platform, or a claim to the platform's own
        authority. These are the step an attacker needs and a benign sender
        rarely combines with a look-alike identity.</li>
      </ol>
      <t>No single layer is sufficient; they are complementary, and a fused
      decision outperforms any one of them. An open-source reference implementation of these signals exists <xref target="DETECTOR"/>.</t>
    </section>

    <section><name>Pitfall 1: confusable skeleton equality is not enough</name>
      <t>UTS-39 <xref target="UTS39"/> defines a "skeleton" transform for
      confusable detection: two strings are confusable if their skeletons are
      equal. Implementations that test skeleton <em>equality</em> alone miss
      look-alikes whose confusable characters map to a non-ASCII Latin prototype.
      For example, the prototype of U+03BA GREEK SMALL LETTER KAPPA is U+0138,
      and the prototype of U+0442 CYRILLIC SMALL LETTER TE is U+1D1B: both Latin,
      neither ASCII. A brand spelled with such characters has a skeleton that is
      not equal to the ASCII brand skeleton, so equality does not fire.</t>
      <t>Detectors SHOULD combine skeleton comparison with mixed-script
      detection and a bounded edit distance between skeletons, rather than
      relying on skeleton equality to a protected string.</t>
    </section>

    <section><name>Pitfall 2: invisible format characters survive validation</name>
      <t>Host names and email domains that contain invisible Unicode format
      characters -- for example U+00AD SOFT HYPHEN, U+200B ZERO WIDTH SPACE,
      U+2060 WORD JOINER, U+FEFF -- are ignored or disallowed under IDNA2008
      <xref target="RFC5890"/> and UTS-46 processing, so such a string is not a
      valid domain and visually collapses to a different real domain. In a survey
      of widely used validation libraries, several reported such host names as
      valid while preserving the invisible character in the returned value, so
      downstream code received a look-alike as validated. Platforms SHOULD
      normalize host names with IDNA2008/UTS-46 before any equality or allow-list
      check, and SHOULD reject host labels that contain format (Cf) or
      default-ignorable code points.</t>
    </section>

    <section><name>Adversarial robustness</name>
      <t>Look-alike and intent signals degrade under cheap, label-preserving
      transformations: a single confusable glyph, leetspeak, inserted spacing,
      and machine paraphrase. Normalization (confusable folding and
      de-obfuscation) belongs in front of any cue- or token-based classifier,
      because such a classifier sees a different string after a confusable swap.
      Detectors that incorporate a language model SHOULD treat message text as
      untrusted and guard against prompt injection, and SHOULD NOT allow a model
      verdict to override deterministic sender evidence.</t>
    </section>

    <section><name>Security Considerations</name>
      <t>This entire document concerns the detection of impersonation. It
      describes detection signals, not evasion techniques. Deterministic checks
      can produce false positives on legitimate senders that share surface
      features (for example a university career office); a platform SHOULD fuse
      sender facts with intent before taking a high-friction action. Reference
      data for confusable mappings <xref target="UTS39"/> changes between Unicode
      versions and SHOULD be updated.</t>
    </section>

    <section><name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references><name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front><title>Key words for use in RFCs to Indicate Requirement Levels</title>
        <author initials="S." surname="Bradner"/><date year="1997" month="March"/></front>
        <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="2119"/></reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
        <front><title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
        <author initials="B." surname="Leiba"/><date year="2017" month="May"/></front>
        <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="8174"/></reference>
      <reference anchor="RFC5890" target="https://www.rfc-editor.org/info/rfc5890">
        <front><title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
        <author initials="J." surname="Klensin"/><date year="2010" month="August"/></front>
        <seriesInfo name="RFC" value="5890"/></reference>
      <reference anchor="UTS39" target="https://www.unicode.org/reports/tr39/">
        <front><title>Unicode Technical Standard #39: Unicode Security Mechanisms</title>
        <author><organization>The Unicode Consortium</organization></author>
        <date year="2025"/></front></reference>
    </references>
    <references><name>Informative References</name>
      <reference anchor="IC3" target="https://www.ic3.gov/AnnualReport/Reports/2025_IC3Report.pdf">
        <front><title>2025 Internet Crime Report</title>
        <author><organization>U.S. Federal Bureau of Investigation, IC3</organization></author>
        <date year="2026"/></front></reference>
      <reference anchor="DETECTOR" target="https://github.com/Sonchez1/impersonation-detector">
        <front><title>impersonation-detector: message- and sender-level look-alike and impersonation detection</title>
        <author initials="S." surname="Ezema"/><date year="2026"/></front></reference>
    </references>
  </back>
</rfc>
