DB
PHP
LLM

S&P 500

SPI@SPX 미국 2025.12.16 09:40 현지시간 기준 |10분 지연제공

6,802.40

전일대비 14.11 ( -0.21% )

나스닥 종합

NAS@IXIC 미국 2025.12.16 09:35 현지시간 기준 |15분 지연제공

23,007.69

전일대비 49.72 ( -0.22% )

다우 산업

DJI@DJI 미국 2025.12.16 09:35 현지시간 기준 |15분 지연제공

48,394.30

전일대비 22.26 ( -0.05% )

RSA

작성자아이디 : skok1025, 2024-02-04 11:19:35
카테고리 : 컴퓨터공학 암호화방식 게시글 수정

RSA

  • Ron Ribest, Adi Shamir, Leonard Adleman 가 개발한 암호 방식

  • 인터넷 보안, 전자상거래에서 널리 사용

  • 2개의 대형 소수의 곱셉은 쉽지만, 그 반대인 소인수분해는 매우 어렵다는 수학적 성질을 기반으로 하고 있습니다.

특징

  • 비대칭성

    • 암호화와 복호화에 사용되는 키가 다르기 때문에 비대칭성을 가진다고 표현

    • "공개키 암호화" -> "비밀키 복호화"

    • "비밀키 암호화" -> "공개키 복호화"

  • 안정성

    • RSA의 안전성은 큰 소수의 곱 분해 문제에 기반을 두고 있습니다. 이론적으로, 공개 키와 비밀 키를 생성하기 위해 사용되는 두 개의 큰 소수를 알지 못하면, 비밀 키를 효율적으로 계산하는 것은 매우 어렵습니다. 이로 인해 RSA는 현재 사용 가능한 컴퓨터로는 실질적으로 깨트리기 어렵다고 여겨집니다.

  • 확장성

    • RSA 암호화는 키의 크기가 커질수록 보안성이 향상됩니다. 일반적으로 사용되는 키의 길이는 1024비트, 2048비트, 3072비트 등입니다. 키가 길수록 안전하지만, 그만큼 계산에 더 많은 시간이 소요됩니다.

      1) "공개키 암호화" -> "비밀키 복호화"

      • 공개 키는 누구에게나 공개될 수 있으며, 데이터를 암호화하는데 사용됩니다.

      • 비밀키는 비밀로 유지되며 암호화된 데이터를 복호화하는데 사용됩니다.

      • 비밀키를 가진 사용자만이 복호화를 할 수 있습니다. (데이터 유출 방지)

      • 예시 >>

        • A사B사에게 민감한 데이터를 보내야 할 경우에

        • A사는 "B사의 공개키" 로 데이터를 암호화하여 암호화된 데이터를 보내고

        • B사는 자신이 가진 "B사의 비밀키" 로 복호화하여 데이터를 읽습니다.

        • 비밀로 유지되는 비밀키로 복호화하기에 데이터 유출이 방지될 수 있다고 보는겁니다. (공개키를 알고 있다고 해서 데이터를 알 방법이 없음.)




      2) "비밀키 암호화" -> "공개키 복호화"

      • JWT (Json Web Token), 공인인증체계 와 같은 디지털서명을 만드는데 사용합니다.

        • 디지털서명

          • 발급자 인증 : 간단하게 표현하자면 디지털서명은 "내가 발급한 토큰이다!" 라고 증명하는 것입니다. 말그대로 디지털서명 발급자가 비밀키로 암호화를 하기 때문에 발급자를 인증할 수 있다는겁니다.

          • 데이터 무결성: 데이터가 변조되지 않았고 신뢰할 수 있다는 의미입니다.

      • 공개키를 안다면 누구나 열 수 있기에 보안 위험성 존재하지만, 발급자가 보낸것이 100% 신뢰 가능하다는 점

      무료 SSL 인증서 발급

      작성자아이디 : skok1025, 2024-01-08 22:38:30
      카테고리 : 컴퓨터공학 네트워크 게시글 수정

      https://manage.sslforfree.com/dashboard


      cname 추가 

      https://pbvk.tistory.com/entry/%EC%B9%B4%ED%8E%9824cafe24-CNAME-%EB%A0%88%EC%BD%94%EB%93%9C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0


      https://velog.io/@layl__a/SSLFORFREE-%EC%97%90%EC%84%9C-%EB%AC%B4%EB%A3%8C-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89%EB%B0%9B%EA%B8%B0


      계란참치볶음밥 :: 요리레시피

      작성자아이디 : skok1025, 2024-01-07 00:35:12
      카테고리 : 일상 요리레시피 게시글 수정

      1. 올리브유 2~3번 두른 후라이팬에 대파 반개 자른거 투하. + 다진마늘 조금 넣기
      2. 표고버섯 자른거 투하.
      3. 계란2개 깨서 투하.
      4. 기름 뺀 참치 투하.
      5. 햇반 넣고 참기름 2~3번 두르기. 진간장 2스푼 스테비아 반스푼

      CGI, WSGI, ASGI :: FastAPI

      작성자아이디 : skok1025, 2023-11-26 10:36:11
      카테고리 : 프레임워크 FastAPI 게시글 수정

      최근에 사내에서 웹프레임워크로 FastAPI 를 채택하여 개발을 진행했는데요. 아무래도 이론적인 지식이 바탕이 된다면 운영에 더 힘이 될 것이라는 생각에FastAPI 프레임워크 관련 블로그 포스팅을 시작해보고자 합니다.

      처음 시작은 FastAPI 가 "ASGI 웹프레임워크" 라고 불리는데 이게 무슨의미이고 이와 관련해서 CGI, WSGI 도 함께 알아보고자 합니다. 


      CGI

      • Common Gateway Interface
      • 가장 오래된 인터페이스 (= 거의 모든 Web Server 지원)
      • Web Server 와 Application 간의 인터페이스
      • Web Server 에 HTTP Request 가 오면 Interpeter 에서 이를 감지하여 프로세스를 생성 (fork) 후 처리
      • CGI 는 요청마다 프로세스를 생성하는 방식이기 때문에 오버헤드가 심합니다. 이를 해소하기 위해 등장한 것이 FastCGI 입니다.
      • FastCGI 는 요청이 들어와도 하나의 프로세스만을 사용하여 처리를 합니다. 즉 메모리에 하나의 프로그램을 적재하여 재활용하기 때문에 CGI 에 비해 오버헤드가 월등하게 감소합니다.
      • Tomcat 에서도 FastCGI 를 사용할 수 있다고 합니다. 


      WSGI

      • Web Server Gateway Interface
      • Python 어플리케이션, 스크립트가 웹서버와 통신하기 위한 인터페이스
      • CGI 는 매 요청마다 프로세스를 생성하지만 WSGI 는 한 프로세스에서 모든요청을 받습니다.
      • ㄴ 그럼 FastCGI 처럼 하나의 프로세스를 사용하는건 같은데, 무엇이 다른가 확인해보니 FastCGI 는 다양한 언어 프레임워크에서 사용이 가능하여 범용성을 띄는 반면에 WSGI 는 파이썬 앱만을 위해 고안한 인터페이스라고 합니다.
      • 많은 Request 들을 callback 으로 받아 처리합니다.
      • 대표적인 두가지 방법
        • 1) Nginx, Apache 에서 내장 모듈로 제공하는 server-often high profile 방식
          • 1-1) mod-wsgi
          • 1-2) mod-python
        • 2) Python 으로 작성된 Web App Server
          • 2-1) gunicorn
          • 2-2) cherrpy
      • WSGI 는 동기함수만 지원하여 여러작업을 동시에 처리하는데 한계가 있습니다. 그리고 아래와 같은 기능을 제공하지 않습니다.
        • Web Socket 지원 안함
          • ㄴ 어떻게 하면 가능은 하다는데 공식적인 방법은 아닌듯함.
        • HTTP 2.0 지원 안함


        ASGI


        • Asynchronous Server Gateway Interface
        • 대용량 트래픽을 더욱 더 유연하게 처리하기 위해서 등장한 인터페이스입니다.
        • WSGI 가 Synchronuous 하게 동작함으로써 발생하는 한계를 해결하기 위해 Uvicorn 과 같은 ASGI 가 나오게 되었습니다.  (* uvloop 를 이용하여 요청을 Asynchronous 하게 처리할 수 있다고함)
        • Web Socket, HTTP 2.0 을 지원합니다.
        • 현재 사내에서 서버를 시작할 때, 위 그림과 같이 gunicorn 을 process manager 로 uvicorn 으로 worker process 를 3개를 띄워 실행하고 있습니다.
          • gunicorn main:app --workers 3 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:80
        • uvicorn 만으로도 worker 여러 프로세스를 띄울 수는 있지만 공식문서에서도 gunicorn 을 process manager 로 worker process 를 띄우는게 더 효율적이라고 합니다.
        • worker 와 관련한 내용은 https://fastapi.tiangolo.com/deployment/server-workers/ 를 참고해주세요. 


        해당 블로그를 작성하면서 참고했던 포스팅들의 링크를 남겨두겠습니다. 학습에 도움이 되시기를...


        end

        safe-updates :: mysql 클라이언트 옵션

        작성자아이디 : skok1025, 2023-11-03 16:10:27
        카테고리 : DB MariaDB 게시글 수정

        mysql 클라이언트를 이용하여 mysql 서버 접근시 safe-updates 라는 옵션이 있습니다. 아래와 같이 뒤에 "--safe-updates" 를 붙여주면 되는데요. 

        root@shkim-VirtualBox:~# mysql -u root -p --safe-updates

        해당 명령어의 역할은 

        UPDATE, DELETE 그리고 SELECT 쿼리가 인덱스를 사용하지 못할 때 다음과 같이 에러를 발생시키고 쿼리를 중지시켜줍니다. 

        # flag 필드는 인덱스가 걸린 필드가 아니기 때문에 조건으로 사용불가

        MariaDB [npay]> DELETE FROM t_test WHERE flag='T';

        ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column


        # no 는 primary key 라 조건 사용가능

        MariaDB [npay]> DELETE FROM t_test WHERE no=2;

        Query OK, 1 row affected (0.001 sec)


        이게 왜 필요하냐면, 만일 인덱스를 사용하지 않고 쿼리를 실행한다면 모든 레코드를 업데이트하거나 지워버리는 불상사가 생길 수 있기 때문이죠. 

        회사에서도 운영 DB 에 접근할 일이 있는데, 앞으로는 해당 옵션을 꼭 붙여야겠네요.