티스토리 뷰
암호기법(Cryptography)
-정보를 보호하기 위해 사용되는 기술이며, 암호화와 복호화의 두단계로 구성이 됩니다. 암호화는 원본데이터를 암호화데이터로 변환화는 과정이고 복호화는 암호화데이터를 원본데이터로 변환하는 과정입니다.
대칭키(Symmetric key)
- 암호화 복호화를 할때 같은 키를 사용하는 방식으로, 암호화된 데이터를 복호화 하기 위해서 같은 키가 필요합니다.
이방식은 간단하고 빠르게 처리할 수 있지만 키관리가 어렵고, 키 유출될경우 보안이 취약해질 수 있습니다.
아래 그림을 보시면 Client와 Server둘다 같은 키A를 가지고 있어 암호화와 복호화가 같은 키로 이루어 집니다. 통신하는 노드가 많아지면 키를 각자가져야하기에 복잡성이 생깁니다.
AES(Advanced Encryption Standard)
-현재 가장 많이 사용되는 대칭키 암호화 알고리즘입니다. 128,192,256 세가지 키길이를 지원하는데, 가장 흔히 사용되는건 128비트이며, 블록 암호 방식을 사용합니다. 강력한 암호화 보안을 제공하며 효율적입니다. 다음은 작동방식입니다.
- 키확장
-입력된 키를 기반으로 여러 라운드 키를 생성합니다. (key size에 따라 달라짐 128bit - 10 , 192bit - 12 , 256bit - 14) - 라운드
-여러 라운드를 거쳐 데이터 블록을 변환하며, 각 라운드는 서로 다른 연산을 수행합니다. 마지막라운드에서는 데이터블록의 변환을 수행하고 최종결과를 얻습니다. 각 라운드는 128비트로 바이트로 치환하여 4 * 4 행렬로 변환이 됩니다.
라운드 과정 (한 라운드에서 일어나는 과정)
- SubBytes
- 블록의 각 바이트를 S-BOX 변환 테이블에 대입하여 치환하는 과정, 각 바이트값으로 S-BOX 테이블의 값으로 변환함. ( 바이트값 = xy => x는 S-box의 행 , y는 S-box의 열) - ShiftRows
- 블록 내의 각 행을 순환이동 시킵니다. 이때, 행이 늘어남에따라 순환이동 시키는 열이 늘어납니다 ( 0행 -> 0개 , 1행 -> 1개 , 2행 - 2개) - MixColumns
- 각 열을 행렬연산을 통해 변환하는데, 행렬곱으로 계산하여 변환시킵니다. - AddRoundKey
- 현재 라운드 키와 블록을 비트별로 XOR연산을 합니다.
공개키(Public Key)
- 암호화와 복호화에 다른 키를 사용하는 방식으로, 암호화된 데이터를 복호화 하기 위해서는 별도의 비밀 키가 필요합니다. 이 방식은 대칭키 암호화에 비해 키 관리가 용이하며, 키유출의 위험성이 낮아 진다는 장점이 있지만 처리속도가 비교적 느리다는 단점이 있습니다. 비밀키는 자신외에는 아무도 가지고 있지 말아야합니다.
아래 그림을 보시면 서버와 클라이언트 각각 공개키 비밀키를 가지고있으며, 공개키는 모두에게 공개되어있습니다.상대방에게 보낼때 암호화는 보낼대상의 공개키로 암호화를 진행하고, 암호화된 메세지를 받으면 자신이 가지고 있는 비밀키로 복호화 하는 과정을 거칩니다.
전자서명(Digital Signature)
-디지털 문서나 데이터의 무결성과 인증을 보장하기위해 사용되는 기술, 종이 서명과 유사한 역할을 수행합니다.
먼저 상대방에게 서명을 보낼때 본인의 개인키(비밀키)로 암호화를 하고 데이터를 보냅니다. 이때 본인의 개인키로 암호화를 함으로써, 본인만 암호화가 가능하기에 서명과 같은 효과를 얻습니다. 받은쪽에서는 보낸쪽의 공개키를 가지고 복호화를하여 해독해서 데이터가 맞으면 서명이 맞는거고 아니면 데이터가 변조된 것입니다.
공개키 교환 방식
공개키를 서로 교환을 해야할때 다양한 문제가 생깁니다.먼저 공개된 공간에 공개키를 공유해놓으면, 신뢰성 문제가 생길 수 있습니다.그래서 서버에 저장해두고 통신을 통해 가져오면 서버에 과부하가 생겨 네트워크 속도 문제가 생깁니다.
따라서, 공개키를 신뢰성있고, 과부하없이 교환을 하려면, CA라는 인증기관에 본인의 공개키의 인증서를 발급받아 해당 공개키를 원하는 클라이언트에게 공개키와 인증서를 전송하여, 신뢰성있게 서로 교환 할 수 있습니다.
하이브리드
-처음엔 공개키로 키 공유를 하고, 이후엔 대칭키로 암호화 통신을 하는 방식입니다. 먼저 A에서 대칭키를 무작위로 만들어 데이터를 암호화합니다. 그리고 B의 공개키를 얻어와 대칭키를 암호화 시킨후 암호화된 데이터와 대칭키를 같이 보냅니다. B가 받으면 개인키를 이용해 대칭키를 복호화 한후, 얻은 대칭키로 암호화된 데이터를 복호화하여 원본데이터를 확인합니다. 이로인해 보안성을 챙길 수 있으며 속도도 챙길 수 있습니다.
3대 정보보호 서비스
- 기밀성(Confidentiality)
-인가된 사용자 이외의 개체로부터 정보가 보호되는 것을 의미합니다. 데이터 암호화하거나 접근제어를 이용해 데이터 접근을 제한하는 등의 방법을 사용해 기밀성을 지킬 수 있습니다. - 무결성(Integrity)
-데이터가 변경되지 않고 원본 그대로 인것을 의미합니다, 데이터 암호화하거나 전자서명 해시값 등의 방법으로 데이터 변조 여부를 검사하는 등의 방법을 사용할 수 있습니다. 위에서 배운 대칭키,공개키방식의 암호시스템은 기밀성으 제공합니 - 가용성(Availability)
-데이터에 대한 접근 가능성과 지속적인 이용이 보장되어야 함을 의미합니다.서버의 백업 및 복원, 등을 이용해 가용성을 유지할 수 있습니다.
PKI(Public Key Infrastructure) (공개키 기반 구조)
PKI는 공개키 암호화와 디지털 인증서를 사용하여 보안 기능을 제공하고, 인증 ,기밀성, 무결성 등의 보안서비스를 지원합니다.
위의 그림을 보시면 최상위 인증기관, 상위인증기관,그아래로 하위 인증기관들이 쭉 있습니다. 여기는 국내에 있는 인증기관들이고, 상위 계층이 바로 하위계층의 인증서를 발급하고, 최상위 인증기관은 인증서에 self-sign을 합니다. 그리고 그위로 보시면 다른 국가의 최상위 인증기관이 있는데, 이들은 서로 peer-to-peer구조로 서로 연관되어있어 서로 상호인증을 할 수 있습니다.
암호학적 해쉬함수
-임의의 길이의 메세지를 고정된 깅이의 해시 값으로 변환하는 함수 입니다. 주로 보안쪽에서 이용되는 함수입니다.
특징
- 입력되는 값은 크기 상관없이 거의 무한으로 받을 수 있음.
- 출력값은 고정된 크기(32비트,64비트)를 가지고 있음
- 암호화는 쉬우나, 복호화는 매우 어려움
- 입력값이 조금만 다라져도 출력값은 아예 달라짐
MDC (메세지 변조 감지 코드) (Message Modification Code)
-전달된 데이터가 중간에 변조되지 않았는지 확인하는데 사용되는 암호학적 해시함수.
데이터를 전송하기 전에 MDC 함수가 전송 데이터와 대칭키를 입력으로 받아 MDC값을 생성한후 수신자에게 같이 전송됩니다. 그이후 수신자에서 측에서도 MDC값을 생성한후 비교를 통해 데이터 변조유무를 확인합니다. 데이터가 전송될때 암호화가 되지않아 안전한 채널로 데이터를 전송해야한다는 제약 조건이있습니다. (둘의 암호화 데이터가 같으면 데이터 무결성, 아니면 데이터 변조)
MAC (메세지 인증코드) (Message Authentication Code)
-데이터 무결성과 메세지 인증을 보장하기 위해 사용되는 암호화 기술로, 먼저 사용자 끼리 키를 공유해야합니다. 그이후 메세지와 키를 함께 암호화해 MAC을 만들고, 보낼 메세지와 MAC을 같이 다른사용자에게 전송합니다. 수신을한 다른 사용자는 받자마자 메세지와 공유한 키를 암호화하여 자기자신이MAC을 만든 후 받은 MAC과 비교를 통해 데이터 변조 유무를 판단합니다. 이 방식은 안전하지 않은 채널로 데이터를 전송해도 괜찮다라는 장점이 있지만, 키를 먼저 공유해야한다는 제약조건이 있습니다.
링크 암호화(Link Encryption) vs 끝단 암호화(End-to-End Encryption)
Link Encryption
-링크 암호화는 네트워크 장비(라우터,스위치 등)에서 수행되며 데이터가 네트워크를 통과하는 동안 암호화 되고, 수신 측에서 복호화 되는 구조입니다.각 라우터, 스위치에서 데이터가 들어올때 복호화, 나갈때 암호화를 진행합니다.
네트워크 장비들에의해 암호화,복호화가 진행되므로, 중간에 해독될 수 있다는 단점이 있습니다.
End-to-End Encryption
-끝단 암호화는 통신의 양끝단에서만 데이터를 암호화하고 복호화하는 방식입니다. 즉, 데이터를 보내는 발신자 측에서 암호화 되고, 데이터를 받은 수신자 측에서만 복호화됩니다.
중간에 위치한 네트워크 장비들이 데이터를 해독할 수 없기에 암호화가 더 완벽합니다.
하지만 이 기술로 ip주소는 암호화가 되지않아, 트래픽 분석을 통해 통신을 하고 있다는것은 보호하지못합니다.
'네트워크' 카테고리의 다른 글
스위치(Switch) (0) | 2023.06.27 |
---|---|
게이트웨이(GateWay)란? (0) | 2023.06.27 |
HTTPS프로토콜이란? (SSL,TLS) (0) | 2023.05.13 |
HTTP 프로토콜 (0) | 2023.05.13 |
DHCP란? (0) | 2023.05.12 |