NGINX¸¦ Kyber Áö¿øÇÏ°Ô ÄÄÆÄÀÏ ¼º°øÇϽźР°è½Ã³ª¿ä?

dateno1   
   Á¶È¸ 2115   Ãßõ 0    

성공할 사용한 본체랑 TLS 라이브러리의 종류및 버전, 특별하게 소스 수정하거나 컴파일 옵션 줘야한다면 해당 부분을 좀 알려주세요


Chrome Stable도 X25519Kyber768Draft00를 지원하는것보고 현제 운영중인 서버에 추가해볼려니 몇시간 컴파일 다 실패하고 있습니다 (다른 방식은 아직 지원 안되고, Kyber Hybrid만 지원됩니다)


Chrome://flags에서 수정후 재실행하고, 이미 도입된 서버에 접속해보면 개발자 도구 Security에 제대로 적용되었다고 뜹니다


Wold, Libre, Boring은 물른이고, 심지어는 OpenSSL의 패치 버전인 https://github.com/open-quantum-safe/openssl 조차 컴파일 실패하네요


사용한 NGINX의 버전은 Mainline인 1.25.2입니다


보안을 위해 매번 소스 수동으로 패치(작동에는 영향 안 주는 문자열 수정)하고, 모듈까지 추가해서 컴파일해서 쓰다보니 유포되는 바이너리로는 해당이 없어서 직접 컴파일해야 합니다


OpenSSL처럼 위장하기 위해 심벌릭 링크및 파일 복사하거나, 아에 Make파일을 수정하거나, 컴파일러 옵션으로 라이브러리 경로 지정하거나 해봐도 또 다른 에러에 시달릴뿐이네요


심지어는 Docker 생성할때 쓰는 파일을 참조해서 동일한 방식으로 진행해봐도 에러 나네요


목표는 호환성 문제를 피하기 위해 시스템의 TLS 라이브러리는 손되지 않고, NGINX의 바이너리에 Kyber를 지원하는 TLS 라이브러리를 하드코딩해서 작동시키는겁니다




추신 1 :

https://test.openquantumsafe.org

https://github.com/open-quantum-safe/oqs-provider/blob/main/oqs-template/oqs-kem-info.md

https://github.com/open-quantum-safe/oqs-provider

를 보시면 다른 키 교환 방식이나 암호화 방식도 연구는 되고 있는데, 아직까지 도입된건 Kyber밖에 없어보입니다


추신 2 : 적용하실려면 NGINX의 conf를 수정해서 ssl_ecdh_curve의 젤 앞에 X25519Kyber768Draft00를 붙이면 끝입니다 (미지원 버전으로 하면 에러나니 하지마세요)


맨날 삽질만 하고 삽니다

http://www.2cpu.co.kr/hardware_2014/44147
컴 케이스 작다고 불타거나 하지 않아요

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
gnatsflame 2023-10
¾Æ·¡¿Í °°ÀÌ ÇØ°áÇÏ½Ã¸é µÉ µí ÇÕ´Ï´Ù...

1. nginx µð·ºÅ丮 ³»¿¡¼­ boringssl clone ÁøÇà
mkdir lib && git clone https://github.com/google/boringssl lib/boringssl

2. boringssl ºôµå
cd lib/boringssl && \
mkdir build && \
cd build && \
cmake .. && \
make
-> ÆÐÅ°Áö´Â cmake, golang, gcc-c++, libunwind-dev µîµî ÇÊ¿ä.
-> make ÇÒ ¶§ ¿À·ù³ª´Â °Íµé¿¡ ´ëÇØ ÀÇÁ¸¼º ÇØ°á

3. nginx ¿¡¼­ configure ¿É¼Ç Ãß°¡ (--with-openssl ¿É¼ÇÀº ÇÊ¿ä ¾ø½À´Ï´Ù.)
cd ../../..
auto/configure \
--with-cc-opt="-I./lib/boringssl/include" \
--with-ld-opt="-L./lib/boringssl/build/ssl -L./lib/boringssl/build/crypto" \
... (±âŸ ¿É¼Ç - with-http_ssl_module µîµî)

4. ºôµå°¡ ¿Ï·áµÇ¸é nginx µð·ºÅ丮·Î º¹±Í ÈÄ ºôµå

5. X25519Kyber768Draft00 Å×½ºÆ®
cd lib/boringssl/build
./bssl s_client -connect [domain] -server-name [domain] -curves X25519Kyber768Draft00
(Connected. °¡ ¶ß¸é ¼º°ø)
     
dateno1 2023-10
µµ¿ÍÁּż­ °¨»çÇÕ´Ï´Ù

´öºÐ¿¡ 1¹æ¿¡ ¼º°øÇ߳׿ä

openssl ÁöÁ¤ ¿É¼ÇÀ» Á¦°ÅÇÏ°í ¶óÀ̺귯¸®µî¸¸ ¼öµ¿À¸·Î ÁöÁ¤ÇØÁÖ´Ï ³Ñ¾î°¡³×¿ä (system openssl »ç¿ëÀ̶ó ¶ß´Â°Å ¸·À»·Á°í µ¿½Ã »ç¿ëµµ ½ÃµµÇغÃÀ¸´Ï ¿ª½Ã ¿¡·¯)

°á±¹ ¿øÈäÀº openssl ÁöÁ¤ ¿É¼ÇÀ̾ú³×¿ä



ÀÏ´Ü confµµ Á» ¸¸Á®¼­ ÀϺΠ¿É¼Ç ¼öÁ¤ÇؾßÇß½À´Ï´Ù

¸ÕÀú X25519Kyber768Draft00¸¦ Áö¿øÇÏ´Â ´ë½Å X448À» Áö¿øÇÏÁö ¾Ê³×¿ä

ÀÌ¿Ü¿¡ ssl_staplingµµ ¹ÌÁö¿øÀÎÁö °æ°í ¶ß³×¿ä (¿¡·¯°¡ ¾Æ´Ï´Ï ³Ñ¾î°¡±ä ÇÔ)

ÀÌ°Ô Á» ¿ô±â´Â°Ô Ŭ¶ó·Î Á¢¼ÓÇÒ¶§´Â OCSP stapling Áö¿øÇϴµ¥ (Ç׸ñÀÌ ÀÖÀ½), ¼­¹ö·Î´Â Áö¿ø ¾È ÇÏ´ÂÁö ssl_ocsp is not supported on this platformÀ̶ó°í ¶°¹ö¸®³×¿ä
          
gnatsflame 2023-10
Á¤È®È÷´Â OCSP Stapling À» Áö¿øÇÏ·Á¸é ´Ù¸¥ ¹æ½ÄÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
±×¸®°í X448 º¸´Ù´Â X25519 »ç¿ëÀÌ »ç½Ç»ó ±ÇÀåµÇ°í À־ ±»ÀÌ »ó°üÀº ¾ø½À´Ï´Ù.
-> Á¤È®È÷´Â Chrome ÃֽŹöÀü¿¡¼­´Â X448 À» Áö¿øÇÏÁö ¾Ê°í X25519, P-256, P-384 ¸¸ Áö¿øÇÕ´Ï´Ù.

OCSP Stapling Àº ¿Ü±¹¿¡¼­ ÀÌ¹Ì ¾î´ÀºÐÀÌ ¸¸µå½Å°Ô ÀÖÀ¸´Ï ±×°ÍÀ» Âü°íÇغ¸½Ã¸é µÉ µí ÇÕ´Ï´Ù.
https://github.com/kn007/patch/issues/4

ocsp ÆÄÀÏÀ» ¹Þ¾Æ¿Í¼­ Á÷Á¢ ¾Æ·¡¿Í °°ÀÌ nginx ¿¡¼­ ¼³Á¤ÇÏ¼Å¾ß Çϱ¸¿ä..
https://stackoverflow.com/questions/56292411/how-to-verify-certificate-with-ocsp-using-openssl
ssl_stapling_file xxx.ocsp;
               
dateno1 2023-10
µ¡±Û ´Þ°í Àִµ¥ Ãß°¡Çϼ̳׿ä

ÀÌ¹Ì https://github.com/kn007/patch/blob/master/Enable_BoringSSL_OCSP.patch ÆÐÄ¡ ¸Ô¿´½À´Ï´Ù

Àû¿ëÈÄ SSLlab µ¹·Áº¸´Ï OCSP Stampling µÈ´Ù°í ³ª¿É´Ï´Ù

Á» ¿ô±â´Â°Ç Ŭ¶ó·Î ½ÃÇèÇÒ¶§ Ç׸ñÀº Àִµ¥µµ Áö¿ø ¾È µÇ´ÂÁö ¿©ÀüÈ÷ ÇØ´ç Ç׸ñÀº no¶ó°í ¶°¹ö¸®³×¿ä (OpenSSLÀº Á¤»óÀûÀ¸·Î OCSP °á°ú »Ì¾ÆÁÝ´Ï´Ù)

ÀÌ¹Ì OCSP ¸ÔÀÌ´Â »óÅ¿¡¼­ TLS ¶óÀ̺귯¸®¸¸ ¹Ù²Û°Å¶ó ³ª¸ÓÁø ¼Õ µÉ ÇÊ¿ä ¾ø³×¿ä (cronÀ¸·Î ÀÚµ¿ °»½ÅµÇ°Ô Çسù½À´Ï´Ù)

OpenSSL ½Å±â¼ú µµÀÔ¿¡ ÀÇ¿Ü·Î ¼Ò±ØÀûÀ̶ö±î ´ÊÀºÆíÀ̶ó ÀÌ·²‹ž Á» ±ÍÂú³×¿ä

X448 ȣȯ¼º¶«¿¡ »óÀ§¿¡ ³Ö¾îµÐ°ÅÁö »ç½Ç ±×°Å ¾È ½áµµ µÉ¸¸Å­ ¼­¹ö CPU ¼º´É ½â¾î³ÑÄ¡´ÂÁö¶ó »ó°ü¾ø±äÇÕ´Ï´Ù

ȣȯ¼ºµûÀ§ ´Ù ±ø±×·¯´Ï ¹«½ÃÇعö¸®¸é SSLLab 100Á¡ ¹Þ´Â°Íµµ Àϵµ ¾Æ´Ñµ¥, ¾à°£ ±¸¹öÀü Ŭ¶ó±îÁö ì±â´Ùº¸´Ï ÀϺΠ90Á¡À̳׿ä (100/100/90/90)

10¿¡¼­ Trident·Î À¥ºä ±¸ÇöÇϰųª, ÆÄÀÏ ´Ù¿î ¹ÞÀ»¶§³ª ±¸¹öÀü Android ȣȯÀÌ µÉÁ¤µµ·Î ÇÏÀ§ ȣȯ¼ºÀ» º¸ÀåÇϸ鼭 HTTP/3°°Àº ÃֽŠ±â¼ú±îÁö Áö¿øÀÌ µ¿½Ã¿¡ º¸ÀåµÇ´Â º¯Å ¼³Á¤ÀÔ´Ï´Ù

Âü°í·Î KasperskyµîÀÇ ÀϺΠ¹é½Å ¾²¸é TLS µðÄÚµùÈÄ ´Ù½Ã ÀÎÄÚµùÇÏ´Ùº¸´Ï Å©·ë¿¡¼­ kyber ¾È µÈ´Ù°í ¶°¹ö¸®±äÇϳ׿ä



À̰Ŷ«¿¡ »ðÁúÇÏ´À¶ó ÁÖ¸»¿¡ ÇÑ 4½Ã°£ ƒÊ°Å°°Àºµ¥ ´öºÐ¿¡ ÇØ°áµÇ¾ú½À´Ï´Ù

https://blog.dateno1.com/?p=6119
°£´ÜÇÏ°Ô °Ô½Ã¹° ÀÛ¼ºÇغýÀ´Ï´Ù (»ðÁúÇÏ´À¶ó ½Ã°£ ³¶ºñÇÏ´Â°Ç Àú 1¸íÀ̸é ÃæºÐÇÕ´Ï´Ù)

ÇØ´ç °Ô½Ã¹° ÇÊ¿äÇϽźеéÀº ¸¶À½´ë·Î ÆÛ°¡¼Åµµ µÇ°í, Çã°¡ ¾È ¹ÞÀ¸¼Åµµ µÇ°í, ¼öÁ¤Çϼŵµ µË´Ï´Ù (Ãâó Ç¥±âÁ¶Â÷ ºÒÇÊ¿ä) (´Ù¸¸ ºÒÇÊ¿äÇÑ ½ºÆÔ À¯ÀÔ ¹æÁö¸¦ À§ÇØ ¸µÅ© À¯Æ÷´Â ÇÏÁö¸»¾ÆÁÖ¼¼¿ä)


QnA
Á¦¸ñPage 5165/5686
2014-05   4978869   Á¤ÀºÁØ1
2015-12   1514989   ¹é¸Þ°¡
2022-04   2116   ±èÇüÁØ1
2021-07   2116   Sikieiki
2021-02   2116   Àü¼³ÀÇÈæ°õ
2021-05   2116   ¿ï°ú±âÆé½ÃÃæ
2023-10   2115   ¼úÀÌ
2021-08   2115   ArtsRommel
2022-03   2115   guzzi
2023-08   2115   ¶óÀÌÅ©À¯
2023-03   2115   ±èµ¿ÀÚ¸Ç
2021-05   2115   GPGPU
2019-11   2115   NiteFlite9
2023-10   2115   dateno1
2021-07   2115   ±Þ¿©ÀÏ¿¡¸¸³ª¿ä
2021-12   2115   ParkB7
2022-08   2115   ´ÞÄÞÇÑÀâÃÊ
2020-09   2115   ³ªÆÄÀÌ°­½ÂÈÆ
2021-03   2115   ÈɳÉ
2023-05   2114   °Ü¿ï³ª¹«
2021-09   2114   ÆÄÇÇǪÆä
2020-05   2114   Artofalgori¡¦