본문 바로가기

CS3

패스워드는 암호화 해서 저장합시다. - 단 방향 해시 함수, Bcrypt 패스워드 단순 텍스트로 저장하는 것은 굉장히 위험한 행위이다. 패스워드를 암호화하는 가장 흔한 방법으로 단방향 해시 함수를 사용하는 방법이 있다. 단방향 해시 함수는 수학적인 연산을 통해 원본 메시지를 변환해 암호화된 메시지인 다이제스트를 생성한다. 원본 메시지로 다이제스트를 구하기는 쉽지만 다이제스트로 원본 메시지를 구할 수 없어야 한다. 하지만 단방향 해시 함수에게도 문제점이 존재한다. 첫 번째로 인식 가능성이다. 동일한 메시지가 언제나 동일한 다이제스트를 가진다면, 해커가 전 처리된 다이제스트를 미리 많이 확보한 다음 이를 탈취한 다이제스트와 비교해 원본 메시지를 찾아낼 수 있다. 이와 같은 다이제스트의 목록을 레인보우 테이블이라고 하며 이와 같은 공격 방식을 레인보우 공격이라고 한다. 두 번째는 .. 2021. 11. 15.
Blocking vs Non-Bloking | Synchronous vs Asynchronous Blocking vs Non-Blocking Blocking vs Non-Blocking는 제어권이 어디에 있느냐에 대한 관점이라고 할 수 있습니다. 하나의 처리되어야 하는 작업이 전체 작업 흐름을 Blocking(막느냐), Non-Blokcing(막지 않느냐)에 대한 관점에서 접근해야 합니다. 즉, 하나의 처리되어야 하는 작업에 제어권이 있는지, 해당 작업을 시킨 주체에게 제어권이 있는지에 대한 것입니다. Blocking 호출된 함수가 자신의 작업을 마칠 때까지 제어권을 넘겨주고 대기하게 만드는 것입니다. 즉, 자신의 작업을 진행하다가 다른 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 실행하는 것입니다. Non-Blocking 호출된 함수가 바로 리턴해 함수에게 제어권을 넘겨주고,.. 2021. 10. 15.
Unicode 유니코드 아스키코드로 모든 언어를 표현하는데 한계가 있었고, 전 세계 언어의 문자를 정의하기 위한 국제 표준 코드가 등장한 것이 유니코드입니다. 1바이트를 사용해 2^7가지 표현할 수 있는 아스키코드와 달리. 유니코드는 2바이트, 즉 16비트를 사용해 2^16가지 를 표현할 수 있습니다. 처음에는 2^16개에 모든 문자를 담을 수 있을 거라 판단했지만, 부족하여 16개의 보조 평면을 사용해 표현했습니다. 즉 유니코드에 지정할 수 있는 총문자의 수는 2^16 * 17개 입나다. 유니코드가 영어로 표현할 땐 1바이트, 한글을 표현할 땐 바이트로, 다른 특수문자를 표현할 땐 3바이트로 표현하는 가변적인 표현의 문제가 발생했습니다. 이는 컴퓨터에 큰 혼란을 주므로, 유니코드에는 다양한 인코딩 방식이 존재합니다... 2021. 10. 11.