Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- fullcalendar
- jsx
- react
- 대칭키암호시스템
- vscode
- 해시함수
- RequestMethod.POST
- 국제화
- 서드파티모듈
- SQL
- MySQL
- mybatis
- C#크롤링
- 대칭키암호화
- 동적쿼리
- node.js
- jQuery
- Spring
- 공개키암호시스템
- 전자서명
- c:forEach
- 무결성
- JavaScript
- 대칭키알고리즘
- AndroidStudio
- c:choose
- 암호학
- Java
- NPM
- JSTL
Archives
- Today
- Total
Today Yewon Learned
공개 알고리즘을 사용하면 위험하다? 암호학의 핵심 오해 지점 파헤치기! 본문

나는 암호학을 공부하면서, 의문점이 생겼다.
공개 알고리즘을 사용하면 공격자들이 쉽게 알고리즘을 풀 수 있을텐데...
자체 알고리즘을 만드는게 더 안전하지 않을까?
결론을 먼저 말하자면,
공개 알고리즘은 위험해서 쓰는 것이 아니라,
공개되어도 안전하다는 것이 증명된 것만 살아남기 때문에 쓰는 것
1) 암호 보안의 기준은 "비밀이 무엇인가?"이다.
암호 시스템에는 두 가지가 있다.
① 알고리즘 : 공개
② 키(Key) : 비밀
이게 암호학의 기본 전제이다. 즉 보안은 오직 'Key'에만 의존해야 한다.
왜?
- 알고리즘은 노출을 전제로 설계 가능
- 키는 교체 가능
- 알고리즘이 비밀이면 → 노출 시 전체 시스템 교체
2) "공개되면 공격자가 유리한 것이 아닌가?"
공격자가 알고리즘을 알면 공격이 쉬워진다는 생각은 사실상 잘못된 직관이다.
실제 암호화 가정은, "공격자는 이미 알고있다."로 가정한다.
이를 케르크호프스의 원리라고 한다.
이유
- 실행 파일, 네트워크 트래픽, 장비는 분석 가능
- 내부자/협력사/유출 가능성
- 수년간 운영될 시스템에서 "비밀 유지"는 환상
따라서, 암호 설계는 처음부터 "공격자가 구조를 전부 안다"는 최악의 조건에서도 안전해야 한다.
3) 공개 알고리즘이 안전해지는 구조
| 공개 알고리즘 | 비공개(자체 알고리즘) |
| - 설계 공개 - 전 세계 수학자 및 보안 연구자가 분석 - 약점 발견 → 폐기 또는 수정 - 살아남은 것만 표준으로 사용 → 집단 검증 + 시간 검증 완료 |
- 소수 개발자가 설계 - 공격자만 조용히 분석 - 방어자는 취약점 존재 여부를 모름 - 실전에서 갑자기 깨짐 → 검증 부재 + 착시 안전 |
4) "공개 알고리즘 = 이미 뚫린 것이 아닌가?"의 오해와 진실
중요한 포인트:
- 공개 ≠ 취약
- 분석됨 ≠ 깨짐
AES는
- 구조, 수식, 라운드, 키 스케줄 전부 공개
- 20년 이상 전 세계에서 분석
- 그럼에도 실용적 공격 없음
이건 위험한 게 아니라 오히려 매우 강한 증거이다.
한 문장 요약
암호 알고리즘은 공개되어도 안전해야 하며,
보안은 알고리즘의 비밀성이 아니라 키의 비밀성에 의존해야 한다.
'보안' 카테고리의 다른 글
| [데이터베이스 보안] DB 암호화 분류ⓛ (1) | 2025.11.20 |
|---|---|
| [정보보안] 대칭키 암호 알고리즘 (블록 암호, 스트림 암호) (0) | 2025.11.19 |
| [정보보안] 암호시스템 ⑤ 전자 서명(Digital Signature) (0) | 2025.11.18 |
| [정보보안] 암호시스템 ④ 일방향 함수 : Hash Function (0) | 2025.11.14 |
| [정보보안] 암호시스템 ③ 하이브리드 암호시스템 (0) | 2025.11.13 |
Comments