ComputerScience

    SSL & TLS 및 암호화 방식

    SSL & TLS 및 암호화 방식

    작년부터 올해 초까지 Secure Connection과 Certificate Authentication을 통한 통신 기능에 대해 구현해야 했었는데, 당시 SSL에 대해 어렴풋이 알고 있었지만, 실제로 해당 내용을 다뤄보니 꽤나 헷갈리고, 어려운 내용이었습니다. 해당 기능을 마무리 하면서 알게된 내용들을 블로그에 정리해 보려고 합니다. SSL (Secure Socket Layer) 및 TLS(Transport Layer Security) 먼저, SSL과 TLS에 대해 알아야 합니다. SSL은 TCP/IP 4 Layer 중 전송계층(Transport)상에서 클라이언트와 서버에 대한 인증 및 데이터 암호화를 수행합니다. 응용계층에서부터 TCP 전송계층 사이에서 안전한 채널을 형성해 주는 보안용 프로토콜입니다...

    [프로그래머스] 베스트앨범 - JavaScript

    문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인 노래가 재생된 횟수입니..

    TLS(Transport Layer Security) 알고리즘 (HTTPS & SSL )

    TLS(Transport Layer Security) 알고리즘 (HTTPS & SSL )

    웹 서비스에서 주로 사용되는 HTTP는 암호화 되지 않은 평문을 데이터로 전달하게 되는데, 통신이 되는 도중에 패킷을 훔쳐보는 *스니핑 공격에 대응하기 위해서 TLS를 적용합니다. 스니핑(Sniffing) 네트워크 상에서 자신이 아닌 다른 상대방들의 패킷 교환을 엿듣는 것 TLS(전송 계층 보안)은 웹에서 암호화를 구현하는데 가장 널리 사용되는 프로토콜입니다. TLS는 암호화 프로세스의 조합을 사용하여 네트워크를 통한 보안 통신을 제공합니다. TLS가 있는 TCP/IP 프로토콜 스택은 HTTP -> TLS -> TCP -> IP 입니다. TLS는 보안과 성능상 이슈로 두 가지의 암호화 방법을 혼용해서 사용합니다. 1. 대칭키 암호화 (Symmetric key algorithm) 2. 비대칭키 암호화 (A..

    [프로그래머스] [1차] 캐시 - python3

    문제 설명 캐시 지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데이터베이스에서 읽어 보여주는 서비스를 개발하고 있다. 이 프로그램의 테스팅 업무를 담당하고 있는 어피치는 서비스를 오픈하기 전 각 로직에 대한 성능 측정을 수행하였는데, 제이지가 작성한 부분 중 데이터베이스에서 게시물을 가져오는 부분의 실행시간이 너무 오래 걸린다는 것을 알게 되었다. 어피치는 제이지에게 해당 로직을 개선하라고 닦달하기 시작하였고, 제이지는 DB 캐시를 적용하여 성능 개선을 시도하고 있지만 캐시 크기를 얼마로 해야 효율적인지 몰라 난감한 상황이다. 어피치에게 시달리는 제이지를 도와, DB 캐시를 적용할 때 캐시 크기에 따른 실행시간 측정 프로그램을 작성하시오. 입력 형식 캐..

    유튜브 댓글 감성 분석하기 (Sentiment Analysis) - (1)

    유튜브 댓글 감성 분석하기 (Sentiment Analysis) - (1)

    1. 개발환경 세팅하기 저는 로컬에서 miniconda로 가상환경을 생성하고, 프로젝트를 진행하였습니다. 형태소 분석기로는 이전 프로젝트를 진행했을 때, 비교적 효과가 좋았던 kiwipiepy(https://github.com/bab2min/kiwipiepy)를 사용하였고, 이외의 필요한 라이브러리는 다음과 같습니다. pip install kiwipiepy conda install numpy pandas matplotlib scikit-learn tensorflow 2. 네이버 쇼핑 리뷰 데이터 다운로드 및 전처리 주로 제품 리뷰 유튜브 댓글이 타겟인 감성 분석 모델을 생성하기 위해서 네이버 쇼핑 리뷰 데이터를 통해 학습을 진행하였습니다. 다운로드 : https://github.com/bab2min/co..

    [자료구조] B Tree

    B 트리는 이진트리에서 발전되어 모든 리프 노드들이 같은 레벨을 가질 수 있도록 자동으로 밸린스를 맞추는 트리입니다. 정렬된 순서를 보장하고, 멀티레벨 인덱싱을 통한 빠른 검색을 할 수 있기 때문에 DB에서 사용하는 자료구조중 한 종류입니다. B트리는 하나의 노드에 다수의 정보를 저장할 수 있습니다. 최대 M개의 자식을 가질 수 있는 트리를 M차 B트리라고 하며, 다음과 같은 특징을 갖습니다. 노드는 최대 M개부터 M/2개 까지의 자식을 가질 수 있습니다. 노드에는 최대 M-1개부터 M/2 -1 개의 키가 포함될 수 있습니다. 노드의 키가 x개 라면 자식의 수는 x + 1개입니다. 최소 차수는 자식수의 하한 값을 의미하며, 최소 차수가 t 라면 M=2t-1을 만족합니다. (최소 차수가 2라면 3차 B트리..

    [백준 17609] 회문 - python

    문제 회문(回文) 또는 팰린드롬(palindrome)은 앞 뒤 방향으로 볼 때 같은 순서의 문자로 구성된 문자열을 말한다. 예를 들어 ‘abba’ ‘kayak’, ‘reviver’, ‘madam’은 모두 회문이다. 만일 그 자체는 회문이 아니지만 한 문자를 삭제하여 회문으로 만들 수 있는 문자열이라면 우리는 이런 문자열을 “유사회문”(pseudo palindrome)이라고 부른다. 예를 들어 ‘summuus’는 5번째나 혹은 6번째 문자 ‘u’를 제거하여 ‘summus’인 회문이 되므로 유사회문이다. 여러분은 제시된 문자열을 분석하여 그것이 그 자체로 회문인지, 또는 한 문자를 삭제하면 회문이 되는 “유사회문”인지, 아니면 회문이나 유사회문도 아닌 일반 문자열인지를 판단해야 한다. 만일 문자열 그 자체로..

    최소스패닝트리(Minimum Spanning Tree) - 프림 알고리즘, 크루스칼 알고리즘

    최소스패닝트리 란? 그래프 G에 대한 신장트리는 G의 마디를 모두 포함하면서 트리로 연결된 그래프이다. 이 중 모든 간선의 가중치가 최소가 되는 신장트리를 최소비용신장트리. 즉, 최소 스패닝 트리(MST)라고 한다. 존재하는 신장트리를 모두 찾아보는 방법은 최악시간복잡도가 지수시간보다 나쁘기 때문에, 탐욕적 방법을 사용하면 효율적으로 문제를 풀 수 있다. 부분적으로 최적인 고려 사항에 대해 이음선을 선택하는 알고리즘으로 프림 알고리즘과 크루스칼 알고리즘이 존재한다. 프림 알고리즘 : 최소 스패닝 트리를 찾기 위해 정점 부분집합에 이웃한 거리들을 판단하며 구한다. 즉, 신장트리에 붙은 마디 중 가장 minimum한 값을 선택하면서 만들어가는 방식이다. 알고리즘 단계 1. 하나의 꼭지점을 선택하여 이웃한 거..