다섯 번째 시간에 정리 했던 내용을 다시 정리 간단하게 한번 하겠습니다.
* 암호화 중요성
- 도청 (음성 전화 도청), Sniffing(데이터 도청)으로부터 안전하게 데이터를 전송하기 위한 방법이 암호화 했다.
- ID/PW, Image, 명령어, 검색어 등을 와이어샤크와 같은 분석 도구로 분석이 가능합니다.
* 암호화 방식
- 대칭키 : 암호화 키와 복호화 키가 서로 대칭을 이룹니다. ex) 쉬프트 + 4 와 쉬프트 - 4 는 서로 대칭입니다.
- 비대칭키 : 공개키 암호화
* 대칭키의 종류
1. DES : 최초의 표준 대칭키 (1977 ~ 2000)
2. AES : 현재 표준 대칭키 ( 2001 ~ 현재 )
3. SEED : 국내에서 개발한 대칭키, 은행 공동망
4. ARIA, LEA, HIGHT : 경량 암호화
5. Blowfish, RC6 : 미국에서 많이 사용하는 대칭키
* 대칭키의 장단점
- 장점 : 암호화, 복호화 속도가 빠르다. , 다양한 알고리즘을 활용해서 제작이 가능합니다.
- 단점 : 키의 개수가 문제입니다. 인증, 부인봉쇄가 되지 않습니다. 공개키 방식으로 해결해야 합니다.
* 대칭키 (Symmetric Key) : 암호화 키와 복호화 키가 서로 대칭을 이루기 때문이다.
= 단일키 (Single Key) : 대칭이면 하나만 알면 다른 키도 알 수 있기 때문에 사실상 하나의 키와 마찬가지이다.
= 비밀키 (Secret Key) : 대칭키는 비밀리에 관리해야 한다.
= 세션키 (Session Key) : 한번에 세션에서만 사용하고 세션이 끝나면 삭제한다.
* 대칭키의 원리
1) 치환 (Substitution)
- 글자를 다른 글자로 바꾸는 것
- 공격 방법은 빈도수를 공격합니다. (영어의 특성상 e , t, s 를 많이 사용하므로 가장 많이 보이는 알파벳을 e, t, s로 추정된다.)
2) 순열 (Permutation)
- 알파벳을 일정 크기로 자른 후, 순서를 규칙에 따라 재배열한다.
3) 매트릭스
- 가로로 쓰고 (평문), 세로로 전달 (암호문)
- 핵심 : M*N 매트릭스의 숫자가 암호화 키이고 복호화 키가 된다.
4) 톱니바퀴를 이용해서 이니그마 (독일군 암호화 기계)
5) Bomby 를 이용해서 암호화 키를 알아내는 도구 (앨런 튜링)
-----> AES 는 치환과 전치를 여러번 반복 (SPN구조 : Substitution & Permutation Network)
* mod 함수
- 나눠서 남는 나머지를 계산하는 함수이다.
ex) 11 mod 3 = 2
네트워크 여섯 번째 정리
Diffie-Hellman 키 교환은 암호학에서 사용되는 중요한 개념 중 하나 입니다. 이 방법은 2개의 당사자가 서로 인증되지 않은 통신 채널을 통해 비밀 키를 공유할 수 있도록 해줍니다. 이를 통해 공개 통신망을 안전하게 통신할 수 있게 됩니다.
Diffie-Hellma 키 교환은 1970년에 발명되었습니다. 이 방법은 간단한 수학적 원리에 기반하며, 이를 통해 두 사용자가 같은 비밀 키를 공유할 수 있도록 합니다. 이 방법의 핵심은 이산 수학에 기초한 것으로 대표적으로 모듈러 연산이 사용됩니다.
1. 먼저, 두 사용자가 공개된 값으로 구성된 매개 변수를 공유합니다.
2. 각 사용자는 자신만의 비밀 값을 선택합니다. 이 비밀 값은 다른 사용자에게 공개되지 않습니다.
3. 각 사용자는 공개된 매개 변수와 자신의 비밀 값을 사용하여 연산을 수행합니다. 이 과정을 통해서 각 사용자는 자신의 공개 키를 생성합니다.
4. 생성된 공개 키는 상대방에게 전송됩니다.
5. 상대방은 받은 공개 키와 자신의 비밀값을 사용하여 동일한 연산을 수행하여 공유된 비밀 키를 생성합니다.
동일한 비밀 키를 생성하게 하고 이 비밀 키는 안전한 통신을 위한 대칭키로 사용될 수 있습니다. 이러한 방법은 중간자 공격에 대해 보호되며, 이론적으로 보안성이 강합니다. 그러나 실제로는 암호학적으로 안전한 큰 소수를 사용하여야 하며, 키 교환 도중에 공격자가 대상 사용자들 사이에서 소수를 누설하지 않도록 보장해야 합니다.
정리하자면 !
* Diffie-Hellman (Diffie 가 제 1저자, Hellman 은 제 2저자)
- 키 전달의 문제를 해결 : 세션키를 교환하지 않고도 양쪽이 같은 세션키를 가지게 된다.
- 키 개수의 문제도 해결한다. 누구나 한쌍의 키를 가지기만 하면 됩니다. ( 개인키, 공개키 )
- 개인키는 자기 혼자만 안전하게 보관하고 사용한다.
- 공개키는 거래 상대에게 제공한다.
- 인증이나 부인봉쇄는 해결되지 않습니다.
* 대칭키 방식의 가장 큰 문제인 키 전달의 문제를 해결
- 공개키를 서로 교환한 후에 자신의 개인키와 상대의 공개키를 연산해서 대칭키(세션키)를 생성합니다.
- 데이터를 대칭키 (세션키)로 암호화해서 보내면, 상대방도 복호화 가능하다.
- 대칭키 (세션키)를 교환하는 문제를 해결한다.
* 중간자 공격 ( Man in the middle attack )
- 중간에 공격자가 끼어들어서 양쪽에 자신의 공개키를 제공하는 공격 방식입니다.
- 도청이 가능합니다. 메시지도 수정이 가능합니다.
- Diffie-Hellman 방식의 약점
* RSA (Rivest Shamir Adleman)
1. RSA 의 특징
1) 개인키로 암호화하면 공개키로 검증할 수 있습니다. -----------> 인증
2) 공개키로 암호화하면 개인키로 혼자서만 볼 수 있습니다. --------> 기밀성
2. 2개의 키를 사용 : 개인키와 공개키는 서로 쌍을 이룹니다.
- 개인키를 먼저 생성한 다음, 공개키를 추출하는 방식입니다. (한 쌍)
- 개인키는 자신 혼자 보관합니다. ------> 공동 인증서 ( 구 공인 인증서 )
- 공개 키는 암호화 통신을 하고 싶은 상대에게 제공합니다. -------> 공인인증서 등록 ( 공개키를 달라는 의미 )
3. 하나의 키로 암호화를 하면, 그 키로는 복호화가 안되고 쌍이 되는 다른 키로만 복호화가 됩니다.
- A의 공개키로 암호화하면 A의 공개키로는 복호화가 안되고 A의 개인키로만 복호화가 됩니다.
- B의 개인키로 암호화 하면 B의 개인키로는 복호화가 안되고 B의 공개키로만 복호화가 됩니다.
- 만약에 복호화를 하려고 했는데 복호화가 안되면 그 쌍이 되는 키가 아닙니다. -----> 증명 아무나 복호화를 할 수 없다.
정리하자면 !
RSA : 잠그는 키, 여는 키 < ----- 개인키 또는 공개키를 사용할 수 있습니다.
- 개인키로 암호화 하면 공개키로 복호화가 가능합니다. 즉, 개인키는 주인만 사용할 수 있습니다. 이것은 인증입니다.
- 공개키로 암호화 하면 개인키로 복호화가 가능합니다. 즉, 개인키 주인만 볼 수 있습니다. 이것을 기밀성이라고 합니다.
- 기밀성
ex ) B의 공개키로 암호화 하였으므로 B의 개인키로만 복호화가 가능합니다.
B의 개인키는 B만 가지고 있으므로 기밀성이 확보됩니다.
- 인증
ex ) B의 공개키로 복호화가 된다는 것은 B가 개인키로 사용했다는 것을 증명합니다.
B의 개인키는 B만 가지고 있으므로 B의 인증이 확실하다는 것을 증명합니다.
* 공개키 암호 알고리즘의 특징
- 서로 연관된 키 쌍 ( 개인키 / 공개키 ) 가 필요합니다.
- 하나의 키로 암호화한 결과는 반드시 쌍이 되는 키로만 복호화가 가능하다.
- 구조상 복잡한 수학 연산이 필요하다. (암, 복호화 속도가 느려지는 원인)
- 안전성이 수학적 이론에 근거한다.
- 키 관리 문제 해결
- 서명 기능, 기밀성 등의 기능이 가능합니다.
- 단점은 동일한 양의 데이터를 암호화 시 대칭키 암호화에 비해 매우 느립니다.
- DES에 비해 하드웨어에서 1000배 가량 더 시간이 걸립니다.
* 인증성
- 인증서는 공개키가 유효한지 올바른 사용자의 검증된 공개키인지를 확인시켜줍니다.
- 인증서 안에는 공개키와 공개키에 대한 정보들이 포함되어 있습니다.
- 공인 인증 기관에서 인증한 인증서를 공인인증서라고 했으나 이름을 최근 '공동인증서'로 바꿉니다.
- 웹서버의 인증서는 웹브라우저에게 제공하는 방식을 사용합니다. (홈페이지 상단에 자물)
- 개인의 인증서는 거래하기 전에 미리 자신의 공개키를 등록하고 사용합니다.
* 2024년 현재 암호화 키 길이를 비교합니다.
- 대칭키의 대표 AES는 256bit를 사용합니다. (2의 256승)
- 공개키의 대표 RSA는 2048bit를 사용합니다. (2의 2048승) -------> RSA는 소인수 분해, ECC는 타원곡선방식이다.
* ECC (Eliptic Curve Criptography : 타원 곡선 암호화)
ECC 는 타원 곡선 암호의 약어 입니다. 이것은 현재 암호학에서 사용되는 강력한 암호 기술 중 하나로 특히 공개 키 암호화, 디지털 서명 및 키 교환에 사용됩니다.
ECC는 타원 곡선이라는 수학적 개념을 기반으로 합니다. 이 곡선 상에서는 덧셈, 곱셈 등의 연산이 정의되어 있으며, 이러한 연산을 통해 암호화, 서명, 키 교환 등의 작업을 수행할 수 있습니다.
- ECC 의 주요 장점
1. 강력한 보안 : ECC는 키의 크기가 작은 상태에서도 RSA와 같은 전통적인 암호화 기술과 유사한 수준의 보안을 제공합니다. 이는 특히 제한된 자원 환경에서 중요합니다.
2. 효율성 : ECC는 작은 키 크기로도 강력한 보안을 제공하기 때문에 효율적입니다. 따라서 대역폭과 저장 공간을 절약할 수 있습니다.
3. 빠른 계산 : ECC의 연산은 일반적으로 빠르며, 따라서 ECC 기반의 암호 시스템은 빠른 속도를 제공합니다.
ECC는 현재 전자 상거래, 모바일 통신, 암호 화폐 등 다양한 분야에서 많이 사용되고 있습니다. 그렇지만 효율적인 구현 및 키 관리의 어려움의 사용으로 여전히 RSA와 같은 전통적인 암호화 기술과 함께 사용되기도 합니다.
정리하자면 !
- 원리는 이산대수(Diffie-Hellman)에서 발전된 형태이다.
- 짧은 키 길이로 강력한 암호화를 제공합니다.
ex ) RSA1024bit와 ECC160bit 가 동등한 수준이라고 합니다.
- 키가 짧아서 연산량이 줄어들고 리소스를 덜 사용합니다. 배터리도 덜 사용합니다. 그렇다면 모바일 환경에 적합하다.
- ECC는 사용한지 5 ~ 7년 ( 검증이 되어가는 편 ) , RSA 는 20년이 넘음 ( 충분한 검증 )
* 해시 함수 ( Hash Function )
해시 함수는 임의의 길이의 데이터를 고정된 크기의 고유한 값인 해시로 매핑하는 함수입니다. 이러한 함수는 다양한 분야에서 사용되며, 주로 데이터의 무결성을 확인하거나 데이터의 검색 및 정렬을 위한 빠른 접근을 위해 활용됩니다.
1. 고정된 출력 크기 : 해시 함수는 항상 일정한 크기의 출력을 생성합니다. 예를 들어서 SHA-256 해시 함수는 항상 256 비트 ( 또는 32바이트 ) 의 해시 값을 생성합니다.
2. 고유한 출력 : 서로 다른 입력에 대해 동일한 해시가 생성되는 것을 최소화 하기 위해 노력합니다. 이것은 다른 입력에 대해 다른 해시가 생성되어야 함을 의미합니다.
3. 항상 동일한 출력 : 동일한 입력에 대해 항상 동일한 해시 값을 반환해야 합니다. 이것은 해시 함수의 예측 가능성을 의미합니다.
4. 해시 충돌 저항성 : 2개의 서로 다른 입력에 대해 해시 값이 생성되는 경우인 해시 충돌을 최소화 해야 합니다. 이것은 일반적으로 안전한 해시 함수의 중요한 특성 중 하나 입니다.
해시 함수는 암호학, 데이터베이스, 데이터 무결성 검사, 메시지 인증, 비밀번호 저장 등 다양한 분야에서 사용됩니다.
대표적으로 MD5, SHA-1, SHA-256 등이 많이 사용되는 해시 함수 입니다. 그러나 해시 함수는 단방향 함수이기 때문에 입력에 대한 원본 데이터를 복구할 수 없습니다. 따라서 해시 함수는 주로 데이터의 무결성을 검사하거나 검색 및 정렬을 위해 사용합니다. 그리고 암호학적으로 안전한 해시 함수는 비밀번호 저장 및 메시지 인증 등 보안 관련 작업에 사용됩니다.
정리하자면 !
- 원문을 해시 함수에 입력하면 해시값이 출력됩니다.
- 내용이 변조가 되었는지를 확인하기 위해서 해시함수를 사용합니다. 이것은 무결성이라고 합니다.
- 원리 : 메시지를 요약하는 과정을 여러번 수행해서 해시값을 계산합니다.
- 해시값은 의미가 없는 상태가 됩니다.
- 원문이 같으면 여러번 계산해도 같은 해시값이 나오게 됩니다.
* 해시 함수의 무결성 검증
- 해시값이 다르면, 원문이 수정 ( 변조 ) 되었음을 알 수 있습니다.
- 원문에 해시 값을 붙여서 보냅니다.
ex ) 원래의 메시지 : 홍길동 ( 16 ) --> 고길동 (16) : 고길동은 13이므로, 해시값이 일치하지 않는다. --> 변조 !
ex ) 해시 값도 고치면 ? 고길동 ( 13 ) 이 올 경우, 해시 값도 일치한다. -> 변조 되었는지 확인하기 어렵다.
- 해시 값을 고치지 못하도록 해야 합니다. 해시 값을 개인키로 서명하면 ? 고칠 수 없습니다.
- 해시 값 충돌이 될 가능성이 매우 낮습니다. 하지만 2010년부터 컴퓨터의 발전으로 MD5(128bit) 와 SHA-1 (160bit) 는 더 이상 안전하지 않습니다.
- 해시 함수를 이용해서 무결성 검증 -> 내용이 달라지지 않았다는 것을 증명하는 용도로 사용된다.
* 해시 함수 방식
MDC : Modification Detection Code ( 변조 탐지 코드 ) --> 내용 수정 여부를 알아내는 것에 초점 ( 무결성 )
- MAC : Message Authentication Code ( 메시지 인증 코드 ) ----->> 보낸 사람에 대한 검증을 하는 것이 초점이다. ( 사용자 인증 )
- 공개키 방식은 대칭키 방식보다 속도가 약 100 ~ 1000배 느립니다. 메시지가 작으면 큰 차이가 없지만 메시지가 커지면 커질수록 공개키 방식으로 암호화/ 복호화 하면 매우 느려지게 됩니다.
* 해시함수의 특징
- 일방향 함수 : 해시함수와 해시값을 알아도 원문으로 복구할 수 없습니다.
- 고정길이 출력 : 원문의 길이가 다르더라도 항상 일정한 값으로 출력됩니다.
MD5 ( 128 bit ) : 해시 값이 항상 128bit로 출력됩니다.
SHA- 1 ( 160bit ) : 해시 값이 항상 160bit로 출력됩니다.
SHA-256 ( 256bit ) : 해시 값이 항상 256bit로 출력됩니다.
- 충돌 방지 (충돌은 원문이 다른데 해시 값이 같다.)
원문이 다르면 해시 값도 달라진다. : 무결성 검증
- MD5 (128bit) 가 충돌 될 가능성 : 1/(2의 128승)
- SHA-1(160bit)가 충돌 될 가능성 : 1/(2의 160승)
- SHA-256(256bit)가 충돌 될 가능성 : 1/(2의 256승)
* 무결성 : 무결성은 데이터나 시스템이 변경되거나 변조되지 않았음을 보증하는 것을 의미합니다. 즉, 데이터나 시스템이 원래의 상태에서 변경되지 않고 보존되었다는 것을 확인하는 것입니다. 데이터의 무결성을 유지하는 것은 데이터의 신뢰성과 믿음성을 보장하는데 중요합니다.
* 기밀성 : 기밀성은 정보가 오직 그에 대한 권한을 가진 사람만이 접근 할 수 있도록 보호되는 것을 의미합니다. 즉, 기밀성은 정보가 인가된 사용자 외부에 노출되지 않는 것을 보장하는 것 입니다. 이를 통해 민감한 정보가 무단으로 액세스 되거나 유출되는 것을 방지 할 수 있습니다.
* 인증 : 인증은 사용자나 시스템의 신원을 확인하고 검증하는 과정입니다. 이를 통해 사용자가 실제로 자신이 주장하는 사람이 맞는지, 또는 시스템이 신뢰 할 수 있는 것인지를 확인 할 수 있습니다. 인증은 비밀번호, 생체 인식, 디지털 인증서 등 다양한 방법을 통해 이루어질 수 있습니다.
* 전자 서명 중 메시지 부가형
1) 송신측
- 원문의 내용은 굳이 비밀이 아닙니다. --> 누구나 알아도 상관 없습니다.
- 개인키/공개키로 암호화/복호화를 하면 데이터가 클 경우 시간이 오래 걸릴 수 있습니다. -> 메시지 부가형 방식 선택합니다.
- 원문의 해시값에 송신자(사장)의 개인키로 서명을 해서 원문에 부착해서 보낸다.
2) 수신측
- 원문 메시지에서 해시값을 추출하고
- 서명된 해시값을 송신자의 공개키로 복호화 하면 해시값이 나온다.
위에 2개가 비교해서 일치하면 무결성이 가능하다.
- 사장님의 공개키로 복호화가 된다는 것은 사장님이 개인키로 서명을 했다는 것 --> 인증
- 사장님이 부인할 경우, 공개키로 복호화 되는 것을 증명하면 반박이 불가능하다. -----> 부인봉쇄
Quiz) 전자서명에서 지원되지 않는 것은? 2)
1) 무결성
2) 기밀성
3) 인증
4) 부인봉쇄
실제 사례 ) 은행에서 계좌 이체할 때, (OTP 입력, 계좌 비밀번호 등 ) 공동인증서 창이 나오고 비밀번호를 입력 (서명)
계좌 이체 내용을 본인의 공동인증서 (개인키)로 암호화를 하는 것 --> 무결성, 인증, 부인봉쇄
Quiz) 웹서버용 인증서에 서명해주면 얼마일까요?
1) 1만원/1년
2) 10만원/1년
3) 20만원/1년
4) 30~100만원/1년
----> 가격이 차이나는 이유는? 인증기관의 명성, 보증금액, 보상액수 등에 따라 가격이 달라진다.
* Root CA ( 최상위 인증 기관 )
- 인증 기관을 관리하는 기관
- 국내 : KISA(NPKI), 행안부(GPKI), 국방부(MPKI), 교육부(EPKI)
* 인증 기관 : 인증서를 발행한다.
1) Global 인증(CA)
-Thawte
- Google Trust Service LLC
- DigiCert
2) 국내 인증기관 ( CA )
- 공인 인증 기관 : 금융결제원, 무역정보통신, 한국정보인증, 한국전자인증, 증권전산 --> 총 5개
* 등록기관
- 인증서 등록 업무를 대행해준다. 신원 검증
- 시중은행, 증권회사, 전문업체
* SSL (Secure Socket Layer)
SSL은 Secure Sockets Layer 의 약자로 웹 브라우저와 웹 서버 간에 안전하고 암호화 된 통신을 제공하기 위한 프로토콜 입니다. 이는 인터넷에서 정보를 안전하게 전송하기 위한 표준 보안 기술 중 하나입니다. SSL은 데이터의 기밀성, 무결성, 인증을 보장하여 사용자가 웹 사이트와의 통신을 안전하게 할 수 있도록 도와줍니다.
1. 핸드셰이크 : SSL 통신이 시작될 때, 클라이언트 ( 웹 브라우저 ) 는 서버에 대한 접속을 요청하고 서버는 클라이언트에게 인증서를 제공합니다. 클라이언트는 서버의 인증서를 검증하고 서버가 신뢰할 수 있는 것으로 확인되면, 클라이언트와 서버 간에 핸드셰이크 프로세스가 시작됩니다.
2. 키 교환 : 핸드셰이크 과정에서 클라이언트와 서버는 서로 통신하기 위한 대칭키를 생성하고 교환합니다. 이 대칭 키는 통신 중 데이터를 암호화 하고 복호화 하는데 사용됩니다.
3. 데이터 전송 : SSL 연결이 설정되면 클라이언트와 서버 간의 모든 데이터 전송은 암호화 되어서 전송됩니다. 이는 중간에서 데이터를 가로채거나 변조하는 공격을 방지합니다.
4. 세션 종료 : 통신이 완료되면 클라이언트와 서버는 SSL 연결을 종료합니다.
SSL은 보안적인 목적으로 널리 사용되며, 주로 온라인 상거래, 인터넷 뱅킹, 웹 메일 등에서 사용됩니다. 그러나 SSL은 2015년에 TLS로 대체되었으며, 현재는 TLS 1.2 이상의 버전이 권장됩니다. TLS는 SSL의 후속 버전이며, 보다 강력한 보안 기능과 개선된 프로토콜을 제공합니다. 그러나 여전히 SSL 이라는 용어는 편리성을 위해 사용되기도 합니다.
- Socket Layer 는 비표준 오래된 용어
- 넷스케이프에서 웹 서버와 웹 브라우저간 암호화 통신을 위해서 개발한 프로토콜
- SSL 에서 지속적으로 취약점이 발생해서 표준화를 하면서 이름을 TLS로 정합니다.
* TLS ( Transport Layer Security )
TLS 는 네트워크 통신에서 데이터의 기밀성과 무결성을 보호하기 위한 프로토콜 입니다. SSL 의 후속으로 개발이 되었으며, SSL 3.0 의 보안 결함을 보완하고 보안 수준을 향상시킨 것 입니다. TLS는 웹 브라우징, 전자 메일, 파일 전송 등의 당야한 네트워크 응용 프로그램에서 사용됩니다.
1. 기밀성 : TLS는 통신 데이터를 암호화 하여서 중간에서 가로채거나 도청하는 것을 방지합니다. 클라이언트와 서버 간의 데이터 전송은 암호화 되어 있어 누군가가 가로채어도 실제 데이터를 읽을 수 없습니다.
2. 무결성 : TLS 는 데이터가 전송 중에 변경되거나 손상되는 것을 방지 합니다. 메시지 무결성을 유지하기 위해 해시 함수와 메시지 인증 코드 (MAC)를 사용하여 데이터의 무결성을 확인합니다.
3. 인증 : TLS 는 클라이언트와 서버 간의 상호 인증을 제공합니다. 클라이언트와 서버는 서로의 신원을 확인하고 통신할 수 있는지를 검증합니다. 이것을 위해 디지털 인증서를 사용해서 신원을 증명하고 검증합니다.
4. 암호화 : TLS는 다양한 암호화 알고리즘을 지원합니다. 대표적으로는 대칭 키 암호화 알고리즘 (AES, DES), 공개 키 암호화 알고리즘 ( RSA, ECC ) 이 있습니다.
TLS는 일반적으로 TCP/IP 프로토콜 스택 위에서 작동하며, 클라이언트와 서버 간의 통신을 보호하기 위해 사용합니다.
최신 버전의 TLS는 보안 취약점을 보완하고 암호화 및 인증 방법을 향상시켰으며, 전체적으로 안전한 인터넷 통신을 제공하기 위해 계속 발전하고 있습니다.
정리하자면 !
- SSL3.0 을 개량 및 보완해서 TLS1.0을 만듭니다. TLS1.1, TLS1.2, TLS1.3 ------> TLS1.2와 TLS1.3을 권장
- 웹 서버의 인증서를 제공하면 웹 브라우저에서 세션키 (대칭키) 를 생성하고 세션키를 웹서버의 공개키로 암호화 해서 전송한다.
- 웹 서버는 개인 키로 복호화 하면 세션키가 나오게 됩니다. - > 웹 브라우저와 웹 서버는 같은 세션 키를 가지게 됩니다.
- 그 뒤로는 데이터를 세션 키로 암호화 및 복호화 하면 됩니다.
- 실제로는 SSL을 사용하지 않고 TLS만 사용하고 있지만 관용적으로 SSL/TLS로 부르고 있습니다.
* 망 공개 방식
- Public Network : 누구나 이용할 수 있는 네트워크 (주로 ISP들이 연결해준다.) --> 저렴하지만 안전하지 않다.
- Private Network : 네트워크를 따로 구축해서 사용한다. 외부 사람들이 접근 불가능하다. --> 안전하지만 비싸다.
- Virtual Private Network ( 가상의 사설망 ) : 기존의 Public Network 에 암호화를 해서 연결해주는 서비스이다.
-----> 암호화가 종료되는 지점 VPN 업체부터 인터넷으로 연결된다. : 웹서버에서는 VPN업체에서 왔다. --> 내 IP주소를 숨길 수 있다. 차단된 사이트에도 접속이 가능하다.
* VPN 계층별 프로토콜
VPN은 인터넷을 통해 안전하고 개인적인 네트워크 연결을 구축하는 기술입니다.
- 2계층 프로토콜 : L2F(Cisco), PPTP(MS), L2TP(표준)
- 3계층 프로토콜 : IPsec (3계층 암호화)
- 4계층 프로토콜 : SSL VPN (TLS방식... 이름만 SSL...)
* IPsec 방식 중에 2가지 모드가 있습니다.
- Transport 방식 : VPN은 사용자의 컴퓨터나 장치와 VPN 서버 간의 통신을 암호화 하는 방식입니다. 이 방식에서는 오직 데이터 패킷 자체만이 암호화 되고, 원래의 IP 헤더는 그대로 유지됩니다. 이는 일반적으로 암호화 된 연결이 설정된 TCP 포트를 통해서 이뤄집니다. 트랜스포트 VPN은 전송 계층 (TCP, UDP) 에서만 작동하며, 주로 SSL/TLS 프로토콜을 사용하여서 보안을 제공합니다.
- Tunneling 방식 : 터널링 방식 VPN은 전체 데이터 패킷을 암호화 하고 새로운 패킷을 생성하여 보호된 터널을 통해 전송하는 방식입니다. 이 방식은 보호된 터널을 통해 사용자의 컴퓨터나 장치와 VPN 서버 간의 연결을 설정합니다. 데이터는 원래의 IP 헤더가 아닌 새로운 헤더로 감싸져서 전송됩니다. 터널링 방식 VPN은 일반적으로 네트워크 계층에서 작동하며, 여러 프로토콜을 사용하여 보안을 제공합니다.
간단히 말하면, 트랜스포트 방식은 데이터의 일부만 암호화 하여 전송하는 것이고 터널링 방식은 전체 데이터를 암호화 하고 새로운 패킷을 생성해서 보호된 터널을 전송하는 것 입니다. 두 가지 모두 VPN의 안전한 연결을 제공하지만 사용 사례와 구현 방식에 따라서 선택 됩니다.
암호 알고리즘 종류 조사
암호 알고리즘 | 표준 여부 | 키 또는 값의 길이 | 안전성여부 | |
대칭키 | DES | 초기에는 표준으로 사용되었지만, 현재는 안전성 문제로 인해 더 이상 권장되지 않습니다. | 56비트 (8바이트) | 56비트 키의 크기로 인해 안전성이 낮아서 현재 보안 요구 사항을 충족하지 못합니다. |
3DES | 현재 표준으로 사용되지 않습니다. | 112비트 또는 168비트 (16바이트 또는 24바이트) | DES의 약점을 보완하기 위해 세 번의 DES 라운드를 수행합니다. 그러나 현재 보안 요구 사항에는 맞지 않을 수 있습니다. | |
AES | 현재 국제 표준으로 사용됩니다. | 128bit/192bit/256bit | 안전성이 높고, 다양한 길이의 키를 지원하며 효율적으로 작동합니다. | |
SEED | 한국의 표준 암호화 알고리즘입니다. | 128비트 (16바이트) | 높은 수준의 안전성을 제공합니다. 국제적으로 인정되는 표준은 아니지만, 한국에서 많이 사용됩니다. | |
RC4 | 이전에는 널리 사용되었지만, 현재는 취약성으로 인해 더 이상 권장되지 않습니다. | 키 길이를 설정할 수 있지만 일반적으로 40비트에서 2048비트 사이입니다. | 안전하지 않음 | |
Blowfish | 현재 표준으로 사용되지 않습니다. | 32비트에서 448비트까지 가능합니다. | 안전성은 상대적으로 높지만, AES와 같은 다른 알고리즘보다는 안전성이 낮습니다. | |
공개키 | Diffie-Hellman | 인터넷 표준으로 사용됩니다. | 1024비트부터 4096비트 | Diffie-Hellman은 중간자 공격 등의 보안 공격에 취약할 수 있습니다. 따라서 적절한 키 길이 및 보안 매개변수 설정이 필요합니다. |
RSA | RSA는 공개키 암호화 방식 중 가장 널리 사용되는 표준 중 하나입니다. | 2048bit | RSA는 현재까지 안전한 암호화 알고리즘으로 간주되지만, 충분히 긴 키 길이를 사용하여야 합니다. | |
ECC | ECC는 현재 표준으로 인정되고 널리 사용되는 공개키 암호화 방식 중 하나입니다. | 160비트부터 521비트 | ECC는 같은 수준의 보안을 제공하기 위해 RSA보다 훨씬 짧은 키 길이를 사용할 수 있습니다. 하지만 특정 곡선 선택 및 구현 방식에 따라 안전성이 달라질 수 있습니다. | |
해시함수 | MD5 | X | 128비트의 해시 값 | MD5는 충돌 공격에 취약하며, 현재는 안전한 해시 함수로 간주되지 않습니다. |
SHA-1 | SHA-1은 이전에는 널리 사용되었지만 현재는 보안상의 취약점으로 인해 사용이 중단되었습니다. NIST에서는 SHA-1 사용을 권장하지 않습니다. | 160비트의 해시 값 | SHA-1은 충돌 공격에 취약하며, 현재는 안전한 해시 함수로 간주되지 않습니다. | |
SHA-256 | 안전한 해시 함수 | 256비트(32바이트) | SHA-256은 충돌 저항성이 높고 안전한 해시 함수로 간주됩니다. 현재 보안 응용에서 널리 사용됩니다. |
끝
'시스템, 네트워크 보안' 카테고리의 다른 글
시스템 / 네트워크 보안 [일곱 번째 시간 정리] (4) | 2024.03.15 |
---|---|
시스템 / 네트워크 보안 [다섯 번째 정리] (0) | 2024.03.10 |
시스템 / 네트워크 보안 [네 번째 정리] (2) | 2024.03.08 |
시스템 / 네트워크 보안 [세 번째 정리] (0) | 2024.03.07 |
시스템 / 네트워크 보안 [두 번째 정리] (10) | 2024.03.06 |