Cheondi
개발 · 보안

암호화만 하면 끝인 줄 알았는데

WebGL 저장 데이터를 보호하면서 용량과 기존 데이터 호환까지 함께 생각하게 된 기록입니다.

  • #security
  • #webgl
  • #local-data

WebGL에서 로컬에 저장하는 데이터를 다루다 보니 그대로 두어도 괜찮은지 신경이 쓰이기 시작했다. 처음에는 암호화를 적용하면 사람이 바로 읽을 수 없게 되니 문제도 끝날 거라고 생각했다. 보안이라는 말이 어렵게 느껴졌지만, 일단 저장하기 전에 암호화하고 불러온 뒤 풀어 주면 되는 일처럼 보였다.

작은 데이터로 시험했을 때는 잘 됐다. 그런데 실제로 저장되는 내용이 커지자 어느 순간부터 파일을 제대로 읽지 못하는 문제가 생겼다. 암호화한 결과는 원래 데이터보다 길어졌고, 저장하는 쪽에도 한계가 있었다. 기능은 똑같은데 데이터 양에 따라 성공과 실패가 갈리는 상황이라 처음에는 원인을 찾기가 쉽지 않았다.

그 문제를 고치면서 암호화 방식을 손본 뒤에는 또 다른 걱정이 생겼다. 새 방식으로 저장한 데이터는 잘 읽었지만, 이미 예전 방식으로 저장된 데이터는 어떻게 해야 하는지가 남았다. 개발하는 입장에서는 새 형식으로 바꾸면 깔끔했지만 사용자 입장에서는 갑자기 자신의 설정을 잃어버리는 일이 될 수 있었다. 안전하게 보호하려고 한 변경이 오히려 불편을 만들 수도 있다는 점이 부담스러웠다.

그때부터는 새 데이터를 잘 저장하는지만 보지 않고, 예전 데이터를 알아볼 수 있는지와 읽기에 실패했을 때 어떻게 복구할지도 같이 생각했다. 형식을 바꾸기 전에는 기존 파일을 읽는 흐름을 먼저 확인하고, 큰 데이터와 잘못된 데이터도 따로 시험해 보게 됐다. 보안 기능도 결국 사용 중인 데이터의 흐름 안에 있다는 걸 알게 됐다.

이 경험 전에는 보안을 무언가를 강하게 잠그는 일로만 생각했다. 지금은 필요한 사람에게는 계속 안전하게 열려야 하고, 변경 뒤에도 기존 데이터가 갑자기 사라지지 않게 하는 일까지 포함한다고 본다. 아직 배울 게 많지만 암호화를 넣었다는 사실보다 그 전후의 저장과 복구를 함께 보는 습관이 생겼다.