전체 글
[컴퓨터보안] Web Security
[컴퓨터보안] Web Security
2023.04.26이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[컴퓨터보안] Feistel Cipher(파이스텔 암호) 동작 방식
[컴퓨터보안] Feistel Cipher(파이스텔 암호) 동작 방식
2023.04.25위의 동작 그림을 기반으로 Feistel Cipher의 동작 방식을 설명하겠습니다. Block Cipher 기반의 암호화 방식이기 때문에, Feistel Cipher 또한 암호화 되어야 하는 Plain Text를 여러개의 Block 으로 나누고, Block 하나와 키를 Encryption Algorithm에 Input 합니다. 이때 한 Block의 길이를 2w bits, key를 K, 진행되는 round의 횟수(Number of rounds)를 n 이라고 하겠습니다. 위의 그림은 n=16 일 때입니다. n은 몇이든 가능합니다. Encryption Algorithm에 들어온 2w bits의 Plain Text Block은 1w bits 두 개로 나누어, 왼쪽과 오른쪽을 각각 $$ LE_{0} \quad R..
[컴퓨터보안] Stream Ciphers | Block Ciphers
[컴퓨터보안] Stream Ciphers | Block Ciphers
2023.04.24Stream Ciphers One-Time Pad 는 아주 안전하지만, 실용적이지는 않은 방법이였습니다. One-Time Pad의 강점인 Plain Text와 같은 길이의 아주 긴 랜덤 키를 사용하는 Stream Cipher 가 One-Time Pad의 대안책으로 많이 사용됩니다. Stream Cipher는 짧은 길이의 키만 공유하고, 이를 Bit-Stream Generator 라는 알고리즘을 사용해 bit-stream을 생성합니다. 이 방식을 통해, One-Time Pad의 단점 중 하나였던 아주 긴 랜덤 키를 어떻게 공유할까 에 대해서 고민하지 않아도 됩니다. 암호화/복호화를 하는 사용자는 같은 짧은 Key를 Bit-Stream Generation Algorithm 에 넣으면 같은 bit-stream..
[컴퓨터보안] Transposition Techniques(전치 기술)
[컴퓨터보안] Transposition Techniques(전치 기술)
2023.04.241. Rail Fence Cipher 가장 간단한 전치 암호화 방식입니다. 암호화 할 Plain Text를 위 아래 지그재그로 나열하고, 이를 Left-To-Right 로 읽는 방법으로 transposition 합니다. meet me after the toga party 라는 Plain Text를 지그재그로 나열하면 아래와 같습니다. 이를 Left-to-Right 로 그대로 읽으면, mematrhtgpryetefeteoaat 와 같이 알아볼 수 없는 텍스트가 나오게 됩니다. 예시에서는 2줄만 이용하였지만, key(정해지지 않은 값) 줄로 나열할 수도 있습니다. 2. Row Transposition Cipher Write the message in a rectangle, row by row Read the..
[컴퓨터보안] Substitution Technique(치환 기술)
[컴퓨터보안] Substitution Technique(치환 기술)
2023.04.241. Caesar Cipher - 카이사르 암호 Plain Text의 각 알파벳을 알파벳 상 3개 뒤의 알파벳으로 치환하는 방식 Plain Text가 meet 일 때, 아래의 과정을 거치게 됩니다. 1. m(12) -> p(12 + 3) 2. e(4) -> h(4 + 3) 3. t(19) -> w(19 + 3) meet을 Caesar Cipher 로 암호화 한 결과, phhw 라는 Cipher Text가 완성됩니다. 이를 식으로 나타내면 아래와 같습니다(k=3) C = E(k, p) = (p + k) mod 26 p = D(k, c) = (c - k) mod 26 k에 대해서 25개의 가능성 밖에 없기에 위 사진과 같이 Brute-Force Attack을 진행할 때, 뚫리기 너무 쉬운 암호화 방식입니다...
[Networks] URI와 PURL
[Networks] URI와 PURL
2023.03.09URI(Uniform Resource Identifier) 웹 서버 리소스는 각자 이름을 갖고있다. www/index.html image/caputdraconis.png와 같다. 이러한 리소스의 이름을 사용해 클라이언트는 관심 있는 리소스를 지목할 수 있다. 이러한 서버 리소스 이름을 통합 자원 식별자, URI(Uniform Resource Identifier) 라고 부른다. http://www.caput.dev/images/chewchewkim.jpg 위와 같은 URI는 HTTP 프로토콜에서 아래의 그림과 같이 해석된다. HTTP는 주어진 URI로 클라이언트가 찾고자 하는 객체를 찾아온다. 이러한 URI에는 URL과 URN 두 가지가 있다. URL(Uniform Resource Locator) 통합 자..
[AWS Certification] AWS SAA(Solution Architect Associate)-C03 자격증 취득
[AWS Certification] AWS SAA(Solution Architect Associate)-C03 자격증 취득
2023.03.05Solution Architect Associate 시험을 보게 된 계기 AWS 서비스들을 많이 알고 있고 사용도 해봤는데, 이 서비스들 각자의 개념, 특성, 그리고 활용 방안에 대해서 알고있나? 위와 같은 내 자신에게 질문을 해봤었다. "어.. EC2는 그냥 컴퓨팅,, S3는 오브젝트 스토리지,, VPC는 그냥 여러개 묶는 수단 아닌가?" 나의 예상보다 굉장히 심각한 수준이였다. AWS 서비스들에 대해서 공부하고 사용해볼 수 있는 단계가 필요했다. Solution Architect Associate(이하 SAA) 시험은 이런 내게 아주 적합한 시험이였다. 이 자격증을 취득하면, 어디 가서 'AWS를 조금은 써봤다' 라고 할 수 있을 것 같았다. 그래서,, 17만원을 바로 긁고, 재시험이 두려워 바로 공..
[HTML] "Google"을 구글스럽게
[HTML] "Google"을 구글스럽게
2022.07.27G o o g l e 색상을 하나하나 찾아서 넣기 귀찮으신 분들을 위해서 준비했습니다.
[Django] admin edit view에 테이블을 추가하고 싶을땐?
[Django] admin edit view에 테이블을 추가하고 싶을땐?
2022.07.09django admin 작업 중, order(주문) 모델의 change view에서 해당 주문에 포함되어 있는 상품을 테이블 형태로 출력하고 싶었습니다. 찾아본 바로는, 다음 2가지 방법으로 원하는 바를 이룰 수 있었습니다. 1. 새로운 view를 만들어, 각 주문마다 링크를 만들어 해당 링크로 접속 시에, 테이블 형태로 상품 정보를 출력하는 방법 2. change_form_template을 커스텀 하는 방법 첫번째 방법을 시도하다가, 생각대로 되지 않아 두번째 방법으로 이를 해결하였습니다. 해결 방법은 아래와 같습니다. Order(주문) change view에서 해당 테이블을 보려고 하기 때문에, change_form_template을 override 해주었습니다. django에 기본적으로 정의되어 있..
[Django] admin에서 list_filter에 넣을 커스텀 필터를 만들 수 있을까?
[Django] admin에서 list_filter에 넣을 커스텀 필터를 만들 수 있을까?
2022.07.06현재 django admin에서는 Model Admin에 list_filter로 해당 모델의 필드 이름을 넣으면, 아래와 같이 필터링 기능을 제공합니다. 하지만 조금 색다른 필터링 기능을 구현하고 싶다면..? 커스텀 필터를 구현하면 됩니다! 간단하게 모델을 아래와 같이 만들어줍니다. class TestModel(models.Model): id = models.AutoField() # pk order = models.IntegerField() # 사용자에게 몇 번째로 디스플레이 될지를 나타내는 필드(order==0이면 첫번째로 사용자에게 디스플레이 됩니다.) title = models.TextField() # TestModel의 제목을 저장하는 필드 createdat = models.DateTimeFiel..
[C++] get과 getline의 차이점
[C++] get과 getline의 차이점
2022.06.23get과 getline은 모두 한 줄을 읽어오는 함수입니다(3번째 파라미터를 정해주지 않는 경우 기본 '\n' 전까지) 즉 아래 두개의 코드는 똑같은 작업을 수행합니다. get(firstname, 100, '\n'); getline(firstname, 100, '\n'); 하는 일이 똑같다면 이 2개의 함수 모두가 존재할 필요가 없습니다. 차이점은 get 함수는 세번째 인자로 주어진 문자(default '\n')를 입력 스트림에 남겨둡니다. 그렇다면 getline 함수는 남겨놓지 않는다는 것이겠쬬..? 호호잇~
[Django] DjangoAdmin.SearchFields에 ChoiceField가 필요했어
[Django] DjangoAdmin.SearchFields에 ChoiceField가 필요했어
2022.06.11Django Admin 페이지에 상품 검색 기능에 Choices Field를 넣고 싶었습니다. 제목으로 검색하고 싶거나,, 작성자 이름으로 검색하거나, 검색 주제를 정하고 검색하는 기능을 바랬습니다. 아래 두개를 합친 결과를 말이죠 하지만 Django Admin에서는 불가능합니다. StackOverflow를 다 뒤져본 결과, 돌아온 답변은 "너는 Django Admin에게 너무 많은 것을 바란다.." 시간이 없던 저는 어쩔 수 없이 차선책을 선택했습니다. 상품 제목으로 검색을 하고 싶으면 "title:상품제목"으로 상품 제작자 이메일로 검색을 하고 싶으면 "email:이메일주소"로 django admin의 검색창에 검색을 하게 되면, 내부적으로 아래의 함수가 호출됩니다. get_search_results..