TeamCoook / iOSInterviewQuestions

✅ iOS 개발자 기술 면접 대비
18 stars 0 forks source link

[레벨 0] `5주차` 9. 암호화와 보안의 기본 개념, iOS 앱 보안을 위한 방안에 대해 설명해주세요. #9

Open longlivedrgn opened 2 months ago

longlivedrgn commented 2 months ago
ohdair commented 2 months ago

블로그 기재

llimental commented 2 months ago
1. 암호화와 보안의 기본 개념, iOS 앱 보안을 위한 방안에 대해 설명해주세요. ### 1-0) 참고 - [IBM Topics](https://www.ibm.com/kr-ko/topics/encryption) - [IBM Topics](https://www.ibm.com/kr-ko/topics/information-security) ### 1-1) 암호화 - 데이터 암호화는 데이터를 암호화되지 않은 일반 텍스트에서 암호화된 암호 텍스트로 변환하는 방법을 말합니다. 사용자는 암호화 키를 사용하여 암호화된 데이터에 접근하고, 암호 해독 키를 사용하여 해독된 데이터에 접근할 수 있습니다. ### 1-2) 보안 - 정보 보안(InfoSec)은 디지털 파일과 데이터, 종이 문서, 물리적 미디어, 심지어 사람의 음성까지 포함하는 조직의 중요한 정보를 무단으로 접근, 공개, 사용 또는 변경하는 행위로부터 보호하는 것을 말합니다. 보안의 3대 요소엔 기밀성, 무결성, 가용성이 있습니다. - 기밀성: 접근 권한이 없는 당사자가 데이터에 접근할 수 없도록 하는 것입니다. - 무결성: 모든 정보가 완전하고 정확하며 변조되지 않았는지 확인하는 것입니다. 공격자가 의도적으로 데이터를 변경하는 행위를 방지하는 것은 물론 일반 사용자가 의도적 혹은 비의도적으로 데이터를 무단 변경하는 행위를 방지하는 것까지 포함합니다. - 가용성: 사용자가 필요할 때 접근 권한이 부여된 정보를 이용할 수 있도록 보장하는 것입니다. 정보 보안 조치 및 정책이 승인된 데이터에 대한 접근을 방해해서는 안 된다는 원칙을 담고 있습니다.
2. 대칭키 암호화와 비대칭키 암호화의 차이에 대해 설명해주세요. ### 2-1) 대칭키 암호화 - 대칭키 암호화는 하나의 비밀 대칭 키를 사용해 일반 텍스트를 암호화하고 암호 텍스트를 해독하는 암호화 유형입니다. - 일반적인 대칭키 암호화 방식으로 DES, Triple DES, AES, Twofish, ARIA, SEED가 있습니다. - 이 중 ARIA와 SEED는 국산 암호화 방식입니다. - DES: 64비트 블록으로 일반 텍스트를 변환하고 48비트 키를 사용하여 암호 텍스트로 변환하는 하위 수준 암호화 블록 암호 알고리즘 - Triple DES: 데이터를 암호화, 해독, 다시 암호화하면서 DES 암호화를 각각 세 번 실행하는 알고리즘 - AES: 미국 정부 표준으로 전 세계에서 사용되는 데이터 암호화의 표준 - Twofish: 가장 빠른 암호화 알고리즘 중 하나로 간주되며, 무료로 사용 가능 ### 2-2) 비대칭키 암호화 - 비대칭키 암호화는 공개 키 암호화라고도 알려져 있으며 두 개의 개별 암호화 대칭 키를 사용하여 데이터를 암호화 및 해독합니다. 이 각각의 키를 '공개 키'와 '개인 키'라고도 칭합니다. - 일반적인 비대칭키 암호화의 방식으로 RSA, PKI가 있습니다. - RSA: Rivest, Shamir, Adleman의 이름을 딴 것으로, 안전한 데이터 전송을 위해 공개 키를 사용해 데이터를 암호화하고 개인 키를 이용해 암호를 해독하기 위해 널리 사용되는 알고리즘 - PKI: 공개 키 인프라 방식은 디지털 인증서를 발급하고 관리함으로써 암호화 키를 제어하는 한 가지 방법
3. 해시 함수의 개념과 활용 사례에 대해 설명해주세요. ### 3-1) 해시 함수의 개념 - 임의의 길이를 갖는 데이터를 고정된 길이의 데이터로 변환시켜주는 단방향 함수를 말합니다. - 복호화가 불가능하며, 종류로는 MD5, SHA-1, SHA-256/384/512, HAS-160, HAVAL 등이 있습니다. ### 3-2) 해시 함수 활용 사례 - 소프트웨어 변경 검출: 배포한 소프트웨어의 불법적인 변경 여부를 점검하는 로직으로 사용됩니다. 소프트웨어의 일부가 변경되어도 같은 값을 만들 수 없기 때문입니다. - 메시지 인증코드: 네트워크 송수신이나 대용량 자료의 송수신 무결성 검증을 위해 활용 - 디지털 서명: 디지털 서명 시 해당 거래의 신속한 처리를 위해 Message Digest를 암호화하여 송신함으로써 무결성 및 인증 수행
longlivedrgn commented 2 months ago

대칭키 암호화와 비대칭키 암호화의 차이에 대해 설명해주세요.

대칭키 암호화

비대칭키 암호화

해시 함수의 개념과 활용 사례에 대해 설명해주세요.

블로그

SunnnySong commented 2 months ago

1️⃣ 대칭키 암호화와 비대칭키 암호화의 차이에 대해 설명해주세요.

대칭키 암호화

장점/단점

장점 단점
비대칭키 암호화 방식에 비해 연산 속도가 빠르다. - 키를 교환해야 한다. 키를 교환하는 도중 키 탈취 위험이 있다.

비대칭키 암호화 (= 공개키 암호화)

장점

단점

대칭키 / 비대칭키 암호화 비교

  대칭키 비대칭키
제공 기밀성 기밀성, 인증, 부인방지
제공 X 무결성, 인증, 부인방지 무결성

2️⃣ 해시 함수의 개념과 활용 사례에 대해 설명해주세요.

해시 함수, Hash Function

활용 사례

soo941226 commented 1 month ago

대칭키 암호화와 비대칭키 암호화의 차이에 대해 설명해주세요.

대칭키 암호화와 비대칭키 암호와에 앞서, 암호화를 먼저 이야기를 하면 좋을 것 같은데요. 암호화란 사람이 읽을 수 있는 문자열을 사람이 읽을 수 없는 문자열로 맵핑하는 과정을 말합니다. 이 때 각각의 문자열을 평문과 암호문이라 하는데, 여기서 암호문을 다시 평문으로 맵핑하는 과정을 복호화라 합니다. 이러한 과정이 있는 것은, 당연하게도 발신자와 수신자를 제외하고는 해당 문자열을 이해할 수 없도록 하기 위함입니다. 즉 보안의 일환이라 할 수 있겠습니다. 조금 돌아가는 이야기로 이런 암호화와 복호화는 꼭 컴퓨터 과학이 아니더라도 사용이 되어왔습니다. 당장 생각나는 건 스키테일이네요. 이는 원통이라고 하는 도구를 이용하여 암호화를 한 것인데, 컴퓨터 과학에서는 이런 사물이 아니라 특히 수학적인 방법으로 암호화를 하게 됩니다. 대칭키 암호화와 비대칭키 암호화는 이와 관련되어있습니다. 대칭키를 먼저 이야기하면, 암호화에 사용되는 키와 복호화에 사용되는 키가 같은 방법입니다. 마치 스키테일이 수신자와 발신자가 똑같은 둘레의 원통을 사용해야하는 것과 같습니다. 만약 누가 어떤 암호문이 스키테일 방식으로 암호화가 된 것을 알고, 원통의 둘레를 알고 있다면, 진짜 수신자가 아니더라도 복호화를 할 수 있는 것처럼, 대칭키 방식에서 만약 누군가가 키를 탈취한다면 암호를 해독할 수 있는 이슈가 있습니다. 이런 큰 이슈를 가지고 있지만, 정형화된 방법으로 구현도 용이하고 암호화와 복호화 속도가 빠르며 예측가능하다는 장점이 있습니다. 비대칭키 암호화는 암호화에 사용되는 키와 복호화에 사용되는 키가 다른 방법을 말합니다. 어떻게 다른가 하니, 메시지를 수신하는 사람이 키를 2개를 가지고 있습니다. 하나는 공개키이고, 하나는 개인키입니다. 공개키는 암호화에 사용되는데 그 이름처럼 모두에게 보여줄 수 있고, 개인키는 복호화에 사용되며 오직 본인만이 알고 있어야 합니다. 이러한 점에서 비대칭키 암호화를 공개키 암호화라고도 합니다. 이러한 점에서 누군가가 공개키를 탈취한다고 하더라도 이를 통해 복호화를 할 수 없으므로 암호문은 지켜질 수 있습니다. 다만 이러한 방식을 이용하기 위해서 비교적 비싼 연산을 처리해야 하므로 대칭키보다는 상대적으로 느립니다.

해시 함수의 개념과 활용 사례에 대해 설명해주세요.

해시란 가변 길이의 데이터를 고정 길이의 데이터로 맵핑하는 함수를 말합니다. 당장 생각나기로 iOS에서 볼 수 있는 해시함수는 패키지 버전 관리에 사용되는 checksum입니다. 아마도 저장소의 위치와 브랜치, 커밋 등을 조합할텐데 이를 통해 불러오는 모듈의 버전을 적합하게 관리할 수 있습니다. 이 외에도 보안을 목적으로 해시함수가 사용되는 것으로 알고 있는데 이쪽은 제대로 공부를 한 적이 없어서 잘 모르겠네요~