문자열 난독화기
비밀값, IBAN, 토큰 등의 내용을 드러내지 않고 공유·식별할 수 있도록 문자열을 난독화합니다.
비밀값이나 식별 번호의 앞뒤 일부만 남기고 가운데를 가려서, 화면이나 공유 메시지에 전체 값이 드러나지 않게 합니다.
사용 순서
- 가릴 문자열을 입력창에 넣습니다.
- 앞에서 유지할 문자 수와 뒤에서 유지할 문자 수를 정합니다.
- 공백 유지 스위치를 조정한 뒤 결과 카드의 복사 버튼으로 가린 문자열을 복사합니다.
예시
Lorem ipsum dolor sit amet을 앞 4자, 뒤 4자 유지로 설정하면 Lore* ***** ***** *** amet이 됩니다. 공백 유지가 켜져 있으면 공백은 그대로 남습니다.
한계
암호화가 아니므로 원래 값을 되돌릴 수 없지만, 이를 보안 기능으로 보장하지는 않습니다. 가린 칸의 수가 원래 길이를 드러냅니다. 길이는 JavaScript 문자열 단위로 세므로 이모지 하나는 별표 두 개로 바뀝니다.
보안 주의
앞에서 남기는 글자는 식별 정보가 되기 쉽습니다. 접두사가 고정된 키라면 앞 몇 글자만 남겨도 서비스 종류가 드러납니다. 뒤쪽 글자는 로그 검색이나 티켓 대조에 쓰일 수 있으니, 공유 전에 남는 부분이 무엇인지 확인하세요.
배경 지식
마스킹은 값의 일부를 가려서 표시하는 기법입니다. 카드 번호의 뒤 네 자리만 보여 주거나 전화번호의 가운데를 별표로 바꾸는 것이 대표적인 예입니다. 사람이 값을 식별하거나 확인할 수 있게 하면서도 전체 값이 노출되지 않게 하는 것이 목적입니다. 그래서 고객 번호나 주문 번호처럼 사람이 대조해야 하는 값에 특히 많이 쓰입니다.
마스킹과 암호화는 다릅니다. 암호화는 키가 있으면 원래 값으로 되돌릴 수 있고, 마스킹은 가려진 부분을 저장해 두지 않으면 복원할 수 없습니다. 하지만 마스킹된 값도 길이와 앞뒤 일부는 그대로 남기 때문에 보안 수단으로는 충분하지 않습니다. 비밀값을 안전하게 보관하려면 마스킹이 아니라 암호화나 접근 통제를 함께 써야 합니다.
로그, 화면 캡처, 고객 응답처럼 값이 여러 곳에 복사되는 상황에서 마스킹이 자주 쓰입니다. 디버그 출력을 공유할 때 실제 토큰 전체 대신 가린 값을 넣으면 사고를 줄일 수 있습니다. 어디를 얼마나 가릴지는 그 값이 쓰이는 목적에 맞춰 정해야 합니다. 같은 토큰이라도 화면에 보여 줄 때와 로그에 남길 때 가리는 범위가 달라야 합니다.
자주 묻는 질문
마스킹된 값으로 원래 토큰을 다시 만들 수 있나요?
가려진 부분은 결과에 남지 않으므로 복원할 수 없습니다. 다만 길이와 남긴 앞뒤 글자는 드러나므로 그 정보만으로도 후보를 좁힐 수 있습니다.
유지 문자 수를 0으로 두면 어떻게 되나요?
앞뒤 모두 0이면 공백을 제외한 모든 글자가 별표로 바뀝니다. 공백 유지 스위치가 켜져 있으면 공백 위치는 그대로 남으므로 단어 경계가 드러납니다.
한글과 이모지도 가릴 수 있나요?
한글은 한 글자가 한 칸이므로 그대로 가려집니다. 이모지는 두 칸으로 계산되어 별표 두 개가 되며, 여러 코드 포인트로 이루어진 이모지는 일부만 가려져 모양이 깨질 수 있습니다.