부시기 시리즈/취업 부시기 시리즈

CS 면접 부시기 - 암호학/보안

Benn.dev 2021. 7. 10. 18:38

비대칭키 암호화, 대칭키 암호화에 대해 간단히 설명해주세요

더보기

비대칭키 암호화란 공개키 암호화라고도 하며,

공개키는 외부에 공개, 비밀키는 내부적으로 가지고 있고

서로 각각의 키로 암호화하거나 해제할 수 있는 방식입니다.

이 방식은 대칭키를 공유하는 방식보다 비교적 안전하며, 대신 연산 성능이 떨어지는 편입니다.

대칭키 암호화란 양측이 동일한 키를 가지고 있으며,

암호화와 해제에 동일한 키를 사용하는 방식입니다.

이 방식은 비밀키가 노출되는 문제가 있을 수 있으며, 연산 성능은 덜 필요해 상대적으로 빠릅니다.

 

단 방향 암호화에 대해서 간단히 설명해주세요

더보기

단방향 암호화는 복호화 불가능한 암호화라고 합니다.

대부분 해시 알고리즘을 이용해서 구현하며, 민감정보를 데이터베이스에 저장할 때 해당 방식을 사용합니다.

보통의 단방향 암호화는 빠른 성능을 보여, 무차별 대입 공격에 취약합니다.

따라서 이런 정보를 저장하기 위해 bcrypt와 같은 방식을 사용합니다.

해시란 말에서 알 수 있듯이 충돌 가능성이 있습니다.

이렇게 복호화 불가능한 암호화 방식이 위험하다는 것은 해시 충돌을 일으켰다는 말로 이해해도 됩니다.

 

JWT에 대해서 간단히 설명해주세요

더보기

JWT란 토큰 인증 방식에서 쓰이는 것이라고 볼 수 있습니다.

다른 사용으론 데이터를 공유하는데도 사용할 수 있지만 일반적으론 토큰 인증 방식에서 사용됩니다.

JWT는 헤더, 페이로드, 시그니쳐로 구분됩니다.

  • 헤더는 토큰의 타입, 암호화 알고리즘을 담고 있습니다. 여기서 타입은 JWT, 알고리즘은 보통 SHA256이나 RSA를 사용합니다.
  • 페이로드는 토큰의 정보를 담고 있습니다. 등록된 클레임, 공개 클레임, 비공개 클레임들을 포함하고 있습니다.
  • 시그니처는 토큰의 정보가 신뢰할 수 있는 것인지 판단할 수 있도록 합니다. 시그니처는 헤더의 인코딩 값과, 정보의 인코딩 값을 합친 후 주어진 비밀키로 해쉬를 하여 생성합니다.

JWT는 세션 기반 인증과 주로 대비됩니다.

세션 기반 인증은 서버에서 세션 정보를 관리해야 하는 비용이 들게 됩니다.

또한 분산 환경에서도 관리하기 어렵습니다. 하지만 JWT는 그 자체로 정보를 가지고 있기 때문에 세션의 단점을 보완할 수 있습니다.

 

OAuth에 대해서 간단히 설명해주세요

더보기

OAuth는 제3자 인증방식입니다.

기본적으로 사용자는 서버를 신뢰할 수 없습니다.

그렇기 때문에, 민감정고를 작성하는 것을 꺼립니다.

서버 측에서도 이와 마찬가지로 사용자의 민감정보를 관리하는 것은 그에 대응하는 리소스가 필요합니다.

그래서 OAuth를 사용해서 신뢰할 수 있는 서버에게 정볼르 맡겨놓고 접근할 수 있는 권한을 주는 것이라고 이해하면 됩니다.

그러면 사용자 측에서는 민감정보를 굳이 입력하지 않고도 서비스를 사용할 수 있고,

서버 측에서도 민감정보를 굳이 관리하지 않아도 되기 때문에 이점이라고 볼 수 있습니다.

 

SQL Injection에 대해서 간단히 설명해주세요

더보기

SQL Injection이란 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL문을 주입하고 실행되게 하여

데이터베이스가 비정상적인 동작을 하도록 조작하는 행위입니다.

인젝션 공격은 공격이 비교적 쉬운 편이고 공격에 성공할 경우 큰 피해를 입힐 수 있는 공격입니다.

논리적 에러를 이용, Union 명령어를 이용, Boolean based SQL, Time based SQL 등을 이용한 방법이 있습니다.

 

XSS에 대해서 간단히 설명해주세요

더보기

XSS란 웹 어플리케이션에서 일어나는 취약점으로 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하는 공격 기법입니다.

대부분 사용자가 글을 쓰고 읽을 수 있는 게시판에 많이 발생하지만, 사용자의 입력 값을 웹 페이지에 보여주는 곳에서도 발생합니다.

입출력 값 검증과 웹 방화벽 사용으로 대응할 수 있습니다.

 

CSRF에 대해서 간단히 설명해주세요

더보기

CSRF는 사이트간 요청 위조라고 불리며 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말합니다.

 

레퍼런스