La enumeración de usuarios no es tan mala. El nombre de usuario es parte pública, la contraseña es secreta. Por ejemplo, en esta página, todos podemos saber que el usuario James_pic existe en stackexchange. Buscar en Google o escribir a un rastreador simple puede dar a los atacantes una gran cantidad de nombres de usuario, lo que ayuda a limitar el ataque, pero otras medidas de seguridad siguen dificultando la tarea de los atacantes.
La idea es tener una política de seguridad (al menos no escrita, en mente), separar las cosas públicas y secretas y enfocar los esfuerzos en asegurar lo que debe ser secreto. Si desea utilizar el nombre de usuario como "segunda parte del secreto", probablemente sea una forma incorrecta, es mejor que requiera contraseñas dos veces más largas, o autenticación de dos factores, porque mantener los nombres de usuario en secreto es mucho más difícil.
Si, por algún motivo, también necesita mantener los nombres de usuario en secreto (por ejemplo, no quiere que nadie sepa cuántos usuarios se han registrado), quizás sea mejor que asigne un nombre de usuario (por ejemplo, usuario NNNNN o usuario < 10 letras al azar > ) o use apprach con correo electrónico o número de teléfono como nombre de usuario.