메인 콘텐츠로 건너뛰기
데이터 보호 기능은 프로젝트의 보안 수준을 강화하기 위한 암호화 및 보안 전송 옵션을 제공합니다.
라이브폼 암호화 설정과 보안 전송 설정을 통해 안전한 데이터 전송과 보관을 지원합니다.

라이브폼 암호화 설정

라이브폼의 암호화 설정을 통해 보다 높은 수준의 사용자 제출에 대한 보안 상태를 유지할 수 있습니다.
라이브폼 암호화 설정

라이브폼 암호화 설정 화면

암호화 알고리즘 방식 선택

라이브폼 URL의 Query String에서 암호화가 필요한 경우, 선택한 암호화 알고리즘 방식과 암호화 키를 사용하여 데이터를 암호화해야 합니다.
알고리즘설명
ECB (Electronic Codebook)빠르고 간단한 블록 암호화 방식
GCM (Galois/Counter Mode)인증 및 무결성 기능을 포함한 강화된 암호화 방식
알고리즘 선택 후 사용 방법암호화 알고리즘을 선택한 후, 라이브폼 URL의 Query String에서 암호화가 필요한 파라미터는 반드시 선택한 알고리즘 방식과 암호화 키를 통해 암호화한 후, encrypted={암호화된_데이터} 형태로 사용해야 합니다.

암호화 전용 모드

모든 Query String 파라미터를 암호화하여 사용하고 싶은 경우, 암호화 전용 모드를 활성화합니다.
암호화 전용 모드

암호화 전용 모드 설정

암호화 전용 모드를 활성화하면 라이브폼 URL에서 pid, encrypted, lang 파라미터만 허용되며, 다른 모든 파라미터는 암호화되어 encrypted 파라미터에 포함되어야 합니다. 허용되는 URL 형식:
https://form.argosidentity.com?pid={project_Id}&encrypted={encrypted_data}&lang=ko
허용되지 않는 URL 형식:
https://form.argosidentity.com?pid={project_Id}&encrypted={encrypted_data}&[email protected]
암호화 전용 모드 주의사항암호화 전용 모드를 활성화하면 암호화되지 않은 Query String 파라미터는 모두 무시됩니다. 모든 데이터는 encrypted 파라미터에 암호화하여 포함해야 합니다.

암호화 키 관리

암호화에 사용될 키를 관리합니다. API KEY를 사용하거나 전용 키(secretKey)를 발급받아 사용할 수 있습니다.
암호화 키 관리

암호화 키 관리 화면

암호화 키 발급

암호화 키 발급 팝업

키 종류설명
API KEY프로젝트에 부여된 기본 API 키를 암호화 키로 사용
전용 키 (secretKey)라이브폼에서 신규로 발급받아 사용하는 전용 암호화 키
전용 키(secretKey) 중요 안내새로 발급된 전용 키(secretKey)는 발급 시에만 표시되니 반드시 안전하게 저장해주세요. 분실 시 재발급하여 사용해야 하며, 기존 키는 더 이상 사용할 수 없습니다.
키 선택 가이드
  • API KEY 사용: 간단한 설정으로 빠르게 시작할 수 있습니다.
  • 전용 키(secretKey) 사용: 라이브폼과 API에서 서로 다른 키를 사용하여 보안을 강화할 수 있습니다.

라이브폼 URL 암호화 사용 방법

라이브폼 URL에서 Query String 파라미터를 암호화하여 사용하는 방법을 안내합니다.

Step 1: 암호화할 데이터 준비

암호화할 Query String 파라미터를 JSON 형식으로 준비합니다.
{
  "email": "[email protected]",
  "userid": "user123",
  "cf1": "custom_field_1",
  "cf2": "custom_field_2",
  "cf3": "custom_field_3",
  "token": "token_id"
}
암호화 불가 파라미터pid, lang 쿼리 스트링 및 ‘추가 프로세스 (Injection)’ 페이지에서 사용하는 sid, action 쿼리 스트링은 암호화를 지원하지 않습니다. 단, Injection 사용 시 sidactionencrypted 파라미터 내부에 포함하여 암호화해야 합니다.

Step 2: 암호화 수행

선택한 암호화 알고리즘(ECB 또는 GCM)과 암호화 키(API KEY 또는 secretKey)를 사용하여 데이터를 암호화합니다.

암호화 가이드

상세한 암호화/복호화 방법과 코드 예시를 확인하세요.
암호화 예시 (ECB 방식):
// Node.js 예시
const crypto = require('crypto');

function encryptECB(data, apiKey) {
  const hashedKey = crypto.createHash('sha256').update(apiKey).digest();
  const cipher = crypto.createCipheriv('aes-256-ecb', hashedKey, null);
  return cipher.update(JSON.stringify(data), 'utf8', 'base64') + cipher.final('base64');
}

// 사용 예시
const data = {
  email: "[email protected]",
  userid: "user123",
  token: "token_id"
};
const encrypted = encryptECB(data, 'YOUR_API_KEY_OR_SECRET_KEY');

Step 3: 암호화된 데이터를 URL에 추가

암호화된 데이터를 encrypted 쿼리 파라미터에 추가합니다.
https://form.argosidentity.com?pid={project_Id}&encrypted={encrypted_data}
URL 인코딩암호화된 데이터는 URL에 사용하기 전에 반드시 URL 인코딩을 수행해야 합니다.

보안 전송 설정

API 메서드를 통한 데이터 전송 시 보안을 강화하는 설정입니다.
보안 전송 설정

보안 전송 설정 화면

안전한 데이터 전송

안전한 데이터 전송 옵션을 활성화하면, 아르고스와 고객사 간의 모든 데이터 전송이 암호화됩니다.
설정설명
안전한 데이터 전송API 메서드(GET, POST, PATCH 등)와 웹훅에서 데이터를 암호화하여 전송합니다.
중요: 암호화/복호화 필수안전한 데이터 전송 옵션이 활성화되어 있으면, 모든 API 요청(Request)과 응답(Response) 데이터를 반드시 암호화/복호화해야 합니다. 암호화되지 않은 데이터로 요청하면 오류가 발생합니다.

API 요청 데이터 암호화

안전한 데이터 전송이 활성화된 경우, API 요청 시 Request Body를 반드시 암호화하여 전송해야 합니다. 암호화 방식:
  • API 요청 (GET, POST, PATCH): AES-256-ECB 방식
  • 웹훅 데이터: AES-256-CBC 방식
요청 예시:
// POST /submission 요청 예시
const requestData = {
  email: "[email protected]",
  fullName: "John Doe",
  issuingCountry: "USA",
  birthDate: "1990-01-01"
};

// 데이터를 암호화
const encryptedBody = encryptECB(requestData, apiKey);

// 암호화된 데이터를 body로 전송
fetch('https://rest-api.argosidentity.com/v3/submission', {
  method: 'POST',
  headers: {
    'x-api-key': apiKey,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    body: encryptedBody
  })
});

API 응답 데이터 복호화

안전한 데이터 전송이 활성화된 경우, API 응답도 암호화되어 전송되므로 복호화가 필요합니다. 응답 형식:
{
  "data": "encrypted-string",
  "isEncrypted": true
}
복호화 예시:
// 응답 처리
const response = await fetch('https://rest-api.argosidentity.com/v3/submission/{submissionId}', {
  headers: {
    'x-api-key': apiKey
  }
});

const responseData = await response.json();

if (responseData.isEncrypted) {
  // 암호화된 데이터 복호화
  const decryptedData = decryptECB(responseData.data, apiKey);
  const submission = JSON.parse(decryptedData);
  console.log(submission);
} else {
  // 암호화되지 않은 경우 (일반적으로 발생하지 않음)
  console.log(responseData);
}

웹훅 데이터 암호화/복호화

웹훅 데이터는 AES-256-CBC 방식으로 암호화됩니다.

암호화 가이드

웹훅 데이터 암호화/복호화 방법을 자세히 확인하세요.

설정 시나리오별 가이드

암호화 알고리즘을 선택하고 일부 Query String만 암호화하여 사용하는 경우입니다.설정:
  • 암호화 알고리즘: ECB 또는 GCM 선택
  • 암호화 키: API KEY 또는 전용 키 선택
  • 암호화 전용 모드: 비활성화
사용 예시:
https://form.argosidentity.com?pid={project_Id}&[email protected]&encrypted={암호화된_토큰_데이터}
이 경우 email은 일반 파라미터로, token 등 민감한 정보는 encrypted 파라미터에 암호화하여 포함합니다.
모든 Query String 파라미터를 암호화하여 사용하는 경우입니다.설정:
  • 암호화 알고리즘: ECB 또는 GCM 선택
  • 암호화 키: API KEY 또는 전용 키 선택
  • 암호화 전용 모드: 활성화
사용 예시:
https://form.argosidentity.com?pid={project_Id}&encrypted={모든_파라미터_암호화_데이터}&lang=ko
이 경우 pid, lang을 제외한 모든 파라미터는 encrypted 파라미터에 암호화하여 포함해야 합니다.
API를 통한 데이터 전송 시 보안을 강화하는 경우입니다.설정:
  • 안전한 데이터 전송: 활성화
필수 작업:
  • 모든 API 요청(Request Body) 암호화
  • 모든 API 응답(Response Body) 복호화
  • 웹훅 수신 데이터 복호화
안전한 데이터 전송을 활성화하면 모든 API 통신이 암호화되므로, 클라이언트 측에서 암호화/복호화 로직을 반드시 구현해야 합니다.

관련 문서