구조화된 데이터를 보호하고 싶음

Tink API는 임의의 바이너리 blob을 입력으로 사용합니다. 즉, 사용자가 구조화된 데이터 암호화, 프로토콜 버퍼를 정의하기 위해서는 먼저 데이터를 인코딩해야 합니다

protobuf 암호화

암호화하려면 다음 단계를 따르세요.

  1. protobuf를 바이트 배열로 직렬화합니다.
  2. 직렬화된 바이트를 암호화한 다음 결과 암호문을 저장하거나 전송합니다. 사용: <ph type="x-smartling-placeholder">

복호화하려면 다음 단계를 따르세요.

  1. 암호문을 복호화합니다.
  2. 1단계에 성공했다면 protobuf를 역직렬화합니다.

protobuf 조작 방지

대부분의 경우 인증만 사용하는 것보다 protobuf를 암호화하는 것이 더 낫습니다.

protobuf가 조작되지 않도록 보호하려면 다음 단계를 따르세요.

  1. protobuf를 바이트 배열로 직렬화합니다.
  2. 직렬화된 바이트에 서명하거나 인증합니다. 사용: <ph type="x-smartling-placeholder">
  3. 직렬화된 바이트를 서명 (또는 MAC)과 함께 저장합니다.

확인 방법은 다음과 같습니다.

  1. 직렬화된 protobuf 및 서명 (또는 MAC)을 가져옵니다.
  2. 서명 (또는 MAC)을 확인합니다.
  3. protobuf를 역직렬화합니다.

유효한 서명이나 MAC가 데이터가 올바르다는 것을 보장하지는 않습니다. 포맷되었습니다. 데이터를 파싱하는 구현은 항상 데이터가 손상되었을 수 있습니다.

여러 데이터 항목 보호

여러 데이터 항목을 보호하려면 직렬화 메서드를 사용하세요. 모든 데이터 추가 항목을 protobuf로 보내고 위에 설명된 대로 암호화 (또는 인증)할 수 있습니다.

다음과 같이 직렬화할 수도 있습니다.

serialize(data1 , data2 , …, datan) = 4-byte-data1's length || data1 || 4-byte-data2's length || data2 || … || 4-byte-dataN's length || dataN

마지막으로 결과 바이트 배열을 암호화 (또는 인증)합니다.