Attribute Protocol (ATT)
속성 프로토콜 (ATT)
The Attribute Protocol (ATT) is a simple client/server stateless protocol based on attributes presented by a device.
속성 프로토콜 (ATT)은 장치가 제공하는 속성을 기반으로 하는 간단한 클라이언트/서버 상태 비저장 프로토콜입니다.
In BLE, each device is a client, a server, or both, irrespective of whether it’s a master or slave.
BLE에서 각 장치는 마스터인지 슬레이브인지에 관계없이 클라이언트, 서버 또는 둘 다입니다.
A client requests data from a server, and a server sends data to clients.
클라이언트는 서버에 데이터를 요청하고, 서버는 클라이언트에게 데이터를 보냅니다.
The protocol is strict when it comes to its sequencing: if a request is still pending (no response for it has been yet received) no further requests can be sent until the response is received and processed.
프로토콜은 순서에 있어서 엄격합니다. 요청이 아직 보류 중인 경우 (아직 응답이 수신되지 않은 경우) 응답이 수신되고 처리될 때까지 더 이상 요청을 보낼 수 없습니다.
This applies to both directions independently in the case where two peers are acting both as a client and server.
이는 두 피어가 클라이언트와 서버 역할을 모두 수행하는 경우 독립적으로 양방향에 적용됩니다.
Each server contains data organized in the form of attributes, each of which is assigned a 16-bit attribute handle, a universally unique identifier (UUID), a set of permissions, and finally, of course, a value.
각 서버에는 속성 형태로 구성된 데이터가 포함되어 있으며, 각 속성에는 16비트 속성 핸들, UUID (Universally Unique Identifier), 권한 집합, 마지막으로 값이 지정됩니다.
The attribute handle is simply an identifier used to access an attribute value.
속성 핸들은 단순히 속성 값에 액세스하는 데 사용되는 식별자입니다.
The UUID specifies the type and nature of the data contained in the value.
UUID는 값에 포함된 데이터의 유형과 특성을 지정합니다.
For more information, see “UUIDs” on page 52 and “Attributes” on page 53.
자세한 내용은 52페이지의 “UUID” 및 53페이지의 “속성”을 참조하세요.
When a client wants to read or write attribute values from or to a server, it issues a read or write request to the server with the handle.
클라이언트가 서버에서 속성 값을 읽거나 쓰려고 할 때 핸들을 사용하여 서버에 읽기 또는 쓰기 요청을 발행합니다.
The server will respond with the attribute value or an acknowledgement.
서버는 속성 값 또는 승인으로 응답합니다.
In the case of a read operation, it is up to the client to parse the value and understand the data type based on the UUID of the attribute.
읽기 작업의 경우 값을 구문 분석하고 속성의 UUID를 기반으로 데이터 유형을 이해하는 것은 클라이언트의 몫입니다.
On the other hand, during a write operation, the client is expected to provide data that is consistent with the attribute type and the server is free to reject the operation if that is not the case.
반면에 쓰기 작업 중에 클라이언트는 속성 유형과 일치하는 데이터를 제공해야 하며 그렇지 않은 경우 서버는 자유롭게 작업을 거부할 수 있습니다.
The set of operations possible over ATT fall within the following categories:
ATT를 통해 가능한 작업 집합은 다음 범주에 속합니다:
Used by the server to respond to any of the requests when an error occurs, this includes only:
서버가 모든 요청에 응답하는 데 사용됩니다. 오류가 발생하면 여기에는 다음만 포함됩니다:
Sent as a response to a request in lieu of the corresponding operation response whenever an error prevented the request from being executed on the server.
오류로 인해 서버에서 요청이 실행되지 않을 때마다 해당 작업 응답 대신 요청에 대한 응답으로 전송됩니다.
Used to configure the ATT protocol itself, this includes only:
ATT 프로토콜 자체를 구성하는 데 사용되며 여기에는 다음만 포함됩니다:
Exchange between client and server of their respective Maximum Transmission Units (MTU or maximum packet size accepted).
클라이언트와 서버 간에 해당 최대 전송 단위 (MTU 또는 허용되는 최대 패킷 크기)를 교환합니다)
Used by the client to obtain information about the layout of the server’s attributes, they include:
클라이언트가 서버 속성의 레이아웃에 대한 정보를 얻기 위해 사용하며 다음을 포함합니다.
Obtain a list of all attributes in a particular handle range.
특정 핸들 범위의 모든 속성 목록을 얻습니다.
Obtain the handle range between an attribute identified by its UUID and its value and the next group delimiter.
UUID로 식별되는 속성과 해당 값 및 다음 그룹 구분 기호 사이의 핸들 범위를 얻습니다.
Used by the client to obtain the value of one or more attributes, they include:
하나 이상의 속성 값을 얻기 위해 클라이언트가 사용하는 속성에는 다음이 포함됩니다:
Obtain the value of one or more attributes using a UUID.
UUID를 사용하여 하나 이상의 속성 값을 얻습니다.
Obtain the value of attributes using a handle.
핸들을 사용하여 속성 값을 얻는다.
Obtain part of a value of a long attribute using a handle.
핸들을 사용하여 긴 속성 값의 일부를 얻습니다.
Obtain the value of one or more attributes using multiple handles.
여러 핸들을 사용하여 하나 이상의 속성 값을 얻습니다.
Similar to Read by Type, but the UUID must be of a grouping type.
유형별 읽기와 유사하지만 UUID는 그룹화 유형이어야 합니다.
Used by the client to set the value of one or more attributes, they include:
클라이언트가 하나 이상의 속성 값을 설정하는 데 사용되며 다음을 포함합니다:
Write to the value of an attribute and expect a response from the server.
속성 값을 쓰고 서버로부터 응답을 기대합니다.
Write to the value of an attribute without any response or acknowledgement.
응답이나 승인 없이 속성 값에 씁니다.
This operation does not follow the request/response sequencing and can be sent at any time.
이 작업은 요청/응답 순서를 따르지 않으며 언제든지 보낼 수 있습니다.
Similar to Write Command, but using a signature as described in “Security Manager (SM)” on page 28.
쓰기 명령과 유사하지만 28페이지의 "SM(보안 관리자)"에 설명된 대로 서명을 사용합니다.
This operation does not follow the request/response sequencing and can be sent at any time.
이 작업은 요청/응답 순서를 따르지 않으며 언제든지 보낼 수 있습니다.
Used by the client to write to attribute values that are longer than what can fit in a single packet, they include:
하나의 단일 공유보다 더 긴 속성 값을 임대하기 위해 클라이언트가 사용하고 다음을 포함합니다:
Queue a write operation in the server for a particular handle, after which the successful queuing is acknowledged by the server.
특정 핸들에 대해 서버에 쓰기 작업을 대기열에 추가한 후 서버에서 성공적인 대기열 작업을 승인합니다.
Execute all pending queued write operations, the server then reports the success or failure to the client.
보류 중인 모든 쓰기 작업을 실행하면 서버는 성공 또는 실패를 클라이언트에 보고합니다.
Used by the server to asynchronously push attribute values to the client, they include:
속성 값을 클라이언트에 비동기식으로 푸시하기 위해 서버에서 사용하며 다음을 포함합니다:
Asynchronous server update of an attribute’s value and identified by its handle, expects an acknowledgement in the form of a confirmation from the client.
속성 값의 비동기 서버 업데이트 및 해당 핸들로 식별되며 클라이언트로부터 확인 형식의 승인을 기대합니다.
Asynchronous server update of an attribute’s value and identified by its handle, without acknowledgment.
승인 없이 속성 값을 핸들로 식별하고 비동기 서버에서 업데이트합니다.
This operation does not follow the request/response sequencing and can be sent at any time.
이 업은 요청/응답 순서를 따르지 않으며 언제든지 전송될 수 있습니다.
All operations except the ones in the server initiated category (and a few select others) are grouped into request/response pairs.
서버 시작 범주에 있는 작업 (및 기타 일부 선택)을 제외한 모든 작업은 요청/응답 쌍으로 그룹화됩니다.
Requests are always sent by the client and responses are issued by the server as a reply to a request.
요청은 항상 클라이언트에 의해 전송되고 응답은 요청에 대한 응답으로 서버에 의해 발행됩니다.
Chapter 4 provides more information on ATT itself and how it enables the Generic Attribute Profile (GATT).
4장에서는 ATT 자체와 이를 통해 GATT (일반 속성 프로필)를 활성화하는 방법에 대한 자세한 정보를 제공합니다.
Security Manager (SM)
보안 관리자 (SM)
The Security Manager (SM) is both a protocol and a series of security algorithms designed to provide the Bluetooth protocol stack with the ability to generate and exchange security keys, which then allow the peers to communicate securely over an encrypted link, to trust the identity of the remote device, and finally, to hide the public Bluetooth Address if required to avoid malicious peers tracking a particular device.
보안 관리자 (SM)는 Bluetooth 프로토콜 스택에 보안 키를 생성하고 교환할 수 있는 기능을 제공하도록 설계된 프로토콜이자 일련의 보안 알고리즘입니다. 이를 통해 피어는 암호화된 링크를 통해 안전하게 통신하고 원격 장치의 신원을 신뢰할 수 있으며, 마지막으로 악의적인 피어가 특정 장치를 추적하는 것을 방지하기 위해 필요한 경우 공개 Bluetooth 주소를 숨길 수 있습니다.
The Security Manager defines two roles:
보안 관리자는 두 가지 역할을 정의합니다:
Initiator
개시자
Always corresponds to the Link Layer master and therefore the GAP central.
항상 링크 계층 마스터에 해당하므로 GAP 중앙에 해당합니다.
Always corresponds to the Link Layer slave and therefore the GAP peripheral.
항상 링크 계층 슬레이브에 해당하므로 GAP 주변 장치에 해당합니다.
Although it is always up to the initiator to trigger the beginning of a procedure, the responder can asynchronously request the start of any of the procedures listed in “Security Procedures”.
프로시저/절차차의 시작을 트리거하는 것은 항상 개시자에게 달려 있지만 응답자는 "보안 절차"에 나열된 모든 프로시저의 시작을 비동기적으로 요청할 수 있습니다.
There are no guarantees for the responder that the initiator will actually heed the request, serving more as a hint than a real, binding request.
게시자가 실제로 요청에 주의를 기울이고 실제 바인딩 요청보다 힌트 역할을 더 많이 수행한다는 응답자에 대한 보장은 없습니다.
This security request can logically be issued only by the slave or peripheral end of the con‐ nection.
이 보안 요청은 논리적으로 연결의 슬레이브 또는 주변 장치 끝에서만 발행될 수 있습니다.
Security Procedures
보안 절차
The Security Manager provides support for the following three procedures:
보안 관리자는 다음 세 가지 절차를 지원합니다:
The procedure by which a temporary common security encryption key is generated to be able to switch to a secure, encrypted link.
안전하고 암호화된 링크로 전환할 수 있도록 임시 공통 보안 암호화 키를 생성하는 절차입니다.
This temporary key is not stored and is therefore not reusable in subsequent connections.
이 임시 키는 저장되지 않으므로 후속 연결에서 재사용할 수 없습니다.
A sequence of pairing followed by the generation and exchange of permanent security keys, destined to be stored in nonvolatile memory and therefore creating a permanent bond between two devices, which will allow them to quickly set up a secure link in subsequent connections without having to perform a bonding procedure again.
페어링 시퀀스는 비휘발성 메모리에 저장되는 영구 보안 키를 생성하고 교환하는 과정으로, 이를 통해 두 장치 간에 영구적인 결합이 생성되고, 이후 연결에서 다시 결합 절차를 수행하지 않고도 빠르게 보안 링크를 설정할 수 있습니다.
Encryption Re-establishment
암호화 재설정
After a bonding procedure is complete, keys might have been stored on both sides of the connection.
본딩 절차가 완료된 후 키는 연결 양쪽에 저장되었을 수 있습니다.
If encryption keys have been stored, this procedure defines how to use those keys in subsequent connections to re-establish a secure, encrypted connection without having to go through the pairing (or bonding) procedure again.
암호화 키가 저장된 경우 이 절차는 페어링 (또는 본딩) 절차를 다시 거치지 않고도 후속 연결에서 해당 키를 사용하여 안전하고 암호화된 연결을 다시 설정하는 방법을 정의합니다.
Pairing can therefore create a secure link that will last only for the lifetime of the connection, whereas bonding actually creates a permanent association (also called bond) in the form of shared security keys that will be used in later connections until either side decides to delete them.
따라서 페어링은 연결 기간 동안만 지속되는 안전한 링크를 생성할 수 있는 반면, 본딩은 나중에 연결에서 사용될 공유 보안 키의 형태로 영구적인 연결 (본딩이라고도 함)을 생성합니다. 이 연결은 어느 한 쪽이 삭제하기로 결정할 때까지 사용됩니다.
Certain APIs and their documentation sometimes use the term pairing with bonding instead of simply bonding, because a bonding procedure always includes a pairing phase first.
특정 API와 해당 문서에서는 단순히 본딩 대신 본딩을 사용한 페어링이라는 용어를 사용하는 경우가 있습니다. 본딩 절차에는 항상 페어링 단계가 먼저 포함되기 때문입니다.
Figure 2-6 shows the two phases of a pairing procedure and the additional phase required for a bonding procedure.
그림 2-6은 페어링 절차의 두 단계와 본딩 절차에 필요한 추가 단계를 보여줍니다.
Initially (Phase 1), all information required to generate the temporary key is exchanged between the two devices.
처음 (1 단계)에서는 임시 키를 생성하는 데 필요한 모든 정보가 두 장치 간에 교환됩니다.
Next, (Phase 2) the actual temporary encryption key (Short Term Key or STK) is generated on both sides independently and then used to encrypt the connection.
다음으로 (2단계) 실제 임시 암호화 키 (Short Term Key 또는 STK)가 양쪽에서 독립적으로 생성된 후 연결을 암호화하는 데 사용됩니다.
Once the connection is secured by encryption, and only if performing bonding, the permanent keys can be distributed for storage and reuse at a later time.
연결이 암호화로 보호되면 본딩을 수행하는 경우에만 영구 키를 배포하여 저장하고 나중에 재사용할 수 있습니다.
A pairing procedure involves an exchange of Security Manager Protocol (SMP) packets to generate a temporary encryption key called Short Term Key (STK) on both sides.
페어링 절차에는 SMP (Security Manager Protocol) 패킷을 교환하여 양쪽에 STK (Short Term Key)라는 임시 암호화 키를 생성하는 작업이 포함됩니다.
The last step of a pairing procedure (regardless of whether it will then continue into a security key exchange and therefore a bonding procedure) is to encrypt the link with the previously generated STK.
페어링 절차의 마지막 단계 (보안 키 교환 및 본딩 절차가 계속 진행되는지 여부에 관계 없음)는 이전에 생성된 STK를 사용하여 링크를 암호화하는 것입니다.
During the packet exchange, the two peers negotiate one of the following STK generation methods:
패킷 교환 중에 두 피어는 다음 STK 생성 방법 중 하나를 협상합니다:
The STK is generated on both sides, based on the packets exchanged in plain text.
STK는 일반 텍스트로 교환된 패킷을 기반으로 양쪽에서 생성됩다.
This provides no security against man-in-the-middle (MITM) attacks.
이는 중간자 (MITM) 공격에 대한 보안을 제공하지 않습니다.
Passkey Display One of the peers displays a randomly generated, six-digit passkey and the other side is asked to enter it (or in certain cases both sides enter the key, if no display is available).
암호 키 표시 피어 중 하나가 무작위로 생성된 6자리 암호 키를 표시하고 다른 쪽에서는 이를 입력하라는 요청을 받습니다 (또는 디스플레이가 제공되지 않는 경우 양쪽 모두 키를 입력하는 경우도 있습니다).
This provides protection against MITM attacks and is used whenever possible.
이는 MITM 공격으로부터 보호하며 가능할 때마다 사용됩니다.
Out Of Band (OOB)
대역 외 (OOB)
When using this method, additional data is transferred by means other than the BLE radio, such as another wireless technology like NFC.
이 방법을 사용하면 BLE 무선 이외의 수단(예: NFC와 같은 다른 무선 기술)을 통해 추가 데이터가 전송됩니다.
This method also provides protection against MITM attacks.
이 방법은 MITM 공격에 대한 보호 기능도 제공합니다.
The SM specifies the following three types of security mechanisms that can be used to enforce various levels of security while in a connection or during the advertising procedure:
SM은 연결 중이거나 광고 절차 중에 다양한 수준의 보안을 시행하는 데 사용할 수 있는 다음 세 가지 유형의 보안 메커니즘을 지정합니다:
This mechanism consists of the full encryption of all packets transmitted over an established connection.
이 메커니즘은 기존 연결을 통해 전송되는 모든 패킷을 완전히 암호화하는 것으로 구성됩니다.
The privacy feature allows an advertiser to hide its public Bluetooth address by using temporary, randomly generated addresses that can be recognized by a scanner that is bonded with the advertising device.
개인정보 보호 기능을 이용하면 광고주가 임시적이고 무작위로 생성된 주소를 사용하여 공개 Bluetooth 주소를 숨길 수 있으며, 광고 장치에 연결된 스캐너가 이 주소를 인식할 수 있습니다.
With this mechanism, a device can send an unencrypted packet over an established connection that is digitally signed (i.e., the source of which can be verified).
이 메커니즘을 사용하면 장치는 디지털 서명된 (즉, 소스를 확인할 수 있는) 설정된 연결을 통해 암호화되지 않은 패킷을 보낼 수 있습니다.
Each of these three mechanisms can be used independently from the others, and the application, in conjunction with the host, has the choice of enforcing any of them concurrently.
이 세 가지 메커니즘은 각각 독립적으로 사용될 수 있으며, 애플리케이션은 호스트와 함께 이들 중 하나를 동시에 시행할 수 있습니다.
Each of the three types of security mechanisms requires a key or a group of keys to be established.
세 가지 유형의 보안 메커니즘 각각에는 키 또는 키 그룹을 설정해야 합니다.
These are the keys that are exchanged and stored to allow for the security mechanisms to be enforced:
보안 메커니즘을 시행할 수 있도록 교환 및 저장되는 키는 다음과 같습니다:
Encryption Information (Long Term Key or LTK) and Master Identification (EDIV, Rand)
암호화 정보 (Long Term Key 또는 LTK) 및 마스터 식별 (EDIV, Rand)
This is a 128-bit encryption key shared by both sides (LTK) along with two values (EDIV, Rand) acting as its identifier, since a device may be bonded with multiple other peers.
이는 양쪽 (LTK)이 공유하는 128비트 암호화 키이며, 장치가 여러 다른 피어와 결합될 수 있기 때문에 식별자 역할을 하는 두 값 (EDIV, Rand)이 있습니다.
Identity Information (Identity Resolving Key or IRK) and Identity Address Information (Address Type and Bluetooth Device Address)
아이덴티티 정보 (ID 확인 키 또는 IRK) 및 신원 주소 정보 (주소 유형 및 Bluetooth 장치 주소)
The IRK is used to implement privacy: it can generate and resolve resolvable addresses (see “Address Types” on page 44) that protect an advertising device from being tracked by malicious peers.
IRK는 개인 정보 보호를 구현하는 데 사용됩니다. 이는 악의적인 피어가 광고 장치를 추적하지 못하도록 보호하는 확인 가능한 주소 (44페이지의 "주소 유형" 참조)를 생성하고 확인할 수 있습니다.
The actual public or static random address of the device distributing it is included along with the IRK.
이를 배포하는 장치의 실제 공개 또는 정적 무작위 주소는 IRK와 함께 포함됩니다.
Signing Information (Connection Signature Resolving Key or CSRK)
서명 정보 (연결 서명 확인 키 또는 CSRK)
A key used to digitally sign unencrypted data.
암호화되지 않은 데이터에 디지털 서명하는 데 사용되는 키입니다.
Each of these keys or key sets is asymmetrical and unidirectional: it can be used only in the same role configuration in which they were originally generated.
이러한 각 키 또는 키 세트는 비대칭적이고 단방향입니다. 즉, 원래 생성된 것과 동일한 역할 구성에서만 사용할 수 있습니다.
If the devices wish to switch Link Layer roles (master and slave) in subsequent connections, then each side must distribute its own set of keys for each key type.
장치가 후속 연결에서 링크 계층 역할 (마스터 및 슬레이브)을 전환하려는 경우 각 측은 각 키 유형에 대해 자체 키 세트를 배포해야 합니다.
Devices negotiate the number of keys distributed in each direction, which can range from zero to all three key types in each direction, for a total of six keys distributed between peers (three from slave to master and three from master to slave).
장치는 각 방향으로 분배되는 키의 개수를 협상하는데, 이는 각 방향에 0개부터 모든 3가지 키 유형까지 다양할 수 있으며, 이를 통해 피어 간에 분배되는 총 6개의 키 (슬레이브에서 마스터로 3개, 마스터에서 슬레이브로 3개)가 됩니다.
If no keys at all are exchanged during a bonding procedure, the bond between the two devices will still be valid, but no security procedures whatsoever will be available between them.
본딩 절차 중에 키를 전혀 교환하지 않더라도 두 장치 간의 본딩은 여전히 유효하지만, 두 장치 사이에 어떤 보안 절차도 사용할 수 없습니다.
Since each key is asymmetrical (and therefore the process of key distribution is symmetrical) and thus each bond information stored between two devices can contain up to two instances of each key (each peer having distributed its own), it’s important to note how keys distributed by each device are used in subsequent connections.
각 키는 비대칭적이므로 (따라서 키 분배 프로세스도 대칭적임) 두 장치 간에 저장된 각 본드 정보는 각 키의 인스턴스를 최대 두 개까지 포함할 수 있습니다 (각 피어가 자체적으로 분배함). 각 장치에서 분배한 키가 후속 연결에서 어떻게 사용되는지 알아두는 것이 중요합니다.
Table 2-2 details this usage based on the distributors and acceptors during the bonding procedure.
표 2-2에서는 본딩 절차 중 분배자와 수용자를 기준으로 이 사용법을 자세히 설명합니다.
As an example of a bonding with key distribution, let’s assume that two devices, a tablet acting as a master and a watch acting as a slave, perform a bonding procedure and exchange encryption keys in both directions.
키 분배를 통한 본딩의 예로, 마스터 역할을 하는 태블릿과 슬레이브 역할을 하는 시계라는 두 장치가 본딩 절차를 수행하고 양방향으로 암호화 키를 교환한다고 가정해 보겠습니다.
The watch will distribute its own encryption keys in the form of encryption information and master identification (let’s call them LTK_EDIV_Rand_watch) and the tablet will do the same thing in the opposite direction (LTK_EDIV_Rand_tablet).
시계는 암호화 정보와 마스터 식별의 형태로 자체 암호화 키를 배포하고 (LTK_EDIV_Rand_watch라고 부르겠습니다) 태블릿은 반대 방향으로 동일한 작업을 수행합니다 (LTK_EDIV_Rand_tablet라고 부르겠습니다).
After the bonding is complete, the link can be disconnected, and then the two devices might want to reconnect and reuse those keys to re-establish a secure, encrypted connection without having to go through the bonding procedure again.
본딩이 완료된 후 링크 연결을 끊을 수 있으며, 그런 다음 두 장치는 본딩 절차를 다시 거치지 않고도 보안 암호화 연결을 다시 설정하기 위해 해당 키를 다시 연결하고 재사용할 수 있습니다.
If the devices reconnect in the same configuration as before, with the tablet acting as a master, then both will use LTK_EDIV_Rand_watch to encrypt the link.
장치가 이전과 동일한 구성으로 다시 연결되고 태블릿이 마스터 역할을 하면 둘 다 LTK_EDIV_Rand_watch를 사용하여 링크를 암호화합니다.
If, later, the two reconnect with switched roles (i.e., the watch is this time acting as the master and the table a slave), LTK_EDIV_Rand_tablet can then be used to encrypt the link.
나중에 두 역할이 전환되어 다시 연결되면 (즉, 이번에는 시계가 마스터 역할을 하고 테이블이 슬레이브 역할을 하는 경우) LTK_EDIV_Rand_tablet를 사용하여 링크를 암호화할 수 있습니다.
Chapter 3 expands on these concepts in more detail.
3장은 이러한 개념을 더 자세히 확장합니다.