Sapphire

Sapphire is Isode’s Security Policy Information File (SPIF) editor, providing a convenient UI for creating and managing SPIFs.   A SPIF specifies how security labels are structured and how access control using security clearance is applied. A SPIF is essential to support modern security labeling and Data Centric Security (DCS).

Sapphire Capability

Sapphire presents a clear hierarchical view of an SPIF, with the right-hand pane showing details of the selected element. This provides a clear visualization of the SPIF and a simple framework for modifying and extending an SPIF.

A single SPIF is typically used across a security domain and accessed by many servers and clients. The SPIF will generally be managed centrally and distributed, so SPIF editing is quite a specialized task. Sapphire performs a critical function, but its use is quite specialized.

Open XML SPIF

Sapphire uses the Open XML SPIF 3.0 format, which is specified here. Open XML SPIF is supported by a consortium of vendors and is referenced as a normative standard in the NATO DCS standard family. It is the only current viable SPIF specification.

Version 3.0 is being finalized in 2026. It addresses a number of deficiencies in older versions of the specification and introduces a clean modern approach to handling markings.

Sapphire only supports editing of version 3.0 SPIFs. However, it does provide automatic upgrades from older versions.

Core Elements

Security Classifications

A SPIF specifies a number of Security Classifications, such as “SECRET”. A security label has a single classification, and a security clearance has a list of classifications. Sapphire can edit several classification elements.

  • Number, which is used to encode the classification in a label or clearance.
  • Hierarchy, which can be different from number and is used for label handling.
  • Foreground and Background colour.

Security Categories

A SPIF can specify one or more Security Categories and allowed values for each category.  This allows qualification of a label’s basic classification. Security Categories define the following information:

  • A string value that is encoded in a label when using NATO format.
  • Object Identifier. A unique identifier of the category, encoded in a label.
  • Category Type (Permissive, Restrictive, or Informative), which controls how access control (CMBAC) is applied for the category.
  • How category values are encoded in a label (typically integer or bit string).

Each category value specifies a name and an encoding.

Marking

The SPIF controls how labels and clearances are displayed. There are four types of marking that can be configured:

  1. This is mandatory and is the Unicode value that will be used for display to a user.
  2. This is an alternative for use when a shorter label is preferred (e.g., NS as shorthand for NATO SECRET).
  3. This is a variant with a restricted character set. This is used in scenarios where a constrained character set is needed.
  4. This is a value that will be recognized as equivalent on user input (e.g., when mapping a marking to a label)

Short and Simple are optional and will default to the default if not specified.

Marking values are specified for Policy, Classification, Category Type, and Category Value.   This may be an empty string to support scenarios where an element of a label is hidden.

Marking Qualifiers can also be specified to control how the elements are bound together. For example, this controls the separators between category values. It enables specifying syntaxes to enable things like  “XXX SECRET RELTO CA, US AND UK”. This enables display markings to align to national and other policies.

Marking language can also be specified to support multi-language policies, such as NATO policy, which needs English and French marking. The screenshot above shows multi-language markings and the use of Simple to support markings without accents. Locale can be set in Sapphire to test label display in different languages. The following screenshot shows this with an example of all three output markings.

Equivalences

Sapphire enables configuring equivalent labels by allowing one or more equivalent policies to be loaded. Mappings of equivalencies can then be specified at both classification and category level. This is important for two scenarios:

  1. Servers such as Isode M-Link and M-Switch will generally operate as a single policy. Equivalences can be used to support the use of labels from another policy (e.g., to mix NATO and National labels).
  2. When performing policy mappings, as supported by Isode products, a SPIF of the outbound policy is used, with equivalence mapping from the inbound policy.

Advanced Capabilities

Sapphire provides many advanced capabilities, as described in the manual. Many of these are to support detailed alignment to specific security policy requirements. A few features of note:

  • Classifications may be required to include certain categories, with control over which category values are required.
  • Categories can be restricted to a specified list of classifications.
  • Categories can be made mutually exclusive.

Categories can be made mutually dependent.

Create from Scratch

It is anticipated that Sapphire will primarily be used to modify existing policies. It is straightforward to create a brand new policy, as shown in the screenshots above. Sensible defaults and randomly generated numbers will be suggested to make things quick when there are no external requirements.

Catalogs

The Label and Clearance catalogs are important for both Isode UIs and Server Management tools. Sapphire can generate both label and clearance catalogs, by default using STANAG 4774 formats.

Catalogs can be generated with all values for very simple policies, but this would generate impossibly large catalogs for most policies. Sapphire provides an option for generating a fairly constrained list.

It also enables custom list generation.

Entries can then be added manually. It is anticipated that most useful catalogs will be generated manually.

NATO specifies a family of standards to support Data-Centric Security (DCS), with STANAG 5678 as the lead standard. There is a stable baseline of promulgated standards, with an evolving family of associated standards. Data Centric Security and Isode’s DCS products are described in more detail in the Isode white paper Isode Approach to Data Centric Security using NATO Confidentiality Labels.

STANAG 4774 standardizes Confidentiality Labels and Confidentiality Clearances with XML formats. These are the default formats used by Sapphire functions that generate security labels and security clearances. Sapphire also supports a number of other security label formats, including:

  • ESS, specified in RFC 2634 “Enhanced Security Services for S/MIME”. This is a widely used binary format.
  • 400. A format similar to ESS, used for X.400 messaging.

The SPIF also defines how security labels are checked against security clearances. This enables Confidentiality Metadata-Based Access Control (CMBAC), as standardized in STANAG 5678, to check Confidentiality Labels against Confidentiality Clearances within the context of a Security Policy.

Sapphire gives access to a number of sample SPIFs to give experience with different types of SPIFs.  The samples are:

  • Example NATO. This is a SPIF, similar to NATO policy, that is also used as the default SPIF in various Isode products, along with the default security label and security clearance catalogs.  This is also used in the examples in this overview.
  • Example UK.
  • Isode Security Policy
  • CWIX 26 Policy
  • A policy with classifications named by color.

Sapphire provides a tool for checking access control (CMBAC) between label and clearance. It can check one label against all clearances in a catalog or one clearance against all labels in a catalog.

Ready to request an Evaluation?

Thankyou for considering Isode’s software products. To request an evaluation, please select the product(s) you are interested in, then fill out the enquiry form.

Select your Evaluation products: