컴퓨터 네트워크 - Network Security: Confidentiality(대칭 키/비대칭 키), Message Integrity, End-Point Authentication
K-MOOC에서 부산대학교 유영환 교수님의 “컴퓨터 네트워킹” 강의를 수강하며 적은 노트
Network Security
안전한 통신에 필요한 성질
- confidentiality: 내용의 기밀성, 송신자와 송신자가 의도한 수신자만이 내용을 이해
- 중간에 패킷을 가로채도 알 수 없어야 함
- 보내는 사람이 암호화해서 수신자가 decrypt(복구)
- message integrity: 송신자나 수신자가 메시지가 변하지 않았다는 것을 믿을 수 있음
- end-point authentication: 송신자와 수신자가 정말 맞는지 확신할 수 있음
- operational security: 운영 상의 보안
- 시스템에 대한 접근이나 사용 권한은 믿을 수 있는 사용자에게만 허용함
용어
- 안전한 통신을 요구하는 주체 Alice, Bob
- 실제 두 사용자들
- 전자 상거래나 인터넷 뱅킹, DNS의 클라이언트와 서버
- OSPF와 같은 라우팅 프로토콜에서 Routing advertisement message를 주고받는 라우터들
- 통신을 방해하는 공격자 Trudy
- Eavesdrop: 엿듣기
- 허위 메시지 추가
- IP 주소 등 헤더 정보를 바꿔 다른 주체인 척
- hijacking: 중간에 가로채기, 또는 대신에 다른 정보를 넣기
- denial of service: 서버에 많은 허위 메시지 보내기
Cryptography Principles
용어
- 플레인텍스트(plaintext): 암호화되기 전의 일반적인 메시지
- 사이퍼텍스트(ciphertext): 플레인텍스트에 encryption(암호화) 알고리즘으로 암호화를 한 암호문
- 실제 통신 채널을 통해서 전달되는 메시지
- decryption(복호화) 알고리즘을 통해 수신자가 플레인텍스트를 다시 제작
- 평문 메시지 m에 Alice가 비밀 키 KA를 통해 암호화, Bob은 KB로 복호화
ex) substitution cipher: 치환
- 초창기 알고리즘
- 각 문자를 다른 문자로 mapping
- 각 문자는 빈도수가 다르기 때문에 그 빈도수로 추정하기 쉬움
symmetric key cryptosystem: 대칭 키, 하나의 키를 암호화할 때와 복호화할 때 똑같이 사용
- secret key system: 키는 반드시 두 사용자만 알고 있어야 함
- substitution cipher는 대칭 키의 예 중 하나
- 비밀 키를 온라인으로 주고받는 것 자체가 탈취될 수 있으므로, 먼저 해결이 되어야 함
- DES(Data Encryption Standard): 56 bit의 symmetric key
- 평문을 64 bit 블록 단위로 나누고 규칙에 따라 순서를 섞음
- 라운드 1~16까지 라운드마다 다른 56 bit 키 입력
- 56 bit를 7 bit씩 나눔: 1의 개수를 맞추기 위해 각 8번째 bit는 parity bit
- permuted choice 표에 따라 비트를 섞어 키를 바꾸고 반으로 나누어 left half 28 bit, right half 28 bit 선택(parity bit는 사용 x)
- binary 로테이션으로 매 라운드마다 몇 비트씩 left shift하고 또 permutation으로 총 48 bit 길이의 키를 생성 - 키를 모르는 상태에서 원문을 찾아내는 데에 당시 컴퓨팅 파워로는 굉장히 오래 걸림, 하지만 키를 찾아낸 뒤부터는 메시지를 쉽게 번역 - 3DES(Triple DES): 서로 다른 세 개의 키로 메시지를 세 번 암호화
- AES(Advanced Encryption Standard): 128, 192, 256 비트 길이 등의 블록 단위로 암호화
- brute force로 키를 찾는다고 가정하면 DES가 1초면 AES는 149조 년 걸림
- 키에 대해 정보를 알고 있는 경우 시간이 많이 줄어들 수 있으나, DES에 비하면 훨씬 안전하다고 평가받아 많이 쓰임
asymmetric key cryptosystem: 비대칭 키, 어떤 하나의 원리에서 만들어진 한 쌍의 키를 암호화와 복호화에 각각 사용
- public key system: 두 키 중 하나는 공개키
- symmetric key는 비밀 키를 미리 공유해야 하는 문제
- Alice는 자신의 평문 m을 전달할 때 Bob의 퍼블릭 키로 암호화. $K_B+(m)$
- Bob은 해당 메시지를 자신의 프라이빗 키를 적용
- 즉 공개키로 누구나 암호화 가능하고, 그 메시지는 프라이빗 키로만 복원 가능해야 함
- RSA
- $P_U$: 퍼블릭 키, $P_R$: 프라이빗 키
- ex)
- Bob의 $P_U$: (7, 187)
- Alice는 평문 m 88을 보내고 싶음: $88^7 \% 187 = 11$을 전송
- Bob의 PR: (23, 187)
- 복호화: $11^{23} \% 187 = 88$
- 2개의 매우 큰 소수 p, q를 찾음(1024 bit 이상)
- $pq = n$, $(p-1)(q-1) = z$ 구함
- 퍼블릭 키로 사용할 e(encryption)와 프라이빗 키 d(decryption)를 만듦
- z와 서로소인 소수 2개를 찾음 - 퍼블릭 키는 (n, e), 프라이빗 키는 (n, d) - 즉 $P_U$(n, e)를 사용해 $m^e\%n = c$를 전달하고, c를 받으면 $c^d\%n = m$을 복구
- p, q를 유의미한 시간 안에 알아내기 매우 어려우므로 안전성 있음
- 소인수분해를 매우 잘하는 양자 컴퓨터가 상용화되면 안전하지는 않게 될 것임
RSA와 DES
- RSA 쪽이 안전성은 좋지만, 연산이 DES에 비해 많이 필요
- DES는 RSA의 100배 이상 빠름
- RSA를 통해 암호화를 해서 DES의 공통 비밀 키를 주고받을 수 있음
Message Integrity
DES, RSA 알고리즘은 메시지 내용 자체를 감출 수 있기 때문에 기밀성(confidentiality) 제공
message integrity(메시지 무결성): 송신자가 처음에 전달한 형태 그대로 수신자에게 도착 보장
- 2가지 필요
- 메시지가 진짜 Alice가 보낸 것임을 보장
- 메시지가 전달되는 과정에서 내용이 바뀌지 않았음을 보장
- message digest(메시지 요약): 긴 메시지에서 어떤 fixed-length의 짧은 요약
- 만약 confidentiality가 제공되어 전체 메시지가 다 암호화되어 내용 자체를 중간의 누군가가 볼 수 없다면 message integrity가 제공될 것임
- 연산이 오래 걸림
- 그러나 message integrity의 목적은 공개되어도 상관없지만 바뀌지 않았다는 것만 보장하면 됨
- CRC와 비슷하게, 전체를 다 암호화 X
- 주로 hash 함수 사용
- 메시지를 요약한 것이므로 같은 해시가 나올 수도 있지만, 어떤 Trudy가 자신이 노리는 특정 부분을 바꾸었을 때 동일한 해시가 나올 확률은 매우 낮음
- 주로 MD5, SHA-1 사용
- 전체 메시지를 해시 함수를 통해 암호화를 적용함으로써 message integrity 보장
- 만약 confidentiality가 제공되어 전체 메시지가 다 암호화되어 내용 자체를 중간의 누군가가 볼 수 없다면 message integrity가 제공될 것임
대칭 키 방식
- MAC(message authentication code)
- ver. 1
- Alice는 전체 메시지 m에 해시 함수를 적용해 H(m)의 짧은 메시지 제작
- m과 H(m)을 수신한 Bob은 동일한 해시 함수로 요약본과 원본 메시지 비교
- 그러나 Trudy가 Alice와 Bob이 사용하는 해시 함수를 알고 있다면 가짜 메시지를 만들어서 요약본도 가짜로 생성해서 보낼 수 있음
- ver. 2
- Alice와 Bob이 공통된 인증 키 s를 가짐
- Alice가 m에 s를 더한 것에 해시 함수를 적용해 메시지 다이제스트 제작
- Trudy는 s를 모르기 때문에 m+s로 가짜 메시지 다이제스트를 제작할 수 없음
- ver. 1
비대칭 키 방식
- 전자 서명
- RSA는 개인 키와 공개 키가 한 번씩만 적용이 된다면 어떤 순서로 적용되어도 상관없이 똑같이 하나의 메시지 m을 만들어 낼 수 있음
- Bob이 전체 메시지 m으로 메시지 다이제스트 H(m) 제작
- 다이제스트를 개인 키로 암호화한 것을 m과 함께 Alice에 전달
- Alice는 받은 평문 m으로 H(m) 제작
- H(m)을 Bob의 공개 키로 복호화하여 둘을 비교
- RSA는 개인 키와 공개 키가 한 번씩만 적용이 된다면 어떤 순서로 적용되어도 상관없이 똑같이 하나의 메시지 m을 만들어 낼 수 있음
- Bob은 원래 메시지 m으로 만든 메시지 다이제스트에 자신의 개인 키를 적용했기 때문에, Bob만이 암호화를 서명할 수 있다는 것이 증명됨
End-Point Authentication
End-point authentication: 하나의 통신 개체가 다른 개체에게 온라인 상에서 자신의 신분을 증명할 수 있는 인증
- 패스워드 전달
- Alice가 자신의 패스워드를 전달
- 그 패스워드가 Bob이 알고 있는 패스워드와 같다면 Alice임이 증명
- Playback attack(replay attack, 재생 공격)
- Trudy가 이전에 Alice가 다른 주체에 보낸 메시지를 탈취해서 캡쳐해 놓음
- 패스워드가 무엇인지는 모르지만, 그냥 전체 내용을 복사해 뒀다가 Bob에게 전달해도 Bob은 Alice가 보낸 것으로 착각
- Alice의 패스워드를 암호화해도 상관없음
- Trudy는 패스워드 상관없이 메시지를 통째로 저장하고 전달하는 것
- 또, 계속 동일한 시크릿 키가 사용되면 encrypted된 내용이 같으므로 Trudy가 Alice처럼 행세할 수도 있음
- Nonce
- 서버가 임의로 알아내기 힘든 굉장히 큰 랜덤 넘버 R 부여
- R을 시크릿 키로 암호화해서 전송, 수신자는 암호화된 R 값 확인
- Nonce
- 매번 접속할 때마다 다른 R을 부여하므로 playback attack 방지
- Alice와 Bob은 secret 키를 공유하고 있어야 함 -> 퍼블릭 키 알고리즘 사용
- Bob이 R을 주면 Alice는 자기 비밀 키로 암호화
- Bob은 Alice의 퍼블릭 키 적용하여 확인
- man-in-the-middle-attack
- Bob은 공개키를 모를 경우 Alice에게 요청해야 함
- Trudy가 메시지를 가로 채서 Alice인 척 하고 Bob에게 자신의 비밀 키로 암호화해서 전송하고, 자신의 퍼블릭 키를 가르쳐 줌
- certification authority(인증 기관)
- 인증 기관을 거쳐 공개키를 인증 기관의 비밀키로 암호화해서 외부에 공개
댓글남기기