2014-10-16 3 views
2

OpenSSL의 보안 문제로 인해 대신 NSS 또는 GnuTLS를 사용하고 싶습니다. Apache 서버 요구 사항에는 각 모듈에 대한 모듈이 있기 때문에 쉽습니다. 그러나 SSH의 경우 불가능하지는 않더라도 어려운 것처럼 보입니다.OpenSSL 대신 NSS 또는 GnuTLS를 사용하여 openSSH를 작성하는 방법은 무엇입니까?

Dropbear는 자체 알고리즘을 내장하고 있으며 외부에 공개되지 않습니다. OpenSSH의는 OpenSSL을 함께 건설되고 사용했지만, 몇 달, 새로운 옵션 it is possible to build it without it 감사 이후 : D. J. 번스타인 작품에서

make OPENSSL=no 

그러나 소프트웨어 암호화 알고리즘이 사용됩니다. TPM을 사용하므로 pkcs11 계층에 액세스 할 수 있기 때문에이 방법이 유용합니다. 결과적으로 올바른 해결책은 NSS 또는 GnuTLS를 사용하여 OpenSSH를 구축하는 것입니다.

리눅스에서 LibReSSL을 기다릴 수 없으며 방금 출시 한 OpenBSD를 사용하여 SSL 기본 레이어로 만들 수 없습니다.

내 질문은 : 누군가가 OpenSSL 대신 NSS 또는 GnuTLS를 사용하여 OpenSSH를 구축하거나 TPM 및 EC 인증을 사용하는 SSH 서버를 갖기 위해 Dropbear 또는 다른 솔루션에 패치를 적용 했습니까?

참고 : 리소스가 제한되어 있으므로 OpenSSL 및 Apache와 NSS를 함께 사용할 수 없습니다. 필자는 임베디드 라이브러리를 최소화해야합니다.

답변

1

나는 세 가지 솔루션을 확인한하십시오 80 % 호환은 OpenSSL API를 제공 Nss compat ossl

  1. 사용 NSS.
  2. OpenSSL compatibility layer과 함께 GnuTLS을 사용합니다 (적용 범위를 확인하지 않았습니다).
  3. OpenSSL로 이동하여 OpenBD LibReSSL 또는 Google BoringSSL (사용 가능한 경우)으로 이동하십시오. 첫 번째 버전은 OpenBSD에서 이미 사용 가능하며 다른 n x 개의 배포판에 대한 이식성 프로젝트를 관리합니다. 따라서 몇 달 안에 Linux에서 사용할 수 있다고 가정합니다. 엄청난 cleaning and improvements이 수행되었습니다.
+0

이 답변은 오래되었지만 결국 선택한 솔루션을 설명 할 수 있습니까? 나는 똑같은 질문에 직면하고 있으며 2)와 함께 가고 싶다. 그러나 나는 그 방법을 알 수 없다. – flowit

+0

불행히도, 나는 이사했다. 그러나 뭔가 일하면 게시하십시오. – lalebarde

1

아니요. 그러나 libcrypto (OpenSSH가 실제로 사용하는 OpenSSL의 일부인)를 sshd에 정적으로 연결하여 OpenSSL과 관련된 디스크 사용량을 줄일 수 있습니다. 내 시스템에서

내가 할 수있는 수동으로 다음 명령을 실행하여 make sshd 후 :

gcc -o sshd sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o audit.o \ 
    audit-bsm.o audit-linux.o platform.o sshpty.o sshlogin.o servconf.o serverloop.o \ 
    auth.o auth1.o auth2.o auth-options.o session.o auth-chall.o auth2-chall.o \ 
    groupaccess.o auth-skey.o auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \ 
    auth2-none.o auth2-passwd.o auth2-pubkey.o monitor_mm.o monitor.o monitor_wrap.o \ 
    kexdhs.o kexgexs.o kexecdhs.o kexc25519s.o auth-krb5.o auth2-gss.o gss-serv.o \ 
    gss-serv-krb5.o loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o \ 
    sftp-server.o sftp-common.o roaming_common.o roaming_serv.o sandbox-null.o \ 
    sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o sandbox-seccomp-filter.o \ 
    sandbox-capsicum.o -L. -Lopenbsd-compat/ -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack \ 
    -fstack-protector-strong -lssh -lopenbsd-compat \ 
    /usr/lib/x86_64-linux-gnu/libcrypto.a -ldl -lutil -lz -lnsl -lcrypt -lresolv 

(즉, 생성 된 링커 명령에서 -pie 플래그를 libcrypto.a의 전체 경로에 대한 -lcrypto 교체 및 제거의 결과입니다 by make).

stripsshd으로 실행하면 크기가 약 2MB로 줄어 듭니다.

기기에 sshd만을 배송 할 예정이라면 당연합니다. ssh도 필요하면 쓸모 없게됩니다.

+0

감사 인사. 요점은 OpenSSL을 피하기 위해서입니다. OpenSSL API를 제공하는 GnuTLS 및 NSS 래퍼를 조사하고 있습니다. 그러나 그것들은 부분 집합만을 제공합니다.나는 그것이 내 필요에 충분한 지 아닌지 확인해야한다. – lalebarde

관련 문제