Tink API는 임의의 바이너리 blob을 입력으로 사용합니다. 즉, 사용자가 구조화된 데이터 암호화, 프로토콜 버퍼를 정의하기 위해서는 먼저 데이터를 인코딩해야 합니다
protobuf 암호화
암호화하려면 다음 단계를 따르세요.
- protobuf를 바이트 배열로 직렬화합니다.
- 직렬화된 바이트를 암호화한 다음 결과 암호문을 저장하거나 전송합니다. 사용: <ph type="x-smartling-placeholder">
복호화하려면 다음 단계를 따르세요.
- 암호문을 복호화합니다.
- 1단계에 성공했다면 protobuf를 역직렬화합니다.
protobuf 조작 방지
대부분의 경우 인증만 사용하는 것보다 protobuf를 암호화하는 것이 더 낫습니다.
protobuf가 조작되지 않도록 보호하려면 다음 단계를 따르세요.
- protobuf를 바이트 배열로 직렬화합니다.
- 직렬화된 바이트에 서명하거나 인증합니다. 사용: <ph type="x-smartling-placeholder">
- 직렬화된 바이트를 서명 (또는 MAC)과 함께 저장합니다.
확인 방법은 다음과 같습니다.
- 직렬화된 protobuf 및 서명 (또는 MAC)을 가져옵니다.
- 서명 (또는 MAC)을 확인합니다.
- 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
마지막으로 결과 바이트 배열을 암호화 (또는 인증)합니다.