Security

글 16개

비밀번호는 암호화하지 않는다 - 되읽을 게 아니라 맞춰볼 것이다

Cryptography · Password

비밀번호는 암호화하지 않는다 - 되읽을 게 아니라 맞춰볼 것이다

서버는 비밀번호를 되읽을 필요가 없다. 그래서 암호화가 아니라 해시로 저장한다. 솔트를 섞고, 일부러 느린 해시를 쓰는 이유까지.

·암호는 무엇을 지키나 6편
디지털 서명과 인증서 - 이 공개키가 진짜 네 것인가

Cryptography · Digital Signature

디지털 서명과 인증서 - 이 공개키가 진짜 네 것인가

개인키로 서명하고 공개키로 검증한다. HMAC과 달리 부인을 못 한다. 그리고 그 공개키가 진짜 그 사람 것임은 인증서와 신뢰 사슬이 보증한다.

·암호는 무엇을 지키나 5편
해시와 HMAC - 바뀌었는지를 안다

Cryptography · Hash

해시와 HMAC - 바뀌었는지를 안다

해시는 되돌릴 수 없는 지문이다. 충돌은 반드시 있지만 못 찾을 뿐. 그런데 해시만으론 위조를 못 막아서, 비밀키를 섞은 HMAC이 필요하다.

·암호는 무엇을 지키나 4편
공개키 암호와 하이브리드 - 열쇠를 둘로 나눈다

Cryptography · Public Key

공개키 암호와 하이브리드 - 열쇠를 둘로 나눈다

잠그는 열쇠는 공개하고 여는 열쇠만 감춘다. 그래서 키 분배 문제가 풀린다. 대신 느려서, 실제 통신은 공개키로 대칭키만 건네는 하이브리드로 간다.

·암호는 무엇을 지키나 3편
대칭키 암호 - 열쇠 하나로 잠그고 연다

Cryptography · AES

대칭키 암호 - 열쇠 하나로 잠그고 연다

AES는 블록 단위로 감춘다. 같은 블록이 같게 나오면 새는 이유, 열쇠 길이가 안전을 정하는 법, 그리고 남는 단 하나의 문제 - 열쇠를 어떻게 건네나.

·암호는 무엇을 지키나 2편
암호화가 푸는 문제 - 무엇을 감추고 무엇은 못 감추나

Cryptography · Encryption

암호화가 푸는 문제 - 무엇을 감추고 무엇은 못 감추나

암호화·해싱·인코딩은 다른 일을 한다. 되돌릴 수 있느냐로 셋을 가르고, 암호가 지키는 세 가지와 못 지키는 것까지 본다.

·암호는 무엇을 지키나 1편
CSRF - 브라우저가 쿠키를 알아서 보낸다

Security · Browser

CSRF - 브라우저가 쿠키를 알아서 보낸다

응답을 못 읽어도 요청은 나간다. 동일 출처 정책이 원래 막지 않던 틈에서 위조 요청이 성립하는 조건과, 토큰·SameSite로 그 조건을 깨는 방법.

·브라우저는 무엇을 막나 4편
XSS - 남의 스크립트가 내 페이지에서 돈다

Security · Browser

XSS - 남의 스크립트가 내 페이지에서 돈다

데이터로 넣은 글자가 코드가 되는 순간 출처는 이미 같아져 있다. 동일 출처 정책이 왜 못 막는지, 방어가 왜 출력 자리에 있는지.

·브라우저는 무엇을 막나 3편
CORS - 막은 게 아니라 안 알려주는 것

Security · Browser

CORS - 막은 게 아니라 안 알려주는 것

서버 로그는 200인데 브라우저는 에러를 낸다. CORS는 동일 출처 정책을 뚫는 구멍이 아니라 서버가 예외를 승인하는 절차이고, 애초에 공격을 막는 물건이 아니다.

·브라우저는 무엇을 막나 2편
같은 출처만 믿는다

Security · Browser

같은 출처만 믿는다

브라우저가 출처를 스킴·호스트·포트로 가르고, 다른 출처의 응답을 스크립트에 넘기지 않는 이유. 이 규칙 하나에서 CORS·XSS·CSRF가 갈라져 나온다.

·브라우저는 무엇을 막나 1편
권한을 어떻게 표현하나

Authorization · RBAC

권한을 어떻게 표현하나

역할과 속성, 그리고 스코프. 권한을 무엇으로 적을지와 어디서 검사할지를 함께 정한다.

·인증과 인가 6편
OAuth 2.0 - 열쇠를 주지 않고 권한만 넘긴다

OAuth2 · Authorization

OAuth 2.0 - 열쇠를 주지 않고 권한만 넘긴다

구글로 로그인이 내 비밀번호를 받지 않는 이유. Authorization Code + PKCE 흐름 하나를 끝까지 따라간다.

·인증과 인가 5편
세션이냐 토큰이냐

Session · JWT

세션이냐 토큰이냐

같은 문제에 정반대 답을 낸 두 방식을 네 개의 축으로 견준다. 틀린 선택이 아니라 다른 선택이다.

·인증과 인가 4편
JWT - 서버가 기억하지 않는다

JWT · Token

JWT - 서버가 기억하지 않는다

토큰 안에 신원을 담고 위조만 막는다. 세 조각 구조와 검증 절차, 그리고 서명은 암호화가 아니라는 사실.

·인증과 인가 3편
쿠키와 세션 - 서버가 기억한다

Session · Cookie

쿠키와 세션 - 서버가 기억한다

로그인 결과를 서버가 들고 있고 브라우저는 번호표만 든다. 쿠키·세션 ID·저장소·만료를 장면으로 따라간다.

·인증과 인가 2편
인증과 인가는 다른 질문이다

Authentication · Authorization

인증과 인가는 다른 질문이다

로그인은 됐는데 403이 뜬다. 누구인가와 무엇을 할 수 있나는 서로 다른 질문이고, 실패했을 때 답도 다르다.

·인증과 인가 1편