Internet Engineering Task Force (IETF)                    P. Saint-Andre
Request for Comments: 7564                                          &yet
Obsoletes: 3454                                              M. Blanchet
Category: Standards Track                                       Viagenie
ISSN: 2070-1721                                                 May 2015
        
Internet Engineering Task Force (IETF)                    P. Saint-Andre
Request for Comments: 7564                                          &yet
Obsoletes: 3454                                              M. Blanchet
Category: Standards Track                                       Viagenie
ISSN: 2070-1721                                                 May 2015
        

PRECIS Framework: Preparation, Enforcement, and Comparison of Internationalized Strings in Application Protocols

PRECIS框架:应用程序协议中国际化字符串的准备、实施和比较

Abstract

摘要

Application protocols using Unicode characters in protocol strings need to properly handle such strings in order to enforce internationalization rules for strings placed in various protocol slots (such as addresses and identifiers) and to perform valid comparison operations (e.g., for purposes of authentication or authorization). This document defines a framework enabling application protocols to perform the preparation, enforcement, and comparison of internationalized strings ("PRECIS") in a way that depends on the properties of Unicode characters and thus is agile with respect to versions of Unicode. As a result, this framework provides a more sustainable approach to the handling of internationalized strings than the previous framework, known as Stringprep (RFC 3454). This document obsoletes RFC 3454.

在协议字符串中使用Unicode字符的应用程序协议需要正确处理此类字符串,以便对放置在各种协议插槽(如地址和标识符)中的字符串强制执行国际化规则,并执行有效的比较操作(例如,出于身份验证或授权的目的)。本文档定义了一个框架,使应用程序协议能够根据Unicode字符的属性以一种灵活的方式执行国际化字符串(“PRECIS”)的准备、实施和比较。因此,与以前的Stringprep(RFC 3454)框架相比,该框架提供了一种更可持续的方法来处理国际化字符串。本文件淘汰RFC 3454。

Status of This Memo

关于下段备忘

This is an Internet Standards Track document.

这是一份互联网标准跟踪文件。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 5741第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7564.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc7564.

Copyright Notice

版权公告

Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2015 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

Table of Contents

目录

   1. Introduction ....................................................4
   2. Terminology .....................................................7
   3. Preparation, Enforcement, and Comparison ........................7
   4. String Classes ..................................................8
      4.1. Overview ...................................................8
      4.2. IdentifierClass ............................................9
           4.2.1. Valid ...............................................9
           4.2.2. Contextual Rule Required ...........................10
           4.2.3. Disallowed .........................................10
           4.2.4. Unassigned .........................................11
           4.2.5. Examples ...........................................11
      4.3. FreeformClass .............................................11
           4.3.1. Valid ..............................................11
           4.3.2. Contextual Rule Required ...........................12
           4.3.3. Disallowed .........................................12
           4.3.4. Unassigned .........................................12
           4.3.5. Examples ...........................................12
   5. Profiles .......................................................13
      5.1. Profiles Must Not Be Multiplied beyond Necessity ..........13
      5.2. Rules .....................................................14
           5.2.1. Width Mapping Rule .................................14
           5.2.2. Additional Mapping Rule ............................14
           5.2.3. Case Mapping Rule ..................................14
           5.2.4. Normalization Rule .................................15
           5.2.5. Directionality Rule ................................15
      5.3. A Note about Spaces .......................................16
   6. Applications ...................................................17
      6.1. How to Use PRECIS in Applications .........................17
      6.2. Further Excluded Characters ...............................18
      6.3. Building Application-Layer Constructs .....................18
   7. Order of Operations ............................................19
        
   1. Introduction ....................................................4
   2. Terminology .....................................................7
   3. Preparation, Enforcement, and Comparison ........................7
   4. String Classes ..................................................8
      4.1. Overview ...................................................8
      4.2. IdentifierClass ............................................9
           4.2.1. Valid ...............................................9
           4.2.2. Contextual Rule Required ...........................10
           4.2.3. Disallowed .........................................10
           4.2.4. Unassigned .........................................11
           4.2.5. Examples ...........................................11
      4.3. FreeformClass .............................................11
           4.3.1. Valid ..............................................11
           4.3.2. Contextual Rule Required ...........................12
           4.3.3. Disallowed .........................................12
           4.3.4. Unassigned .........................................12
           4.3.5. Examples ...........................................12
   5. Profiles .......................................................13
      5.1. Profiles Must Not Be Multiplied beyond Necessity ..........13
      5.2. Rules .....................................................14
           5.2.1. Width Mapping Rule .................................14
           5.2.2. Additional Mapping Rule ............................14
           5.2.3. Case Mapping Rule ..................................14
           5.2.4. Normalization Rule .................................15
           5.2.5. Directionality Rule ................................15
      5.3. A Note about Spaces .......................................16
   6. Applications ...................................................17
      6.1. How to Use PRECIS in Applications .........................17
      6.2. Further Excluded Characters ...............................18
      6.3. Building Application-Layer Constructs .....................18
   7. Order of Operations ............................................19
        
   8. Code Point Properties ..........................................20
   9. Category Definitions Used to Calculate Derived Property ........22
      9.1. LetterDigits (A) ..........................................23
      9.2. Unstable (B) ..............................................23
      9.3. IgnorableProperties (C) ...................................23
      9.4. IgnorableBlocks (D) .......................................23
      9.5. LDH (E) ...................................................23
      9.6. Exceptions (F) ............................................23
      9.7. BackwardCompatible (G) ....................................23
      9.8. JoinControl (H) ...........................................24
      9.9. OldHangulJamo (I) .........................................24
      9.10. Unassigned (J) ...........................................24
      9.11. ASCII7 (K) ...............................................24
      9.12. Controls (L) .............................................24
      9.13. PrecisIgnorableProperties (M) ............................24
      9.14. Spaces (N) ...............................................25
      9.15. Symbols (O) ..............................................25
      9.16. Punctuation (P) ..........................................25
      9.17. HasCompat (Q) ............................................25
      9.18. OtherLetterDigits (R) ....................................25
   10. Guidelines for Designated Experts .............................26
   11. IANA Considerations ...........................................27
      11.1. PRECIS Derived Property Value Registry ...................27
      11.2. PRECIS Base Classes Registry .............................27
      11.3. PRECIS Profiles Registry .................................28
   12. Security Considerations .......................................29
      12.1. General Issues ...........................................29
      12.2. Use of the IdentifierClass ...............................30
      12.3. Use of the FreeformClass .................................30
      12.4. Local Character Set Issues ...............................31
      12.5. Visually Similar Characters ..............................31
      12.6. Security of Passwords ....................................33
   13. Interoperability Considerations ...............................34
      13.1. Encoding .................................................34
      13.2. Character Sets ...........................................34
      13.3. Unicode Versions .........................................34
      13.4. Potential Changes to Handling of Certain Unicode
            Code Points ..............................................34
   14. References ....................................................35
      14.1. Normative References .....................................35
      14.2. Informative References ...................................36
   Acknowledgements ..................................................40
   Authors' Addresses ................................................40
        
   8. Code Point Properties ..........................................20
   9. Category Definitions Used to Calculate Derived Property ........22
      9.1. LetterDigits (A) ..........................................23
      9.2. Unstable (B) ..............................................23
      9.3. IgnorableProperties (C) ...................................23
      9.4. IgnorableBlocks (D) .......................................23
      9.5. LDH (E) ...................................................23
      9.6. Exceptions (F) ............................................23
      9.7. BackwardCompatible (G) ....................................23
      9.8. JoinControl (H) ...........................................24
      9.9. OldHangulJamo (I) .........................................24
      9.10. Unassigned (J) ...........................................24
      9.11. ASCII7 (K) ...............................................24
      9.12. Controls (L) .............................................24
      9.13. PrecisIgnorableProperties (M) ............................24
      9.14. Spaces (N) ...............................................25
      9.15. Symbols (O) ..............................................25
      9.16. Punctuation (P) ..........................................25
      9.17. HasCompat (Q) ............................................25
      9.18. OtherLetterDigits (R) ....................................25
   10. Guidelines for Designated Experts .............................26
   11. IANA Considerations ...........................................27
      11.1. PRECIS Derived Property Value Registry ...................27
      11.2. PRECIS Base Classes Registry .............................27
      11.3. PRECIS Profiles Registry .................................28
   12. Security Considerations .......................................29
      12.1. General Issues ...........................................29
      12.2. Use of the IdentifierClass ...............................30
      12.3. Use of the FreeformClass .................................30
      12.4. Local Character Set Issues ...............................31
      12.5. Visually Similar Characters ..............................31
      12.6. Security of Passwords ....................................33
   13. Interoperability Considerations ...............................34
      13.1. Encoding .................................................34
      13.2. Character Sets ...........................................34
      13.3. Unicode Versions .........................................34
      13.4. Potential Changes to Handling of Certain Unicode
            Code Points ..............................................34
   14. References ....................................................35
      14.1. Normative References .....................................35
      14.2. Informative References ...................................36
   Acknowledgements ..................................................40
   Authors' Addresses ................................................40
        
1. Introduction
1. 介绍

Application protocols using Unicode characters [Unicode] in protocol strings need to properly handle such strings in order to enforce internationalization rules for strings placed in various protocol slots (such as addresses and identifiers) and to perform valid comparison operations (e.g., for purposes of authentication or authorization). This document defines a framework enabling application protocols to perform the preparation, enforcement, and comparison of internationalized strings ("PRECIS") in a way that depends on the properties of Unicode characters and thus is agile with respect to versions of Unicode.

在协议字符串中使用Unicode字符[Unicode]的应用程序协议需要正确处理此类字符串,以便对放置在各种协议插槽(例如地址和标识符)中的字符串强制执行国际化规则,并执行有效的比较操作(例如,为了验证或授权的目的)。本文档定义了一个框架,使应用程序协议能够根据Unicode字符的属性以一种灵活的方式执行国际化字符串(“PRECIS”)的准备、实施和比较。

As described in the PRECIS problem statement [RFC6885], many IETF protocols have used the Stringprep framework [RFC3454] as the basis for preparing, enforcing, and comparing protocol strings that contain Unicode characters, especially characters outside the ASCII range [RFC20]. The Stringprep framework was developed during work on the original technology for internationalized domain names (IDNs), here called "IDNA2003" [RFC3490], and Nameprep [RFC3491] was the Stringprep profile for IDNs. At the time, Stringprep was designed as a general framework so that other application protocols could define their own Stringprep profiles. Indeed, a number of application protocols defined such profiles.

如PRECIS问题声明[RFC6885]所述,许多IETF协议使用Stringprep框架[RFC3454]作为准备、实施和比较包含Unicode字符,特别是ASCII范围[RFC20]以外字符的协议字符串的基础。Stringprep框架是在研究国际化域名(IDN)的原始技术时开发的,这里称为“IDNA2003”[RFC3490],Nameprep[RFC3491]是IDN的Stringprep配置文件。当时,Stringprep被设计为通用框架,以便其他应用程序协议可以定义自己的Stringprep配置文件。事实上,许多应用程序协议定义了这样的配置文件。

After the publication of [RFC3454] in 2002, several significant issues arose with the use of Stringprep in the IDN case, as documented in the IAB's recommendations regarding IDNs [RFC4690] (most significantly, Stringprep was tied to Unicode version 3.2). Therefore, the newer IDNA specifications, here called "IDNA2008" ([RFC5890], [RFC5891], [RFC5892], [RFC5893], [RFC5894]), no longer use Stringprep and Nameprep. This migration away from Stringprep for IDNs prompted other "customers" of Stringprep to consider new approaches to the preparation, enforcement, and comparison of internationalized strings, as described in [RFC6885].

2002年[RFC3454]出版后,在IDN案例中使用Stringprep出现了几个重大问题,如IAB关于IDN[RFC4690]的建议所述(最重要的是,Stringprep与Unicode版本3.2相关联)。因此,较新的IDNA规范(此处称为“IDNA2008”)([RFC5890]、[RFC5891]、[RFC5892]、[RFC5893]、[RFC5894])不再使用Stringprep和Nameprep。从StRePrEP迁移到IDN,促使SrangPrIP的其他“客户”考虑新的方法来准备、实施和比较国际化的字符串,如[RCF685]中所描述的。

This document defines a framework for a post-Stringprep approach to the preparation, enforcement, and comparison of internationalized strings in application protocols, based on several principles:

本文档基于以下几项原则,为应用程序协议中国际化字符串的准备、实施和比较定义了一个后Stringprep方法框架:

1. Define a small set of string classes that specify the Unicode characters (i.e., specific "code points") appropriate for common application protocol constructs.

1. 定义一小组字符串类,用于指定适用于通用应用程序协议构造的Unicode字符(即特定的“代码点”)。

2. Define each PRECIS string class in terms of Unicode code points and their properties so that an algorithm can be used to determine whether each code point or character category is (a) valid, (b) allowed in certain contexts, (c) disallowed, or (d) unassigned.

2. 根据Unicode码点及其属性定义每个PRECIS字符串类,以便使用算法确定每个码点或字符类别是否(a)有效,(b)在某些上下文中允许,(c)不允许,或(d)未指定。

3. Use an "inclusion model" such that a string class consists only of code points that are explicitly allowed, with the result that any code point not explicitly allowed is forbidden.

3. 使用“包含模型”,使字符串类只包含显式允许的代码点,从而禁止任何不显式允许的代码点。

4. Enable application protocols to define profiles of the PRECIS string classes if necessary (addressing matters such as width mapping, case mapping, Unicode normalization, and directionality) but strongly discourage the multiplication of profiles beyond necessity in order to avoid violations of the "Principle of Least Astonishment".

4. 如有必要,允许应用程序协议定义PRECIS字符串类的配置文件(解决宽度映射、大小写映射、Unicode规范化和方向性等问题),但强烈阻止配置文件的倍增,以避免违反“最小惊讶原则”。

It is expected that this framework will yield the following benefits:

预计该框架将产生以下好处:

o Application protocols will be agile with regard to Unicode versions.

o 对于Unicode版本,应用程序协议将是灵活的。

o Implementers will be able to share code point tables and software code across application protocols, most likely by means of software libraries.

o 实现者将能够跨应用程序协议共享代码点表和软件代码,最有可能的方式是通过软件库。

o End users will be able to acquire more accurate expectations about the characters that are acceptable in various contexts. Given this more uniform set of string classes, it is also expected that copy/paste operations between software implementing different application protocols will be more predictable and coherent.

o 最终用户将能够获得在各种上下文中可接受的字符的更准确期望。考虑到这组更加统一的字符串类,我们还希望实现不同应用程序协议的软件之间的复制/粘贴操作将更加可预测和一致。

Whereas the string classes define the "baseline" code points for a range of applications, profiling enables application protocols to apply the string classes in ways that are appropriate for common constructs such as usernames [PRECIS-Users-Pwds], opaque strings such as passwords [PRECIS-Users-Pwds], and nicknames [PRECIS-Nickname]. Profiles are responsible for defining the handling of right-to-left characters as well as various mapping operations of the kind also discussed for IDNs in [RFC5895], such as case preservation or

虽然字符串类定义了一系列应用程序的“基线”代码点,但分析使应用程序协议能够以适合常见构造(如用户名[PRECIS Users Pwds]、不透明字符串(如密码[PRECIS Users Pwds]和昵称[PRECIS昵称])的方式应用字符串类。配置文件负责定义从右到左字符的处理以及[RFC5895]中讨论的IDN的各种映射操作,例如大小写保留或

lowercasing, Unicode normalization, mapping of certain characters to other characters or to nothing, and mapping of fullwidth and halfwidth characters.

小写、Unicode规范化、将某些字符映射到其他字符或不映射到任何字符,以及映射全宽和半宽字符。

When an application applies a profile of a PRECIS string class, it transforms an input string (which might or might not be conforming) into an output string that definitively conforms to the profile. In particular, this document focuses on the resulting ability to achieve the following objectives:

当应用程序应用PRECIS string类的概要文件时,它会将输入字符串(可能符合也可能不符合)转换为最终符合概要文件的输出字符串。特别是,本文件侧重于实现以下目标的能力:

a. Enforcing all the rules of a profile for a single output string (e.g., to determine if a string can be included in a protocol slot, communicated to another entity within a protocol, stored in a retrieval system, etc.).

a. 为单个输出字符串强制执行配置文件的所有规则(例如,确定字符串是否可以包括在协议插槽中、是否可以与协议内的另一个实体通信、是否可以存储在检索系统中等)。

b. Comparing two output strings to determine if they are equivalent, typically through octet-for-octet matching to test for "bit-string identity" (e.g., to make an access decision for purposes of authentication or authorization as further described in [RFC6943]).

b. 比较两个输出字符串以确定它们是否等效,通常通过八位字节进行八位字节匹配以测试“位字符串标识”(例如,为了认证或授权的目的做出访问决策,如[RFC6943]中进一步描述的)。

The opportunity to define profiles naturally introduces the possibility of a proliferation of profiles, thus potentially mitigating the benefits of common code and violating user expectations. See Section 5 for a discussion of this important topic.

定义概要文件的机会自然会带来概要文件激增的可能性,因此可能会降低通用代码的好处,并违反用户期望。有关此重要主题的讨论,请参见第5节。

In addition, it is extremely important for protocol designers and application developers to understand that the transformation of an input string to an output string is rarely reversible. As one relatively simple example, case mapping would transform an input string of "StPeter" to "stpeter", and information about the capitalization of the first and third characters would be lost. Similar considerations apply to other forms of mapping and normalization.

此外,对于协议设计者和应用程序开发人员来说,理解从输入字符串到输出字符串的转换很少是可逆的是非常重要的。作为一个相对简单的示例,大小写映射会将输入字符串“StPeter”转换为“StPeter”,并且第一个和第三个字符的大小写信息将丢失。类似的考虑也适用于其他形式的映射和规范化。

Although this framework is similar to IDNA2008 and includes by reference some of the character categories defined in [RFC5892], it defines additional character categories to meet the needs of common application protocols other than DNS.

尽管该框架类似于IDNA2008,并通过引用包括[RFC5892]中定义的一些字符类别,但它定义了其他字符类别,以满足除DNS以外的常见应用程序协议的需要。

The character categories and calculation rules defined under Sections 8 and 9 are normative and apply to all Unicode code points. The code point table that results from applying the character categories and calculation rules to the latest version of Unicode can be found in an IANA registry.

第8节和第9节中定义的字符类别和计算规则是规范性的,适用于所有Unicode代码点。在IANA注册表中可以找到将字符类别和计算规则应用于最新版本的Unicode的代码点表。

2. Terminology
2. 术语

Many important terms used in this document are defined in [RFC5890], [RFC6365], [RFC6885], and [Unicode]. The terms "left-to-right" (LTR) and "right-to-left" (RTL) are defined in Unicode Standard Annex #9 [UAX9].

本文档中使用的许多重要术语在[RFC5890]、[RFC6365]、[RFC6885]和[Unicode]中定义。术语“从左到右”(LTR)和“从右到左”(RTL)的定义见Unicode标准附录#9[UAX9]。

As of the date of writing, the version of Unicode published by the Unicode Consortium is 7.0 [Unicode7.0]; however, PRECIS is not tied to a specific version of Unicode. The latest version of Unicode is always available [Unicode].

截至本文撰写之日,Unicode联盟发布的Unicode版本为7.0[Unicode7.0];但是,PRECIS并不与特定版本的Unicode绑定。Unicode的最新版本始终可用[Unicode]。

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可”和“可选”应按照[RFC2119]中的说明进行解释。

3. Preparation, Enforcement, and Comparison
3. 准备、实施和比较

This document distinguishes between three different actions that an entity can take with regard to a string:

本文档区分实体可以对字符串执行的三种不同操作:

o Enforcement entails applying all of the rules specified for a particular string class or profile thereof to an individual string, for the purpose of determining if the string can be used in a given protocol slot.

o 强制需要将为特定字符串类或其配置文件指定的所有规则应用于单个字符串,以确定该字符串是否可以在给定的协议时隙中使用。

o Comparison entails applying all of the rules specified for a particular string class or profile thereof to two separate strings, for the purpose of determining if the two strings are equivalent.

o 比较需要将为特定字符串类或其配置文件指定的所有规则应用于两个单独的字符串,以确定这两个字符串是否等效。

o Preparation entails only ensuring that the characters in an individual string are allowed by the underlying PRECIS string class.

o 准备只需要确保基础PRECIS字符串类允许单个字符串中的字符。

In most cases, authoritative entities such as servers are responsible for enforcement, whereas subsidiary entities such as clients are responsible only for preparation. The rationale for this distinction is that clients might not have the facilities (in terms of device memory and processing power) to enforce all the rules regarding internationalized strings (such as width mapping and Unicode normalization), although they can more easily limit the repertoire of characters they offer to an end user. By contrast, it is assumed that a server would have more capacity to enforce the rules, and in any case acts as an authority regarding allowable strings in protocol slots such as addresses and endpoint identifiers. In addition, a

在大多数情况下,服务器等权威实体负责执行,而客户端等附属实体只负责准备。这种区别的基本原理是,客户机可能没有设施(就设备内存和处理能力而言)来强制执行有关国际化字符串的所有规则(如宽度映射和Unicode规范化),尽管他们可以更容易地限制向最终用户提供的字符集。相比之下,假设服务器将具有更大的能力来实施规则,并且在任何情况下充当协议插槽(如地址和端点标识符)中允许字符串的权限。此外,

client cannot necessarily be trusted to properly generate such strings, especially for security-sensitive contexts such as authentication and authorization.

客户机不一定可以被信任来正确生成这样的字符串,特别是对于安全敏感的上下文,如身份验证和授权。

4. String Classes
4. 字符串类
4.1. Overview
4.1. 概述

Starting in 2010, various "customers" of Stringprep began to discuss the need to define a post-Stringprep approach to the preparation and comparison of internationalized strings other than IDNs. This community analyzed the existing Stringprep profiles and also weighed the costs and benefits of defining a relatively small set of Unicode characters that would minimize the potential for user confusion caused by visually similar characters (and thus be relatively "safe") vs. defining a much larger set of Unicode characters that would maximize the potential for user creativity (and thus be relatively "expressive"). As a result, the community concluded that most existing uses could be addressed by two string classes:

从2010年开始,Stringprep的各个“客户”开始讨论需要定义一种Stringprep后的方法来准备和比较除IDN以外的国际化字符串。该社区分析了现有的Stringprep配置文件,并权衡了定义一组相对较小的Unicode字符的成本和收益,这将最大限度地减少视觉上相似的字符引起用户混淆的可能性(从而相对“安全”)而不是定义一组更大的Unicode字符,这将最大限度地发挥用户创造力的潜力(因此相对而言具有“表现力”)。因此,社区得出结论,大多数现有用途可以通过两个字符串类来解决:

IdentifierClass: a sequence of letters, numbers, and some symbols that is used to identify or address a network entity such as a user account, a venue (e.g., a chatroom), an information source (e.g., a data feed), or a collection of data (e.g., a file); the intent is that this class will minimize user confusion in a wide variety of application protocols, with the result that safety has been prioritized over expressiveness for this class.

IdentifierClass:一系列字母、数字和一些符号,用于识别或寻址网络实体,如用户帐户、场所(如聊天室)、信息源(如数据源)或数据集合(如文件);其目的是,此类将最大限度地减少各种应用程序协议中的用户混淆,从而使此类的安全性优先于表达性。

FreeformClass: a sequence of letters, numbers, symbols, spaces, and other characters that is used for free-form strings, including passwords as well as display elements such as human-friendly nicknames for devices or for participants in a chatroom; the intent is that this class will allow nearly any Unicode character, with the result that expressiveness has been prioritized over safety for this class. Note well that protocol designers, application developers, service providers, and end users might not understand or be able to enter all of the characters that can be included in the FreeformClass -- see Section 12.3 for details.

FreeformClass:用于自由格式字符串的字母、数字、符号、空格和其他字符序列,包括密码以及显示元素,如设备或聊天室参与者的人性化昵称;其目的是该类将允许几乎任何Unicode字符,从而使该类的表达性优先于安全性。请注意,协议设计人员、应用程序开发人员、服务提供商和最终用户可能不理解或无法输入FreeformClass中包含的所有字符——有关详细信息,请参阅第12.3节。

Future specifications might define additional PRECIS string classes, such as a class that falls somewhere between the IdentifierClass and the FreeformClass. At this time, it is not clear how useful such a class would be. In any case, because application developers are able to define profiles of PRECIS string classes, a protocol needing a construct between the IdentifierClass and the FreeformClass could define a restricted profile of the FreeformClass if needed.

未来的规范可能会定义其他PRECIS字符串类,例如位于IdentifierClass和FreeformClass之间的类。目前还不清楚这样一个类有多有用。在任何情况下,由于应用程序开发人员能够定义PRECIS字符串类的概要文件,因此需要在IdentifierClass和FreeformClass之间构造的协议可以在需要时定义FreeformClass的受限概要文件。

The following subsections discuss the IdentifierClass and FreeformClass in more detail, with reference to the dimensions described in Section 5 of [RFC6885]. Each string class is defined by the following behavioral rules:

以下小节将参考[RFC6885]第5节中描述的尺寸,更详细地讨论IdentifierClass和FreeformClass。每个字符串类由以下行为规则定义:

Valid: Defines which code points are treated as valid for the string.

有效:定义哪些代码点对字符串有效。

Contextual Rule Required: Defines which code points are treated as allowed only if the requirements of a contextual rule are met (i.e., either CONTEXTJ or CONTEXTO).

所需上下文规则:定义仅当满足上下文规则的要求(即CONTEXTJ或CONTEXTO)时才允许处理哪些代码点。

Disallowed: Defines which code points need to be excluded from the string.

不允许:定义需要从字符串中排除哪些代码点。

Unassigned: Defines application behavior in the presence of code points that are unknown (i.e., not yet designated) for the version of Unicode used by the application.

未指定:定义应用程序使用的Unicode版本中存在未知(即尚未指定)代码点时的应用程序行为。

This document defines the valid, contextual rule required, disallowed, and unassigned rules for the IdentifierClass and FreeformClass. As described under Section 5, profiles of these string classes are responsible for defining the width mapping, additional mappings, case mapping, normalization, and directionality rules.

本文档为IdentifierClass和FreeformClass定义了有效、上下文规则必需、不允许和未分配的规则。如第5节所述,这些字符串类的概要文件负责定义宽度映射、附加映射、大小写映射、规范化和方向性规则。

4.2. IdentifierClass
4.2. 标识类

Most application technologies need strings that can be used to refer to, include, or communicate protocol strings like usernames, filenames, data feed identifiers, and chatroom names. We group such strings into a class called "IdentifierClass" having the following features.

大多数应用程序技术需要可用于引用、包含或通信协议字符串(如用户名、文件名、数据源标识符和聊天室名称)的字符串。我们将这些字符串分组到一个名为“IdentifierClass”的类中,该类具有以下特性。

4.2.1. Valid
4.2.1. 有效的

o Code points traditionally used as letters and numbers in writing systems, i.e., the LetterDigits ("A") category first defined in [RFC5892] and listed here under Section 9.1.

o 传统上在书写系统中用作字母和数字的代码点,即[RFC5892]中首次定义的字母数字(“A”)类别,并在第9.1节中列出。

o Code points in the range U+0021 through U+007E, i.e., the (printable) ASCII7 ("K") category defined under Section 9.11. These code points are "grandfathered" into PRECIS and thus are valid even if they would otherwise be disallowed according to the property-based rules specified in the next section.

o U+0021至U+007E范围内的代码点,即第9.11节定义的(可打印)ASCII7(“K”)类别。这些代码点在PRECIS中是“祖父式”的,因此即使根据下一节中指定的基于属性的规则不允许这些代码点,它们也是有效的。

Note: Although the PRECIS IdentifierClass reuses the LetterDigits category from IDNA2008, the range of characters allowed in the IdentifierClass is wider than the range of characters allowed in IDNA2008. The main reason is that IDNA2008 applies the Unstable category before the LetterDigits category, thus disallowing uppercase characters, whereas the IdentifierClass does not apply the Unstable category.

注意:虽然PRECIS IdentifierClass重用IDNA2008中的LetterDigits类别,但IdentifierClass中允许的字符范围比IDNA2008中允许的字符范围宽。主要原因是IDNA2008在LetterDigits类别之前应用了不稳定类别,因此不允许使用大写字符,而IdentifierClass不应用不稳定类别。

4.2.2. Contextual Rule Required
4.2.2. 需要上下文规则

o A number of characters from the Exceptions ("F") category defined under Section 9.6 (see Section 9.6 for a full list).

o 第9.6节定义的例外(“F”)类别中的若干字符(完整列表见第9.6节)。

o Joining characters, i.e., the JoinControl ("H") category defined under Section 9.8.

o 连接字符,即第9.8节定义的JoinControl(“H”)类别。

4.2.3. Disallowed
4.2.3. 不允许

o Old Hangul Jamo characters, i.e., the OldHangulJamo ("I") category defined under Section 9.9.

o 旧韩国语Jamo字符,即第9.9节定义的旧韩国语Jamo(“i”)类别。

o Control characters, i.e., the Controls ("L") category defined under Section 9.12.

o 控制字符,即第9.12节定义的控制(“L”)类别。

o Ignorable characters, i.e., the PrecisIgnorableProperties ("M") category defined under Section 9.13.

o 可忽略字符,即第9.13节定义的可忽略属性(“M”)类别。

o Space characters, i.e., the Spaces ("N") category defined under Section 9.14.

o 空格字符,即第9.14节定义的空格(“N”)类别。

o Symbol characters, i.e., the Symbols ("O") category defined under Section 9.15.

o 符号字符,即第9.15节定义的符号(“O”)类别。

o Punctuation characters, i.e., the Punctuation ("P") category defined under Section 9.16.

o 标点符号,即第9.16节定义的标点符号(“P”)类别。

o Any character that has a compatibility equivalent, i.e., the HasCompat ("Q") category defined under Section 9.17. These code points are disallowed even if they would otherwise be valid according to the property-based rules specified in the previous section.

o 具有兼容性等价物的任何字符,即第9.17节定义的HasCompat(“Q”)类别。这些代码点是不允许的,即使根据上一节中指定的基于属性的规则,它们本来是有效的。

o Letters and digits other than the "traditional" letters and digits allowed in IDNs, i.e., the OtherLetterDigits ("R") category defined under Section 9.18.

o IDN中允许的“传统”字母和数字以外的字母和数字,即第9.18节定义的其他字母数字(“R”)类别。

4.2.4. Unassigned
4.2.4. 未分配

Any code points that are not yet designated in the Unicode character set are considered unassigned for purposes of the IdentifierClass, and such code points are to be treated as disallowed. See Section 9.10.

出于IdentifierClass的目的,任何尚未在Unicode字符集中指定的代码点都被视为未指定,并且此类代码点将被视为不允许。见第9.10节。

4.2.5. Examples
4.2.5. 例子

As described in the Introduction to this document, the string classes do not handle all issues related to string preparation and comparison (such as case mapping); instead, such issues are handled at the level of profiles. Examples for profiles of the IdentifierClass can be found in [PRECIS-Users-Pwds] (the UsernameCaseMapped and UsernameCasePreserved profiles).

如本文档简介所述,字符串类并不处理与字符串准备和比较相关的所有问题(如案例映射);相反,这些问题是在概要文件级别处理的。IdentifierClass的配置文件示例可在[PRECIS Users Pwds](UsernameCaseMapped和UsernameCasePreserved配置文件)中找到。

4.3. FreeformClass
4.3. 自由格式类

Some application technologies need strings that can be used in a free-form way, e.g., as a password in an authentication exchange (see [PRECIS-Users-Pwds]) or a nickname in a chatroom (see [PRECIS-Nickname]). We group such things into a class called "FreeformClass" having the following features.

一些应用程序技术需要可以自由形式使用的字符串,例如,作为身份验证交换中的密码(请参见[PRECIS Users Pwds])或聊天室中的昵称(请参见[PRECIS昵称])。我们将这些东西分组到一个名为“FreeformClass”的类中,该类具有以下特性。

Security Warning: As mentioned, the FreeformClass prioritizes expressiveness over safety; Section 12.3 describes some of the security hazards involved with using or profiling the FreeformClass.

安全警告:如前所述,FreeformClass将表现力置于安全之上;第12.3节描述了使用或分析FreeformClass所涉及的一些安全隐患。

Security Warning: Consult Section 12.6 for relevant security considerations when strings conforming to the FreeformClass, or a profile thereof, are used as passwords.

安全警告:当符合FreeformClass或其配置文件的字符串用作密码时,请参阅第12.6节以了解相关安全注意事项。

4.3.1. Valid
4.3.1. 有效的

o Traditional letters and numbers, i.e., the LetterDigits ("A") category first defined in [RFC5892] and listed here under Section 9.1.

o 传统字母和数字,即[RFC5892]中首次定义的字母数字(“A”)类别,并在第9.1节中列出。

o Letters and digits other than the "traditional" letters and digits allowed in IDNs, i.e., the OtherLetterDigits ("R") category defined under Section 9.18.

o IDN中允许的“传统”字母和数字以外的字母和数字,即第9.18节定义的其他字母数字(“R”)类别。

o Code points in the range U+0021 through U+007E, i.e., the (printable) ASCII7 ("K") category defined under Section 9.11.

o U+0021至U+007E范围内的代码点,即第9.11节定义的(可打印)ASCII7(“K”)类别。

o Any character that has a compatibility equivalent, i.e., the HasCompat ("Q") category defined under Section 9.17.

o 具有兼容性等价物的任何字符,即第9.17节定义的HasCompat(“Q”)类别。

o Space characters, i.e., the Spaces ("N") category defined under Section 9.14.

o 空格字符,即第9.14节定义的空格(“N”)类别。

o Symbol characters, i.e., the Symbols ("O") category defined under Section 9.15.

o 符号字符,即第9.15节定义的符号(“O”)类别。

o Punctuation characters, i.e., the Punctuation ("P") category defined under Section 9.16.

o 标点符号,即第9.16节定义的标点符号(“P”)类别。

4.3.2. Contextual Rule Required
4.3.2. 需要上下文规则

o A number of characters from the Exceptions ("F") category defined under Section 9.6 (see Section 9.6 for a full list).

o 第9.6节定义的例外(“F”)类别中的若干字符(完整列表见第9.6节)。

o Joining characters, i.e., the JoinControl ("H") category defined under Section 9.8.

o 连接字符,即第9.8节定义的JoinControl(“H”)类别。

4.3.3. Disallowed
4.3.3. 不允许

o Old Hangul Jamo characters, i.e., the OldHangulJamo ("I") category defined under Section 9.9.

o 旧韩国语Jamo字符,即第9.9节定义的旧韩国语Jamo(“i”)类别。

o Control characters, i.e., the Controls ("L") category defined under Section 9.12.

o 控制字符,即第9.12节定义的控制(“L”)类别。

o Ignorable characters, i.e., the PrecisIgnorableProperties ("M") category defined under Section 9.13.

o 可忽略字符,即第9.13节定义的可忽略属性(“M”)类别。

4.3.4. Unassigned
4.3.4. 未分配

Any code points that are not yet designated in the Unicode character set are considered unassigned for purposes of the FreeformClass, and such code points are to be treated as disallowed.

出于FreeformClass的目的,任何尚未在Unicode字符集中指定的代码点都被视为未指定,并且此类代码点将被视为不允许。

4.3.5. Examples
4.3.5. 例子

As described in the Introduction to this document, the string classes do not handle all issues related to string preparation and comparison (such as case mapping); instead, such issues are handled at the level of profiles. Examples for profiles of the FreeformClass can be found in [PRECIS-Users-Pwds] (the OpaqueString profile) and [PRECIS-Nickname] (the Nickname profile).

如本文档简介所述,字符串类并不处理与字符串准备和比较相关的所有问题(如案例映射);相反,这些问题是在概要文件级别处理的。FreeformClass的配置文件示例可在[PRECIS Users Pwds](OpaqueString配置文件)和[PRECIS昵称](昵称配置文件)中找到。

5. Profiles
5. 轮廓

This framework document defines the valid, contextual-rule-required, disallowed, and unassigned rules for the IdentifierClass and the FreeformClass. A profile of a PRECIS string class MUST define the width mapping, additional mappings (if any), case mapping, normalization, and directionality rules. A profile MAY also restrict the allowable characters above and beyond the definition of the relevant PRECIS string class (but MUST NOT add as valid any code points that are disallowed by the relevant PRECIS string class). These matters are discussed in the following subsections.

此框架文档为IdentifierClass和FreeformClass定义了有效的、上下文规则必需的、不允许的和未分配的规则。PRECIS字符串类的配置文件必须定义宽度映射、其他映射(如果有)、大小写映射、规范化和方向性规则。配置文件还可以将允许的字符限制在相关PRECIS字符串类定义之上或之外(但不得将相关PRECIS字符串类不允许的任何代码点添加为有效代码点)。这些问题将在以下小节中讨论。

Profiles of the PRECIS string classes are registered with the IANA as described under Section 11.3. Profile names use the following convention: they are of the form "Profilename of BaseClass", where the "Profilename" string is a differentiator and "BaseClass" is the name of the PRECIS string class being profiled; for example, the profile of the FreeformClass used for opaque strings such as passwords is the OpaqueString profile [PRECIS-Users-Pwds].

如第11.3节所述,PRECIS字符串类的配置文件在IANA注册。配置文件名称使用以下约定:它们的形式为“Profilename of BaseClass”,其中“Profilename”字符串是一个区分符,“BaseClass”是要配置的PRECIS字符串类的名称;例如,用于密码等不透明字符串的FreeformClass的配置文件是不透明字符串配置文件[PRECIS Users Pwds]。

5.1. Profiles Must Not Be Multiplied beyond Necessity
5.1. 不得在必要的情况下增加配置文件

The risk of profile proliferation is significant because having too many profiles will result in different behavior across various applications, thus violating what is known in user interface design as the "Principle of Least Astonishment".

配置文件扩散的风险是巨大的,因为拥有太多的配置文件将导致不同应用程序的不同行为,从而违反了用户界面设计中所称的“最少惊讶原则”。

Indeed, we already have too many profiles. Ideally we would have at most two or three profiles. Unfortunately, numerous application protocols exist with their own quirks regarding protocol strings. Domain names, email addresses, instant messaging addresses, chatroom nicknames, filenames, authentication identifiers, passwords, and other strings are already out there in the wild and need to be supported in existing application protocols such as DNS, SMTP, the Extensible Messaging and Presence Protocol (XMPP), Internet Relay Chat (IRC), NFS, the Internet Small Computer System Interface (iSCSI), the Extensible Authentication Protocol (EAP), and the Simple Authentication and Security Layer (SASL), among others.

事实上,我们已经有太多的个人资料。理想情况下,我们最多有两到三个配置文件。不幸的是,许多应用程序协议都有自己关于协议字符串的怪癖。域名、电子邮件地址、即时消息地址、聊天室昵称、文件名、身份验证标识符、密码和其他字符串已经存在,需要在现有的应用程序协议(如DNS、SMTP、可扩展消息和状态协议(XMPP)、Internet中继聊天(IRC)、NFS、,Internet小型计算机系统接口(iSCSI)、可扩展身份验证协议(EAP)和简单身份验证和安全层(SASL)等。

Nevertheless, profiles must not be multiplied beyond necessity.

尽管如此,概要文件不能超出必要性而成倍增加。

To help prevent profile proliferation, this document recommends sensible defaults for the various options offered to profile creators (such as width mapping and Unicode normalization). In addition, the guidelines for designated experts provided under Section 10 are meant to encourage a high level of due diligence regarding new profiles.

为了帮助防止配置文件扩散,本文档建议为配置文件创建者提供的各种选项(如宽度映射和Unicode规范化)提供合理的默认设置。此外,第10节规定的指定专家指南旨在鼓励对新档案进行高水平的尽职调查。

5.2. Rules
5.2. 规则
5.2.1. Width Mapping Rule
5.2.1. 宽度映射规则

The width mapping rule of a profile specifies whether width mapping is performed on the characters of a string, and how the mapping is done. Typically, such mapping consists of mapping fullwidth and halfwidth characters, i.e., code points with a Decomposition Type of Wide or Narrow, to their decomposition mappings; as an example, FULLWIDTH DIGIT ZERO (U+FF10) would be mapped to DIGIT ZERO (U+0030).

配置文件的宽度映射规则指定是否对字符串的字符执行宽度映射,以及如何执行映射。通常,这种映射包括将全宽和半宽字符(即分解类型为宽或窄的代码点)映射到其分解映射;例如,全宽数字零(U+FF10)将映射到数字零(U+0030)。

The normalization form specified by a profile (see below) has an impact on the need for width mapping. Because width mapping is performed as a part of compatibility decomposition, a profile employing either normalization form KD (NFKD) or normalization form KC (NFKC) does not need to specify width mapping. However, if Unicode normalization form C (NFC) is used (as is recommended) then the profile needs to specify whether to apply width mapping; in this case, width mapping is in general RECOMMENDED because allowing fullwidth and halfwidth characters to remain unmapped to their compatibility variants would violate the "Principle of Least Astonishment". For more information about the concept of width in East Asian scripts within Unicode, see Unicode Standard Annex #11 [UAX11].

配置文件(见下文)指定的规范化形式对宽度映射的需要有影响。因为宽度映射是作为兼容性分解的一部分执行的,所以采用规范化形式KD(NFKD)或规范化形式KC(NFKC)的概要文件不需要指定宽度映射。但是,如果使用Unicode规范化形式C(NFC)(推荐),则配置文件需要指定是否应用宽度映射;在这种情况下,通常建议使用宽度映射,因为允许全宽和半宽字符保持未映射到其兼容变体将违反“最小惊奇原则”。有关Unicode中东亚脚本宽度概念的更多信息,请参阅Unicode标准附录#11[UAX11]。

5.2.2. Additional Mapping Rule
5.2.2. 附加映射规则

The additional mapping rule of a profile specifies whether additional mappings are performed on the characters of a string, such as:

配置文件的附加映射规则指定是否对字符串的字符执行附加映射,例如:

      Mapping of delimiter characters (such as '@', ':', '/', '+',
      and '-')
        
      Mapping of delimiter characters (such as '@', ':', '/', '+',
      and '-')
        

Mapping of special characters (e.g., non-ASCII space characters to ASCII space or control characters to nothing).

特殊字符的映射(例如,非ASCII空格字符到ASCII空格或控制字符到零)。

The PRECIS mappings document [PRECIS-Mappings] describes such mappings in more detail.

PRECIS映射文档[PRECIS映射]更详细地描述了此类映射。

5.2.3. Case Mapping Rule
5.2.3. 案例映射规则

The case mapping rule of a profile specifies whether case mapping (instead of case preservation) is performed on the characters of a string, and how the mapping is applied (e.g., mapping uppercase and titlecase characters to their lowercase equivalents).

配置文件的大小写映射规则指定是否对字符串的字符执行大小写映射(而不是保留大小写),以及如何应用映射(例如,将大写和titlecase字符映射为其小写等效字符)。

If case mapping is desired (instead of case preservation), it is RECOMMENDED to use Unicode Default Case Folding as defined in the Unicode Standard [Unicode] (at the time of this writing, the algorithm is specified in Chapter 3 of [Unicode7.0]).

如果需要大小写映射(而不是大小写保留),建议使用Unicode标准[Unicode]中定义的Unicode默认大小写折叠(撰写本文时,算法在[Unicode7.0]的第3章中指定)。

Note: Unicode Default Case Folding is not designed to handle various localization issues (such as so-called "dotless i" in several Turkic languages). The PRECIS mappings document [PRECIS-Mappings] describes these issues in greater detail and defines a "local case mapping" method that handles some locale-dependent and context-dependent mappings.

注意:Unicode默认大小写折叠并不是为了处理各种本地化问题而设计的(例如一些突厥语中的所谓“无点i”)。PRECIS mappings文档[PRECIS mappings]更详细地描述了这些问题,并定义了一个“本地案例映射”方法,该方法处理一些依赖于区域设置和上下文的映射。

In order to maximize entropy and minimize the potential for false positives, it is NOT RECOMMENDED for application protocols to map uppercase and titlecase code points to their lowercase equivalents when strings conforming to the FreeformClass, or a profile thereof, are used in passwords; instead, it is RECOMMENDED to preserve the case of all code points contained in such strings and then perform case-sensitive comparison. See also the related discussion in Section 12.6 and in [PRECIS-Users-Pwds].

为了最大化熵并最小化误报的可能性,当密码中使用符合FreeformClass或其配置文件的字符串时,不建议应用程序协议将大写和titlecase代码点映射到其小写等价物;相反,建议保留此类字符串中包含的所有代码点的大小写,然后执行区分大小写的比较。另见第12.6节和[PRECIS用户Pwds]中的相关讨论。

5.2.4. Normalization Rule
5.2.4. 规范化规则

The normalization rule of a profile specifies which Unicode normalization form (D, KD, C, or KC) is to be applied (see Unicode Standard Annex #15 [UAX15] for background information).

配置文件的规范化规则指定要应用哪种Unicode规范化形式(D、KD、C或KC)(有关背景信息,请参阅Unicode标准附录15[UAX15])。

In accordance with [RFC5198], normalization form C (NFC) is RECOMMENDED.

根据[RFC5198],建议使用标准化形式C(NFC)。

5.2.5. Directionality Rule
5.2.5. 方向性规则

The directionality rule of a profile specifies how to treat strings containing what are often called "right-to-left" (RTL) characters (see Unicode Standard Annex #9 [UAX9]). RTL characters come from scripts that are normally written from right to left and are considered by Unicode to, themselves, have right-to-left directionality. Some strings containing RTL characters also contain "left-to-right" (LTR) characters, such as numerals, as well as characters without directional properties. Consequently, such strings are known as "bidirectional strings".

配置文件的方向性规则指定如何处理包含通常称为“从右到左”(RTL)字符的字符串(请参见Unicode标准附录#9[UAX9])。RTL字符来自通常从右向左写入的脚本,Unicode认为RTL字符本身具有从右向左的方向性。某些包含RTL字符的字符串还包含“从左到右”(LTR)字符,例如数字,以及没有方向属性的字符。因此,这种字符串被称为“双向字符串”。

Presenting bidirectional strings in different layout systems (e.g., a user interface that is configured to handle primarily an RTL script vs. an interface that is configured to handle primarily an LTR script) can yield display results that, while predictable to those who understand the display rules, are counter-intuitive to casual users. In particular, the same bidirectional string (in PRECIS

在不同的布局系统中呈现双向字符串(例如,配置为主要处理RTL脚本的用户界面与配置为主要处理LTR脚本的界面)可以产生显示结果,这些结果虽然对理解显示规则的人来说是可预测的,但对普通用户来说是不直观的。特别是,相同的双向字符串(在PRECIS中)

terms) might not be presented in the same way to users of those different layout systems, even though the presentation is consistent within any particular layout system. In some applications, these presentation differences might be considered problematic and thus the application designers might wish to restrict the use of bidirectional strings by specifying a directionality rule. In other applications, these presentation differences might not be considered problematic (this especially tends to be true of more "free-form" strings) and thus no directionality rule is needed.

术语)可能不会以相同的方式呈现给这些不同布局系统的用户,即使呈现在任何特定布局系统中是一致的。在某些应用程序中,这些表示差异可能被认为是有问题的,因此应用程序设计者可能希望通过指定方向性规则来限制双向字符串的使用。在其他应用程序中,这些表示差异可能不会被认为是有问题的(对于更多的“自由形式”字符串来说,这一点尤其适用),因此不需要方向性规则。

The PRECIS framework does not directly address how to deal with bidirectional strings across all string classes and profiles, and does not define any new directionality rules, since at present there is no widely accepted and implemented solution for the safe display of arbitrary bidirectional strings beyond the Unicode bidirectional algorithm [UAX9]. Although rules for management and display of bidirectional strings have been defined for domain name labels and similar identifiers through the "Bidi Rule" specified in the IDNA2008 specification on right-to-left scripts [RFC5893], those rules are quite restrictive and are not necessarily applicable to all bidirectional strings.

PRECIS框架没有直接解决如何跨所有字符串类和配置文件处理双向字符串的问题,也没有定义任何新的方向性规则,因为除了Unicode双向算法之外,目前还没有广泛接受和实现的安全显示任意双向字符串的解决方案[UAX9]。尽管已通过IDNA2008规范中关于从右到左脚本[RFC5893]中指定的“Bidi规则”为域名标签和类似标识符定义了双向字符串的管理和显示规则,但这些规则限制性很大,不一定适用于所有双向字符串。

The authors of a PRECIS profile might believe that they need to define a new directionality rule of their own. Because of the complexity of the issues involved, such a belief is almost always misguided, even if the authors have done a great deal of careful research into the challenges of displaying bidirectional strings. This document strongly suggests that profile authors who are thinking about defining a new directionality rule think again, and instead consider using the "Bidi Rule" [RFC5893] (for profiles based on the IdentifierClass) or following the Unicode bidirectional algorithm [UAX9] (for profiles based on the FreeformClass or in situations where the IdentifierClass is not appropriate).

PRECIS剖面图的作者可能认为他们需要定义自己的新方向性规则。由于所涉及问题的复杂性,即使作者对显示双向字符串的挑战进行了大量仔细的研究,这种观点几乎总是被误导的。该文档强烈建议,正在考虑定义新的方向性规则的概要作者应重新考虑,而应考虑使用“BiDi规则”[RCF5893](基于IdIdIrror类的配置文件)或遵循Unicode双向算法[UAX9]。(对于基于FreeformClass的概要文件,或在IdentifierClass不合适的情况下)。

5.3. A Note about Spaces
5.3. 关于空间的注记

With regard to the IdentifierClass, the consensus of the PRECIS Working Group was that spaces are problematic for many reasons, including the following:

关于标识类,PRECIS工作组的共识是,空间存在问题的原因有很多,包括:

o Many Unicode characters are confusable with ASCII space.

o 许多Unicode字符可与ASCII空格混淆。

o Even if non-ASCII space characters are mapped to ASCII space (U+0020), space characters are often not rendered in user interfaces, leading to the possibility that a human user might consider a string containing spaces to be equivalent to the same string without spaces.

o 即使非ASCII空间字符映射到ASCII空间(U+ 0020),空间字符通常不呈现在用户界面中,从而导致人类用户可能考虑包含空间的字符串等价于没有空格的相同字符串。

o In some locales, some devices are known to generate a character other than ASCII space (such as ZERO WIDTH JOINER, U+200D) when a user performs an action like hitting the space bar on a keyboard.

o 在某些地区,已知某些设备在用户执行诸如敲击键盘上的空格键之类的操作时会生成ASCII空格以外的字符(如零宽度JOINER,U+200D)。

One consequence of disallowing space characters in the IdentifierClass might be to effectively discourage their use within identifiers created in newer application protocols; given the challenges involved with properly handling space characters (especially non-ASCII space characters) in identifiers and other protocol strings, the PRECIS Working Group considered this to be a feature, not a bug.

在IdentifierClass中不允许空格字符的一个后果可能是有效地阻止在较新的应用程序协议中创建的标识符中使用空格字符;考虑到正确处理标识符和其他协议字符串中的空格字符(特别是非ASCII空格字符)所面临的挑战,PRECIS工作组认为这是一项功能,而不是一个bug。

However, the FreeformClass does allow spaces, which enables application protocols to define profiles of the FreeformClass that are more flexible than any profiles of the IdentifierClass. In addition, as explained in Section 6.3, application protocols can also define application-layer constructs containing spaces.

但是,FreeformClass允许空格,这使得应用程序协议能够定义FreeformClass的配置文件,这些配置文件比IdentifierClass的任何配置文件都更灵活。此外,如第6.3节所述,应用程序协议还可以定义包含空间的应用程序层结构。

6. Applications
6. 应用
6.1. How to Use PRECIS in Applications
6.1. 如何在应用程序中使用PRECIS

Although PRECIS has been designed with applications in mind, internationalization is not suddenly made easy through the use of PRECIS. Application developers still need to give some thought to how they will use the PRECIS string classes, or profiles thereof, in their applications. This section provides some guidelines to application developers (and to expert reviewers of application protocol specifications).

尽管PRECIS的设计考虑到了应用程序,但国际化并不是通过使用PRECIS突然变得容易。应用程序开发人员仍然需要考虑如何在应用程序中使用PRECIS字符串类或其概要文件。本节为应用程序开发人员(以及应用程序协议规范的专家评审人员)提供了一些指南。

o Don't define your own profile unless absolutely necessary (see Section 5.1). Existing profiles have been designed for wide reuse. It is highly likely that an existing profile will meet your needs, especially given the ability to specify further excluded characters (Section 6.2) and to build application-layer constructs (see Section 6.3).

o 除非绝对必要,否则不要定义自己的配置文件(参见第5.1节)。现有的配置文件已设计为可广泛重用。现有配置文件很可能满足您的需要,特别是考虑到能够指定进一步排除的字符(第6.2节)和构建应用层结构(请参见第6.3节)。

o Do specify:

o 请说明:

* Exactly which entities are responsible for preparation, enforcement, and comparison of internationalized strings (e.g., servers or clients).

* 具体哪些实体负责准备、实施和比较国际化字符串(例如,服务器或客户端)。

* Exactly when those entities need to complete their tasks (e.g., a server might need to enforce the rules of a profile before allowing a client to gain network access).

* 这些实体需要完成其任务的确切时间(例如,在允许客户端获得网络访问之前,服务器可能需要强制执行配置文件的规则)。

* Exactly which protocol slots need to be checked against which profiles (e.g., checking the address of a message's intended recipient against the UsernameCaseMapped profile [PRECIS-Users-Pwds] of the IdentifierClass, or checking the password of a user against the OpaqueString profile [PRECIS-Users-Pwds] of the FreeformClass).

* 确切地说,需要根据哪些配置文件检查哪些协议插槽(例如,根据IdentifierClass的UsernameCaseMapped配置文件[PRECIS Users Pwds]检查消息的预期收件人的地址,或根据FreeformClass的不透明字符串配置文件[PRECIS Users Pwds]检查用户的密码)。

See [PRECIS-Users-Pwds] and [XMPP-Addr-Format] for definitions of these matters for several applications.

请参阅[PRECIS Users Pwds]和[XMPP Addr Format],了解多个应用程序中这些事项的定义。

6.2. Further Excluded Characters
6.2. 进一步排除的字符

An application protocol that uses a profile MAY specify particular code points that are not allowed in relevant slots within that application protocol, above and beyond those excluded by the string class or profile.

使用概要文件的应用程序协议可以指定特定的代码点,这些代码点不允许出现在该应用程序协议内的相关插槽中,超出字符串类或概要文件排除的代码点。

That is, an application protocol MAY do either of the following:

也就是说,应用协议可以执行以下任一操作:

1. Exclude specific code points that are allowed by the relevant string class.

1. 排除相关字符串类允许的特定代码点。

2. Exclude characters matching certain Unicode properties (e.g., math symbols) that are included in the relevant PRECIS string class.

2. 排除与相关PRECIS字符串类中包含的某些Unicode属性(例如,数学符号)匹配的字符。

As a result of such exclusions, code points that are defined as valid for the PRECIS string class or profile will be defined as disallowed for the relevant protocol slot.

由于此类排除,定义为对PRECIS字符串类或配置文件有效的代码点将被定义为不允许用于相关协议插槽。

Typically, such exclusions are defined for the purpose of backward compatibility with legacy formats within an application protocol. These are defined for application protocols, not profiles, in order to prevent multiplication of profiles beyond necessity (see Section 5.1).

通常,定义此类排除是为了与应用程序协议中的遗留格式向后兼容。这些是针对应用协议而不是概要文件定义的,以防止概要文件的倍增超出必要范围(见第5.1节)。

6.3. Building Application-Layer Constructs
6.3. 构建应用层构造

Sometimes, an application-layer construct does not map in a straightforward manner to one of the base string classes or a profile thereof. Consider, for example, the "simple user name" construct in the Simple Authentication and Security Layer (SASL) [RFC4422]. Depending on the deployment, a simple user name might take the form of a user's full name (e.g., the user's personal name followed by a space and then the user's family name). Such a simple user name cannot be defined as an instance of the IdentifierClass or a profile thereof, since space characters are not allowed in the

有时,应用层构造不会以直接的方式映射到一个基本字符串类或其概要文件。例如,在简单身份验证和安全层(SASL)[FRC422]中考虑“简单用户名”构造。根据部署的不同,简单用户名可能采用用户全名的形式(例如,用户的个人名称后跟空格,然后是用户的姓氏)。这样一个简单的用户名不能定义为IdentifierClass的实例或其配置文件,因为在

IdentifierClass; however, it could be defined using a space-separated sequence of IdentifierClass instances, as in the following ABNF [RFC5234] from [PRECIS-Users-Pwds]:

识别类;但是,它可以使用空间分隔的IdentifierClass实例序列来定义,如[PRECIS Users Pwds]中的以下ABNF[RFC5234]所示:

      username   = userpart *(1*SP userpart)
      userpart   = 1*(idbyte)
                   ;
                   ; an "idbyte" is a byte used to represent a
                   ; UTF-8 encoded Unicode code point that can be
                   ; contained in a string that conforms to the
                   ; PRECIS "IdentifierClass"
                   ;
        
      username   = userpart *(1*SP userpart)
      userpart   = 1*(idbyte)
                   ;
                   ; an "idbyte" is a byte used to represent a
                   ; UTF-8 encoded Unicode code point that can be
                   ; contained in a string that conforms to the
                   ; PRECIS "IdentifierClass"
                   ;
        

Similar techniques could be used to define many application-layer constructs, say of the form "user@domain" or "/path/to/file".

类似的技术可用于定义许多应用层结构,例如表单“user@domain“或“/path/to/file”。

7. Order of Operations
7. 操作顺序

To ensure proper comparison, the rules specified for a particular string class or profile MUST be applied in the following order:

为确保正确比较,必须按以下顺序应用为特定字符串类或配置文件指定的规则:

1. Width Mapping Rule

1. 宽度映射规则

2. Additional Mapping Rule

2. 附加映射规则

3. Case Mapping Rule

3. 案例映射规则

4. Normalization Rule

4. 规范化规则

5. Directionality Rule

5. 方向性规则

6. Behavioral rules for determining whether a code point is valid, allowed under a contextual rule, disallowed, or unassigned

6. 用于确定代码点是否有效、上下文规则允许、不允许或未指定的行为规则

As already described, the width mapping, additional mapping, case mapping, normalization, and directionality rules are specified for each profile, whereas the behavioral rules are specified for each string class. Some of the logic behind this order is provided under Section 5.2.1 (see also the PRECIS mappings document [PRECIS-Mappings]).

如前所述,为每个概要文件指定了宽度映射、附加映射、大小写映射、规范化和方向性规则,而为每个字符串类指定了行为规则。第5.2.1节提供了该订单背后的一些逻辑(另请参见PRECIS映射文件[PRECIS映射])。

8. Code Point Properties
8. 代码点属性

In order to implement the string classes described above, this document does the following:

为了实现上述字符串类,本文档执行以下操作:

1. Reviews and classifies the collections of code points in the Unicode character set by examining various code point properties.

1. 通过检查各种代码点属性,查看Unicode字符集中的代码点集合并对其进行分类。

2. Defines an algorithm for determining a derived property value, which can vary depending on the string class being used by the relevant application protocol.

2. 定义用于确定派生属性值的算法,派生属性值可能因相关应用程序协议使用的字符串类而异。

This document is not intended to specify precisely how derived property values are to be applied in protocol strings. That information is the responsibility of the protocol specification that uses or profiles a PRECIS string class from this document. The value of the property is to be interpreted as follows.

本文档不打算精确地指定如何在协议字符串中应用派生属性值。该信息由使用或分析本文档中PRECIS字符串类的协议规范负责。该财产的价值应解释如下。

PROTOCOL VALID Those code points that are allowed to be used in any PRECIS string class (currently, IdentifierClass and FreeformClass). The abbreviated term "PVALID" is used to refer to this value in the remainder of this document.

协议有效允许在任何PRECIS字符串类(当前为IdentifierClass和FreeformClass)中使用的代码点。在本文件的其余部分中,缩写术语“PVALID”用于指代该值。

   SPECIFIC CLASS PROTOCOL VALID  Those code points that are allowed to
      be used in specific string classes.  In the remainder of this
      document, the abbreviated term *_PVAL is used, where * = (ID |
      FREE), i.e., either "FREE_PVAL" or "ID_PVAL".  In practice, the
      derived property ID_PVAL is not used in this specification, since
      every ID_PVAL code point is PVALID.
        
   SPECIFIC CLASS PROTOCOL VALID  Those code points that are allowed to
      be used in specific string classes.  In the remainder of this
      document, the abbreviated term *_PVAL is used, where * = (ID |
      FREE), i.e., either "FREE_PVAL" or "ID_PVAL".  In practice, the
      derived property ID_PVAL is not used in this specification, since
      every ID_PVAL code point is PVALID.
        

CONTEXTUAL RULE REQUIRED Some characteristics of the character, such as its being invisible in certain contexts or problematic in others, require that it not be used in labels unless specific other characters or properties are present. As in IDNA2008, there are two subdivisions of CONTEXTUAL RULE REQUIRED -- the first for Join_controls (called "CONTEXTJ") and the second for other characters (called "CONTEXTO"). A character with the derived property value CONTEXTJ or CONTEXTO MUST NOT be used unless an appropriate rule has been established and the context of the character is consistent with that rule. The most notable of the CONTEXTUAL RULE REQUIRED characters are the Join Control characters U+200D ZERO WIDTH JOINER and U+200C ZERO WIDTH NON-JOINER, which have a derived property value of CONTEXTJ. See Appendix A of [RFC5892] for more information.

上下文规则要求字符的某些特征,例如在某些上下文中不可见或在其他上下文中有问题,要求除非存在特定的其他字符或属性,否则不能在标签中使用。正如在IDNA2008中一样,需要两个上下文规则细分——第一个用于Join_控件(称为“CONTEXTJ”),第二个用于其他字符(称为“CONTEXTO”)。除非已建立适当的规则且字符的上下文与该规则一致,否则不得使用具有派生属性值CONTEXTJ或CONTEXTO的字符。上下文规则所需的字符中最值得注意的是连接控制字符U+200D零宽度连接符和U+200C零宽度非连接符,它们的派生属性值为CONTEXTJ。有关更多信息,请参见[RFC5892]的附录A。

DISALLOWED Those code points that are not permitted in any PRECIS string class.

不允许任何PRECIS字符串类中不允许的代码点。

   SPECIFIC CLASS DISALLOWED  Those code points that are not to be
      included in one of the string classes but that might be permitted
      in others.  In the remainder of this document, the abbreviated
      term *_DIS is used, where * = (ID | FREE), i.e., either "FREE_DIS"
      or "ID_DIS".  In practice, the derived property FREE_DIS is not
      used in this specification, since every FREE_DIS code point is
      DISALLOWED.
        
   SPECIFIC CLASS DISALLOWED  Those code points that are not to be
      included in one of the string classes but that might be permitted
      in others.  In the remainder of this document, the abbreviated
      term *_DIS is used, where * = (ID | FREE), i.e., either "FREE_DIS"
      or "ID_DIS".  In practice, the derived property FREE_DIS is not
      used in this specification, since every FREE_DIS code point is
      DISALLOWED.
        

UNASSIGNED Those code points that are not designated (i.e., are unassigned) in the Unicode Standard.

未指定在Unicode标准中未指定(即未指定)的代码点。

The algorithm to calculate the value of the derived property is as follows (implementations MUST NOT modify the order of operations within this algorithm, since doing so would cause inconsistent results across implementations):

计算派生属性值的算法如下(实现不得修改此算法中的操作顺序,因为这样做会导致实现之间的结果不一致):

   If .cp. .in. Exceptions Then Exceptions(cp);
   Else If .cp. .in. BackwardCompatible Then BackwardCompatible(cp);
   Else If .cp. .in. Unassigned Then UNASSIGNED;
   Else If .cp. .in. ASCII7 Then PVALID;
   Else If .cp. .in. JoinControl Then CONTEXTJ;
   Else If .cp. .in. OldHangulJamo Then DISALLOWED;
   Else If .cp. .in. PrecisIgnorableProperties Then DISALLOWED;
   Else If .cp. .in. Controls Then DISALLOWED;
   Else If .cp. .in. HasCompat Then ID_DIS or FREE_PVAL;
   Else If .cp. .in. LetterDigits Then PVALID;
   Else If .cp. .in. OtherLetterDigits Then ID_DIS or FREE_PVAL;
   Else If .cp. .in. Spaces Then ID_DIS or FREE_PVAL;
   Else If .cp. .in. Symbols Then ID_DIS or FREE_PVAL;
   Else If .cp. .in. Punctuation Then ID_DIS or FREE_PVAL;
   Else DISALLOWED;
        
   If .cp. .in. Exceptions Then Exceptions(cp);
   Else If .cp. .in. BackwardCompatible Then BackwardCompatible(cp);
   Else If .cp. .in. Unassigned Then UNASSIGNED;
   Else If .cp. .in. ASCII7 Then PVALID;
   Else If .cp. .in. JoinControl Then CONTEXTJ;
   Else If .cp. .in. OldHangulJamo Then DISALLOWED;
   Else If .cp. .in. PrecisIgnorableProperties Then DISALLOWED;
   Else If .cp. .in. Controls Then DISALLOWED;
   Else If .cp. .in. HasCompat Then ID_DIS or FREE_PVAL;
   Else If .cp. .in. LetterDigits Then PVALID;
   Else If .cp. .in. OtherLetterDigits Then ID_DIS or FREE_PVAL;
   Else If .cp. .in. Spaces Then ID_DIS or FREE_PVAL;
   Else If .cp. .in. Symbols Then ID_DIS or FREE_PVAL;
   Else If .cp. .in. Punctuation Then ID_DIS or FREE_PVAL;
   Else DISALLOWED;
        

The value of the derived property calculated can depend on the string class; for example, if an identifier used in an application protocol is defined as profiling the PRECIS IdentifierClass then a space character such as U+0020 would be assigned to ID_DIS, whereas if an identifier is defined as profiling the PRECIS FreeformClass then the character would be assigned to FREE_PVAL. For the sake of brevity, the designation "FREE_PVAL" is used herein, instead of the longer designation "ID_DIS or FREE_PVAL". In practice, the derived properties ID_PVAL and FREE_DIS are not used in this specification, since every ID_PVAL code point is PVALID and every FREE_DIS code point is DISALLOWED.

计算的派生属性的值可以取决于string类;例如,如果应用程序协议中使用的标识符定义为评测PRECIS IdentifierClass,则U+0020等空格字符将分配给ID_DIS,而如果标识符定义为评测PRECIS FreeformClass,则该字符将分配给FREE_PVAL。为简洁起见,此处使用名称“FREE_PVAL”,而不是较长的名称“ID_DIS或FREE_PVAL”。实际上,本规范中未使用派生属性ID_PVAL和FREE_DIS,因为每个ID_PVAL代码点都是PVALID,而每个FREE_DIS代码点都是不允许的。

Use of the name of a rule (such as "Exceptions") implies the set of code points that the rule defines, whereas the same name as a function call (such as "Exceptions(cp)") implies the value that the code point has in the Exceptions table.

使用规则名称(如“Exceptions”)意味着规则定义的代码点集,而与函数调用相同的名称(如“Exceptions(cp)”)则意味着代码点在Exceptions表中的值。

The mechanisms described here allow determination of the value of the property for future versions of Unicode (including characters added after Unicode 5.2 or 7.0 depending on the category, since some categories mentioned in this document are simply pointers to IDNA2008 and therefore were defined at the time of Unicode 5.2). Changes in Unicode properties that do not affect the outcome of this process therefore do not affect this framework. For example, a character can have its Unicode General_Category value (at the time of this writing, see Chapter 4 of [Unicode7.0]) change from So to Sm, or from Lo to Ll, without affecting the algorithm results. Moreover, even if such changes were to result, the BackwardCompatible list (Section 9.7) can be adjusted to ensure the stability of the results.

此处描述的机制允许确定未来版本Unicode的属性值(包括根据类别在Unicode 5.2或7.0之后添加的字符,因为本文档中提到的某些类别只是指向IDNA2008的指针,因此在Unicode 5.2时定义)。因此,Unicode属性中不会影响此过程结果的更改不会影响此框架。例如,一个字符可以将其Unicode General_类别值(撰写本文时,请参见[Unicode7.0]第4章)从So更改为Sm,或从Lo更改为Ll,而不会影响算法结果。此外,即使会产生此类变化,也可以调整后向兼容列表(第9.7节),以确保结果的稳定性。

9. Category Definitions Used to Calculate Derived Property
9. 用于计算派生特性的类别定义

The derived property obtains its value based on a two-step procedure:

派生属性基于两步过程获取其值:

1. Characters are placed in one or more character categories either (1) based on core properties defined by the Unicode Standard or (2) by treating the code point as an exception and addressing the code point based on its code point value. These categories are not mutually exclusive.

1. 字符被放置在一个或多个字符类别中,(1)基于Unicode标准定义的核心属性,或(2)通过将代码点视为例外并基于其代码点值寻址代码点。这些类别并非相互排斥。

2. Set operations are used with these categories to determine the values for a property specific to a given string class. These operations are specified under Section 8.

2. 集合操作与这些类别一起使用,以确定特定于给定字符串类的属性的值。第8节规定了这些操作。

Note: Unicode property names and property value names might have short abbreviations, such as "gc" for the General_Category property and "Ll" for the Lowercase_Letter property value of the gc property.

注意:Unicode属性名称和属性值名称可能有简短的缩写,例如“gc”表示常规类别属性,而“Ll”表示gc属性的小写字母属性值。

In the following specification of character categories, the operation that returns the value of a particular Unicode character property for a code point is designated by using the formal name of that property (from the Unicode PropertyAliases.txt file [PropertyAliases] followed by "(cp)" for "code point". For example, the value of the General_Category property for a code point is indicated by General_Category(cp).

在下面的字符类别规范中,返回代码点的特定Unicode字符属性值的操作是通过使用该属性的正式名称来指定的(从Unicode PropertyAliases.txt文件[PropertyAliases]中,后跟表示“代码点”的“(cp)”。例如,代码点的General_Category属性的值由General_Category(cp)表示。

The first ten categories (A-J) shown below were previously defined for IDNA2008 and are referenced from [RFC5892] to ease the understanding of how PRECIS handles various characters. Some of these categories are reused in PRECIS, and some of them are not; however, the lettering of categories is retained to prevent overlap and to ease implementation of both IDNA2008 and PRECIS in a single software application. The next eight categories (K-R) are specific to PRECIS.

下面所示的前十个类别(A-J)先前是为IDNA2008定义的,参考[RFC5892],以便于理解PRECIS如何处理各种字符。这些类别中的一些在PRECIS中重用,而另一些则没有;但是,保留类别的字母,以防止重叠,并简化IDNA2008和PRECIS在单个软件应用程序中的实现。接下来的八个类别(K-R)是PRECIS特有的。

9.1. LetterDigits (A)
9.1. 字母数字(A)

This category is defined in Section 2.1 of [RFC5892] and is included by reference for use in PRECIS.

该类别在[RFC5892]的第2.1节中定义,并通过引用包含在PRECIS中使用。

9.2. Unstable (B)
9.2. 不稳定(B)

This category is defined in Section 2.2 of [RFC5892]. However, it is not used in PRECIS.

该类别在[RFC5892]第2.2节中定义。但是,PRECIS中未使用此选项。

9.3. IgnorableProperties (C)
9.3. 可忽略属性(C)

This category is defined in Section 2.3 of [RFC5892]. However, it is not used in PRECIS.

该类别在[RFC5892]第2.3节中定义。但是,PRECIS中未使用此选项。

Note: See the PrecisIgnorableProperties ("M") category below for a more inclusive category used in PRECIS identifiers.

注:请参见下面的PrecisionOrableProperties(“M”)类别,了解PRECIS标识符中使用的更具包容性的类别。

9.4. IgnorableBlocks (D)
9.4. 可忽略块(D)

This category is defined in Section 2.4 of [RFC5892]. However, it is not used in PRECIS.

该类别在[RFC5892]第2.4节中定义。但是,PRECIS中未使用此选项。

9.5. LDH (E)
9.5. 乳酸脱氢酶(E)

This category is defined in Section 2.5 of [RFC5892]. However, it is not used in PRECIS.

该类别在[RFC5892]第2.5节中定义。但是,PRECIS中未使用此选项。

Note: See the ASCII7 ("K") category below for a more inclusive category used in PRECIS identifiers.

注:有关PRECIS标识符中使用的更具包容性的类别,请参见下面的ASCII7(“K”)类别。

9.6. Exceptions (F)
9.6. 例外情况(F)

This category is defined in Section 2.6 of [RFC5892] and is included by reference for use in PRECIS.

该类别在[RFC5892]的第2.6节中定义,并通过引用包含在PRECIS中使用。

9.7. BackwardCompatible (G)
9.7. 向后兼容(G)

This category is defined in Section 2.7 of [RFC5892] and is included by reference for use in PRECIS.

该类别在[RFC5892]第2.7节中有定义,并通过引用包含在PRECIS中使用。

Note: Management of this category is handled via the processes specified in [RFC5892]. At the time of this writing (and also at the time that RFC 5892 was published), this category consisted of the empty set; however, that is subject to change as described in RFC 5892.

注:此类管理通过[RFC5892]中规定的流程进行处理。在撰写本文时(以及RFC 5892出版时),该类别由空集组成;但是,如RFC 5892所述,这可能会发生变化。

9.8. JoinControl (H)
9.8. 联合控制(H)

This category is defined in Section 2.8 of [RFC5892] and is included by reference for use in PRECIS.

该类别在[RFC5892]的第2.8节中定义,并通过引用包含在PRECIS中使用。

9.9. OldHangulJamo (I)
9.9. OldHangulJamo(一)

This category is defined in Section 2.9 of [RFC5892] and is included by reference for use in PRECIS.

该类别在[RFC5892]的第2.9节中定义,并通过引用包含在PRECIS中使用。

9.10. Unassigned (J)
9.10. 未分配(J)

This category is defined in Section 2.10 of [RFC5892] and is included by reference for use in PRECIS.

该类别在[RFC5892]的第2.10节中定义,并通过引用包含在PRECIS中使用。

9.11. ASCII7 (K)
9.11. ASCII7(K)

This PRECIS-specific category consists of all printable, non-space characters from the 7-bit ASCII range. By applying this category, the algorithm specified under Section 8 exempts these characters from other rules that might be applied during PRECIS processing, on the assumption that these code points are in such wide use that disallowing them would be counter-productive.

此PRECIS特定类别由7位ASCII范围内的所有可打印非空格字符组成。通过应用这一类别,第8节中指定的算法将这些字符从PRECIS处理过程中可能应用的其他规则中豁免,前提是这些代码点的使用非常广泛,如果不允许它们,将适得其反。

   K: cp is in {0021..007E}
        
   K: cp is in {0021..007E}
        
9.12. Controls (L)
9.12. 控制(L)

This PRECIS-specific category consists of all control characters.

此PRECIS特定类别由所有控制字符组成。

   L: Control(cp) = True
        
   L: Control(cp) = True
        
9.13. PrecisIgnorableProperties (M)
9.13. 可沉淀性(M)

This PRECIS-specific category is used to group code points that are discouraged from use in PRECIS string classes.

此PRECIS特定类别用于对不建议在PRECIS字符串类中使用的代码点进行分组。

   M: Default_Ignorable_Code_Point(cp) = True or
      Noncharacter_Code_Point(cp) = True
        
   M: Default_Ignorable_Code_Point(cp) = True or
      Noncharacter_Code_Point(cp) = True
        

The definition for Default_Ignorable_Code_Point can be found in the DerivedCoreProperties.txt file [DerivedCoreProperties].

可在DerivedCoreProperties.txt文件[DerivedCoreProperties]中找到默认可忽略代码点的定义。

9.14. Spaces (N)
9.14. 空格(N)

This PRECIS-specific category is used to group code points that are space characters.

此PRECIS特定类别用于对作为空格字符的代码点进行分组。

   N: General_Category(cp) is in {Zs}
        
   N: General_Category(cp) is in {Zs}
        
9.15. Symbols (O)
9.15. 符号(O)

This PRECIS-specific category is used to group code points that are symbols.

此PRECIS特定类别用于对作为符号的代码点进行分组。

   O: General_Category(cp) is in {Sm, Sc, Sk, So}
        
   O: General_Category(cp) is in {Sm, Sc, Sk, So}
        
9.16. Punctuation (P)
9.16. 标点符号(P)

This PRECIS-specific category is used to group code points that are punctuation characters.

此PRECIS特定类别用于对标点符号的代码点进行分组。

   P: General_Category(cp) is in {Pc, Pd, Ps, Pe, Pi, Pf, Po}
        
   P: General_Category(cp) is in {Pc, Pd, Ps, Pe, Pi, Pf, Po}
        
9.17. HasCompat (Q)
9.17. HasCompat(Q)

This PRECIS-specific category is used to group code points that have compatibility equivalents as explained in the Unicode Standard (at the time of this writing, see Chapters 2 and 3 of [Unicode7.0]).

此PRECIS特定类别用于对具有Unicode标准中解释的兼容性等价物的代码点进行分组(撰写本文时,请参见[Unicode7.0]的第2章和第3章)。

   Q: toNFKC(cp) != cp
        
   Q: toNFKC(cp) != cp
        

The toNFKC() operation returns the code point in normalization form KC. For more information, see Section 5 of Unicode Standard Annex #15 [UAX15].

操作以规范化形式KC返回代码点。有关更多信息,请参阅Unicode标准附录15[UAX15]第5节。

9.18. OtherLetterDigits (R)
9.18. 其他字母数字(R)

This PRECIS-specific category is used to group code points that are letters and digits other than the "traditional" letters and digits grouped under the LetterDigits (A) class (see Section 9.1).

该PRECIS特定类别用于对字母和数字的代码点进行分组,而不是按字母数字(A)类别分组的“传统”字母和数字(见第9.1节)。

   R: General_Category(cp) is in {Lt, Nl, No, Me}
        
   R: General_Category(cp) is in {Lt, Nl, No, Me}
        
10. Guidelines for Designated Experts
10. 指定专家指南

Experience with internationalization in application protocols has shown that protocol designers and application developers usually do not understand the subtleties and tradeoffs involved with internationalization and that they need considerable guidance in making reasonable decisions with regard to the options before them.

应用程序协议国际化的经验表明,协议设计人员和应用程序开发人员通常不了解国际化所涉及的微妙之处和权衡,他们需要大量的指导,以便就摆在他们面前的选项做出合理的决策。

Therefore:

因此:

o Protocol designers are strongly encouraged to question the assumption that they need to define new profiles, since existing profiles are designed for wide reuse (see Section 5 for further discussion).

o 强烈鼓励协议设计人员质疑他们需要定义新概要文件的假设,因为现有概要文件是为广泛重用而设计的(更多讨论请参见第5节)。

o Those who persist in defining new profiles are strongly encouraged to clearly explain a strong justification for doing so, and to publish a stable specification that provides all of the information described under Section 11.3.

o 强烈鼓励坚持定义新概要文件的人明确解释这样做的充分理由,并发布一份稳定的规范,提供第11.3节所述的所有信息。

o The designated experts for profile registration requests ought to seek answers to all of the questions provided under Section 11.3 and to encourage applicants to provide a stable specification documenting the profile (even though the registration policy for PRECIS profiles is Expert Review and a stable specification is not strictly required).

o 配置文件注册请求的指定专家应寻求第11.3节下提供的所有问题的答案,并鼓励申请人提供记录配置文件的稳定规范(即使PRECIS配置文件的注册政策为专家审查,且不严格要求稳定规范)。

o Developers of applications that use PRECIS are strongly encouraged to apply the guidelines provided under Section 6 and to seek out the advice of the designated experts or other knowledgeable individuals in doing so.

o 强烈鼓励使用PRECIS的应用程序开发人员应用第6节提供的指南,并在这样做时征求指定专家或其他知识渊博的个人的建议。

o All parties are strongly encouraged to help prevent the multiplication of profiles beyond necessity, as described under Section 5.1, and to use PRECIS in ways that will minimize user confusion and insecure application behavior.

o 如第5.1节所述,强烈鼓励各方帮助防止不必要的概要文件倍增,并以将用户混淆和不安全的应用程序行为降至最低的方式使用PRECIS。

Internationalization can be difficult and contentious; designated experts, profile registrants, and application developers are strongly encouraged to work together in a spirit of good faith and mutual understanding to achieve rough consensus on profile registration requests and the use of PRECIS in particular applications. They are also encouraged to bring additional expertise into the discussion if that would be helpful in adding perspective or otherwise resolving issues.

国际化可能是困难和有争议的;强烈鼓励指定专家、概要文件注册人和应用程序开发人员本着诚信和相互理解的精神共同努力,就概要文件注册请求和在特定应用程序中使用PRECIS达成大致共识。还鼓励他们在讨论中引入更多的专业知识,如果这有助于增加观点或以其他方式解决问题。

11. IANA Considerations
11. IANA考虑
11.1. PRECIS Derived Property Value Registry
11.1. PRECIS派生属性值注册表

IANA has created and now maintains the "PRECIS Derived Property Value" registry that records the derived properties for the versions of Unicode that are released after (and including) version 7.0. The derived property value is to be calculated in cooperation with a designated expert [RFC5226] according to the rules specified under Sections 8 and 9.

IANA已经创建并维护了“PRECIS派生属性值”注册表,该注册表记录了7.0版之后(包括7.0版)发布的Unicode版本的派生属性。根据第8节和第9节规定的规则,与指定专家[RFC5226]合作计算衍生财产价值。

The IESG is to be notified if backward-incompatible changes to the table of derived properties are discovered or if other problems arise during the process of creating the table of derived property values or during expert review. Changes to the rules defined under Sections 8 and 9 require IETF Review.

如果发现派生属性表的向后不兼容更改,或者在创建派生属性值表的过程中或在专家审查期间出现其他问题,则应通知IESG。第8节和第9节规定的规则变更需要IETF审查。

11.2. PRECIS Base Classes Registry
11.2. PRECIS基类注册表

IANA has created the "PRECIS Base Classes" registry. In accordance with [RFC5226], the registration policy is "RFC Required".

IANA已经创建了“PRECIS基类”注册表。根据[RFC5226],注册政策为“需要RFC”。

The registration template is as follows:

注册模板如下:

Base Class: [the name of the PRECIS string class]

基类:[PRECIS字符串类的名称]

Description: [a brief description of the PRECIS string class and its intended use, e.g., "A sequence of letters, numbers, and symbols that is used to identify or address a network entity."]

描述:[PRECIS字符串类及其预期用途的简要说明,例如,“用于标识或寻址网络实体的字母、数字和符号序列。”]

Specification: [the RFC number]

规格:[RFC编号]

The initial registrations are as follows:

初步注册情况如下:

Base Class: FreeformClass. Description: A sequence of letters, numbers, symbols, spaces, and other code points that is used for free-form strings. Specification: Section 4.3 of RFC 7564.

基类:FreeformClass。描述:用于自由格式字符串的字母、数字、符号、空格和其他代码点序列。规范:RFC 7564第4.3节。

Base Class: IdentifierClass. Description: A sequence of letters, numbers, and symbols that is used to identify or address a network entity. Specification: Section 4.2 of RFC 7564.

基类:IdentifierClass。描述:用于标识或寻址网络实体的字母、数字和符号序列。规范:RFC 7564第4.2节。

11.3. PRECIS Profiles Registry
11.3. PRECIS配置文件注册表

IANA has created the "PRECIS Profiles" registry to identify profiles that use the PRECIS string classes. In accordance with [RFC5226], the registration policy is "Expert Review". This policy was chosen in order to ease the burden of registration while ensuring that "customers" of PRECIS receive appropriate guidance regarding the sometimes complex and subtle internationalization issues related to profiles of PRECIS string classes.

IANA创建了“PRECIS配置文件”注册表,以识别使用PRECIS字符串类的配置文件。根据[RFC5226],注册政策为“专家审查”。选择这一政策是为了减轻注册负担,同时确保PRECIS的“客户”能够就与PRECIS字符串类概要文件相关的有时复杂而微妙的国际化问题获得适当的指导。

The registration template is as follows:

注册模板如下:

Name: [the name of the profile]

名称:[配置文件的名称]

Base Class: [which PRECIS string class is being profiled]

基类:[正在分析哪个PRECIS字符串类]

Applicability: [the specific protocol elements to which this profile applies, e.g., "Localparts in XMPP addresses."]

适用性:[此配置文件适用的特定协议元素,例如,“XMPP地址中的Localparts”。]

Replaces: [the Stringprep profile that this PRECIS profile replaces, if any]

替换:[此PRECIS配置文件替换的Stringprep配置文件,如果有]

Width Mapping Rule: [the behavioral rule for handling of width, e.g., "Map fullwidth and halfwidth characters to their compatibility variants."]

宽度映射规则:[处理宽度的行为规则,例如,“将全宽和半宽字符映射到其兼容变体。”]

Additional Mapping Rule: [any additional mappings that are required or recommended, e.g., "Map non-ASCII space characters to ASCII space."]

附加映射规则:[需要或建议的任何附加映射,例如,“将非ASCII空格字符映射到ASCII空格。”]

Case Mapping Rule: [the behavioral rule for handling of case, e.g., "Unicode Default Case Folding"]

案例映射规则:[处理案例的行为规则,例如,“Unicode默认案例折叠”]

Normalization Rule: [which Unicode normalization form is applied, e.g., "NFC"]

规范化规则:[应用哪个Unicode规范化表单,例如,“NFC”]

Directionality Rule: [the behavioral rule for handling of right-to-left code points, e.g., "The 'Bidi Rule' defined in RFC 5893 applies."]

方向性规则:[处理从右到左代码点的行为规则,例如,“RFC 5893中定义的‘Bidi规则’适用。”]

Enforcement: [which entities enforce the rules, and when that enforcement occurs during protocol operations]

强制执行:[哪些实体强制执行规则,以及在协议操作期间强制执行的时间]

Specification: [a pointer to relevant documentation, such as an RFC or Internet-Draft]

规范:[指向相关文档的指针,如RFC或互联网草稿]

In order to request a review, the registrant shall send a completed template to the precis@ietf.org list or its designated successor.

为了请求审查,注册人应向precis@ietf.org名单或其指定的继任者。

Factors to focus on while defining profiles and reviewing profile registrations include the following:

定义配置文件和审查配置文件注册时需要关注的因素包括:

o Would an existing PRECIS string class or profile solve the problem? If not, why not? (See Section 5.1 for related considerations.)

o 现有的PRECIS字符串类或配置文件能否解决此问题?若否,原因为何?(有关注意事项,请参见第5.1节。)

o Is the problem being addressed by this profile well defined?

o 此概要文件解决的问题是否定义良好?

o Does the specification define what kinds of applications are involved and the protocol elements to which this profile applies?

o 规范是否定义了所涉及的应用程序类型以及此概要文件适用的协议元素?

o Is the profile clearly defined?

o 轮廓是否明确定义?

o Is the profile based on an appropriate dividing line between user interface (culture, context, intent, locale, device limitations, etc.) and the use of conformant strings in protocol elements?

o 配置文件是否基于用户界面(文化、上下文、意图、区域设置、设备限制等)和协议元素中一致字符串的使用之间的适当分界线?

o Are the width mapping, case mapping, additional mappings, normalization, and directionality rules appropriate for the intended use?

o 宽度映射、大小写映射、附加映射、规范化和方向性规则是否适合预期用途?

o Does the profile explain which entities enforce the rules, and when such enforcement occurs during protocol operations?

o 概要文件是否解释了哪些实体执行规则,以及在协议操作期间何时执行规则?

o Does the profile reduce the degree to which human users could be surprised or confused by application behavior (the "Principle of Least Astonishment")?

o 该概要文件是否降低了人类用户对应用程序行为感到惊讶或困惑的程度(“最少惊讶原则”)?

o Does the profile introduce any new security concerns such as those described under Section 12 of this document (e.g., false positives for authentication or authorization)?

o 该概要文件是否引入了任何新的安全问题,如本文件第12节所述的问题(例如,认证或授权的误报)?

12. Security Considerations
12. 安全考虑
12.1. General Issues
12.1. 一般问题

If input strings that appear "the same" to users are programmatically considered to be distinct in different systems, or if input strings that appear distinct to users are programmatically considered to be "the same" in different systems, then users can be confused. Such confusion can have security implications, such as the false positives and false negatives discussed in [RFC6943]. One starting goal of work on the PRECIS framework was to limit the number of times that users are confused (consistent with the "Principle of Least Astonishment"). Unfortunately, this goal has been difficult to achieve given the large number of application protocols already in existence. Despite these difficulties, profiles should not be

如果在不同的系统中,以编程方式将用户看起来“相同”的输入字符串视为不同的,或者如果以编程方式将用户看起来不同的输入字符串视为在不同的系统中“相同”,则可能会混淆用户。这种混淆可能会带来安全隐患,如[RFC6943]中讨论的误报和误报。PRECIS框架工作的一个初始目标是限制用户感到困惑的次数(符合“最小惊讶原则”)。不幸的是,鉴于已经存在大量的应用程序协议,这一目标很难实现。尽管存在这些困难,但不应使用配置文件

multiplied beyond necessity (see Section 5.1). In particular, application protocol designers should think long and hard before defining a new profile instead of using one that has already been defined, and if they decide to define a new profile then they should clearly explain their reasons for doing so.

超出必要的倍数(见第5.1节)。特别是,应用程序协议设计人员在定义一个新的概要文件之前应该仔细考虑,而不是使用一个已经定义的概要文件,如果他们决定定义一个新的概要文件,那么他们应该清楚地解释这样做的原因。

The security of applications that use this framework can depend in part on the proper preparation, enforcement, and comparison of internationalized strings. For example, such strings can be used to make authentication and authorization decisions, and the security of an application could be compromised if an entity providing a given string is connected to the wrong account or online resource based on different interpretations of the string (again, see [RFC6943]).

使用此框架的应用程序的安全性部分取决于国际化字符串的正确准备、执行和比较。例如,此类字符串可用于做出身份验证和授权决策,如果提供给定字符串的实体根据字符串的不同解释连接到错误的帐户或在线资源,则应用程序的安全性可能会受到损害(同样,请参见[RFC6943])。

Specifications of application protocols that use this framework are strongly encouraged to describe how internationalized strings are used in the protocol, including the security implications of any false positives and false negatives that might result from various enforcement and comparison operations. For some helpful guidelines, refer to [RFC6943], [RFC5890], [UTR36], and [UTS39].

强烈建议使用此框架的应用程序协议规范描述如何在协议中使用国际化字符串,包括各种强制和比较操作可能导致的任何误报和误报的安全含义。有关一些有用的指南,请参阅[RFC6943]、[RFC5890]、[UTR36]和[UTS39]。

12.2. Use of the IdentifierClass
12.2. IdentifierClass的使用

Strings that conform to the IdentifierClass and any profile thereof are intended to be relatively safe for use in a broad range of applications, primarily because they include only letters, digits, and "grandfathered" non-space characters from the ASCII range; thus, they exclude spaces, characters with compatibility equivalents, and almost all symbols and punctuation marks. However, because such strings can still include so-called confusable characters (see Section 12.5), protocol designers and implementers are encouraged to pay close attention to the security considerations described elsewhere in this document.

符合IdentifierClass及其任何配置文件的字符串旨在在广泛的应用中相对安全地使用,主要是因为它们仅包括ASCII范围内的字母、数字和“加粗”非空格字符;因此,它们排除了空格、具有兼容等价物的字符以及几乎所有的符号和标点符号。但是,由于此类字符串仍可能包含所谓的可混淆字符(见第12.5节),因此鼓励协议设计者和实现者密切关注本文档其他地方描述的安全注意事项。

12.3. Use of the FreeformClass
12.3. FreeformClass的使用

Strings that conform to the FreeformClass and many profiles thereof can include virtually any Unicode character. This makes the FreeformClass quite expressive, but also problematic from the perspective of possible user confusion. Protocol designers are hereby warned that the FreeformClass contains code points they might not understand, and are encouraged to profile the IdentifierClass wherever feasible; however, if an application protocol requires more code points than are allowed by the IdentifierClass, protocol designers are encouraged to define a profile of the FreeformClass that restricts the allowable code points as tightly as possible.

符合FreeformClass及其许多配置文件的字符串可以包含几乎任何Unicode字符。这使得FreeformClass非常有表现力,但从用户可能感到困惑的角度来看,它也有问题。特此警告协议设计者,FreeformClass包含他们可能不理解的代码点,并鼓励他们在可行的情况下分析IdentifierClass;但是,如果应用程序协议需要的代码点多于IdentifierClass允许的代码点,则鼓励协议设计人员定义FreeformClass的概要文件,以尽可能严格地限制允许的代码点。

(The PRECIS Working Group considered the option of allowing "superclasses" as well as profiles of PRECIS string classes, but decided against allowing superclasses to reduce the likelihood of security and interoperability problems.)

(PRECIS工作组考虑了允许使用“超类”以及PRECIS字符串类的配置文件的选项,但决定不允许使用超类来降低安全性和互操作性问题的可能性。)

12.4. Local Character Set Issues
12.4. 局部字符集问题

When systems use local character sets other than ASCII and Unicode, this specification leaves the problem of converting between the local character set and Unicode up to the application or local system. If different applications (or different versions of one application) implement different rules for conversions among coded character sets, they could interpret the same name differently and contact different application servers or other network entities. This problem is not solved by security protocols, such as Transport Layer Security (TLS) [RFC5246] and the Simple Authentication and Security Layer (SASL) [RFC4422], that do not take local character sets into account.

当系统使用ASCII和Unicode以外的本地字符集时,本规范将本地字符集和Unicode之间的转换问题留给应用程序或本地系统。如果不同的应用程序(或一个应用程序的不同版本)在编码字符集之间实现不同的转换规则,它们可能会对同一名称进行不同的解释,并联系不同的应用程序服务器或其他网络实体。安全协议(如传输层安全协议(TLS)[RFC5246]和简单身份验证和安全层协议(SASL)[RFC4422])无法解决此问题,这些协议不考虑本地字符集。

12.5. Visually Similar Characters
12.5. 视觉上相似的字符

Some characters are visually similar and thus can cause confusion among humans. Such characters are often called "confusable characters" or "confusables".

有些角色在视觉上很相似,因此可能会引起人类之间的混淆。这些字符通常被称为“易混淆字符”或“易混淆字符”。

The problem of confusable characters is not necessarily caused by the use of Unicode code points outside the ASCII range. For example, in some presentations and to some individuals the string "ju1iet" (spelled with DIGIT ONE, U+0031, as the third character) might appear to be the same as "juliet" (spelled with LATIN SMALL LETTER L, U+006C), especially on casual visual inspection. This phenomenon is sometimes called "typejacking".

易混淆字符的问题不一定是由于使用ASCII范围以外的Unicode代码点造成的。例如,在某些演示文稿中,对某些人来说,字符串“ju1iet”(第三个字符为数字1,U+0031)可能与“juliet”(拉丁字母L,U+006C)相同,尤其是在进行随意的目视检查时。这种现象有时被称为“类型劫持”。

However, the problem is made more serious by introducing the full range of Unicode code points into protocol strings. For example, the characters U+13DA U+13A2 U+13B5 U+13AC U+13A2 U+13AC U+13D2 from the Cherokee block look similar to the ASCII characters "STPETER" as they might appear when presented using a "creative" font family.

然而,通过在协议字符串中引入全范围的Unicode代码点,问题变得更加严重。例如,切诺基块中的字符U+13DA U+13A2 U+13B5 U+13AC U+13A2 U+13AC U+13D2看起来类似于ASCII字符“STPETER”,因为它们在使用“创造性”字体系列呈现时可能会出现。

In some examples of confusable characters, it is unlikely that the average human could tell the difference between the real string and the fake string. (Indeed, there is no programmatic way to distinguish with full certainty which is the fake string and which is the real string; in some contexts, the string formed of Cherokee characters might be the real string and the string formed of ASCII characters might be the fake string.) Because PRECIS-compliant strings can contain almost any properly encoded Unicode code point, it can be relatively easy to fake or mimic some strings in systems that use the PRECIS framework. The fact that some strings are easily

在一些易混淆字符的示例中,普通人不太可能分辨出真字符串和假字符串之间的区别。(事实上,没有编程方法可以完全确定地区分哪个是假字符串,哪个是真字符串;在某些上下文中,由切诺基字符组成的字符串可能是真字符串,而由ASCII字符组成的字符串可能是假字符串。)由于与PRECIS兼容的字符串几乎可以包含任何正确编码的Unicode代码点,因此在使用PRECIS框架的系统中,伪造或模拟某些字符串相对容易。事实上,有些字符串很容易

confused introduces security vulnerabilities of the kind that have also plagued the World Wide Web, specifically the phenomenon known as phishing.

混乱引入了同样困扰万维网的安全漏洞,特别是被称为网络钓鱼的现象。

Despite the fact that some specific suggestions about identification and handling of confusable characters appear in the Unicode Security Considerations [UTR36] and the Unicode Security Mechanisms [UTS39], it is also true (as noted in [RFC5890]) that "there are no comprehensive technical solutions to the problems of confusable characters." Because it is impossible to map visually similar characters without a great deal of context (such as knowing the font families used), the PRECIS framework does nothing to map similar-looking characters together, nor does it prohibit some characters because they look like others.

尽管Unicode安全注意事项[UTR36]和Unicode安全机制[UTS39]中出现了一些关于易混淆字符的识别和处理的具体建议,但(如[RFC5890]中所述)“对于易混淆字符的问题没有全面的技术解决方案”也是正确的因为在没有大量上下文的情况下(例如知道所使用的字体系列),不可能在视觉上映射相似的字符,PRECIS框架不会将相似的字符映射到一起,也不会因为某些字符看起来像其他字符而禁止它们。

Nevertheless, specifications for application protocols that use this framework are strongly encouraged to describe how confusable characters can be abused to compromise the security of systems that use the protocol in question, along with any protocol-specific suggestions for overcoming those threats. In particular, software implementations and service deployments that use PRECIS-based technologies are strongly encouraged to define and implement consistent policies regarding the registration, storage, and presentation of visually similar characters. The following recommendations are appropriate:

然而,强烈鼓励使用此框架的应用程序协议规范描述可混淆字符如何被滥用以危害使用该协议的系统的安全性,以及克服这些威胁的任何特定于协议的建议。特别是,强烈鼓励使用基于PRECIS的技术的软件实施和服务部署定义和实施有关视觉相似字符的注册、存储和表示的一致策略。以下建议是适当的:

1. An application service SHOULD define a policy that specifies the scripts or blocks of characters that the service will allow to be registered (e.g., in an account name) or stored (e.g., in a filename). Such a policy SHOULD be informed by the languages and scripts that are used to write registered account names; in particular, to reduce confusion, the service SHOULD forbid registration or storage of strings that contain characters from more than one script and SHOULD restrict registrations to characters drawn from a very small number of scripts (e.g., scripts that are well understood by the administrators of the service, to improve manageability).

1. 应用程序服务应定义一个策略,指定服务将允许注册(例如,在帐户名中)或存储(例如,在文件名中)的脚本或字符块。此类政策应通过用于书写注册账户名称的语言和脚本进行通知;特别是,为了减少混淆,服务应禁止注册或存储包含多个脚本中的字符的字符串,并应将注册限制为从极少量脚本中提取的字符(例如,服务管理员非常了解的脚本,以提高可管理性)。

2. User-oriented application software SHOULD define a policy that specifies how internationalized strings will be presented to a human user. Because every human user of such software has a preferred language or a small set of preferred languages, the software SHOULD gather that information either explicitly from the user or implicitly via the operating system of the user's device. Furthermore, because most languages are typically represented by a single script or a small set of scripts, and because most scripts are typically contained in one or more blocks of characters, the software SHOULD warn the user when

2. 面向用户的应用程序软件应该定义一个策略,指定如何将国际化字符串呈现给人类用户。由于此类软件的每个人类用户都有一种首选语言或一小部分首选语言,因此该软件应明确地从用户处或通过用户设备的操作系统隐式地收集该信息。此外,由于大多数语言通常由一个脚本或一小部分脚本表示,并且大多数脚本通常包含在一个或多个字符块中,因此软件应在出现错误时向用户发出警告

presenting a string that mixes characters from more than one script or block, or that uses characters outside the normal range of the user's preferred language(s). (Such a recommendation is not intended to discourage communication across different communities of language users; instead, it recognizes the existence of such communities and encourages due caution when presenting unfamiliar scripts or characters to human users.)

呈现一个字符串,该字符串混合来自多个脚本或块的字符,或使用用户首选语言正常范围之外的字符。(这样的建议并不是为了阻止不同语言用户社区之间的交流;相反,它承认存在这样的社区,并鼓励在向人类用户呈现不熟悉的脚本或字符时谨慎行事。)

The challenges inherent in supporting the full range of Unicode code points have in the past led some to hope for a way to programmatically negotiate more restrictive ranges based on locale, script, or other relevant factors; to tag the locale associated with a particular string; etc. As a general-purpose internationalization technology, the PRECIS framework does not include such mechanisms.

在过去,支持全范围Unicode代码点所固有的挑战使一些人希望找到一种基于区域设置、脚本或其他相关因素以编程方式协商更严格范围的方法;标记与特定字符串关联的区域设置;作为一种通用国际化技术,PRECIS框架不包括此类机制。

12.6. Security of Passwords
12.6. 密码的安全性

Two goals of passwords are to maximize the amount of entropy and to minimize the potential for false positives. These goals can be achieved in part by allowing a wide range of code points and by ensuring that passwords are handled in such a way that code points are not compared aggressively. Therefore, it is NOT RECOMMENDED for application protocols to profile the FreeformClass for use in passwords in a way that removes entire categories (e.g., by disallowing symbols or punctuation). Furthermore, it is NOT RECOMMENDED for application protocols to map uppercase and titlecase code points to their lowercase equivalents in such strings; instead, it is RECOMMENDED to preserve the case of all code points contained in such strings and to compare them in a case-sensitive manner.

密码的两个目标是最大化熵和最小化误报的可能性。这些目标可以通过允许范围广泛的代码点,并确保密码的处理方式不会对代码点进行激烈的比较来部分实现。因此,不建议应用程序协议以删除整个类别(例如,不允许使用符号或标点符号)的方式在密码中使用FreeformClass。此外,不建议应用程序协议将大写和titlecase代码点映射到此类字符串中的小写等价物;相反,建议保留此类字符串中包含的所有代码点的大小写,并以区分大小写的方式进行比较。

That said, software implementers need to be aware that there exist tradeoffs between entropy and usability. For example, allowing a user to establish a password containing "uncommon" code points might make it difficult for the user to access a service when using an unfamiliar or constrained input device.

也就是说,软件实现者需要意识到熵和可用性之间存在权衡。例如,允许用户建立包含“不常见”代码点的密码可能会使用户在使用不熟悉或受限的输入设备时难以访问服务。

Some application protocols use passwords directly, whereas others reuse technologies that themselves process passwords (one example of such a technology is the Simple Authentication and Security Layer [RFC4422]). Moreover, passwords are often carried by a sequence of protocols with backend authentication systems or data storage systems such as RADIUS [RFC2865] and the Lightweight Directory Access Protocol (LDAP) [RFC4510]. Developers of application protocols are encouraged to look into reusing these profiles instead of defining new ones, so that end-user expectations about passwords are consistent no matter which application protocol is used.

一些应用程序协议直接使用密码,而另一些则重用自己处理密码的技术(这种技术的一个例子是简单身份验证和安全层[RFC4422])。此外,密码通常由一系列具有后端身份验证系统或数据存储系统的协议携带,如RADIUS[RFC2865]和轻型目录访问协议(LDAP)[RFC4510]。鼓励应用程序协议的开发人员考虑重用这些配置文件,而不是定义新的配置文件,这样无论使用哪种应用程序协议,最终用户对密码的期望都是一致的。

In protocols that provide passwords as input to a cryptographic algorithm such as a hash function, the client will need to perform proper preparation of the password before applying the algorithm, since the password is not available to the server in plaintext form.

在提供密码作为密码算法(如散列函数)输入的协议中,客户端需要在应用算法之前对密码进行适当的准备,因为服务器无法以明文形式使用密码。

Further discussion of password handling can be found in [PRECIS-Users-Pwds].

有关密码处理的进一步讨论,请参见[PRECIS Users Pwds]。

13. Interoperability Considerations
13. 互操作性注意事项
13.1. Encoding
13.1. 编码

Although strings that are consumed in PRECIS-based application protocols are often encoded using UTF-8 [RFC3629], the exact encoding is a matter for the application protocol that uses PRECIS, not for the PRECIS framework.

尽管基于PRECIS的应用程序协议中使用的字符串通常使用UTF-8[RFC3629]进行编码,但准确的编码是使用PRECIS的应用程序协议的问题,而不是PRECIS框架的问题。

13.2. Character Sets
13.2. 字符集

It is known that some existing systems are unable to support the full Unicode character set, or even any characters outside the ASCII range. If two (or more) applications need to interoperate when exchanging data (e.g., for the purpose of authenticating a username or password), they will naturally need to have in common at least one coded character set (as defined by [RFC6365]). Establishing such a baseline is a matter for the application protocol that uses PRECIS, not for the PRECIS framework.

众所周知,一些现有系统无法支持完整的Unicode字符集,甚至无法支持ASCII范围之外的任何字符。如果两个(或更多)应用程序在交换数据时需要互操作(例如,为了验证用户名或密码),它们自然需要至少有一个共同的编码字符集(如[RFC6365]所定义)。建立这样的基线是使用PRECIS的应用程序协议的问题,而不是PRECIS框架的问题。

13.3. Unicode Versions
13.3. Unicode版本

Changes to the properties of Unicode code points can occur as the Unicode Standard is modified from time to time. For example, three code points underwent changes in their GeneralCategory between Unicode 5.2 (current at the time IDNA2008 was originally published) and Unicode 6.0, as described in [RFC6452]. Implementers might need to be aware that the treatment of these characters differs depending on which version of Unicode is available on the system that is using IDNA2008 or PRECIS. Other such differences might arise between the version of Unicode current at the time of this writing (7.0) and future versions.

随着Unicode标准的不断修改,Unicode代码点的属性可能会发生更改。例如,如[RFC6452]所述,Unicode 5.2(IDNA2008最初发布时的当前版本)和Unicode 6.0之间的三个代码点的通用类别发生了变化。实施者可能需要知道,根据使用IDNA2008或PRECIS的系统上可用的Unicode版本,这些字符的处理方式有所不同。在撰写本文时,Unicode当前版本(7.0)和未来版本之间可能会出现其他此类差异。

13.4. Potential Changes to Handling of Certain Unicode Code Points
13.4. 某些Unicode代码点处理的潜在更改

As part of the review of Unicode 7.0 for IDNA, a question was raised about a newly added code point that led to a re-analysis of the normalization rules used by IDNA and inherited by this document (Section 5.2.4). Some of the general issues are described in [IAB-Statement] and pursued in more detail in [IDNA-Unicode].

作为IDNA Unicode 7.0审查的一部分,提出了一个关于新添加的代码点的问题,该代码点导致重新分析IDNA使用并由本文档继承的规范化规则(第5.2.4节)。一些一般性问题在[IAB声明]中进行了描述,并在[IDNA Unicode]中进行了更详细的阐述。

At the time of writing, these issues have yet to be settled. However, implementers need to be aware that this specification is likely to be updated in the future to address these issues. The potential changes include the following:

在编写本报告时,这些问题尚未得到解决。然而,实现者需要意识到,为了解决这些问题,这个规范将来可能会更新。潜在的变化包括:

o The range of characters in the LetterDigits category (Sections 4.2.1 and 9.1) might be narrowed.

o 字母数字类别(第4.2.1节和第9.1节)中的字符范围可能会缩小。

o Some characters with special properties that are now allowed might be excluded.

o 某些具有现在允许的特殊属性的字符可能会被排除。

o More "Additional Mapping Rules" (Section 5.2.2) might be defined.

o 可能会定义更多的“附加映射规则”(第5.2.2节)。

o Alternative normalization methods might be added.

o 可以添加其他规范化方法。

Nevertheless, implementations and deployments that are sensitive to the advice given in this specification are unlikely to encounter significant problems as a consequence of these issues or potential changes -- specifically, the advice to use the more restrictive IdentifierClass whenever possible or, if using the FreeformClass, to allow only a restricted set of characters, particularly avoiding characters whose implications they do not actually understand.

尽管如此,对本规范中给出的建议敏感的实现和部署不太可能因这些问题或潜在更改而遇到重大问题——具体而言,建议尽可能使用限制更严格的IdentifierClass,或者如果使用FreeformClass,只允许有限的字符集,特别是避免使用他们实际上不理解其含义的字符。

14. References
14. 工具书类
14.1. Normative References
14.1. 规范性引用文件

[RFC20] Cerf, V., "ASCII format for network interchange", STD 80, RFC 20, DOI 10.17487/RFC0020, October 1969, <http://www.rfc-editor.org/info/rfc20>.

[RFC20]Cerf,V.,“网络交换的ASCII格式”,STD 80,RFC 20,DOI 10.17487/RFC0020,1969年10月<http://www.rfc-editor.org/info/rfc20>.

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,DOI 10.17487/RFC2119,1997年3月<http://www.rfc-editor.org/info/rfc2119>.

[RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network Interchange", RFC 5198, DOI 10.17487/RFC5198, March 2008, <http://www.rfc-editor.org/info/rfc5198>.

[RFC5198]Klensin,J.和M.Padlipsky,“网络交换的Unicode格式”,RFC 5198,DOI 10.17487/RFC5198,2008年3月<http://www.rfc-editor.org/info/rfc5198>.

[RFC6365] Hoffman, P. and J. Klensin, "Terminology Used in Internationalization in the IETF", BCP 166, RFC 6365, DOI 10.17487/RFC6365, September 2011, <http://www.rfc-editor.org/info/rfc6365>.

[RFC6365]Hoffman,P.和J.Klensin,“IETF国际化中使用的术语”,BCP 166,RFC 6365,DOI 10.17487/RFC6365,2011年9月<http://www.rfc-editor.org/info/rfc6365>.

[Unicode] The Unicode Consortium, "The Unicode Standard", <http://www.unicode.org/versions/latest/>.

[Unicode]Unicode联盟,“Unicode标准”<http://www.unicode.org/versions/latest/>.

[Unicode7.0] The Unicode Consortium, "The Unicode Standard, Version 7.0.0", (Mountain View, CA: The Unicode Consortium, 2014 ISBN 978-1-936213-09-2), <http://www.unicode.org/versions/Unicode7.0.0/>.

[Unicode 7.0]Unicode联盟,“Unicode标准,7.0.0版”(加利福尼亚州山景城:Unicode联盟,2014年ISBN 978-1-936213-09-2)<http://www.unicode.org/versions/Unicode7.0.0/>.

14.2. Informative References
14.2. 资料性引用

[DerivedCoreProperties] The Unicode Consortium, "DerivedCoreProperties-7.0.0.txt", Unicode Character Database, February 2014, <http://www.unicode.org/Public/UCD/latest/ucd/ DerivedCoreProperties.txt>.

[DerivedCoreProperties]Unicode联盟,“DerivedCoreProperties-7.0.0.txt”,Unicode字符数据库,2014年2月<http://www.unicode.org/Public/UCD/latest/ucd/ DerivedCoreProperties.txt>。

[IAB-Statement] Internet Architecture Board, "IAB Statement on Identifiers and Unicode 7.0.0", February 2015, <https://www.iab.org/ documents/correspondence-reports-documents/ 2015-2/iab-statement-on-identifiers-and-unicode-7-0-0/>.

[IAB声明]互联网架构委员会,“IAB关于标识符和Unicode 7.0.0的声明”,2015年2月<https://www.iab.org/ 文件/通信报告文件/2015-2/iab-statement-on-identifiers-and-unicode-7-0-0/>。

[IDNA-Unicode] Klensin, J. and P. Faltstrom, "IDNA Update for Unicode 7.0.0", Work in Progress, draft-klensin-idna-5892upd-unicode70-04, March 2015.

[IDNA Unicode]Klensin,J.和P.Faltstrom,“Unicode 7.0.0的IDNA更新”,正在进行的工作,草稿-Klensin-IDNA-5892upd-Unicode 70-042015年3月。

[PRECIS-Mappings] Yoneya, Y. and T. Nemoto, "Mapping characters for PRECIS classes", Work in Progress, draft-ietf-precis-mappings-10, May 2015.

[PRECIS映射]Yoneya,Y.和T.Nemoto,“PRECIS类的映射字符”,正在进行的工作,草案-ietf-PRECIS-Mappings-10,2015年5月。

[PRECIS-Nickname] Saint-Andre, P., "Preparation, Enforcement, and Comparison of Internationalized Strings Representing Nicknames", Work in Progress, draft-ietf-precis-nickname-17, April 2015.

[PRECIS昵称]Saint Andre,P.,“代表昵称的国际化字符串的准备、实施和比较”,正在进行的工作,草稿-ietf-PRECIS-昵称-172015年4月。

[PRECIS-Users-Pwds] Saint-Andre, P. and A. Melnikov, "Preparation, Enforcement, and Comparison of Internationalized Strings Representing Usernames and Passwords", Work in Progress, draft-ietf-precis-saslprepbis-17, May 2015.

[PRECIS Users Pwds]Saint Andre,P.和A.Melnikov,“代表用户名和密码的国际化字符串的准备、实施和比较”,正在进行的工作,草稿-ietf-PRECIS-saslprepbis-172015年5月。

[PropertyAliases] The Unicode Consortium, "PropertyAliases-7.0.0.txt", Unicode Character Database, November 2013, <http://www.unicode.org/Public/UCD/latest/ucd/ PropertyAliases.txt>.

[PropertyAliases]Unicode联盟,“PropertyAliases-7.0.0.txt”,Unicode字符数据库,2013年11月<http://www.unicode.org/Public/UCD/latest/ucd/ propertyaliasses.txt>。

[RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson, "Remote Authentication Dial In User Service (RADIUS)", RFC 2865, DOI 10.17487/RFC2865, June 2000, <http://www.rfc-editor.org/info/rfc2865>.

[RFC2865]Rigney,C.,Willens,S.,Rubens,A.,和W.Simpson,“远程认证拨入用户服务(RADIUS)”,RFC 2865,DOI 10.17487/RFC2865,2000年6月<http://www.rfc-editor.org/info/rfc2865>.

[RFC3454] Hoffman, P. and M. Blanchet, "Preparation of Internationalized Strings ("stringprep")", RFC 3454, DOI 10.17487/RFC3454, December 2002, <http://www.rfc-editor.org/info/rfc3454>.

[RFC3454]Hoffman,P.和M.Blanchet,“国际化字符串的准备(“stringprep”)”,RFC 3454,DOI 10.17487/RFC3454,2002年12月<http://www.rfc-editor.org/info/rfc3454>.

[RFC3490] Faltstrom, P., Hoffman, P., and A. Costello, "Internationalizing Domain Names in Applications (IDNA)", RFC 3490, DOI 10.17487/RFC3490, March 2003, <http://www.rfc-editor.org/info/rfc3490>.

[RFC3490]Faltstrom,P.,Hoffman,P.,和A.Costello,“应用程序中的域名国际化(IDNA)”,RFC 3490,DOI 10.17487/RFC3490,2003年3月<http://www.rfc-editor.org/info/rfc3490>.

[RFC3491] Hoffman, P. and M. Blanchet, "Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)", RFC 3491, DOI 10.17487/RFC3491, March 2003, <http://www.rfc-editor.org/info/rfc3491>.

[RFC3491]Hoffman,P.和M.Blanchet,“Nameprep:国际化域名(IDN)的Stringprep配置文件”,RFC 3491,DOI 10.17487/RFC34912003年3月<http://www.rfc-editor.org/info/rfc3491>.

[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November 2003, <http://www.rfc-editor.org/info/rfc3629>.

[RFC3629]Yergeau,F.,“UTF-8,ISO 10646的转换格式”,STD 63,RFC 3629,DOI 10.17487/RFC3629,2003年11月<http://www.rfc-editor.org/info/rfc3629>.

[RFC4422] Melnikov, A., Ed., and K. Zeilenga, Ed., "Simple Authentication and Security Layer (SASL)", RFC 4422, DOI 10.17487/RFC4422, June 2006, <http://www.rfc-editor.org/info/rfc4422>.

[RFC4422]Melnikov,A.,Ed.,和K.Zeilenga,Ed.,“简单身份验证和安全层(SASL)”,RFC 4422,DOI 10.17487/RFC4422,2006年6月<http://www.rfc-editor.org/info/rfc4422>.

[RFC4510] Zeilenga, K., Ed., "Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map", RFC 4510, DOI 10.17487/RFC4510, June 2006, <http://www.rfc-editor.org/info/rfc4510>.

[RFC4510]Zeilenga,K.,Ed.“轻量级目录访问协议(LDAP):技术规范路线图”,RFC 4510,DOI 10.17487/RFC4510,2006年6月<http://www.rfc-editor.org/info/rfc4510>.

[RFC4690] Klensin, J., Faltstrom, P., Karp, C., and IAB, "Review and Recommendations for Internationalized Domain Names (IDNs)", RFC 4690, DOI 10.17487/RFC4690, September 2006, <http://www.rfc-editor.org/info/rfc4690>.

[RFC4690]Klensin,J.,Faltstrom,P.,Karp,C.,和IAB,“国际化域名(IDN)的审查和建议”,RFC 4690,DOI 10.17487/RFC4690,2006年9月<http://www.rfc-editor.org/info/rfc4690>.

[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, DOI 10.17487/RFC5226, May 2008, <http://www.rfc-editor.org/info/rfc5226>.

[RFC5226]Narten,T.和H.Alvestrand,“在RFCs中编写IANA注意事项部分的指南”,BCP 26,RFC 5226,DOI 10.17487/RFC5226,2008年5月<http://www.rfc-editor.org/info/rfc5226>.

[RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, DOI 10.17487/RFC5234, January 2008, <http://www.rfc-editor.org/info/rfc5234>.

[RFC5234]Crocker,D.,Ed.,和P.Overell,“语法规范的扩充BNF:ABNF”,STD 68,RFC 5234,DOI 10.17487/RFC5234,2008年1月<http://www.rfc-editor.org/info/rfc5234>.

[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/RFC5246, August 2008, <http://www.rfc-editor.org/info/rfc5246>.

[RFC5246]Dierks,T.和E.Rescorla,“传输层安全(TLS)协议版本1.2”,RFC 5246,DOI 10.17487/RFC5246,2008年8月<http://www.rfc-editor.org/info/rfc5246>.

[RFC5890] Klensin, J., "Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework", RFC 5890, DOI 10.17487/RFC5890, August 2010, <http://www.rfc-editor.org/info/rfc5890>.

[RFC5890]Klensin,J.,“应用程序的国际化域名(IDNA):定义和文档框架”,RFC 5890,DOI 10.17487/RFC5890,2010年8月<http://www.rfc-editor.org/info/rfc5890>.

[RFC5891] Klensin, J., "Internationalized Domain Names in Applications (IDNA): Protocol", RFC 5891, DOI 10.17487/RFC5891, August 2010, <http://www.rfc-editor.org/info/rfc5891>.

[RFC5891]Klensin,J.,“应用程序中的国际化域名(IDNA):协议”,RFC 5891,DOI 10.17487/RFC5891,2010年8月<http://www.rfc-editor.org/info/rfc5891>.

[RFC5892] Faltstrom, P., Ed., "The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)", RFC 5892, DOI 10.17487/RFC5892, August 2010, <http://www.rfc-editor.org/info/rfc5892>.

[RFC5892]Faltstrom,P.,Ed.“Unicode码点和应用程序的国际化域名(IDNA)”,RFC 5892,DOI 10.17487/RFC5892,2010年8月<http://www.rfc-editor.org/info/rfc5892>.

[RFC5893] Alvestrand, H., Ed., and C. Karp, "Right-to-Left Scripts for Internationalized Domain Names for Applications (IDNA)", RFC 5893, DOI 10.17487/RFC5893, August 2010, <http://www.rfc-editor.org/info/rfc5893>.

[RFC5893]Alvestrand,H.,Ed.,和C.Karp,“应用程序国际化域名(IDNA)的从右到左脚本”,RFC 5893,DOI 10.17487/RFC5893,2010年8月<http://www.rfc-editor.org/info/rfc5893>.

[RFC5894] Klensin, J., "Internationalized Domain Names for Applications (IDNA): Background, Explanation, and Rationale", RFC 5894, DOI 10.17487/RFC5894, August 2010, <http://www.rfc-editor.org/info/rfc5894>.

[RFC5894]Klensin,J.,“应用程序的国际化域名(IDNA):背景、解释和理由”,RFC 5894,DOI 10.17487/RFC5894,2010年8月<http://www.rfc-editor.org/info/rfc5894>.

[RFC5895] Resnick, P. and P. Hoffman, "Mapping Characters for Internationalized Domain Names in Applications (IDNA) 2008", RFC 5895, DOI 10.17487/RFC5895, September 2010, <http://www.rfc-editor.org/info/rfc5895>.

[RFC5895]Resnick,P.和P.Hoffman,“应用程序中国际化域名的映射字符(IDNA)2008”,RFC 5895,DOI 10.17487/RFC5895,2010年9月<http://www.rfc-editor.org/info/rfc5895>.

[RFC6452] Faltstrom, P., Ed., and P. Hoffman, Ed., "The Unicode Code Points and Internationalized Domain Names for Applications (IDNA) - Unicode 6.0", RFC 6452, DOI 10.17487/RFC6452, November 2011, <http://www.rfc-editor.org/info/rfc6452>.

[RFC6452]Faltstrom,P.,Ed.,和P.Hoffman,Ed.,“应用程序的Unicode代码点和国际化域名(IDNA)-Unicode 6.0”,RFC 6452,DOI 10.17487/RFC6452,2011年11月<http://www.rfc-editor.org/info/rfc6452>.

[RFC6885] Blanchet, M. and A. Sullivan, "Stringprep Revision and Problem Statement for the Preparation and Comparison of Internationalized Strings (PRECIS)", RFC 6885, DOI 10.17487/RFC6885, March 2013, <http://www.rfc-editor.org/info/rfc6885>.

[RFC6885]Blanchet,M.和A.Sullivan,“编制和比较国际化字符串(PRECIS)的Stringprep修订和问题声明”,RFC 6885,DOI 10.17487/RFC6885,2013年3月<http://www.rfc-editor.org/info/rfc6885>.

[RFC6943] Thaler, D., Ed., "Issues in Identifier Comparison for Security Purposes", RFC 6943, DOI 10.17487/RFC6943, May 2013, <http://www.rfc-editor.org/info/rfc6943>.

[RFC6943]Thaler,D.,Ed.,“出于安全目的的标识符比较问题”,RFC 6943,DOI 10.17487/RFC6943,2013年5月<http://www.rfc-editor.org/info/rfc6943>.

[UAX11] Unicode Standard Annex #11, "East Asian Width", edited by Ken Lunde. An integral part of The Unicode Standard, <http://unicode.org/reports/tr11/>.

[UAX11]Unicode标准附件#11,“东亚宽度”,Ken Lunde编辑。Unicode标准不可分割的一部分<http://unicode.org/reports/tr11/>.

[UAX15] Unicode Standard Annex #15, "Unicode Normalization Forms", edited by Mark Davis and Ken Whistler. An integral part of The Unicode Standard, <http://unicode.org/reports/tr15/>.

[UAX15]Unicode标准附件#15,“Unicode规范化表单”,由Mark Davis和Ken Whistler编辑。Unicode标准不可分割的一部分<http://unicode.org/reports/tr15/>.

[UAX9] Unicode Standard Annex #9, "Unicode Bidirectional Algorithm", edited by Mark Davis, Aharon Lanin, and Andrew Glass. An integral part of The Unicode Standard, <http://unicode.org/reports/tr9/>.

[UAX9]Unicode标准附录9,“Unicode双向算法”,由Mark Davis、Aharon Lanin和Andrew Glass编辑。Unicode标准不可分割的一部分<http://unicode.org/reports/tr9/>.

[UTR36] Unicode Technical Report #36, "Unicode Security Considerations", by Mark Davis and Michel Suignard, <http://unicode.org/reports/tr36/>.

[UTR36]Unicode技术报告#36,“Unicode安全注意事项”,由Mark Davis和Michel Suignard编写<http://unicode.org/reports/tr36/>.

[UTS39] Unicode Technical Standard #39, "Unicode Security Mechanisms", edited by Mark Davis and Michel Suignard, <http://unicode.org/reports/tr39/>.

[UTS39]Unicode技术标准#39,“Unicode安全机制”,由Mark Davis和Michel Suignard编辑<http://unicode.org/reports/tr39/>.

[XMPP-Addr-Format] Saint-Andre, P., "Extensible Messaging and Presence Protocol (XMPP): Address Format", Work in Progress, draft-ietf-xmpp-6122bis-22, May 2015.

[XMPP地址格式]Saint Andre,P.,“可扩展消息和状态协议(XMPP):地址格式”,正在进行的工作,草稿-ietf-XMPP-6122bis-22,2015年5月。

Acknowledgements

致谢

The authors would like to acknowledge the comments and contributions of the following individuals during working group discussion: David Black, Edward Burns, Dan Chiba, Mark Davis, Alan DeKok, Martin Duerst, Patrik Faltstrom, Ted Hardie, Joe Hildebrand, Bjoern Hoehrmann, Paul Hoffman, Jeffrey Hutzelman, Simon Josefsson, John Klensin, Alexey Melnikov, Takahiro Nemoto, Yoav Nir, Mike Parker, Pete Resnick, Andrew Sullivan, Dave Thaler, Yoshiro Yoneya, and Florian Zeitz.

作者谨感谢以下个人在工作组讨论期间的评论和贡献:大卫·布莱克、爱德华·伯恩斯、丹·千叶、马克·戴维斯、艾伦·德科克、马丁·杜尔斯特、帕特里克·法茨特罗姆、特德·哈迪、乔·希尔德布兰德、比约恩·霍尔曼、保罗·霍夫曼、杰弗里·哈泽尔曼、西蒙·约瑟夫森、约翰·克莱辛、,阿列克谢·梅尔尼科夫、内莫托·高弘、约阿夫·尼尔、迈克·帕克、皮特·雷斯尼克、安德鲁·沙利文、戴夫·泰勒、Yoshiro Yoneya和Florian Zeitz。

Special thanks are due to John Klensin and Patrik Faltstrom for their challenging feedback and detailed reviews.

特别感谢John Klensin和Patrik Faltstrom提供的富有挑战性的反馈和详细的评论。

Charlie Kaufman, Tom Taylor, and Tim Wicinski reviewed the document on behalf of the Security Directorate, the General Area Review Team, and the Operations and Management Directorate, respectively.

查理·考夫曼(Charlie Kaufman)、汤姆·泰勒(Tom Taylor)和蒂姆·维辛斯基(Tim Wicinski)分别代表安全理事会、一般区域审查小组和运营管理理事会审查了该文件。

During IESG review, Alissa Cooper, Stephen Farrell, and Barry Leiba provided comments that led to further improvements.

在IESG审查期间,Alissa Cooper、Stephen Farrell和Barry Leiba提供了意见,这些意见导致了进一步的改进。

Some algorithms and textual descriptions have been borrowed from [RFC5892]. Some text regarding security has been borrowed from [RFC5890], [PRECIS-Users-Pwds], and [XMPP-Addr-Format].

从[RFC5892]中借用了一些算法和文本描述。有关安全性的一些文本已从[RFC5890]、[PRECIS Users Pwds]和[XMPP Addr Format]中借用。

Peter Saint-Andre wishes to acknowledge Cisco Systems, Inc., for employing him during his work on earlier draft versions of this document.

Peter Saint Andre希望感谢Cisco Systems,Inc.在编写本文件早期草稿期间聘用了他。

Authors' Addresses

作者地址

Peter Saint-Andre &yet

彼得·圣安德烈&还没有

   EMail: peter@andyet.com
   URI:   https://andyet.com/
        
   EMail: peter@andyet.com
   URI:   https://andyet.com/
        

Marc Blanchet Viagenie 246 Aberdeen Quebec, QC G1R 2E1 Canada

Marc Blanchet Viagenie 246魁北克省阿伯丁市,QC G1R 2E1加拿大

   EMail: Marc.Blanchet@viagenie.ca
   URI:   http://www.viagenie.ca/
        
   EMail: Marc.Blanchet@viagenie.ca
   URI:   http://www.viagenie.ca/