미리보기 - 예시
위와 같은 상황이라고 가정하죠. 제가 채팅 소프트웨어를 이용해 상대에게 내 계좌 정보를 보내야 하는 상황입니다. 이 상황에서 채팅 소프트웨어에 내 계좌정보를 입력하여 전송하면, 인터넷을 통해 제 계좌 정보가 전송되겠죠
오늘은 인터넷에서 중요한 거래가 있어 내 계좌번호를 전송 해 줘야 하는 날이다. 거래가 성사되면, 내 계좌에 10,000,000원이 입금될 것이다.채팅 소프트웨어를 활용해 내 계좌번호가 **은행, ***-***-*******, 예금주 whitmem 임을 알려주었다.
나 - 중간 네트워크 망 - 상대
하지만, 위에서 언급했듯 디지털 데이터는 손쉽게 변조할 수 있기 때문에 중간 과정에서 나도 모르게 데이터가 변조 될 가능성이 존재합니다.
그렇기 때문에 위에서 보낸 내 계좌 정보를 몰래 해커의 계좌 정보로 바꾸어 전송 할 수도 있겠지요. 나, 상대 모두 바뀐지도 모른 채 말이죠!
재미있게도, 위 변조 방법은 "암호화"가 적용되어 있더라도 발생할 수 있습니다. 정확히는 단순 암호화만 적용된 경우 발생할 가능성이 있습니다.
나 - 네트워크 망 - 중간자 공격 (해커) - 네트워크 망 - 상대
정상적인 통신이라면 나와 상대는 암호화 처리를 위해, 특이한 알고리즘을 통해 암호키를 상대에게 서로 주고 받습니다. 그 최초 과정에서 해커가 키를 습득해서 원본 데이터를 복호화하고, 다시 해커가 해커만의 키로 암호화하는 방법을 통해 마치 정상적으로 암호화되는 것 처럼 보이게 하지요.사실은 해커에 의해서 이중 암호화가 진행되는 셈입니다. 암호화를 해서 보냈더니, 해커가 이 암호를 풀고, 해커가 해커만의 키로 상대와 암호 통신을 하게 되는 것 입니다.
정말 상대가 전송한 데이터인지 파악하는 과정을 거치지 않았기 때문에 공개된 두 컴퓨터 사이에 암호를 다시 중계 해주는 중계 공격을 통해 암호화는 성립되나 해커는 원본 데이터를 알고 수정할 수 있게 되는 것이죠.
그렇기 때문에, 실제 실무에서는 사전에 약속되지 않은 두 컴퓨터끼리 안전하게 통신을 하기 위해서 인증서라는 개념이 사용됩니다. 서버만의 신분증이 되겠네요. 이 디지털 신분증은 암호 알고리즘으로 만들어졌으므로, 현재 컴퓨팅 성능으로 알아내는 것이 현실적으로 불가능합니다.
즉, 사전에 약속되지 않은 컴퓨터끼리의 암호 통신에는 "인증서"를 통한 서버 인증이 필수입니다.
본문 암호화 없이도 인증은 가능
특히 오해 하면 안되는 것이, 이론상 본문을 암호화 하지는 않더라도 인증 서명 기법(암호 알고리즘)을 활용해서 조작되지 않았는지 파악은 가능합니다. 하지만 기본적인 평문 통신 http 통신 프로토콜에는 이러한 과정은 포함되지 않았고, https에서 본문을 암호화하면서, 안전한 프로토콜에 맞게 서명 작업도 같이 포함된 것 입니다.
즉, 원본이 맞는지 서명/인증하는 단계는 모든 경우에도 적용할 수 있는 것이죠!