소프트웨어 보안을 위한 암호학
1. 정보보호와 암호
•
정보보호: 데이터 기밀성, 무결성, 인증, 부인방지 등 보안 목표 달성 위한 기술.
•
암호의 역할: 데이터 전송/저장 시 기밀성·무결성 확보, 분석 방해, 해킹 저항성 제공.
•
인코딩 vs 암호화:
◦
인코딩: 데이터 형식 변환(가독성, 저장/전송 용이성 목적, ex: Base64)
◦
암호화: 키 기반 변환, 복호화 없이는 의미 해석 불가
2. 컴퓨터 데이터와 인코딩
•
모든 데이터 = 숫자
◦
문자→숫자(아스키코드, 유니코드)
◦
텍스트는 바이너리의 부분집합
•
hexdump:
◦
바이너리 데이터의 16진수 표현
3. 암호의 분류
•
고전암호: Caesar Cipher, Vigenere Cipher 등
•
현대 대칭키 암호: AES 등(키 공유, 고속)
•
현대 공개키(비대칭키) 암호: RSA 등(서로 다른 키, 느리지만 키교환·전자서명 가능)
4. 고전암호 원리
•
치환(Substitution) 암호:
◦
약속된 테이블 기반 문자 치환(예: Caesar, Vigenere)
◦
Base64는 인코딩, 고전암호는 암호화
•
전치(Transposition) 암호:
◦
문자 순서만 변경
•
Vigenere 암호:
◦
반복적 키를 사용하는 치환 암호
•
고전암호의 취약점:
◦
Frequency Analysis(빈도분석)로 쉽게 해독 가능
◦
알파벳 ‘E’ 등 자주 쓰이는 문자의 빈도 활용
5. XOR 연산
•
XOR (eXclusive OR):
◦
프로그래밍: ^ 연산자
◦
특성:
▪
A ^ B ^ B = A (복원 가능)
▪
Carry propagation(덧셈·뺄셈의 자리올림) 없음
▪
비트단위 연산(연산 중 비트수 불변)
◦
XOR은 인코딩/암호화 기반 연산
6. 해싱(Hashing)
•
정의:
◦
임의 길이 데이터를 고정 길이 데이터로 변환하는 단방향 함수
◦
N:1 매핑, 단방향(역변환 불가)
•
예시 알고리즘:
◦
CRC(비암호학적), MD5, SHA1, SHA256(암호학적)
•
활용:
◦
데이터 무결성 검사, 파일 ID, 암호 저장, 전자서명
•
좋은 해시 조건:
◦
Collision 없음(충돌저항성), Avalanche Effect(입력 미세변화→출력 완전달라짐), Preimage Resistance(역함수 불가), 빠른 연산속도
•
공격:
◦
브루트포스, 암호학적 공격
7. 해시 보안 속성
•
Avalanche Effect:
◦
입력이 조금만 바뀌어도 출력값이 완전히 달라지는 성질
•
Collision Resistance:
◦
서로 다른 입력에 대해 동일 출력값(충돌) 찾기 계산상 불가능
•
Preimage Resistance:
◦
해시값만 보고 원래 입력을 찾는 것(역산) 계산상 불가능
8. 대칭키 암호와 AES
•
대칭키 암호:
◦
암호화/복호화 동일 키 사용(키 공유 필요)
◦
AES(Advanced Encryption Standard): 대표적 대칭키 알고리즘
◦
Key size: 128/192/256bit
◦
Block size: 128bit 고정
◦
IV(초기화 벡터): 블록 암호 모드(CBC, CFB 등)에서 사용, Block size와 같음
◦
블록암호 모드: ECB(단순), CBC(체이닝) 등
9. 비대칭키 암호와 RSA
•
비대칭키(공개키) 암호:
◦
암호화와 복호화에 서로 다른 키(공개키/개인키) 사용
◦
RSA(Rivest–Shamir–Adleman): 큰 수 소인수분해 어려움 기반
•
활용:
◦
키교환, 전자서명, 인증서 발급 등
10. 키교환 프로토콜: 디피-헬만(Diffie-Hellman)
•
공개 파라미터: 큰 소수 P, 정수 G
•
개인키: 임의의 정수 a, b (각자 생성)
•
공개키 계산: A = G^a mod P, B = G^b mod P
•
공개키 교환 후, 공유키 계산:
◦
Alice: K = B^a mod P
◦
Bob: K = A^b mod P
•
보안: 이산 로그 문제(Discrete Logarithm Problem)의 어려움에 기반
11. 인증서와 전자서명
•
공인인증서:
◦
CA(Certificate Authority, 신뢰기관)가 발급
◦
사용자 정보, 공개키, CA서명 포함
•
전자서명:
◦
데이터 해시값을 개인키로 암호화(서명)
◦
검증자는 공개키로 복호화한 해시값과 데이터 해시를 비교
◦
소유권·무결성·부인방지 제공
12. SSL 암호화 통신 구조
•
공개키 기반 인증서 교환
•
키 교환 후, 대칭키(AES 등)로 본 데이터 암호화
•
이유:
◦
비대칭키 암호는 느림, 대칭키 암호는 빠름
◦
OpenSSL 등 라이브러리 사용
•
Base64 인코딩:
◦
인증서, 키 등 바이너리 데이터를 텍스트로 안전하게 전달하기 위한 인코딩