본문 바로가기

이론111

RSA 알아보기 들어가며우리가 지난번에 알아본 DES는 암호화와 복호화를 같은 키 값으로 수행하는 대칭키 암호입니다. 실제 통신에서 대칭키 암호를 사용하려면 통신에 앞서 송신자와 수신자가 대칭키를 사전에 공유하는 과정이 필요합니다. 알다시피 대칭키는 외부에 노출되어선 안됩니다. 하나의 키를 통해 암호화와 복호화를 동시에 수행하기 때문에, 키가 노출된다면 누구라도 해당 통신을 탈취해서 내용을 확인할 수 있게 되어 해당 키를 사용한 암호화는 결국 무용지물이 됩니다. 처음에는 송신자와 수신자가 물리적으로 만나 사전에 키를 공유하는 방법을 취했습니다. 직접 교환한다면 중간자가 개입될 여지도 없고, 가장 확실하고 안전하게 키를 교환할 수 있는 방법이었습니다. 그러나 물리적인 교환이라는 방법은 그 자체로 단점이 명확한 방법이었습니.. 2023. 4. 8.
블록 암호 모드 (Block cipher mode of operation) 블록 암호 모드 지난 시간에 알아본 DES는 대표적인 블록 암호의 한 예시입니다. 블록 암호란 데이터를 순차적으로 처리해가는 스트림 암호와는 달리 정해진 크기 단위의 블록을 통해 정보를 암호화하여 기밀성을 지키는 기술로, 처리해야 하는 정보가 정해진 블록의 크기를 초과하면 다양한 모드를 적용하여 처리하게됩니다. 지난 포스트에서 알아봤던 DES의 경우 64비트의 블록을 사용하고, DES를 개량해서 나온 AES의 경우 종류에 따라 128비트, 192비트, 256비트 등을 기준 길이로 사용합니다. 이번 시간에는 블록 암호에 적용할 수 있는 여러가지 모드들과 그 특성에 대해서 알아보겠습니다. ECB 모드 Electric CodeBook Mode, 전자 부호표 모드 ECB 모드는 평문 블록을 암호화한 결과가 그대.. 2023. 4. 6.
최단 경로 찾기 : 다익스트라(Dijkstra) 알고리즘 들어가며 지난 포스트에서는 그래프를 탐색하는 두 가지 방법인 DFS와 BFS에 대해서 알아보았습니다. 이번에는 그래프 상의 최단 경로를 찾는 알고리즘 중 하나인 다익스트라(Dijkstra, 또는 데이크스트라) 알고리즘에 대해서 알아보겠습니다. 다익스트라 알고리즘은 1972년도에 튜링상을 수상했던 에츠허르 데이크스트라(Edsger Wybe Dijkstra)가 1956년에 고안한 알고리즘으로, 암스테르담에서 약혼녀와 쇼핑을 하다가 카페 테라스에서 잠깐 쉬어가던 중 "한 도시에서 다른 도시로 가는 가장 짧은 길이 무엇일까?" 를 생각하며 고안하게 되었다고 하네요. 이 알고리즘은 그래프 상의 최단 경로를 찾는 알고리즘으로, DFS나 BFS와 같이 정점과 간선으로 이루어진 구조에서 사용됩니다. 그 중에서도 간선의.. 2023. 4. 2.
그래프 탐색하기 : BFS와 DFS 그래프와 트리는 정점(Node)과 간선(Edge)으로 이루어진 자료구조입니다. 점과 선을 통해 데이터를 저장하기 때문에, 그래프의 경우 도로, 전력망, 네트워크 등 우리가 살고있는 실제 세계를 모델링하는데 많이 사용되며 트리의 경우 컴퓨터의 디렉토리와 같은 계층 구조를 모델링하는데 사용됩니다. 어떤 트리나 그래프에서 특정 노드를 찾기 위해서는 구조 전체를 탐색할 필요가 있습니다. 기존 자료구조의 형식이나 특징에 따라 효율적인 탐색을 할 수 있도록 하는 몇 가지 방법이 있는데, 대표적으로 BFS(Breadth-First Search)와 DFS(Depth-First Search) 두 가지가 있습니다. 오늘 포스팅에서는 이 두 가지 탐색 방법들의 특징과 각 방법을 사용하기 좋은 케이스 등을 알아보겠습니다. B.. 2023. 3. 24.
DES 알아보기 (Data Encryption Standard) 우리가 인터넷 상에서 데이터를 송·수신하는 것을 떠올려보면, 송신자에서 수신자에게 데이터가 전달되기까지 생각보다 꽤 많은 경로를 거쳐 지나간다는 것을 알 수 있습니다. 이런 점을 미루어보면 전송 과정 가운데 중간자가 요청을 가로채거나 하여 우리의 데이터가 남의 손에 들어가는 일은 그리 이상한 일이 아니라는 것을 깨닫습니다. 보수적으로 접근하면 오히려 항상 노출되어 있다고 보는 것이 무방합니다. 이렇게 위험한 데이터 통신이지만, 우리는 남에게 보여져서는 안되는 민감한 정보들을 하루에도 몇 번씩 보내곤 합니다. 아이디, 비밀번호, 계좌번호, 신상정보, 사생활 등등... 이런 정보들이 중간자에게 들어가서 악용될 수 있다고 생각하면 정말 끔찍한 일이 아닐 수 없겠죠. 그래서 사람들은 외부로부터 데이터의 기밀성을.. 2023. 3. 18.
Nginx 리버스 프록시로 Mixed Content 우회하기 우리가 어떤 웹 서비스를 배포한다고 하면, 흔히 프론트엔드단에 보안 접속을 위한 https 프로토콜 연결을 적용해주게 됩니다. http대신 https를 사용함으로써 통신 내용을 암호화하면 중간자로부터 사용자의 정보를 보호할 수 있기 때문에 대부분의 서비스가 https 연결을 사용하고 있습니다. 이러한 특성 때문에 https 프로토콜을 사용하는 측에서는 오직 https 프로토콜을 사용하는 서비스끼리만 통신할 수 있습니다. 우리가 https 프로토콜을 사용한다고 해도, 상대측이 http 프로토콜을 사용하고 있다면 부분적으로만 암호화가 이루어진 상태이기 때문에 공격자가 암호화되지 않은 정보에 접근할 수 있어 위험하기 때문입니다. 실제로 https 프로토콜을 이용하는 측에서 http 프로토콜을 이용하는 측으로 .. 2023. 3. 12.