Security
Web
1. 대칭/비대칭 암호화
- 암호화의 대표적인 방식들이다.
- 대칭은 하나의 키로 데이터를 암호화해 전송하면 이를 동일한 키로 복호화하는 방식을,
- 비대칭은 수신자가 개인키/공개키를 생성하면 송신자가 공개키를 받아 데이터를 암호화해 전송하면 이를 수신자가 개인키로 복호화하는 방식을 의미한다.
- 대칭은 키분배 문제가 있지만 빠르고, 비대칭은 키분배 문제는 줄어들지만 리소스를 많이 소모한다.
더보기
- symmetric en/decryption. 대칭 암호화는 암호화 키와 복호화 키가 동일한 암호화 방식이다. 어떻게 제3자에게 노출되지 않고 당사자들에게만 키를 분배할 것인가의 문제가 있으나, 대칭키의 암호화/복호화는 연산이 무겁지 않기 때문에 빠르다. XOR이 대표적인 대칭 암호화 방식이다.
- AX=B이고 BX=A인 연산자 X, 또는 자신이 자신의 역함수인(y=x 대칭인) 함수가 대칭 암호화와 개념적으로 유사한데, 이런 대칭 함수는 대체로 단순하다는 점에서 빠른 속도를 간접적으로 이해할 수 있다.
- 사견으로는 XOR 처럼 대중적이고 양방향 변환의 해석이 용이한 암호화 방식은 사실 인코딩이라고 봐야하는 것 아닌가 생각한다. 그러나 암호화라는 단어가 갖는 권위나 사명감 같은 것들을 지키기 위함인지 아니면 마땅한 필요 때문인지는 모르겠으나, 종종 제시되는 둘의 병합은 금방 가로막히고는 한다.
- asymmetric en/decryption. 비대칭 암호화는 암호화 키와 복호화 키가 다른 암호화 방식으로, 암호화 키는 공개하되 복호화 키는 공개하지 않기에 키 분배 문제가 해결된다. 그러나 비대칭키의 암호화/복호화는 연산이 무겁기 때문에 리소스 소모가 크고 느리다.
- 암호화는 수학이기에 수학자들에 의해 연구되고, 교류와 발전에 따라 공개됨이 보통이다. 그렇기 때문에 암호화 알고리즘 자체를 감추는 것은 어렵다. 따라서 암호화 알고리즘 자체를 숨기기 보다는, 암호화 알고리즘을 알아도 현실적인 시간 안에는 풀 수 없게 하는 방향으로 암호학이 발전하였다. 그 산물이 비대칭 암호화이기 때문에 무겁고 느리다.
- 양자컴퓨터의 등장이 현대 암호체계를 뒤흔든다는 것도 이 맥락에 속한다. 현대 컴퓨터로 해독 시간의 기댓값이 100년이라면 양자컴퓨터로는 그 기댓값을 시간 단위로 줄일 수 있기 때문이다.(연구실에서 주장하는 수치는 훨씬 과격하다. 기술 태동기의 낙관편향을 감안해 임의로 보정하였다) 기술은 어차피 너도 알고 나도 아니까 체급으로 방어하는 중인데 역사적 체급깡패의 출현이 예고된 상황.
- 대칭방식과 비대칭방식을 섞은 방식을 하이브리드 방식이라고 한다.
- 비대칭방식으로 대칭키를 안전하게 전달하고(키분배문제 해결) 대칭키로 데이터를 빠르게 통신하는 방식이다.
- 서버는 비대칭키를 생성하고 클라이언트는 대칭키를 생성한다.
- 클라이언트는 서버로부터 서버측 비대칭 공개키를 전달받는다.
- 클라이언트는 자신의 대칭키를 서버측 비대칭 공개키로 암호화해 서버에게 전달한다.
- 서버는 클라이언트 대칭키를 자신의 비대칭 개인키로 복호화한다.
- 대칭키를 이용해 데이터를 암호화/복호화해 데이터를통신한다.
비대칭 방식으로는 대칭키를, 대칭키로는 데이터를 전달하는 하이브리드 암호화.
- 그러나 이는 해커가 중간에서 서버측 공개키를 받아 중개하는 MITM 공격에 취약하다.
- 해커가 서버측 공개키를 확보하고, 클라이언트와 서버 간 통신을 매개할 수 있는 지위를 점한다.
- 클라이언트가 서버에 보내는 요청을 해커가 중간에서 받아 서버측 비대칭 공개키 대신 Mal키를 클라이언트에게 제공한다.
- 클라이언트는 Mal키로 자신의 대칭키를 암호화하여 서버에 보내고, 이 요청을 해커가 중간에서 받는다
- 해커는 Mal키로 이를 복호화해 클라이언트 대칭키를 확보하고, 다시 서버측 비대칭 공개키로 클라이언트 대칭키를 암호화해 서버에 전달한다.
- 서버는 클라이언트의 대칭키를 자신의 비대칭 개인키로 복호화한다.
- 결론적으로 클라이언트의 대칭키를 보유한 사람은 클라이언트/해커/서버가 된다.
해커가 중간에서 매개하는 MITM. 공개키의 안전한 전달이 새로운 화두로 떠오른다. "이 키, 서버 거 맞죠?"
- 비대칭방식으로 대칭키를 안전하게 전달하고(키분배문제 해결) 대칭키로 데이터를 빠르게 통신하는 방식이다.
2. SSL/TLS
- Secure Sockets Layer/Transport Layer Security.
- 하이브리드 암호화 방식에 더해 인증기관이(CA, Certificate Authority) 개입하는 암호화 방식이다. CA가 공개키를 인증해주는 하이브리드 암호화 방식으로 요약된다.
더보기
- HTTP는 데이터를 평문으로 전송하기에 데이터가 쉽게 노출되는 보안상 흠결이 있다. 이를 보완하고자 개발된 것이 SSL/TLS이며, HTTP+SSL/TLS = HTTPs(HTTP over Secure Sockets Layer)이다.
- SSL이 TLS의 초기 버전이고, 현재는 지원이 중단되었다. 구형인 SSL 모델을 정확히 지목하는 맥락이 아닌 이상, SSL/TLS라는 표현이나 심지어는 SSL이라는 표현까지도 엄밀하게는 TLS를 의미하는 경우가 많다.
- TLS는 세션단위 키로 세션관리에 일조하기에 OSI 5계층에도, 암호화를 담당하기에 OSI 6계층에도 속하며, 심지어는 이름에서 알 수 있듯 OSI 4계층에 속한다고 보기도 한다. OSI 모델이 이렇게 오래 됐는데도 오묘하게 겉도는 이유를 살필 수 있는 대목이다. 해석의 다양성이 열려 있는 모형이기 때문이다.
니가 문학이야?
- .SSL/TLS의 암호화 과정
- 준비과정
- 서버가 서버측 비대칭키를 준비하고, 서버측 비대칭 공개키와 서버정보를 인증기관(CA)에게 전달한다.
- CA는 서버정보를 검증하여, TLS인증서를 발급한다.
- CA는 CA측 비대칭 개인키로 TLS 인증서에 디지털 서명을 한다.
- 서명한 TLS인증서를 서버에 전달한다.
- 준비과정
더보기
- TLS 인증서는 서버정보, 서버측 공개키 정보, CA측 디지털 서명을 포함한다. 디지털 서명은 암호화와 목적만 달리할 뿐이고 구체적인 행위는 동일하다.
- 클라이언트도 인증서를 받을 수는 있지만, 클라이언트측에서 인증서를 준비하거나 클라이언트에게 인증서를 요구하는 경우는 흔하지 않다. 매출을 올려주는 고객님한테 신원 증명을 요구하기는 쉽지 않다.
-
- 키 분배과정
- 클라이언트가 서버에게 요청하면 서버는 TLS인증서와 서버측 비대칭 공개키를 클라이언트에게 제공
- 클라이언트는 제공받은 공개키와 인증서의 공개키 정보를 비교해 서버의 신뢰성과 인증된 공개키인지 확인한다.
- 클라이언트는 세션키 생성을 위한 pre-master secret 정보를 인증된 공개키로 암호화해 서버에 전달한다
- 서버는 전달받은 pre-master secret정보를 기반으로 세션키(대칭키)를 생성한다.
- 클라이언트도 pre-master secret정보를 기반으로 세션키(대칭키)를 생성한다.
- 서버와 클라이언트는 서로 동일한 세션키(대칭키)를 가지게 되었으므로 이것으로 통신한다.
- MITM 문제해결 여부
- 해커가 최초의 하이브리드 방식에서처럼 중간에서 매개하게 되면 클라이언트가 받게 되는 것은 서버 정보와 서버측 공개키 정보를 담은 TLS인증서와 해커의 키가 되는데, 이로써 "서버측의 진짜 공개키가 아님"을 알게 된다
키/인증서 대조과정에서 handshake가 멈추고, 키는 클라이언트 손에만 남는다. - 그러나 물리적/원천적으로 해결하는 것은 아니고, 진입 허들을 높인 효과를 보인다. 해커가 자신의 서버에 인증을 받아 중간에서 매개하는 경우가 그렇다.
- 해커가 자신의 서버를 인증받아 Mal 인증서를 확보한다.
- 해커가 서버측 공개키와 서버측 TLS 인증서를 확보하고, 클라이언트와 서버 간 통신을 매개할 수 있는 지위를 점한다.
- 클라이언트가 서버에 보내는 요청을 해커가 중간에서 받아 서버측 공개키와 TLS 인증서 대신 자신의 Mal키와 Mal인증서를 클라이언트에게 제공한다.
- 클라이언트는 Mal키로 PremasterSecret을 암호화해 서버에게 보내고, 이를 해커가 중간에서 가로챈다.
- 해커는 Mal키로 PremasterSecret을 복호화하고, 서버측 공개키로 이를 암호화해 서버에게 전달한다.
- 서버는 PremasterSecret을 자신의 개인키로 복호화한다.
- 클라이언트/해커/서버는 PremasterSecret으로 세션키를 생성한다.
- 결론적으로 동일한 세션키를 보유한 사람은 클라이언트/해커/서버가 된다.
원시 하이브리드 암호화는 누구나 MITM를 할 수 있었다면, TLS는 정성이 갸륵한 이들에게만 MITM를 허락한다.
- 해커가 최초의 하이브리드 방식에서처럼 중간에서 매개하게 되면 클라이언트가 받게 되는 것은 서버 정보와 서버측 공개키 정보를 담은 TLS인증서와 해커의 키가 되는데, 이로써 "서버측의 진짜 공개키가 아님"을 알게 된다
- 키 분배과정
더보기
- 따라서 TLS에서는 인증서/인증기관의 권위가 중요하다. 아무에게나 인증해주지 않고, 이 인증서가 믿을만하다고 여겨져야 한다. 그 인증이 있어야 통신을 할 수 있는 상황을 만드는 것이다. 이렇게 되면 해커는 MITM 공격을 위해 자기 서버를 공식적으로 인증받아야 하고, 자신이 노출될 수 있는 부담을 지게 되는 것이다. 인증이 유력할 수록 허들은 높아진다.
- 원시적 하이브리드 암호화 방식에서 제시된 문제가 "이 키가 내가 요청한 진짜 그 키가 맞는지"였다면, TLS는 이를 "이 인증서가 믿을만한지"의 문제로 범위를 좁힌 것이다. PremasterSecret/세션단위 키 같은 것들은 유력한 인증을 전제로 한 촘촘한 마감 정도이고 무력한 인증서 앞에서는 의미가 없다.