분류 전체보기
-
20221109 TIL 디피 헬먼 키 교환TIL 2022. 11. 9. 22:01
오늘은 이름이 신기한 디피-헬먼 키 교환에 대해 찾아보았다. 디피-헬먼 키 교환방식은 기초적인 암호 통신 방법이고, 생각보다 어렵지 않은 연산을 이용해서 비밀 키를 구하는 신박한 방법이었다. 처음에 딱 보면 복잡해보이지만, 제곱연산과 나머지를 구하는 연산밖에 없다! 공통 키, 즉 암호화와 복호화에 공통적으로 사용되는 키를 이용하는 방식은 공통키를 어떻게 안전하게 전달할 지가 매우 중요하다. 디피-헬먼 키 교환 방식을 이용하면 두 사람이 공통키를 안전하게 가질 수 있게 된다. 디피-헬먼 키 교환 방식을 살펴보면, X가 Y와 공통키를 나눠가지고 싶은 상황일 때, 1. X가 소수 p, 그리고 1에서 p-1 사이의 정수 g를 골라서 Y에게 공유한다. p, g는 사실상 공개되어 전달된다고 볼 수 있다. 즉, 누구..
-
20221108 TIL AOP에 대해 알아보다TIL 2022. 11. 8. 21:51
스프링을 공부하면서 AOP에 대한 내용이 나왔는데, 이해가 쉽게 않는 개념이었다. 그래서 며칠 동안 계속 조금씩 개념을 이해하려고 자료들을 찾아봤고, 오늘 드디어 AOP와 조금 친해지게 된 것 같다! 위키백과에서 AOP(관점 지향 프로그래밍)를 검색하면 횡단 관심사의 분리를 허용해서 모듈성을 증가시키기 위한 프로그래밍 패러다임이라고 나온다. 먼저, 횡단 관심사라는 말이 어려운데, 횡단 관심사는 예를 들면 어떤 특정 클래스에서만 사용하지 않고, 많은 클래스들에서 공통적으로 사용하게 되는 부가적인 기능이라고 볼 수 있다. 횡단 관심사로 많이 나오는 예시로 로그를 남기는 기능이 있다. 로그를 남기는 기능은 많은 부분에서 사용해야 될 수 있는데, 만약 그 기능을 각각 구현한다면 중복도 많아지고, 유지보수도 어려..
-
20221107 TIL 아샬님이 전수해주신 소중한 꿀팁들TIL 2022. 11. 7. 21:12
오늘은 아샬님의 특별한 강의를 들을 수 있는 아주 소중한 날이었다. 들으면서 반성할 것들이 많이 떠올랐고, 많은 꿀팁을 얻을 수 있었다. 일단 가장 많이 반성했던 부분은 팁을 찾으려 하지 말자였다. 이 메시지의 요지는 쉬운 길을 찾으려 하지 말아야 된다는 것이다. 나는 내가 생각을 해서 코드를 짜도 내가 생각해서 짠 코드보다 더 나은 방식이 있을 거란 생각에 생각을 하기보다 어떤 규칙을 찾아서 그 규칙을 따르려고 하는 습관이 있다. 공식을 습득해서 공식에 따라 결과를 도출하는 과정을 몇 년 동안 하면서 항상 어떤 규칙을 찾으려 하는 습관이 밴 것 같다. 그래서 규칙을 찾으려 하지 말라는 피드백을 몇 번 들어서 자제를 하려고 노력을 하고 있지만 아직도 무의식적으로 규칙을 찾고 있는 나의 모습이 보인다.. ..
-
어떻게 안전한 서비스를 만들 수 있을까, [인크립션]카테고리 없음 2022. 11. 6. 22:42
안전한 서비스를 위해서는 암호화는 빼놓을 수 없다. 암호화는 어떤 내용은 메시지를 전달받은 사람 이외에 다른사람들은 메시지를 알아볼 수 없게 하는 것이다. 고전 암호에서는 메시지의 내용을 바꾸거나 위치를 바꾸는 기본적인 암호화 방식을 사용하거나 기계암호를 사용했다. 현대 암호에서는 공통키 암호화와 공개키 암호화를 사용한다. 암호화의 세 가지 보안 기능은 기밀성, 무결성, 인증이다. 기밀성은 보안 대상을 잘 감췄다는 뜻이고, 무결성은 자격이 없는 자에 의해 내용이 위변조되지 않았다는 뜻이고, 인증은 어떤 사물이나 사람의 신원을 증명하는 과정을 의미한다. 암호화를 뜻하는 Encipherment는 기밀성을 유지하기 위해 보안 대상을 감추는 것에 중점을 두고 있고, Cryptographic Processing은..
-
12주차 개념 노트메가테라 2022. 11. 6. 18:14
React 사용자와 상호작용이 많은 웹페이지에서 UI를 쉽게 표현하기 위한 자바스크립트 라이브러리이다. UI의 특정 부분을 컴포넌트로 만들어서 여러 곳에서 재사용하거나, 컴포넌트를 조합하여 또 다른 컴포넌트를 만드는 방식으로 레고 블럭을 조립하듯이 UI를 구성하게 되고, Single Page Application, 모바일 어플리케이션, 가상현실 어플리케이션 등 다양한 어플리케이션을 만드는데 활용할 수 있다. 상태가 바뀌면 리액트는 가상 DOM을 활용해서 변경되는 부분만 효과적으로 렌더링한다. SPA(Single Page Application) 웹 페이지가 새로고침되지 않아서 사용자에게 부드러운 UI를 보여줄 수 있는 방식이다. 웹 페이지에서 보여줄 내용이 수정되면 웹 페이지를 통째로 받아와서 다시 그리는..
-
20221106 TIL JWT를 쓸 때 주의할 점TIL 2022. 11. 6. 13:47
서버에서 사용자 정보를 세션으로 관리해야 하는 세션 기반 인증 시스템과 달리 토큰 기반 인증 시스템에서는 인증이 된 사용자들에게 토큰을 발급하고, 인가가 필요한 경우 클라이언트에서 요청을 할 때 토큰과 함께 요청함으로써 서버에서 상태를 유지하지 않아도 된다. 이처럼 토큰 방식은 stateless라는 큰 장점이 있기 때문에 매우 유용할 것이라고 생각했는데, 토큰 방식을 이용할 때는 꽤 많은 것들을 고려하지 않으면, 서비스의 안전성에 문제가 생길 수 있다. 토큰 방식에서 자주 사용되는 JWT를 사용할 때 주의할 점에 대해 알아보자. JWT는 토큰에 Base64Url로 인코딩 된 사용자 정보가 포함되어있다. Base64Url은 동일한 문자열에 대해 동일한 인코딩 값을 반환하고, 디코딩이 가능하다. 따라서 토큰..
-
20221105 TIL 모르는 기술을 어떻게 쓸 것인가TIL 2022. 11. 5. 11:11
개발자는 끊임없이 새로운 기술을 익혀야 한다. 더 좋은 기술이 나왔고, 적용할 수 있는 상황이고, 적용했을 때 개선이 될 부분들이 보인다면 당연히 새로운 기술을 적용하는 것이 맞기 때문이다. 하지만 그렇게 하지 못하는 이유는 뭘까? 대부분은 새로운 기술을 도대체 어떻게 써야 될지를 모르겠기 때문일 것이다. 그 첫 번째 이유로는 기술에 대한 개념 공부가 덜 되어있어서 막막한 경우가 있을 것 같다. 예를 들어 스프링이라는 기술을 쓰고 싶은데 의존성 주입이 뭔지도 모른다면 의존성 주입을 먼저 공부해야 할 것이다. 하지만 스프링이라는 기술이 의존성 주입을 쉽게 만들어준 것이지, 이미 의존성 주입의 개념도 알고 사용도 하고 있었을 수도 있기 때문에 이 부분은 아예 다른 분야의 기술을 적용하는 게 아닌 이상 연차가..
-
20221104 TIL 메서드 시그니처를 고려하자!TIL 2022. 11. 4. 13:53
최근에 컬렉션 프레임워크들의 메서드들을 많이 살펴봤었는데, 오늘 코딩 문제를 풀다가 불현듯 이게 내가 예상한대로 되나? 싶은 생각이 들었던 메서드가 있었다. 그것은 바로바로 List의 remove메서드이다. List는 remove로 어떤 인덱스에 해당하는 값을 없앨 수도 있고, 혹은 일치하는 값을 없앨 수도 있다. 그런데 이번 코딩 문제는 List에 Integer값들이 들어있었기 때문에 내가 인덱스 1에 해당하는 값을 지우고 싶어서 list.remove(1)을 했을 때 만약 값이 1인 요소를 지우면 어떡하지라는 생각이 불현듯 들었다. 이 불안함은 메서드 시그니처로 해결할 수 있었다. 자바는 메서드 시그니처로 각 메서드를 구분한다. 그리고 자바의 메서드 시그니처는 메서드 이름과 파라미터 타입들로 구성된다...