ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Authentication
    Problem 2020. 12. 18. 10:16

    1. 다음 중 HTTPS에 대한 설명으로 올바르지 않은 것은?

    ① 인증서를 기반으로 데이터 제공자의 신원을 보장받을 수 있다. 

    ② 기존 HTTP 방식보다 더 안전한 통신 프로토콜이다.

    ③ 공개 키 암호화(Public-key cryptography) 방식을 사용한다.

    ④ 최근 트렌드에서 멀어진 프로토콜이다.

    더보기

    ④ 최근 트렌드에서 멀어진 프로토콜이다.

    HTTPS는 최신 통신 프로토콜의 기반. 기존의 HTTP를 사용한 통신은 제3자가 중간에 요청을 가로채갈 경우 데이터를 쉽게 빼낼 수 있었지만, HTTPS를 사용한 통신은 암호화가 되어있기 때문에 제3자가 중간에 요청을 가로채고 쉽게 복호화할 수 없다.

     

    2. 비대칭 키 암호화에 대한 설명으로 올바른 것을 모두 고르세요.

    ① 암호화와 복호화에 다른 키를 사용하는 방식이다.

    ② public key는 누구에게나 공개해도 되는 키다.

    public key로 암호화한 데이터는 그에 맞는 private key로만이 복호화가 가능하다.

    private key로 암호화한 데이터는 public key로는 복호화가 불가능하다.

    더보기

    ④ private key로 암호화한 데이터는 public key로는 복호화가 불가능하다.

    private key와 public key는 한쌍이다. public key 소유자(누구나 소유 가능)는 private key로 암호화된 서버에서 받은 데이터를 복호화가 가능하며, private key 소유자(서버) public key로 암호화 한 데이터를 복호화가 가능하다. public key는 누구나 가지고 있을 수 있음에도 이런 방식을 사용하는 이유는 공개키가 데이터 제공자의 신원을 보장해주기 때문이다.   

    - 암호화된 데이터가 공개키로 복호화된다는 것은, 공개키와 쌍을 이루는 개인키에 의하여 암호화됐다는 것을 의미한다. 즉, 데이터 제공자의 신원 확인이 보장된다는 것이다.

     

    3. 다음 중 해시함수에 대한 설명으로 올바른 것을 모두 고르세요.

    ① 해싱 알고리즘은 해독이 절대 불가능하다.

    ② SHA-256 알고리즘을 사용했을 경우 출력 값의 길이는 언제나 동일하다.

    ③ 해시 알고리즘은 특정 입력값에 대해 항상 같은 해시값을 리턴한다.

    ④ 입력값이 다르면 해시된 출력 값도 다르다

    더보기

    ② SHA-256 알고리즘을 사용했을 경우 출력 값의 길이는 언제나 동일하다.
    ③ 해시 알고리즘은 특정 입력값에 대해 항상 같은 해시값을 리턴한다.

     

    ①: 거의 불가능 하지만 아예 불가능하지는 않다. 현실적으로 시간이 오래 걸려 불가능하나, 수학적으로는 가능

    ②: SHA-256 알고리즘 사용했을 경우, 출력 값의 길이는 입력값의 길이와 관계없이 언제나 256비트(64글자)다.

    ③: 이 점을 이용해서 인증을 할 수 있는 것이다. 어떤 입력값인지는 모르지만 해시 함수를 이용해서 해시된 값이 일치하다면 입력값이 같다는 것을 입증할 수 있다.

    ④: 극히 드물게 다른 입력값인데 해시된 값이 같은 경우가 발생할 수 있다. 해시된 값은 항상 고정된 길이의 값으로 나타내므로 한계가 있기 때문에 입력값이 달라도 해시된 값이 같은 경우가 나타날 수 있다.

     

    4. 해싱 함수를 만들 때 고려해야 할 사항이 아닌 것은?

    ① 해시 값을 계산하는데 오래 걸리지 않아야 한다.

    ② 충돌하는 해시 값이 나올 경우, 리 인덱싱을 할 수 있어야 한다.

    ③ 아주 작은 단위의 변경이라도, 완전히 다른 해시 값을 가져야 한다.

    ④ 최대한 중복되는(충돌되는) 해시 값을 피하며 모든 값들이 각각 고유한 해시 값을 가지게 만들어야 한다.

    더보기

    ② 충돌하는 해시 값이 나올 경우, 리 인덱싱을 할 수 있어야 한다.

    무수히 많은 입력값을 커버해야 한다면 충돌하는 해시값이 결국 발생할 수밖에 없다. 이것을 방지하기 위해 리 인덱싱 할 수 있는 해시 함수를 만드는 것이 아닌 입력값의 크기를 조절하는 것이 더 우선이며, 최대한 충돌하는 해시값이 발생하지 않는 해싱 함수를 만드는 것을 고려해야 한다.

     

    5. 다음 중 쿠키에 대한 설명으로 올바르지 않은 것은?

    ① 삭제하지 않는 한 영원히 보존된다. 로그인 유지 옵션 등 장시간 유지해야 하는 옵션의 구현에 유리하다.

    ② 스크립트를 이용해서 누구나 쉽게 접근할 수 있다.

    ③ sameSite 옵션은 프로토콜 상관없이 none으로 지정할 수 있다.

    ④ 매 요청에 자동으로 같이 전송된다.

    더보기

    ③ sameSite 옵션은 프로토콜 상관없이 none으로 지정할 수 있다.

    sameSite=none은 모든 요청에 대해 서버가 쿠키를 보내줄 수 있지만 Secure 옵션, HTTPS 프로토콜을 이용해야 한다.

     

    6. 쿠키의 sameSite 옵션의 설명으로 올바른 것을 모두 고르세요.

    ① Lax: GET 요청만 쿠키 전송이 가능하다.

    ② Strict: 쿠키 전송을 할 수 없다.

    ③ None: 모든(GET, POST, PUT 등등) 요청에 대해 쿠키 전송이 가능하다.

    더보기

    ① Lax: GET 요청만 쿠키 전송이 가능하다.
    ② Strict: 쿠키 전송을 할 수 없다.
    ③ None: 모든(GET, POST, PUT 등등) 요청에 대해 쿠키 전송이 가능하다.

     

    7. 다음 중 session에 대한 설명으로 올바르지 않은 것은?

    ① 서버에 접속 상태가 저장된다.

    ② 여러 개의 서버를 가지고 있을 때가 유리하다.

    ③ 신뢰할 수 있는 유저인지 확인이 가능하다.

    ④ Cookie에 세션 아이디가 저장된다.

    더보기

    ② 여러개의 서버를 가지고 있을때가 유리하다.

     

    8. 다음 중 CSRF에 대한 설명으로 올바른 것을 고르세요.

    ① 다른 오리진에서 유저가 보내는 요청을 조작하는 것.

    ② 요청에 담긴 데이터에 해커가 직접 접근할 수 있는 방법이다.

    ③ 요청이 갈 주소(API endpoint)와 메소드(GET, POST, PUT 등)를 알고 있다면 공격이 가능하다.

    ④ 쿠키, 세션, 토큰, Oauth를 사용한 모든 인증 방식에 공격할 수 있다.

    더보기

    ① 다른 오리진에서 유저가 보내는 요청을 조작하는 것.

    cross site request forgery, 즉 유저가 보내는 요청을 다른 오리진에서 위조하는 것이다. 요청에 담길 데이터를 직접 바꾸는 것이 아닌, 다른 임의의 endpoint에 query parameter만 변경하여 전송하는 등의 방법이다. 어떤 메소드로 요청을 하는지, 어떠한 endpoint에 요청을 보낼 때 필요한 parameter만 무엇인지만 안다면 요청을 위조하여 보낼 수 있다. 쿠키 방식의 인증을 사용하는 곳에서 사용이 가능하며 sameSite 옵션을 사용하면 많은 csrf 공격을 방지할 수 있다.

     

    9. 세션 기반 인증 대신 토큰 기반 인증 사용을 고려한다면 그 이유는 무엇일지 고르세요(복수 선택 가능). 

    ① 서버의 부담을 덜어주기 위해서

    ② 여러 개의 서버를 사용하는 서비스를 운영할 때

    ③ 토큰 기반 인증이 더 안전하기 때문에

    ④ 앱의 확장성을 고려하고 있어서

    더보기

    ① 서버의 부담을 덜어주기 위해서
    ② 여러 개의 서버를 사용하는 서비스를 운영할 때
    ③ 토큰 기반 인증이 더 안전하기 때문에
    ④ 앱의 확장성을 고려하고 있어서

     

    10. JWT의 구조에 대한 설명 중 틀린 것을 고르세요.

    ① Header: 어떤 종류의 토큰을 사용하는지 적혀있다.

    ② Header: 어떤 알고리즘으로 암호화하는지 적혀있다.

    ③ Payload: 권한 정보가 담겨있다.

    ④ Payload: 유저의 아이디, 연락처 목록, 비밀번호 등의 내용이 담겨있다.

    ⑤ Signature: Header와 Payload를 인코딩 한 값과 salt 값의 조합으로 암호화되어있다.

    더보기

    ④ Payload: 유저의 아이디, 연락처 목록, 비밀번호 등의 내용이 담겨있다.

    암호화가 되어 있지만, 비밀번호는 담지 않는 것이 일반적이다.

     

    'Problem' 카테고리의 다른 글

    Web Architecture  (0) 2020.12.17
    React  (0) 2020.12.17
    DOM  (0) 2020.12.17
    Graph, Tree, Binary Search Tree  (0) 2020.12.17
    Linked List, Hash Table  (0) 2020.12.16

    댓글