코린이 탈출기

chapter 11.7 - https vs http - 안드로이드 보안 처리 본문

인터넷 강의/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기

chapter 11.7 - https vs http - 안드로이드 보안 처리

50HEE 2021. 6. 14. 21:29

인터넷 통신을 할 때 사용하는 방식 중 2가지가 http, https입니다.

http는 이전에 쓰는 일반 인터넷 통신입니다.

https는 http + security 합친 단어로, 보안 처리가 된 인터넷 통신을 의미합니다.

 

보안 처리에 대해 알아보겠습니다.

인터넷을 사용한다는 것은 네트워크를 활용한다는 것입니다.

이러한 네트워크는 구조 상으로 누구나 어떤 통신이 전달되는지 조회가 가능해서 훔쳐보는 것이 가능합니다.

보이는 것은 막지 못하기 때문에 남들이 보더라도 알아볼 수 없게 처리하는 방식으로 보안 처리를 합니다.

통신 내용을 나와 상대방만 알아볼 수 있도록 전달하는 암호화(알아볼 수 없게 만드는 것)와 복호화(암호화한 것을 알아볼 수 있도록 복구한 것)를 합니다.

이러한 암호화와 복호화의 규칙이 너무 쉬우면 무슨 내용인지 해독이 가능해서 이러한 암호를 만드는 규칙을 기밀로 유지하는 것이 보안을 유지하는 방법입니다.

 

그러기 위해서는 암호화 규칙과 복호화 규칙을 따로 정합니다.

예를 들면 A라는 사람에게 메일을 보내는 암호화 규칙을 넣는 것을 잠그기 전용 열쇠(공개 키)라고 합니다. 이러한 공개키의 경우 A에게 메일을 보내고 싶은 모두에게 주어도 상관이 없습니다.

하지만 이 메일을 읽는 복호화 규칙을 열기 전용 열쇠(개인 키)라고 하면 이 열쇠의 경우에는 A만 가지고 있어야 합니다.

잠그기 전용 열쇠의 경우에는 누구에게 주어도 상관이 없지만, 열기 전용 열쇠는 공개가 되면 결국 누구나 훔쳐볼 수 있게 되어 보안이 되지 않습니다. 

 

https의 연결 방식으로 접속하면 알아서 공개 키가 교환이 되어, 암호화 작업이 진행됩니다.

 

웹의 경우는 위와 같이 진행합니다.

안드로이드의 경우에는 Oreo 버전부터는 보안을 강화하기 위해서 http 통신 자체를 금지합니다.

하지만 상황에 따라서 http를 연결해야 할 경우도 있습니다.

이럴 경우 manifests > application 가서 임시로 허용한다는 코드를 작성합니다.

android:usesCleartextTraffic="true"

위 코드는 암호화 처리가 안 된(보안 처리가 안 된) 일반 문장을 주고받는 것을 허용하겠다는 의미입니다.

이 코드를 작성을 하면 보안 규칙을 무시하겠다는 의미를 가져서 좋은 코드는 아닙니다.

 

 

통신하려는 웹 사이트가 공개 키를 교환할 만한 가치가 있는 것인지를 판단할 필요가 있습니다. 

이러한 판단을 개개인이 직접 하기에는 너무 어렵기 때문에 인증기관 사이트에서 심사하여 https 연결을 지원을 해줍니다.

공개 키의 경우에는 사이트 왼쪽 끝으로 가면 자물쇠 모양이 보일 것입니다.

자물쇠를 눌러보겠습니다.

인증 기관이 심사를 마치고 공개 키로 전환하였다는 인증서를 통해 사이트의 보안을 확인할 수 있습니다.

사이트를 안심할 수 없을 경우에는 꼭 공개 키가 설정이 되어 있는지 확인해보시면 됩니다.

Comments