암호화
Encryption
암호화란?
- 데이터를 '열쇠 없인 못 읽게' 변환
- 통신·저장 데이터 보호
- 훔쳐봐도 내용 모름
암호화를 넣는다는 건 기술을 하나 더 붙이는 일이 아니라, 사고가 났을 때의 '등급'을 바꾸는 일입니다. 서버가 털려 회원 테이블이 통째로 빠져나가도 안이 AES-256 암호문이면 공격자 손에 남는 건 의미 없는 문자열입니다. 반대로 평문이면 그 순간부터 유출 통지·신고 의무가 걸리고 고객센터는 며칠간 마비됩니다. 그래서 실무에서 암호화는 '해킹을 막는 기술'이 아니라 털린 뒤의 피해 규모를 미리 묶어두는 장치입니다. 막는 일은 방화벽과 접근통제가 하고, 암호화는 뚫린 다음을 담당합니다.
쓰임은 크게 셋으로 갈립니다. 대칭키(AES-256)는 하나의 키로 잠그고 푸는 방식이라 빠르고, DB 컬럼·파일·백업처럼 양이 많은 저장 데이터에 씁니다. 비대칭키(RSA·타원곡선)는 공개키로 잠그고 개인키로 푸는 구조여서 느린 대신 키 교환과 전자서명에 쓰이고, HTTPS는 접속 순간 비대칭키로 대칭키를 주고받은 뒤 실제 통신은 대칭키로 처리합니다. 세 번째가 해싱인데 bcrypt·Argon2는 복호화가 아예 불가능해 엄밀히 말하면 암호화가 아니며, 비밀번호처럼 원문을 알 필요가 없는 값에만 씁니다. 마스킹(홍○○)이나 토큰화를 암호화라고 보고하는 경우가 많은데 이건 화면 표시 방식일 뿐 원본은 그대로 남습니다.
현장에서 가장 자주 어긋나는 지점은 키 관리입니다. 보고서에는 AES-256으로 잠갔다고 적혀 있는데, 정작 키가 소스코드에 하드코딩돼 깃허브에 올라가 있거나 암호화된 DB와 같은 서버 폴더에 놓여 있습니다. 자물쇠 상자와 열쇠를 한 봉투에 넣은 셈이라 감사에서 그대로 지적받습니다. 디스크 암호화만 걸고 안심하는 것도 위험합니다. 서버가 켜져 있는 동안은 복호화된 상태라 관리자 계정이 탈취되면 아무 역할을 못 합니다. 솔트 없는 SHA-256 저장 관행도 여전한데, GPU 한 대로 초당 수십억 번 대입이 가능해 흔한 비밀번호는 사실상 평문입니다. 백업 파일, 로그, 담당자가 내려받은 엑셀은 암호화 범위 밖에 방치된 경우가 대부분입니다.
암호는 고대부터 존재했고, 현대 컴퓨터 암호화는 20세기 중반 이후 수학·정보이론의 발전과 함께 표준화돼 인터넷 보안의 근간이 됐습니다.
가상의 사례로 살펴보겠습니다. 임직원 38명, 연매출 약 120억 원의 온라인 식품 쇼핑몰 A사 이야기입니다. 회원 24만 명을 모은 뒤 대형 유통사와 제휴를 논의하다가 상대측 보안 실사를 받게 됐습니다. 실사 이틀 만에 '비밀번호 저장 방식과 암호화 키 보관'에서 치명 등급 4건이 나왔고, 제휴 계약이 3개월 보류됐습니다.
- 개발팀장이 코드를 열어보고 먼저 손을 들었습니다. "회원 24만 명 비밀번호가 솔트 없는 SHA-256입니다. 흔한 조합 1만 개는 노트북으로도 몇 분이면 맞춥니다."
- CTO가 bcrypt(cost 12)로 전환하되 일괄 변경 대신 로그인 시점 재해싱을 택했습니다. 4개월 동안 기존 해시와 병행 운영해 로그아웃 사고 없이 넘어갔습니다.
- 보안담당 차장이 주민등록번호·계좌번호 컬럼을 AES-256으로 바꾸고, 소스에 박혀 있던 키를 빼 KMS로 옮겼습니다. "키와 데이터가 같은 서버에 있으면 안 잠근 것과 같습니다"가 그날 회의의 한마디였습니다.
- 인프라 담당 대리가 TLS 1.0·1.1 접속을 끊고 1.2 이상만 허용하도록 바꿨습니다. 운영자가 관리자 화면에서 내려받던 회원 엑셀도 암호 걸린 압축 파일로만 나가게 하고 다운로드 이력을 남겼습니다.
- 6개월 뒤 재실사에서 치명 등급 4건이 0건, 전체 지적은 7건에서 1건으로 줄었습니다. 로그인 응답은 평균 40ms 늘었지만 이탈률 변화는 없었고, 보류됐던 제휴 계약이 그달에 체결됐습니다.